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.

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 (AboutRoleApplicationSpecificRole), 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.