Ever wanted your microcontroller to show up on a laptop as a real USB microphone or speaker, with no extra audio hardware bolted on? That is exactly the door the newest CircuitPython alpha cracks open.
What landed in this release
CircuitPython 10.3.0-alpha.3 is a preview build on the road to the stable 10.3.0, and it leans hard into audio. The headline additions are a pair of new USB audio classes that let a board enumerate as a USB sound device, plus a resampler and a fresh I2S input stream for pulling audio straight into your code. There are also fixes for camera support, Bluetooth reliability, and a handful of filesystem quirks on web and BLE workflows. For a maker, the practical upshot is that projects which used to need a dedicated USB audio breakout can now run on the same chip already driving the rest of the build, trimming both parts count and wiring.
The technical answer, board by board
Three pieces do the heavy lifting here. usb_audio.USBMicrophone and usb_audio.USBSpeaker turn the board into an audio source or sink over USB, so a connected computer treats it like a plug-in mic or speaker. audiospeed.Resampler handles sample-rate conversion in software. The new audio_i2sin input stream behaves like any other audio source, but it is currently limited to Espressif and RP2xxx chips, meaning your ESP32 family or RP2040 and RP2350 boards.
- Stable ports: SAMD21/SAMx5x, Espressif ESP32 line, Nordic nRF52, Raspberry Pi RP2040 and RP2350, and STM32F4.
- Still alpha: ESP32-P4, Broadcom (Pi 4 and Zero 2 W), NXP i.MX RT10xx, SiLabs MG24, and the multiplatform Zephyr port.
- New boards: PCBCupid Glyph Mini 2040, PCBCupid Glyph S3, and the Waveshare ESP32-S3-Tiny.
Try it on your bench
Because this is an alpha, expect rough edges and keep it off anything mission-critical. Grab the firmware that matches your board from the downloads page on circuitpython.org, flash it, and you are ready to experiment. The browser editor at code.circuitpython.org or the Mu editor both give you a REPL with zero setup. If you have an RP2350 or an ESP32-S3 sitting in a drawer, this is a fun weekend excuse to wire up an I2S mic and watch your board appear as a USB audio device.
Frequently Asked Questions
What are the standout features in CircuitPython 10.3.0-alpha.3?
The big additions are USB audio support through new USBMicrophone and USBSpeaker classes, a software resampler, and an audio_i2sin input stream, alongside fixes for Espressif camera and Bluetooth bugs.
Which boards can use the new audio I2S input?
What will I learn if I try this release?
Flashing an alpha build teaches you how to match firmware to your specific board, work in the CircuitPython REPL, and wire up real audio peripherals like I2S microphones, giving you hands-on practice with both embedded audio and firmware updating.
