v3.6.5

v3.6.5 updates TensorFlow and ulab, substantially improves the HM01B0 camera (arbitrary resolutions, QQVGA, cropping, set_auto_exposure(), and an anti-flicker fix), and brings Portenta external-SDRAM and production board support. The legacy CMSIS-NN training tooling/examples were removed and the OpenMV 4 Plus framebuffer was reduced — read the breaking changes below.

Highlights

  • HM01B0 — arbitrary resolutions, QQVGA, cropping, and set_auto_exposure() support, plus an automatic-exposure flicker fix.

  • TensorFlow / ulab updated to their latest versions.

  • Portenta — external-SDRAM usage and production board files.

  • Fixes — lens correction, image quality at low resolutions, and an FPS clock fix.

  • Breaking: the legacy CMSIS-NN training/conversion tooling and examples were removed and the OpenMV 4 Plus framebuffer was reduced — see the breaking changes.

New features

  • HM01B0 — added arbitrary-resolution support, QQVGA and additional stubs, sensor-side cropping, and sensor.set_auto_exposure() support.

  • Apriltag readout — added a readout-control apriltag-tracking example.

Other changes and improvements

  • Updated TensorFlow and ulab to their latest versions; added Portenta external-SDRAM usage and production/CI board files; cleaned up the MT9V034 driver and the framebuffer accessor functions.

Bug fixes

Camera and imaging:

  • Fixed flickering during automatic exposure on the HM01B0, lens correction, image quality at lower resolutions, the OV5640/JPEG line copy (dest_fb), the FPS clock, and returning 0 when bpp is negative; removed an unnecessary HM01B0 horizontal flip.

Hardware and board support

  • HM01B0 — arbitrary resolutions, QQVGA, and cropping.

  • Arduino Portenta H7 — external SDRAM and updated production board files.

Breaking API changes

User-visible API breaks between v3.6.4 and v3.6.5. Scope: Python C-modules in modules/, Python libraries in scripts/libraries/, and the bundled tooling/examples.

Each change is tagged with its impact:

  • behavior — same API, different results; re-check tuned scripts.

  • tooling — affects the build/conversion tooling or bundled examples, not the firmware Python API.

Changes are grouped by impact in that order. If you just want to port your code, jump to the migration checklist at the end. Each commit hash links to its diff on GitHub.

OpenMV 4 Plus framebuffer reduced (behavior)

The OpenMV 4 Plus framebuffer was reduced to 20 MB (and the OpenMV 2/3 buffer size was corrected). Memory-tight scripts on the OpenMV 4 Plus that allocated very large frames/objects from the framebuffer may now hit allocation limits sooner and should be re-checked.

Commits: 3a790a827

Legacy CMSIS-NN tooling and examples removed (tooling)

The legacy CMSIS-NN model-training/conversion tooling (nn_convert.py, nn_quantizer.py, the LeNet/CIFAR/smile model files) and the 25-Machine-Learning/nn_*.py example scripts were removed. The nn module itself still works in this release (it is removed later, in v3.9.0), but the CMSIS-NN model-generation tooling is gone — use the TensorFlow Lite (tf) workflow instead.

Commits: 588f79a62

Migration checklist

Re-check large framebuffer allocations on the OpenMV 4 Plus against the reduced 20 MB framebuffer (the framebuffer change), and move CMSIS-NN model generation to the TensorFlow Lite workflow (the CMSIS-NN tooling removal). All other scripts run unchanged.