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.iofor 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
.dfufiles 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/RSTjumper.
New features¶
In-IDE updater. Checks
openmv.iofor a newer IDE version and offers a Download button that opensopenmv.io/download, and downloads, unpacks and installsopenmv-ide-resources-X.Y.Z.zipresource packages directly into the IDE before prompting to restart (8a1f92bb1, 194acd828, b0be97e3e).Clickable firmware-version button. The status-bar version label became a
QToolButtonwired to anupdateCam()flow that reads the bundledfirmware/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
.dfufiles in addition to.binand forces a full internal-filesystem erase when flashing a.dfu. The firmware picker filter was widened toFirmware Binary (*.bin *.dfu)and the.dfuforced-erase flow introduced in4ad2be5f9, with the always-checked disabled erase checkbox that auto-toggles on the chosen file extension added inb2ac8defe(4ad2be5f9, b2ac8defe).Automatic DFU fallback on bootloader failure. When a
.binfirmware update cannot start the serial bootloader, the IDE now reportsUnable 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 aBOOT/RSTjumper wire and reconnecting before it runsDfuSeCommand.exe(Windows) (4ad2be5f9).HoG example. Added a Histogram of Oriented Gradients visualization example (
09-Feature-Detection/hog.py) usingimg.find_hog()(b03a707f7).
Other changes and improvements¶
Replaced the old ad-hoc baud-rate/packet code with
OpenMVPluginSerialPortCommand/Resultclasses,__USBDBG_*and__BOOTLDR_*opcodes andcommand()/commandResult()helpers in place ofwrite()/readAll()/isOpen()(b03a707f7, 141122e21, b2ac8defe, 1d72fe4bf, b4cf2fe43, c60936d5f).Windows serial-port driver installation is now silent/unattended, switching the
openmv.cmd/pybcdc.cmddriver scripts todpinst-based installers instead of interactiveInfDefaultInstall, and the Visual C++ Redistributable installer (vcr.cmd, runningvcredist_x86.exeandvcredist_x64.exequietly) 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
Helpmenu and output panes: the About OpenMV Cam entry no longer collides with the platform About role (AboutRole→ApplicationSpecificRole), and output panes no longer grabAlt/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.binand newly addedfirmware.dfu/bootloader.dfu/firmware.elf/bootloader.elffor 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 adfuse.cmddriver installer (4ad2be5f9).macOS and Linux DFU flashing moved from prebuilt
dfu-utilbinaries to a bundledpydfu.pyflasher, with the IDE showing the required libusb/pyusb install commands.ac248c0ecbriefly added Linux x86_64dfu-util/dfu-prefix/dfu-suffixbinaries, but324f243f9then removed all of them in favor ofpydfu.py. Nodfu-utilbinaries ship in the final release;static.probundles thepydfudata dir for all non-Windows hosts while Windows uses the bundled DfuSe flow (ac248c0ec, 324f243f9, 7837a07da).Linux udev rules updated to use
SUBSYSTEMmatching (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.