v3.9.1

v3.9.1 adds a LoRa library for the Arduino Portenta, sensor frame-rate control (set_framerate() / get_framerate()), in-place draw_image() updates, and exFAT for the Portenta, and updates ulab to 2.1.3 with a more accurate interpolated LAB color table. The ulab bump and LAB color change are behavior changes — read the breaking changes below.

Highlights

  • LoRa library for the Arduino Portenta.

  • Frame-rate controlsensor.set_framerate() / sensor.get_framerate().

  • In-place draw_image() updates and consolidated to_* / copy / crop image operations.

  • exFAT filesystem enabled on the Portenta.

  • Breaking: ulab was updated to 2.1.3 and color conversion now uses an interpolated LAB table — see the breaking changes.

New features

  • LoRa — added a LoRa library for the Arduino Portenta.

  • Sensor frame rate — added sensor.set_framerate() and sensor.get_framerate().

  • draw_imageimage.draw_image() now supports in-place updates.

  • exFAT — enabled the exFAT filesystem on the Portenta.

Other changes and improvements

  • Centralized and improved the to_* / copy / crop image operations and made copy_to_fb smarter about resource use; updated the HM01B0 driver; updated build scripts from upstream.

Bug fixes

Camera and sensors:

  • Fixed the default OV5640 SYSTEM_CTROL0 value in sleep(), the HM01B0 default OSC register value, and the HM01B0 pixel-clock polarity.

System:

  • Low-power fixes.

Breaking API changes

User-visible API breaks between v3.9.0 and v3.9.1. Scope: Python C-modules in modules/ and Python libraries in scripts/libraries/.

Both breaking changes are behavior changes (same API, different results) — re-check affected scripts. Each commit hash links to its diff on GitHub.

ulab updated to 2.1.3 (behavior)

The bundled ulab (NumPy-like) module was updated to 2.1.3. Array/numeric behavior follows upstream ulab 2.1.3; re-check scripts that depend on version-specific ulab behavior.

Commits: 2a190f35c

Interpolated LAB color table (behavior)

Color conversion now uses an interpolated LAB table, making LAB-based operations (color thresholds, rgb_to_lab / lab_to_rgb, color statistics) more accurate. Results differ slightly from previous releases, so re-check and re-tune color thresholds that were calibrated against the old table.

Commits: 690a39c0c

Migration checklist

Re-validate scripts that depend on version-specific ulab behavior (the ulab update) and re-tune LAB-based color thresholds against the interpolated table (the LAB color change). All other scripts run unchanged.