# micropython v1.29.0 — New psoc-edge port, CAN on alif and mimxrt, mem_backup, manifest c_module - Product: micropython (https://whatsnew.fyi/product/micropython) - Vendor: micropython - Date: 2026-08-24 - Version: v1.29.0 - Original notes: https://github.com/micropython/micropython/releases/tag/v1.29.0 - Permalink: https://whatsnew.fyi/product/micropython/releases/v1.29.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — New psoc-edge port for Infineon PSOC Edge microcontrollers with UART REPL, filesystem using QSPI flash, machine Pin, UART and RTC classes, and support for the KIT_PSE84_AI board - **added** — Implement machine.CAN API on alif and mimxrt ports - **added** — New machine.mem_backup() interface providing consistent access to backup memory across alif, esp32, mimxrt, nrf, rp2, samd and stm32 ports - **added** — Add c_module() function to manifest API for declaring user C modules in firmware builds - **added** — Support strict, ignore and replace error handling modes in bytes.decode() and three-argument str() - **added** — Add USB network (Network Control Model, NCM) driver with network.USBD_NCM class for Ethernet-over-USB - **added** — Parser now recognises const assignments with type hints - **added** — Add support for bytes.find(int) and int.to_bytes() with signed=True argument - **added** — RISC-V inline assembler adds support for Zcmp opcodes and improved register allocation - **added** — Add support for LoongArch64 architecture - **added** — Native .mpy modules now automatically include memset, memmove and memcpy during linking and can be built with Clang - **added** — Add TLS-PSK (pre-shared key) support in SSLContext class - **added** — Enable PEM certificate parsing for all ports using mbedTLS - **added** — Add machine.WDT to alif port - **added** — Add timeout argument to machine.lightsleep() on alif port - **added** — Implement five states of machine.reset_cause() on alif port - **added** — Add ESP32-H2 chip support and two new board definitions in esp32 port - **added** — Add machine.wake_pins() function to esp32 port - **added** — Add CSI (Channel State Information) API via new methods on WLAN object in esp32 port - **added** — Add virtual timers support via machine.Timer(-1) in esp32 port - **changed** — Validate encoding/decoding mode when converting between str and bytes, accepting only utf-8, utf8 and ascii - **changed** — Update mbedTLS component to v3.6.6 - **changed** — Update LittleFS to v2.11.3 - **changed** — Update TinyUSB to 0.21.0 - **changed** — Update CMSIS to v6.3.0 in mimxrt, nrf, psoc-edge, samd and stm32 ports - **changed** — Update esp32 IDF to v5.5.2 - **changed** — Update ESP-NOW to v2.0 in esp32 port - **changed** — Enable mDNS on the Ethernet interface in esp32 port - **changed** — Make LDO configurable from SDCard constructor in esp32 port - **changed** — Update nrfx library to v3.14.0 in nrf port - **changed** — Modernise Pin.irq in nrf port - **changed** — Change sys.platform to nrf for all boards in nrf port for consistency - **changed** — Update pico-sdk to 2.3.0 in rp2 port - **changed** — Refactor linker scripts in rp2 port - **changed** — Enable network.PPP on all boards that have networking enabled in rp2 port - **fixed** — Fix str.center() to handle Unicode characters correctly - **fixed** — Fix flash erase operations on Hyperflash boards in mimxrt port - **fixed** — Fix SDCard caching issues in mimxrt port - **fixed** — Fix watchdog interactions with machine.lightsleep() in rp2 port - **fixed** — Fix handling of some UART IRQ events in samd port - **added** — Print all printable Unicode characters verbatim without escape sequences - **added** — Add support for DMA pacing timers via rp2.DMATimer class in rp2 port - **added** — Add I2C timeout argument in nrf port - **added** — Add adc.read_timed() and dac.write_timed() methods in samd port Overview ======== This release of MicroPython adds a new "psoc-edge" port for Infineon PSOC Edge microcontrollers. This is a bare-metal port using CMSIS 6 and a set of low-level HAL submodules from Infineon's Modus Toolbox. It uses the standard ARM toolchains and builds with make. It currently supports a UART REPL, a filesystem (using QSPI flash), machine Pin, UART and RTC classes, including IRQs for Pin and UART. There is currently one supported board, the KIT_PSE84_AI. The previous v1.28.0 release introduced a new `machine.CAN` API with an implementation for the stm32 port. This release implements that API on both the alif and mimxrt ports. Much effort went into making sure these three ports have the same consistent behaviour when using CAN, so that reliable applications can be built upon that API. Also in this release is a new `machine.mem_backup()` interface which gives consistent access to backup memory on the alif, esp32, mimxrt, nrf, rp2, samd and stm32 ports. Calling this function returns a writable `memoryview` that survives (in most cases) a hard reset. The available regions can be discovered via `machine.mem_backup(-1)`. See the documentation for more details and examples: https://docs.micropython.org/en/latest/library/machine.html . Configuring a custom build with user C modules is now a lot simpler thanks to the addition of the `c_module()` function to the manifest API. This function lets a manifest file declare which user C modules should be included in the build. They are declared alongside the declaration of frozen modules, making it much easier to configure firmware with extensions. For example, a `manifest.py` file containing: require("bundle-networking") freeze("/path/to/custom/modules") c_module("/path/to/micropython-ulab/code") will freeze in the networking bundle from micropython-lib, freeze in custom Python code, and include the micropython-ulab C library in the build. This `c_module()` feature is intended to replace the existing `USER_C_MODULES` option (although it currently works together with that option). Unicode support is improved in this release: - `bytes.decode()` and three-argument `str()` now support "strict", "ignore" and "replace" for the errors argument; - when converting between str and bytes, the encoding/decoding mode is now validated and only "utf-8", "utf8" and "ascii" are accepted; - `str.center()` is fixed so it handles Unicode characters correctly; - all printable Unicode characters are now printed verbatim (not as an escape sequence). A USB network (Network Control Model, NCM) driver implementation has been added, providing Ethernet-over-USB backed by the lwIP stack, available to Python through the new `network.USBD_NCM` class. With this enabled, the host computer sees the MicroPython device as a USB Ethernet adapter, and the host is assigned an IP address via DHCP (served by the MicroPython device). Python code on the device can then use all the usual networking facilities to communicate with the host. It's disabled by default, and needs `MICROPY_PY_NETWORK_USBD_NCM` enabled in a custom build. The parser now recognises const assignments with type hints, for example `_X: int = const(123)`. There is now support for `bytes.find(int)` as well as `int.to_bytes()` with argument `signed=True`. The RISC-V inline assembler adds support for Zcmp opcodes and has improved register allocation. The LoongArch64 architecture is now supported and that is tested as part of CI. Native .mpy modules built via `mpy_ld.py` now automatically include `memset`, `memmove` and `memcpy` in the linking stage so these no longer need to be manually provided. Native modules can also now be built with Clang. The mbedTLS component is updated to v3.6.6, and support is added for TLS-PSK (pre-shared key) in the `SSLContext` class. Parsing of PEM certificates is also enabled for all ports using mbedTLS. LittleFS is updated to v2.11.3, TinyUSB to 0 _[Truncated at 4000 characters — full notes: https://github.com/micropython/micropython/releases/tag/v1.29.0]_