.. _changelog_v3_9_1: v3.9.1 ====== v3.9.1 adds a **LoRa** library for the Arduino Portenta, :mod:`sensor` frame-rate control (``set_framerate()`` / ``get_framerate()``), in-place ``draw_image()`` updates, and exFAT for the Portenta, and updates :mod:`ulab` to 2.1.3 with a more accurate interpolated LAB color table. The :mod:`ulab` bump and LAB color change are behavior changes — read the breaking changes below. .. contents:: On this page :local: :depth: 1 Highlights ---------- - **LoRa library** for the Arduino Portenta. - **Frame-rate control** — :func:`sensor.set_framerate` / :func:`sensor.get_framerate`. - In-place ``draw_image()`` updates and consolidated ``to_*`` / ``copy`` / ``crop`` image operations. - **exFAT** filesystem enabled on the Portenta. - **Breaking:** :mod:`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 :func:`sensor.set_framerate` and :func:`sensor.get_framerate`. - **draw_image** — ``image.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. .. _v3_9_1_ulab: :mod:`ulab` updated to 2.1.3 *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The bundled :mod:`ulab` (NumPy-like) module was updated to 2.1.3. Array/numeric behavior follows upstream :mod:`ulab` 2.1.3; re-check scripts that depend on version-specific :mod:`ulab` behavior. *Commits:* `2a190f35c `__ .. _v3_9_1_lab: 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 `__ .. _v3_9_1_migration: Migration checklist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Re-validate scripts that depend on version-specific :mod:`ulab` behavior (:ref:`the ulab update `) and re-tune LAB-based color thresholds against the interpolated table (:ref:`the LAB color change `). All other scripts run unchanged.