.. _changelog_ide_v2_4_0: 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. .. contents:: On this page :backlinks: none :local: :depth: 1 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.