14.1.1.3. Flashing the firmware

Once you have a firmware.bin (and its romfs<n>.img) from Building the firmware, program it onto the camera. OpenMV IDE is the recommended method; the command-line procedure differs by camera family and is documented per family on the pages linked at the bottom. The bootloader itself is restored separately – see Restoring the bootloader.

14.1.1.3.2. Windows: install the USB drivers

Windows has no built-in driver for the camera’s USB DFU, SDP, and ISP interfaces, so the command-line tools (dfu-util, the NXP SPSDK tools, the Alif SE Tools) cannot detect the device until a WinUSB driver is bound to it. OpenMV IDE’s Windows installer installs all of these drivers, so the simplest approach is to install OpenMV IDE once – after which both the IDE and the command-line tools work. This is why GUI flashing succeeds on a fresh Windows machine while a standalone dfu-util does not.

If installing the IDE is not an option, run the matching driver installer from OpenMV IDE’s share/qtcreator/drivers/ directory as Administrator:

Driver installer

USB devices it binds

openmv\openmv.cmd

OpenMV DFU devices, and the RT1062 SPSDK interfaces (0x1FC9:0x0135 SDP ROM and 0x15A2:0x0073 flashloader)

arduino\arduino.cmd

Arduino DFU devices (2341:03xx)

ftdi\ftdi.cmd

The FTDI 0403:6015 adapter used for AE3 bootloader recovery

DFU_Driver\STM32Bootloader.bat

The ST 0483:df11 system DFU device used for STM32 bootloader recovery

Alternatively, bind WinUSB to the specific VID:PID with Zadig or pnputil. No command-line flashing on Windows works without this. Linux and macOS need no driver installation (Linux requires only the udev rules).

14.1.1.3.3. Flashing over SWD (make deploy)

If a debug probe is already wired to the camera – as it is for debugging – the fastest edit-build-flash cycle bypasses USB DFU and programs the chip directly over SWD. On the STM32 cameras:

make -j$(nproc) TARGET=<TARGET> deploy

This flashes the freshly built firmware via STM32_Programmer_CLI (from the SDK) over the connected probe. There is no bootloader entry, no USB re-enumeration, and no cable swapping: build, run deploy, and the camera restarts running the new code. This is the recommended workflow during active firmware development. Use DFU or OpenMV IDE when flashing without a probe or when distributing firmware to others.

14.1.1.3.4. Entering bootloader / DFU mode

Flashing requires the camera to be in its bootloader / DFU mode. There are three ways in:

  • On plug-in (any camera). Every camera runs its bootloader for a short window when it powers up, before the firmware starts – plug the camera into USB and the bootloader is briefly listening.

  • From the IDE (any camera). With the camera plugged in, Tools -> Force enter OpenMV Cam bootloader reboots it into bootloader mode.

  • Arduino reset button. On Arduino boards, double-click the reset button to enter bootloader mode.

14.1.1.3.5. Command-line flashing by camera family

The pages below show what OpenMV IDE does under the hood for each camera family, for when you want to run the flashing yourself – in scripts, in CI, or on a production line. For everyday flashing we recommend OpenMV IDE.