.. _changelog_v4_4_2: v4.4.2 ====== v4.4.2 adds SPI-LCD byte-reversal and MT9V0xx clock override, more robust script execution and WiFi socket handling, and fixes a notable image ``copy=`` bug. JPEG compression argument order and camera clock selection changed — read the breaking changes below. .. contents:: On this page :local: :depth: 1 Highlights ---------- - **SPI LCD byte reversal** and **MT9V0xx external clock override**. - **More robust script execution** and exception handling, plus WiFi socket fixes. - Fixed an :mod:`image` ``copy=`` bug that modified the original object. - **Breaking:** JPEG compression positional-argument order and camera clock selection changed — see the breaking changes. New features ------------ - **SPI LCD byte reversal** — the STM32 SPI LCD path gained byte-reversal support. - **MT9V0xx clock override** — the MT9V0xx external clock frequency can now be overridden (the Portenta overrides its default MT sensor clock). Other changes and improvements ------------------------------ - Script execution and exception handling were made more robust across the nRF, RP2, and STM32 ports. - Optimized MT9M114 sensor patch loading (faster initialization). Bug fixes --------- Image processing: - Fixed an :mod:`image` operation ``copy=`` argument bug where the original object was modified instead of a copy. Camera and sensors: - Added Nicla Vision sensor readout control and fixed its image orientation. Networking and USB: - WINC1500 now keeps the listening socket open on an accept timeout and correctly clears the NIC when closing sockets; fixed the RTSP library. - The audio module now uses static scheduler nodes for more reliable callback scheduling; the USB debugger is disabled before exceptions are raised, improving IDE-connection stability on script errors. Hardware and board support -------------------------- - **Arduino Nicla Vision** — sensor readout control and corrected image orientation. - **Arduino Portenta** — overrides its default MT sensor clock. Breaking API changes -------------------- User-visible API breaks between v4.4.1 and v4.4.2. Scope: Python C-modules in ``modules/`` and Python libraries in ``scripts/libraries/``. Both breaking changes are *behavior* changes (same API, different results) — re-check tuned scripts. Each commit hash links to its diff on GitHub. .. _v4_4_2_jpeg: JPEG compression argument order *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The positional-argument handling for the JPEG compression family (``compress()`` / ``compressed()`` / JPEG ``save()``) was corrected so that ``quality`` is the first positional argument, with a default of 90. Scripts that passed compression arguments positionally against the previous (incorrect) order must be updated. *Commit:* `509b094a5 `__ .. _v4_4_2_clock: Camera clock frequency selection *(behavior)* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STM32 camera external-clock selection now picks the closest available frequency *under* the requested value instead of failing or overshooting. The actual pixel clock for a given request may differ from previous releases — re-check timing-sensitive captures. *Commit:* `39ba1a7f5 `__ Migration checklist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For a clean port to v4.4.2: pass JPEG ``quality`` as the first positional argument (or as a keyword) (:ref:`the JPEG argument change `), and re-check any timing-sensitive camera clock settings (:ref:`the clock-selection change `).