This is CircuitPython 11.0.0-alpha.3, an alpha release for 11.0.0. Further features, changes, and bug fixes will be added before the final release of 11.0.0.
CircuitPython libraries from the 10.x bundles are still compatible with CircuitPython 11.0.0 builds.
Highlights of changes since 11.0.0-alpha.2
- Web workflow display mirroring.
- Add
board.I2C(),board.SPI(), andboard.UART()on Raspberry Pi Pico boards. - Initial video pipeline support, starting on ESP32-P4:
mipicsi,videocore, andvideogif. - Add
audiotap, which taps into a stream of audio objects. - Add
audiopwmioon ESP32-S2 and ESP32-S3. - Add
async_spifor awaitable SPI transfers. - Add
hardwarekeyfor HMAC and RSA signing, initially on Espressif. - Add
cryptographycomponents for P-256 ECDSA signature verification, initially on Espressif. - Better
synthio.MidiTrackMIDI file playback. - Many speedups, especially in
displayio,rotozoom, and JPEG decoding. - Zephyr: new boards, initial i.MX RT1011 support, more modules enabled.
Incompatibility warnings when upgrading to 11.0.0 from 10.x.x
- The
broadcom,litex, andrenodeports have been removed. - The SDIO pin names on the Adafruit Feather Adalogger RP2040 and RP2350 boards were changed to be more consistent with the naming elsewhere.
- On Espressif, the processor UID values are now in canonical order. This changes the reported processor ID,
boot_out.txtvalue, and the USB serial number. OnDiskBitmapnow takes only a filename, not an open file as an argument.- The
en_x_piratetranslation has been discontinued.
Download from circuitpython.org
Firmware downloads are available from the downloads page on circuitpython.org. The site makes it easy to select the correct file and language for your board.
Installation
To install, follow the instructions in the Welcome to CircuitPython! guide. To install the latest libraries, see this page in that guide.
Try code.circuitpython.org or the latest version of the Mu editor for creating and editing your CircuitPython programs and for easy access to the CircuitPython serial connection (the REPL).
Documentation
Documentation is available on readthedocs.io.
Port status
CircuitPython has a number of "ports" that are the core implementations for different microcontroller families. Stability varies on a per-port basis. As of this release, these ports are considered stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S2, ESP32-S3nordic: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040, RP2350stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
analog: Analog Devices MAX32690espressif: ESP32-P4, ESP32-S31mimxrt10xx: NXP i.MX RT10xxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip familieszephyr: multiplatform RTOS, running on multiple chip families
Changes since 11.0.0-alpha.2
Fixes and enhancements
- Remove bulk reset flag and remnants of never-reset internal API. #11854. Thanks @dhalbert.
- Web workflow can now mirror the display. #11849, #11675. Thanks @FoamyGuy.
audiofilewritercan now just discard input. Fix buffer size. #11847. Thanks @FoamyGuy.- Allow setting
supervisor.runtime.displayto a library display object. #11842. Thanks @mikeysklar. - Update TinyUSB for DWC2 host fix. #11836. Thanks @jedgarpark.
- Fix constructor and deinit bugs in
shared-module. #11830, #11774. Thanks @dhalbert. - Make
VideoBufferwork on a rotated display. #11829. Thanks @tannewt. - Rotated displays now redraw about 5x faster. #11825. Thanks @mikeysklar.
- Update root certificate bundle to remove compromised certificates. #11821. Thanks @dhalbert.
- Raise proper error on closed and reset sockets. #11819. Thanks @lynt-smitka.
- Fix
EPaperDisplay.refresh()hang on color e-ink displays that clean the screen before refreshing. #11808. Thanks @lynt-smitka. - Smoother pitch from
audiodelays.Echo. #11804. Thanks @mikeysklar. - Add
CIRCUITPY_STORAGE_MAP_FILEboolean tosettings.tomlto allow preventing file-mapping from flash. Needed for Adafruit Qualia 666. #11800. Thanks @makermelissa. - Add
CIRCUITPY_BOARD_VARIANTto allow specifying minor board differences insettings.toml. #11798. Thanks @mikeysklar. - Better display argument validation. #11795. Thanks @dhalbert.
- Fix
I2CTargetRequestfinalizer. #11795. Thanks @dhalbert. - Fix
sdcardiofailure cleanup. #11794. Thanks @dhalbert. - Fix regression in
audiomixer.Mixerplay. #11792. Thanks @mikeysklar. - Raise error when
watchdogis started without a timeout. #11791. Thanks @mikeysklar. - Fix
picogameCanvasargument handling. #11787. Thanks @lynt-smitka. - Make
mathraise errors for out-of-domain arguments, as in CPython. #11783. Thanks @lynt-smitka. - Improve
rotozoomperformance by as much as 70x on RP2xxx and Espressif. #11782. Thanks @mikeysklar. - Fix regression of missing
_pewmodule. #11775. Thanks @dhalbert. - Raise proper
os.urandom()error. #11773. Thanks @lynt-smitka. - Add
cryptography.hazmat.primitives.asymmetric.ec. #11772. Thanks @mmabey. - Report SD read errors instead of returning bad data. #11752. Thanks @mikeysklar.
- Keep CIRCUITPY writable after a USB bus reset. #11745. Thanks @vegardw.
- Add
videogif.GifDecoderto play animated GIFs into avideocore.VideoBuffer. #11738. Thanks @mikeysklar. - Update frozen libraries. #11737. Thanks @FoamyGuy.
- Keep a
sharpdisplaydisplay's SPI bus after VM stops. #11730. Thanks @mikeysklar. OnDiskBitmapnow takes only a filename, not afileobject. #11729. Thanks @mikeysklar.- Fix
msgpackint packing to use the smallest int format needed. #11728. Thanks @mikeysklar. - Narrow the status bar content so more information is visible on narrow displays. #11717, #11712. Thanks @mikeysklar.
- Skip garbage collection scanning of non-pointer data in audio effects,
lvfontio, longints, strings, andbytes. #11716, #11708. Thanks @mikeysklar. - Fix display freezes caused by incorrect
keypaddeinit. #11714. Thanks @mikeysklar. - Fix
sslsocket crashes. #11713. Thanks @mikeysklar. - Preserve a display set in
boot.pythrough a fake deep sleep. #11711. Thanks @mikeysklar. - Allow unlimited width on the WebSerial console. #11709. Thanks @mikeysklar.
- Fix crash caused by a custom terminal font. #11707. Thanks @mikeysklar.
- Fix crashes caused by a terminal color code when the terminal has no suitable palette. #11705. Thanks @mikeysklar.
- Release displays not set as
supervisor.runtime.displaywhencode.pyfinishes. #11702. Thanks @mikeysklar. - Fix drawing of
bitmaptoolscircles and polygons. #11701. Thanks @mikeysklar. - Don't do
max3421eoperations when a shared SPI bus is being used by something else. #11695. Thanks @jedgarpark. picogamecan now use async bus writes. #11684. Thanks @lynt-smitka.- Widen
synthio.Biquadcoefficients and feedback state. #11679. Thanks @bdbarnett. - Fix
synthio.Biquadsin/cos computation. #11678. Thanks @bdbarnett. - Let HTTPS servers accept normal clients. #11677. Thanks @mikeysklar.
- Follow the MIDI tempo track in
synthio.MidiTrack. #11662. Thanks @tyeth. - Keep
synthio.MidiTracktiming accurate for long delays. #11661. Thanks @tyeth. - Treat Note On with velocity 0 as Note Off in
synthio.MidiTrack. #11660. Thanks @tyeth. - Support running status in
synthio.MidiTrack. #11659. Thanks @tyeth. - Fix End of Track handling in
synthio.MidiTrack. #11658. Thanks @tyeth. - Fix
wifi.Monitorcrash when re-created after deinit. #11651. Thanks @mikeysklar. - Add
_airliftmodule to simplify communication with an AirLift co-processor. #11642. Thanks @FoamyGuy. - Add
audiotapto allow tapping into a stream of audio objects. #11639. Thanks @FoamyGuy. - Add
async_spito support awaitable SPI transfers. #11489. Thanks @lynt-smitka. - Add
cryptographyandhardwarekeyto support on-chip hardware key stores, currently supported on Espressif. #11425. Thanks @mmabey.
Port and board-specific changes
Analog Devices
- Fix UART receive buffer. #11727. Thanks @mikeysklar.
Espressif
- Support
usb_host_audioandaudiotapon ESP32-P4. #11846. Thanks @FoamyGuy. - ESP32-P4 partitions now match the 4MB OTA TinyUF2 partition layout. #11837. Thanks @tannewt.
- Do not extend CIRCUITPY partition into OTA partition by default. #11837. Thanks @tannewt.
- Fix slow USB host functionality. #11828. Thanks @FoamyGuy.
- Improve USB defaults for ESP32-P4. #11816. Thanks @tannewt.
- Faster JPEG decoding (4x) on ESP32-S3 boards with PSRAM. #11814. Thanks @mikeysklar.
- Fix ESP32-P4 camera and display cleanup leaks. #11807. Thanks @dhalbert.
- Fix constructor and deinit bugs. #11806. Thanks @dhalbert.
- Faster audio mixing on ESP32-S3. #11799. Thanks @mikeysklar.
- Update ESP-IDF to include our patches. #11760. Thanks @tannewt.
- Fix glitches on I2C pins set to open drain. #11759. Thanks @mikeysklar.
- Fix
TouchIndefault threshold on ESP32-S2, ESP32-S3, and ESP32-P4. #11756, #11743. Thanks @dhalbert. - Use finalizers for object cleanup. #11755. Thanks @dhalbert.
- Improve
mipidsi.Display. #11754. Thanks @tannewt. - Fix USB host enumeration buffer size. #11751. Thanks @jedgarpark.
- Allow ctrl-C interrupt of
SPI.deinit(). #11749. Thanks @mikeysklar. - Allow alternative firmware to use UART for an ESP32-C6 co-processor. #11747. Thanks @FoamyGuy.
- Fix possible
busio.SPIhangs. #11742. Thanks @dhalbert. - Fix RAM use on
wifi.Monitor. #11742. Thanks @dhalbert. - Fix
TouchAlarmtouch channel management. #11725. Thanks @mmabey. - Prevent wraparound of
AnalogInreadings. #11724. Thanks @dhalbert. - Release
TouchAlarmpins when needed. #11691. Thanks @mmabey. - Fix native/viper
.mpyimports on ESP32-P4. #11681. Thanks @FoamyGuy. - Correct UF2 family ID for ESP32-P4. #11676. Thanks @BlitzCityDIY.
- Add
audiopwmioon ESP32-S3. #11672. Thanks @mikeysklar. - Allow
qspibusdisplays to survive VM restarts. #11670. Thanks @kccarbone. - Add
audiopwmioon ESP32-S2. #11663. Thanks @tyeth. - Speed up JPEG decoding by 10-20x on ESP32-P4 and ESP32-S31 by using the on-chip decoder. #11634. Thanks @mikeysklar.
- Add
mipicsiandvideocorefor initial video pipeline support. #11614. Thanks @tannewt.
i.MX
Nordic
RP2xxx
- Properly lock internal mDNS calls. #11820. Thanks @lynt-smitka.
- A listening socket is readable only with a waiting connection. #11809. Thanks @lynt-smitka.
- Stop DVI flicker on RP2350 when playing a sound. #11793. Thanks @mikeysklar.
- Add
board.I2C(),board.SPI(), andboard.UART()to Raspberry Pi Pico boards. #11777. Thanks @mikeysklar. - Use finalizers for object cleanup. #11768. Thanks @dhalbert.
- Speed up
hashlibfor SHA-256 by about 20x on RP2350. #11758. Thanks @mikeysklar. - Fix
rp2pio.StateMachine.readingto beFalsewhen no read is happening. #11748. Thanks @mikeysklar. - Fix real deep sleep on RP2350 USB host boards. #11735. Thanks @dhalbert.
- Fix GPIO32-47 handling in
PinAlarmandDigitalInOut. #11723. Thanks @dhalbert. - Set
alarm.wake_alarm.pinproperly after aPinAlarmwakeup. #11721. Thanks @dhalbert. - Implement
wifi.radio.ap_info. Fix small network bugs. #11646. Thanks @mikeysklar.
SAMx
- Reduce flash size on 512 KB SAMx5x boards. #11850. Thanks @dhalbert.
- Fix constructor and deinit bugs. #11813. Thanks @dhalbert.
- Fix playing of non-looped single-buffer audio sample. #11810. Thanks @lynt-smitka.
- Turn off timer clocks properly when timers are released. #11805. Thanks @mikeysklar.
- Use finalizers for object cleanup. #11776, #11771. Thanks @dhalbert.
SiLabs
Spresense
STM
- Fix supervisor tick. #11855. Thanks @vegardw.
- Fix constructor and deinit bugs. #11831. Thanks @dhalbert.
Zephyr
- Turn off
msgpackon nRF54L15 TAG for space reasons. #11852. Thanks @mikeysklar. - Fix constructor and deinit bugs. #11833. Thanks @dhalbert.
- Add MIMXRT1010-EVK, Adafruit Metro M7 1011, and Adafruit Metro M7 1011 AirLift boards. #11824. Thanks @dhalbert.
- Identify Zephyr boards in the REPL banner and
boot_out.txt. #11823. Thanks @dhalbert. - Align board naming and USB PIDs with those in the classic ports. #11823. Thanks @dhalbert.
- Increase available RAM on Pico W and Pico 2 W. #11812, #11802. Thanks @mikeysklar.
- Reset SSL when the VM resets. #11801. Thanks @mikeysklar.
- Run the MicroPython/CircuitPython test suite on
native_sim. #11785. Thanks @lynt-smitka. - Use a realistic stack size on
native_sim. #11784. Thanks @lynt-smitka. - Prevent crash on stack overflow on
native_sim. #11773. Thanks @lynt-smitka. - Fix
native_simcontainer and allow running it interactively. #11769. Thanks @lynt-smitka. - Get
qstrvalues frompy/qstrdefs.h, as in other ports. #11765. Thanks @lynt-smitka. - Enable the Zephyr console only when compiling with
CONSOLE=1. #11700. Thanks @dhalbert. - Allow the CircuitPython heap to grow into Zephyr's malloc area. #11687. Thanks @dhalbert.
- Parallelize the CI test runs. #11666. Thanks @mikeysklar.
- Add Adafruit Circuit Playground Bluefruit. #11657. Thanks @dhalbert.
- Add Adafruit MacroPad RP2040. #11652. Thanks @dhalbert.
- Enable
keypad,keypad_demux,touchio,atexit,codeop, andlocale. #11649. Thanks @dhalbert.
Individual boards
- M5Stack Cardputer: fix crash when using
cardputer_keyboard.KEYBOARD. #11731. Thanks @mikeysklar. - Pimoroni Badger2350: improve grayscale display. #11671. Thanks @bablokb.
- Pimoroni Inky Frames: fix power-on processing when running on batteries. #11693. Thanks @bablokb.
- Yoto: prevent reset of IO expander I2C pins. #11733. Thanks @mikeysklar.
Documentation changes
- Distinguish Zephyr and classic builds for same board in module support matrix. #11851. Thanks @mikeysklar.
- Explain
audiodelays.Echobetter. #11803. Thanks @mikeysklar. - Note that BLE discovery mode will erase existing bonding. #11746. Thanks @mikeysklar.
- Correct
SocketPooldocumentation. #11706. Thanks @mikeysklar. - Explain that
terminalio.Terminalcolors apply to the whole terminal, not individual characters. #11704. Thanks @mikeysklar. - Improve
displayio.Bitmapstorage size documentation. #11703. Thanks @mikeysklar.
Build and infrastructure changes
- Use cached Ubuntu packages even when the servers can't be reached. #11844. Thanks @mikeysklar.
- Use Ubuntu's package mirrors instead of Azure. #11843. Thanks @mikeysklar.
- Report firmware flash and RAM more accurately. #11839. Thanks @dhalbert.
- Fix
msgpacktest. #11773. Thanks @lynt-smitka. - Fix running
tests/circuitpython. #11767. Thanks @lynt-smitka. - Cache downloaded Ubuntu packages. #11667. Thanks @mikeysklar.
- Use a smaller toolchain download for the Windows
mpy-crossbuild. #11665. Thanks @mikeysklar. - Run the
mpy-crossCI job in parallel with other jobs. #11664. Thanks @dhalbert. - Fetch
ulabandmp3submodules for Zephyr CI builds. #11656. Thanks @tyeth.
Translation additions and improvements
New boards
- Elecrow CrowPanel 2.13 EPaper. #11817. Thanks @caderoux.
- Espressif ESP32-S3-DevKitC-1-N32R8 v1.1. #11815. Thanks @mikeysklar.
- M5Stack AtomS3R. #11734. Thanks @caderoux.
- MoonYard Equinox. #11442. Thanks @jefferyjohn.
- ThePiHut Baguette S3. #11593. Thanks @chickey999 (ThePiHut).
- Unexpected Maker TinyC6[D], TinyPICO[D], TinyS3[D], ProS3[D], FeatherS3[D]. #11654. Thanks @UnexpectedMaker.
Known issues
- See https://github.com/adafruit/circuitpython/issues for other issues, including issues still to be addressed for:
Thanks
Thank you to all who used, tested, and contributed toward this release, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.