Microcontrollers

CircuitPython 11 Alpha 3: board.I2C() on Pico, Video on ESP32-P4

CircuitPython 11 Alpha 3: board.I2C() on Pico, Video on ESP32-P4

Python on microcontrollers stopped being a novelty a while ago. CircuitPython runs on hundreds of boards, from the Raspberry Pi Pico to the ESP32-S3, and in a growing number of Philippine classrooms it is the first language a student ever flashes onto real hardware. That is why each step toward version 11 is worth tracking: on 12 November 2026 Adafruit shipped CircuitPython 11.0.0-alpha.3, the third test build of the cycle, and it carries more classroom-relevant changes than most point releases.

What landed in alpha.3

The headline for Pico users is that board.I2C(), board.SPI() and board.UART() now exist on Raspberry Pi Pico boards. Until now, Pico code had to spell out busio.I2C(board.GP5, board.GP4) with the exact GPIO pins, which tripped up beginners copying examples written for Feather boards. Pico, Pico W and Pico 2 now get the same one-line bus constructors, so check the default pins in your board’s definition before you wire the breadboard. ESP32-S2 and ESP32-S3 pick up audiopwmio, meaning PWM audio straight out of a GPIO pin with no external DAC chip. A new async_spi module makes SPI transfers awaitable, which fits neatly into asyncio-based sensor loops. Web workflow can now mirror the display in a browser tab, useful for a teacher projecting a student’s board without a document camera. The ESP32-P4 gets the first pieces of a video pipeline (mipicsi, videocore and videogif), and hardwarekey plus P-256 ECDSA signature verification arrive on Espressif chips for signed-payload checks in IoT projects.

The technical takeaway: read the breaking-changes list first

Alpha builds exist to flush out incompatibilities, and this one lists several. Libraries from the 10.x bundle still load on 11.0.0, which is the good news. The gotchas: the SDIO pin names on the Feather Adalogger RP2040 and RP2350 were renamed, so SD-card logging code written against 10.x needs a pin-name check. On Espressif boards, the processor UID is now reported in canonical order, which changes the USB serial number and the value printed in boot_out.txt. If your thesis rig identifies boards by serial number, those IDs shift after the upgrade. OnDiskBitmap now takes only a filename rather than an open file object, so displayio splash-screen code wants a one-line edit. The broadcom, litex and renode ports are gone entirely. On the plus side, displayio, rotozoom and JPEG decoding all got measurable speedups, and synthio.MidiTrack playback of MIDI files improved.

What to try next

Alpha firmware does not belong on a competition robot the week before the event, but it does belong on a spare Pico tonight. Download the UF2 for your board from circuitpython.org/downloads, hold BOOTSEL while plugging in, drop the file onto the RPI-RP2 drive, then type i2c = board.I2C() at the REPL with a BME280 or SSD1306 OLED on the Qwiic port and run i2c.scan(). Anything odd goes on the CircuitPython GitHub releases page; bug reports from student teams during the alpha cycle are part of how the final 11.0.0 gets stable. The complete changelog is at blog.adafruit.com.

Frequently Asked Questions

Does CircuitPython 11.0.0-alpha.3 work with my existing 10.x libraries?

Yes. Adafruit states that libraries from the 10.x bundles remain compatible with 11.0.0 builds. A few APIs did change, though: OnDiskBitmap now accepts only a filename, and the SDIO pin names on the Feather Adalogger RP2040 and RP2350 were renamed, so check code that touches those.

What changes for Raspberry Pi Pico boards in this alpha?

Pico, Pico W and Pico 2 gain board.I2C(), board.SPI() and board.UART(), so examples written for Feather-style boards run with fewer edits. Look up the default pins in your board’s definition on circuitpython.org before wiring sensors, since the constructor picks them for you.

What will I learn if I build this?

You will practice flashing UF2 firmware, using the REPL to scan an I2C bus, reading a changelog for breaking changes before upgrading, and writing a reproducible bug report. Those are the same habits firmware teams use when they test a release candidate on real hardware.

This article was inspired by reporting from Adafruit. Find the parts and modules to build it at Circuitrocks.

// written by Ann Arandia

Ann Arandia covers community projects and maker events for the Circuitrocks blog. She writes about local workshops, kid-friendly electronics, and the Philippine maker scene — the people, the meet-ups, the projects that come out of them.