.. _changelog_ide_v1_3_0: v1.3.0 ====== v1.3.0 rewrites the camera communication layer around a structured command/response protocol and adds in-IDE auto-updating for both the IDE and its bundled resources. It is built on Qt Creator 4.0.2 and bundles OpenMV camera firmware 2.0.0. On macOS and Linux, DFU firmware flashing now requires a one-time install of Python plus libusb and pyusb; see Breaking changes. .. contents:: On this page :backlinks: none :local: :depth: 1 Highlights ---------- - **Rewritten communication layer.** The serial/USB-debug code was rebuilt around a structured command/response protocol with per-command response lengths and start/end wait delays, for more reliable connect, script-run, framebuffer and bootloader operations. - **In-IDE auto-updater.** The IDE now checks ``openmv.io`` for a newer version and offers a **Download** button, and separately downloads and installs updated resource packages (examples, firmware, documentation) then prompts to restart. - **One-click firmware update.** The status-bar firmware version is now a clickable button that compares the connected camera against the bundled firmware and offers a one-click update when a newer version is available. - **DFU firmware flashing on every platform.** Firmware can now be flashed over DFU on Windows, macOS, Linux x86 and Linux x86_64, and the firmware picker accepts ``.dfu`` files in addition to ``.bin``. - **Automatic DFU fallback.** When the serial bootloader cannot be reached during a firmware update, the IDE now offers to upgrade over the camera's DFU bootloader instead, guiding you through adding a ``BOOT``/``RST`` jumper. New features ------------ - **In-IDE updater.** Checks ``openmv.io`` for a newer IDE version and offers a **Download** button that opens ``openmv.io/download``, and downloads, unpacks and installs ``openmv-ide-resources-X.Y.Z.zip`` resource packages directly into the IDE before prompting to restart (`8a1f92bb1 `__, `194acd828 `__, `b0be97e3e `__). - **Clickable firmware-version button.** The status-bar version label became a ``QToolButton`` wired to an ``updateCam()`` flow that reads the bundled ``firmware/firmware.txt``, compares it to the connected camera, and offers a **Firmware Update** with optional internal-filesystem erase when newer (`b2ac8defe `__). - **DFU file support.** The bootloader/firmware-flash dialog now accepts ``.dfu`` files in addition to ``.bin`` and forces a full internal-filesystem erase when flashing a ``.dfu``. The firmware picker filter was widened to ``Firmware Binary (*.bin *.dfu)`` and the ``.dfu`` forced-erase flow introduced in ``4ad2be5f9``, with the always-checked disabled erase checkbox that auto-toggles on the chosen file extension added in ``b2ac8defe`` (`4ad2be5f9 `__, `b2ac8defe `__). - **Automatic DFU fallback on bootloader failure.** When a ``.bin`` firmware update cannot start the serial bootloader, the IDE now reports ``Unable to connect to the bootloader!`` and then offers to upgrade using the camera's DFU bootloader instead, warning that DFU erases the internal flash file system and walking you through adding a ``BOOT``/``RST`` jumper wire and reconnecting before it runs ``DfuSeCommand.exe`` (Windows) (`4ad2be5f9 `__). - **HoG example.** Added a Histogram of Oriented Gradients visualization example (``09-Feature-Detection/hog.py``) using ``img.find_hog()`` (`b03a707f7 `__). Other changes and improvements ------------------------------ - Replaced the old ad-hoc baud-rate/packet code with ``OpenMVPluginSerialPortCommand``/``Result`` classes, ``__USBDBG_*`` and ``__BOOTLDR_*`` opcodes and ``command()``/``commandResult()`` helpers in place of ``write()``/``readAll()``/``isOpen()`` (`b03a707f7 `__, `141122e21 `__, `b2ac8defe `__, `1d72fe4bf `__, `b4cf2fe43 `__, `c60936d5f `__). - Windows serial-port driver installation is now silent/unattended, switching the ``openmv.cmd``/``pybcdc.cmd`` driver scripts to ``dpinst``-based installers instead of interactive ``InfDefaultInstall``, and the Visual C++ Redistributable installer (``vcr.cmd``, running ``vcredist_x86.exe`` and ``vcredist_x64.exe`` quietly) was added and fixed (`a5a6e0590 `__, `754d0776d `__, `b0be97e3e `__, `452a29f0d `__, `c051c6e30 `__, `ad1b674ef `__, `565f1eccd `__). Bug fixes --------- - Fixed firmware flashing and communication breaking inside virtual machines, and loosened various command timeouts and frame-buffer/tx-buffer polling so connect and run are more robust. The reprogram dialog now notes it "may take up to 5 minutes" and the DFU process timeout was raised from 240s to 300s in ``324f243f9`` (`c051c6e30 `__, `b0be97e3e `__, `1d72fe4bf `__, `b4cf2fe43 `__, `324f243f9 `__, `c60936d5f `__). - Fixed the firmware/IDE update-available comparison so a newer minor or patch no longer falsely triggers when a higher field is equal, and required the bootloader dialog to have a valid selected file before flashing (`4ad2be5f9 `__). - Closed file handles (boards list, firmware/version files) after reading and corrected the firmware flash-chunk padding to pad to ``FLASH_WRITE_CHUNK_SIZE``, preventing leaked handles and mis-padded final chunks during firmware updates (`4ad2be5f9 `__). - Fixed the OpenMV ``Help`` menu and output panes: the **About OpenMV Cam** entry no longer collides with the platform About role (``AboutRole``\ →\ ``ApplicationSpecificRole``), and output panes no longer grab ``Alt``/``Cmd`` + number shortcuts (`a0694eac7 `__). - Opening external OpenMV web links (forums, download, support) now reports a "Failed to open" error dialog when the URL cannot be launched instead of silently doing nothing (`b0be97e3e `__). Platform and tool support ------------------------- - **Qt Creator base:** 4.0.2. - **Bundled camera firmware:** updated to **2.0.0**, with new ``firmware.bin``/``openmv.bin`` and newly added ``firmware.dfu``/``bootloader.dfu``/``firmware.elf``/``bootloader.elf`` for OMV2 and OMV7. - **Windows DFU flashing** added using a bundled ST ``DfuSeCommand.exe``, the ST DfuSe USB driver package (DfuSe v3.0.4.0 on Win7/Win8, v3.0.5.0 on Win8.1) and a ``dfuse.cmd`` driver installer (`4ad2be5f9 `__). - **macOS and Linux DFU flashing** moved from prebuilt ``dfu-util`` binaries to a bundled ``pydfu.py`` flasher, with the IDE showing the required libusb/pyusb install commands. ``ac248c0ec`` briefly added Linux x86_64 ``dfu-util``/``dfu-prefix``/``dfu-suffix`` binaries, but ``324f243f9`` then removed all of them in favor of ``pydfu.py``. No ``dfu-util`` binaries ship in the final release; ``static.pro`` bundles the ``pydfu`` data dir for all non-Windows hosts while Windows uses the bundled DfuSe flow (`ac248c0ec `__, `324f243f9 `__, `7837a07da `__). - **Linux udev rules** updated to use ``SUBSYSTEM`` matching (cam VID 1209/PID abd1 tty and STM DFU 0483/df11) so the device and DFU symlinks work on 32-bit Linux, and redirect-following network requests were guarded for older Qt (`194acd828 `__). Breaking changes ---------------- The bundled standalone ``dfu-util`` binaries for macOS and Linux were removed and replaced by a Python ``pydfu.py`` flasher. On macOS and Linux, firmware DFU flashing now requires a one-time install of Python plus libusb and pyusb (the IDE shows the exact MacPorts/HomeBrew/apt-get commands). Windows continues to use the bundled DfuSe-based flow. There are no scripting-API breaks, and the Qt Creator 4.0.2 base is unchanged.