MicroPython v1.27
Three new MCU families, formal port Tier levels, and a unified REPL on every port.
Released December 10, 2025
Port Tier Levels
MicroPython supports more than twenty ports. v1.27 formalises that landscape: every port is now classified into one of four Tier levels, setting expectations for how mature it is, how actively it's tested, and what level of support contributors should expect. The classification also lowers the bar for new ports to land — they can enter at a low Tier and graduate upward.
Note: esp32 has ongoing financial support from Espressif.
Full tier definitions live in the
MicroPython support tiers documentation.
ESP32-C5 & ESP32-P4 — standalone or paired
v1.27 adds two new RISC-V ESP32 family members. The ESP32-P4 is a higher-performance application processor that has no built-in radio — so for wireless, it's paired with a C5 (WiFi 6) or C6 (WiFi 4 + 802.15.4) co-processor. Board profiles ship for all three configurations.
ESP32_GENERIC_C5.
STM32U5xx series
Support for STMicroelectronics' low-power, high-performance U5 series —
Cortex-M33 with TrustZone, generous RAM, and competitive power numbers. v1.27
brings up USB, ADC, DAC, UART, I2C, SPI and RTC, with a board profile for the
NUCLEO-U5A5ZJ-Q.
STM32U5
Cortex-M33Targeted at battery-powered IoT applications. v1.27's port supports the core peripherals; expect more (Ethernet, advanced power modes) in subsequent releases. STM32 also gets the F469 disco board, NUCLEO-H7A3ZI-Q, and a WeAct mini H743 in this release.
STM32 family additions
v1.27 cross-cutting- STM32G0xx — DAC support; ADC, Timer(4), RTC wakeup fixes.
- STM32G4xx — hardware I2C (was bit-banged).
- STM32L4xx —
I2CTarget(the v1.26 feature, now on L4). - STM32N6xx — LAN works, including gigabit Ethernet via RTL8211 PHY.
- Optional TinyUSB — opt-in TinyUSB stack alongside the existing STM USB stack. Eventually the default; allows defining USB devices in Python.
Unified REPL on unix & windows
The unix and windows ports' main REPL loop has been replaced with the same
pyexec code that all bare-metal ports use. Behaviour is now
consistent across the entire MicroPython family — and crucially,
raw REPL is now supported on unix and windows, which means
mpremote works against a unix MicroPython build the same way it
works against a board.
$ mpremote connect /dev/ttyACM0 >>> import sys >>> print(sys.platform) rp2 >>>
$ mpremote connect ./build-standard/micropython >>> import sys >>> print(sys.platform) linux >>>
mpremote against a board now works against
a unix build too — including mpremote run, mpremote cp,
and the test harness.
Hard IRQ Timer Callbacks — almost everywhere
machine.Timer(...).init(callback=fn, hard=True) now runs your
callback inside the actual hardware interrupt context (no scheduler hop), so
the latency is sub-microsecond. v1.27 brings hard-IRQ timer support to most
ports. esp32 remains soft-IRQ only.
from machine import Timer def on_tick(t): # Runs in ISR context: no allocation, no try/except, no print to UART pin.toggle() t = Timer(0) t.init(freq=10_000, callback=on_tick, hard=True)
Python language tweaks
Four small core-language additions in v1.27. Pick one from the dropdown to load the example into the editor, then run it live.
Highlights
Other notable improvements in v1.27.
Test suite + CI overhaul
Auto-detect unicode/float/native, always run stress tests, ASan + UBSan builds, full suite on unix-minimal and zephyr CI.
target_wiring.py
Per-board test-wiring config in one file. machine.UART tests
already converted; pattern extends to other peripherals.
Drop Python 2.7 support
EOL since January 2020. Build scripts and tools now require Python 3.
esp32.wake_on_gpio()
Wake the SoC from deep sleep via GPIO pins on the esp32 port.
I2S enabled on all ESP32-C6 boards
Audio I/O ships out of the box on every C6 board profile.
RP2350 PIO + alt-function fixes
PIO supports pin wrapping; RP2350B upper-bank pins now usable; alt functions fixed for pins > 31. New UART_AUX, XIP_CS1, CORESIGHT_TRACE and HSTX alt functions.
asyncio.start_server() IPv6
The asyncio server can now bind IPv6 sockets directly.
RISC-V Zba opcodes
Native emitter generates better 32-bit RISC-V code — useful on RP2350 in RV mode and on the ESP32-C-series.
QEMU adds RV64 + Cortex-M55
New VIRT_RV64, MPS2_AN500 (M7) and MPS3_AN547 (M55) qemu boards broaden architecture testing.
Zephyr v4.2.0
Zephyr port adds machine.ADC, native Zephyr filesystem
VFS, GC split heap, hard IRQ timer callbacks, sensor attribute
get/set, default-flash auto-format on boot.
alif RTC + time_ns
machine.RTC.datetime() get/set, time.time_ns(),
plus USB device-address and SPI.init() fixes.
ESP32 USB CDC stability
TinyUSB ZLP fix that affected REPL reliability, plus a fix for blank
USB HID reports on PSRAM boards. network.PPP thread-safety
fixes.
New Boards
14 new board definitions across 3 ports.
esp32
stm32
zephyr
By the Numbers
v1.27 in numbers. esp32 grew most, driven by ESP-IDF v5.5.1 and the new RMT API.