v4.2.2#
v4.2.2 adds PNG image support (decode/encode via lodepng), a table-driven built-in-model loader, Portenta OV5640 support, an Edge-Impulse TensorFlow update, and ulab 4.0. The RPC CAN configuration API changed — read the breaking changes below.
Highlights#
PNG support —
Image.to_png(),image.PNG, and PNG file read/write.tf.load_builtin_model()— table-driven built-in models that can be replaced or added at build time.Portenta H7 — OV5640 camera support (with autofocus).
MicroPython/ulab — ulab updated to 4.0.0.
Breaking: the RPC CAN configuration API changed — see the breaking changes.
New features#
PNG image format — a new
Image.to_png()method, animage.PNG/PIXFORMAT_PNGconstant, PNG file load/save (read/write.png), and PNG output inimage.to()conversions, via the integrated lodepng codec.tf.load_builtin_model(path)— loads a firmware-built-in model and returns a(labels, net)tuple; built-in models are now table-driven so they can be replaced or added at build time.
Other changes and improvements#
TensorFlow / Edge Impulse — the bundled inference library was updated to Edge Impulse ei-V2.5.0, the
person_detectionmodel moved into the built-in model table, and missing TensorFlow operators were added across all Cortex-M0+/M4/M7/M55 builds so more Edge Impulse models run.ulab updated to 4.0.0.
Opening the USB virtual serial port at 1200 bps now triggers an Arduino-style touch reset into the bootloader.
The WINC1500 WiFi module firmware was updated to 19.7.6 (with the updater script), and it now reports the actual host-driver version.
The RP2 port prints “MPY: soft reboot” and gained UART init/de-init.
Bug fixes#
Fixed the Arduino Nano RP2040 Connect raw frame-buffer size and the Arduino Nicla Vision USB Product ID (correct USB enumeration).
Hardware and board support#
Arduino Portenta H7 — OV5640 camera support (with autofocus); the GC2145 is disabled on the Portenta.
Arduino Nano RP2040 Connect — memory configuration and fresh-filesystem templates.
WiFi Shield (WINC1500) — firmware updated to 19.7.6.
Breaking API changes#
User-visible API breaks between v4.2.1 and v4.2.2. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.
Each change is tagged with its impact:
minor — narrow API; only affects scripts that used it.
behavior — same API, different results; re-check tuned scripts.
Changes are grouped by impact in that order. Each commit hash links to its diff on GitHub.
RPC CAN configuration API (minor)#
In the rpc library, the rpc_can_master / rpc_can_slave CAN keyword argument sampling_point was renamed to sample_point (to match upstream MicroPython), and the manual CAN bit-timing helper was removed — the CAN bus is now configured via CAN(..., baudrate=, sample_point=). Scripts that passed sampling_point or relied on the old bit-timing computation must be updated.
image.format() and compressed images (behavior)#
With the unified compressed-image path added for PNG, image.format() now returns PIXFORMAT_INVALID for an unknown format, and compressed-image indexing / iteration / printing now covers PNG as well as JPEG. Code that inspected the previous return value for unknown formats should be re-checked.
Commit: f12a4659c
Migration checklist#
For a clean port to v4.2.2: rename RPC CAN sampling_point → sample_point and drop any manual CAN bit-timing setup (the RPC CAN change), and re-check any code that inspected image.format() for unknown formats (the format() change).