v2.4.0

v2.4.0 is built on Qt Creator 4.0.2 and centers on the new V3 bootloader (QSPI flash layout query during firmware loading and erase during a full onboard-data-flash erase), live sensor and board reporting in the status bar, and a new 32-bit USB debug protocol that matches the bundled firmware. It also adds a first-run LED guide and a large set of new TensorFlow, Modbus, and WiFi examples. Because the debug protocol changed, cameras must run the new bundled firmware to connect.

Highlights

  • V3 bootloader support queries the layout of a board’s external QSPI flash during firmware loading and erases it during a full onboard-data-flash erase (d953df62f).

  • Sensor and board reporting queries the connected camera’s sensor module on connect and shows it in the status bar (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) alongside a new board type label (0ffa82958).

  • TensorFlow model copy lets you copy .tflite models to the cam, not just .network neural-network files (ad1aa98f0).

  • Erase Onboard Data Flash is a new Tools command that erases only the cam’s onboard filesystem flash, after a confirmation prompt, without reflashing firmware (d953df62f, 98686ac46).

  • First-run LED guide is a new OpenMV Cam LED Colors dialog that explains the onboard LED states and can be dismissed permanently (c2d00422f).

New features

  • V3 bootloader queries the QSPI flash layout during firmware loading and erases the external QSPI flash only during a full onboard-data-flash erase; connectClicked always drives bootloaderQSPIFLayout on V3 boards but runs bootloaderQSPIFErase only when forceFlashFSErase is set (QSPI write/memtest commands are implemented in the IO layer but are not exercised by the loader) (d953df62f).

  • Sensor and board status queries the camera’s sensor module on connect and displays it (OV2640, OV5640, OV7690, OV7725, OV9650, MT9V034, LEPTON) in the status bar, along with a new board type label, using a new sensors.txt id-to-name map (0ffa82958).

  • First-run LED guide adds a new OpenMV Cam LED Colors dialog that pops up after a short delay when helloworld_1.py is the open document on first run, explaining the onboard LED states (blinking green = bootloader running, blue = running main.py, white = hardware-failure panic); a “Don’t show this message again.” checkbox persists the dismissal via a DONT_SHOW_LED_STATES_AGAIN setting (c2d00422f).

  • Open OpenMV Cam Drive folder is a new Tools menu item that opens the camera’s mounted drive in the system file browser (a49f54305).

  • Erase Onboard Data Flash is a new Tools command that erases only the onboard filesystem flash, after a confirmation prompt, without reflashing firmware (d953df62f, 98686ac46).

  • TensorFlow model copy lets the model-copy dialog copy .tflite models to the cam in addition to .network neural-network files; the dialog filter also gained Label Files (*.txt) and All Files entries (ad1aa98f0, 0ffa82958, c0dbdd9e5).

  • Debug-protocol version switch breaks up GetAttribute, SetAttribute, FBEnable, and JPEGEnable serial commands when talking to firmware 3.5.3+ for reliability (83b9ca18f).

  • New bundled examples add TensorFlow Lite mobilenet and person-detection sliding-window scripts plus an STM32Cube.AI (nn_stm32cubeai.py) MNIST example, a new 32-modbus folder (modbus_rtu_slave.py, modbus_apriltag.py), WiFi shield additions (http_client_ssl, static_ip, mqtt_pub/mqtt_sub), Arduino UART/SPI-slave, and CAN (e26b90d79, 42ba8f5c4).

Other changes and improvements

  • Updated the USB debug protocol to the new firmware: attribute reads use the new 32-bit ATTR_READ_2 (0xCA) command, and attribute, value, and framebuffer-enable payloads are sent as 32-bit longs instead of 16-bit words (55d7cfe70).

  • Relabeled Save open script to OpenMV Cam to Save open script to OpenMV Cam (as main.py) to clarify it writes main.py (a49f54305).

  • Relabeled Run Bootloader to Run Bootloader (Load Firmware) to clarify its purpose (ad1aa98f0).

  • Example menus are now sorted by their numeric folder/file prefix, and the leading NN- digits are stripped from the displayed names (ad1aa98f0).

  • Output and serial terminals now render tabs as spaces using a configurable serial-terminal tab width from the text-editor settings instead of a hardcoded width of 8 (98686ac46).

  • Linux drive detection now also accepts fuseblk-mounted filesystems (for example exFAT/NTFS volumes) when associating the camera drive (c0dbdd9e5).

  • Updated the bundled MicroPython HTML documentation set (library reference, esp8266/esp32 tutorials, generated pages and images) shown in the IDE help (e69d71f7c, 90b5c6eb5, 97b0f645a).

Bug fixes

  • Fixed a numeric overflow in the histogram statistics (mean, quartiles, median, standard deviation) by widening the accumulators from int to 64-bit, preventing wrong stats on large images (55d7cfe70).

  • Reworked disconnect/eject on Linux: the unreliable syncfs/closedir flush was removed and the drive is now unmounted with a plain umount command, with no progress dialog (b86d5c62c, c0dbdd9e5, 30d4a7d2d).

  • The board’s USB drive is now only associated when the firmware is new enough or a .openmv_disk marker file is present, preventing the IDE from grabbing the wrong removable drive (e464eaed4).

  • Fixed reconnect logic so triggering a bootloader/erase operation while connected now cleanly disconnects first and then retries, avoiding a stuck working state (d953df62f).

  • Rewrote the comment/whitespace stripper used when sending scripts to the cam as a string-aware state machine, so # characters inside strings are no longer mistaken for comments, and trailing whitespace and docstrings are handled (24dff1b2f).

  • Fixed translation-string handling for several connection/terminal dialog messages so the embedded shell commands (sudo adduser, pydfu install steps) are no longer part of the translatable text and render correctly (b5705a57e).

Platform and tool support

  • Qt Creator base: 4.0.2.

  • Renamed the OpenMV Cam H7 Plus board/firmware from OPENMV4R to OPENMV4P (OMV4P_H7_32768_SDRAM) and bundled its firmware under the new name (c0dbdd9e5).

  • Corrected the H7 Plus board display name to use underscores instead of spaces (OpenMV_Cam_H7_Plus_(STM32H743_w/_SDRAM)) (75764132c).

  • Bundled firmware was updated across the release, ending at version 3.5.2 for OPENMV2/3/4/4P (final bump in 15c07498c; earlier cumulative bumps in 42ba8f5c4 to 3.4.2, a99c2e3e1 to 3.4.3, e26b90d79 to 3.5.0, and 97b0f645a to 3.5.1).

  • Bundled firmware versions: OPENMV2 (Cam M4) 1.4.11, OPENMV3 (Cam M7) 1.4.11, OPENMV4 (Cam H7) 1.2.15, OPENMV4P (Cam H7 Plus) 1.2.15.

  • OpenMV IDE version bumped from 2.2.1 to 2.4.0.

Breaking changes

The USB debug attribute-read protocol was switched from the old 16-bit ATTR_READ (0x8A) command to the new 32-bit ATTR_READ_2 (0xCA) command, and attribute, value, and enable payloads are now sent as 32-bit longs; the IDE also queries the camera sensor ID on connect. This requires firmware that implements the new protocol. The bundled 1.2.15 / 1.4.11 firmware provides it, so older cameras must be flashed to the new firmware to connect.