Releases: adafruit/circuitpython
CircuitPython 9.1.0-beta.2
This is CircuitPython 9.1.0-beta.2, a beta for CircuitPython 9.1.0, and is a new unstable release. This release has known bugs that will be addressed before 9.1.0 final.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes since 9.0.0
Incompatibility warnings
- API changes to
floppyio. - String values in
settings.tomlmust be quoted.
Audio
- RP2040
I2SOutsupportsBLCKandLRCLKin either order. - ESP32-S3 supports
audiomp3.
Built-in modules
- Enhance
collections.dequefunctionality. - Add
keypad_demux.DemuxKeyMatrix: use multiplexer for one side of a keypad matrix. - Add integration-based debouncing to
keypad. supervisor.Runtime.serial_bytes_availablenow returns a count instead of abool.- Incompatible change:
floppyioimprovements, including API changes.
Graphics
fourwire.FourWire:chip_selectpin is now optional.picodvinow supports 640x240 and 800x240 resolutions.
Internal
- Espressif: update to ESP-IDF v5.2.1.
- Espressif: Change task-switching quantum to 1 millisecond from 10 milliseconds.
Networking
- Implement
sslmodule for anything that providessocket.
Ports
- New port for
renodehardware simulator.
Supervisor
- String values in
settings.tomlmust be quoted.
USB
max3421eUSB host support.- Allow user-specified names for
usb_midiinterfaces and jacks.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nordic: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxrenode: hardware simulatorsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.1.0-beta.1
Fixes and enhancements
- Update frozen libraries. #9250. Thanks @dhalbert.
- Implement
sslmodule for anything that providessocket. #8954. Thanks @jepler. - Make sure the
os.getcwd()is/after VM restart. #9224. Thanks @bill88t.
Port and board-specific changes
Broadcom
Espressif
- Enable
audiomp3on ESP32-S3. #9218. Thanks @jepler. - Allow user-specified socket connect timeout. #9210. Thanks @dhalbert.
- Use
-Osfor all 4MB builds, to save space. #9207. Thanks @tannewt. - Clear UART input buffer on creation, to avoid stray junk bytes. #9193. Thanks @dhalbert.
i.MX
nordic
renode
RP2040
- Fix
I2CTargetrestart requests. #9236. Thanks @mirskytech. - Improve
time.monotonic_ns()resolution by adding subticks internally. #9229. Thanks @timchinowsky.
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit Feather nRF52840: add
board.NEOPIXEL_POWERsupport, available in board Rev E. #9246. Thanks @dhalbert. - Challenger RP2040 LTE: Fix pin assignment. #9249. Thanks @mirskytech.
- M5Stack AtomS3U: fix pin typo. #9212. Thanks @n3o59hf.
- Waveshare ESP32-S3-GEEK: update pin names: #9194. Thanks @RetiredWizard.
- Waveshare RP2040-GEEK: update pin names: #9194. Thanks @RetiredWizard.
Documentation changes
- Fix typos in
_bleio.Adapter.start_advertising()documentation. #9248. Thanks @andrewguest. - Improve
I2CTargetdocumentation. #9236. Thanks @mirskytech.
Build and infrastructure changes
- Add
Adafruit_CircuitPython_Bitmap_Fontsto frozen libraries. #9202. Thanks @bradanlane.
Translation additions and improvements
New boards since 9.1.0-beta.1
- Adafruit Pixel Trinkey M0. #9189. Thanks @dhalbert.
- Adafruit TRRS Trinkey M0. #9190. Thanks @dhalbert.
- AI-Thinker ESP32-CAM. #9231. Thanks @gitcnd.
- Spotpear ESP32C3 with 1.44" LCD. #9210. Thanks @SeanTheITGuy.
- Waveshare ESP32S3 LCD 1.28". #9205, #9192. Thanks @SeanTheITGuy and @bill88t.
- WEMOS LOLIN32 Lite. #9206. Thanks @bill88t.
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 since 9.1.0-beta.1, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.1.0-beta.1
This is CircuitPython 9.1.0-beta.1, a beta for CircuitPython 9.1.0, and is a new unstable release. This release has known bugs that will be addressed before 9.1.0 final.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes since 9.0.0
Incompatibility warnings
- API changes to
floppyio. - String values in
settings.tomlmust be quoted.
Audio
- RP2040
I2SOutsupportsBLCKandLRCLKin either order.
Built-in modules
- Enhance
collections.dequefunctionality. - Add
keypad_demux.DemuxKeyMatrix: use multiplexer for one side of a keypad matrix. - Add integration-based debouncing to
keypad. supervisor.Runtime.serial_bytes_availablenow returns a count instead of abool.- Incompatible change:
floppyioimprovements, including API changes.
Graphics
fourwire.FourWire:chip_selectpin is now optional.picodvinow supports 640x240 and 800x240 resolutions.
Internal
- Espressif: update to ESP-IDF v5.2.1.
- Espressif: Change task-switching quantum to 1 millisecond from 10 milliseconds.
Supervisor
- String values in
settings.tomlmust be quoted.
USB
max3421eUSB host support.- Allow user-specified names for
usb_midiinterfaces and jacks.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nordic: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.1.0-beta.0
Fixes and enhancements
- Update frozen libraries. #9188. Thanks @dhalbert.
- External flash cache allocation crashed into safe mode when heap was too small. #9187, #9169. Thanks @dhalbert.
- Avoid putting terminal escape sequences in boot_out.txt. #9181. Thanks @bill88t.
- MAX3421E USB host support. #9164. Thanks @tannewt.
- Enable
bitmapfilteron boards where it will fit. #9156. Thanks @dhalbert. - Allow user-specified names for
usb_midiinterfaces and jacks. #9146. Thanks @brushmate. supervisor.Runtime.serial_bytes_availablenow returns a count instead of abool. #9141. Thanks @dhalbert- Correct
EPaperDisplay.time_to_refresh. #9140. Thanks @elpekenin. floppyioimprovements, including API changes. #9135. Thanks @jepler.- Require strings to be quoted in
settings.toml#9117. Thanks @jepler. fourwire.FourWire:chip_selectpin is now optional. #9106. Thanks @wee-noise-makers.
Port and board-specific changes
Broadcom
Espressif
- Document Espressif
AnalogInlimitations. #9137. Thanks @dhalbert. - Change task-switching quantum to 1 millisecond from 10 milliseconds. #9134. Thanks @dhalbert.
- Handle new ESP-IDF v5.2.1 failure codes for WiFi connections. #9126. Thanks @dhalbert.
i.MX
nordic
- Fix AnalogIn. #9187, #9161, #9114. Thanks @dhalbert.
- Move state word that survives reset to avoid its being overwritten by bootloader. #9160. Thanks @tannewt.
RP2040
- Disable
picodviandusb_hoston boards that cannot use them. #9116. Thanks @bablokb. picodvinow supports 640x240 and 800x240 resolutions. #9102. Thanks @jepler.
SAMx
SiLabs
Spresense
STM
Individual boards
- FireBeetle 2 ESP32-S3: fix reset. #9170. Thanks @bill88t.
- ESP32-S3 HackTablet: initialize display. #9157. Thanks @RetiredWizard.
- M5Stack Cardputer: allow input from Cardputer keyboard. #9145. Thanks @joshua-beck-0908.
- Pimoroni InkyFrame 5.7": several updates. #7997. Thanks @bablokb.
- senseBox MCU-S2 ESP32S2:
busio.I2C: allow GPIO45, do not check for pullups. #9132. Thanks @mariopesch.
Documentation changes
Build and infrastructure changes
Translation additions and improvements
- Thanks for translations:
- @wtuemura (Portuguese - Brazil)
New boards since 9.1.0-beta.0
- MakerGo ESP32C3 Supermini. #9131. Thanks @SeanTheITGuy.
- SQFMI Watchy. #9153. Thanks @joshua-beck-0908.
- Sunton ESP32-2424S012. #9110. Thanks @SeanTheITGuy.
- Sunton ESP32-8048S070. #9149. Thanks @SeanTheITGuy.
- Waveshare RP2040-GEEK. #9187, #9090. Thanks @RetiredWizard.
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 since 9.1.0-beta.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.4
This is CircuitPython 9.0.4, the latest bugfix release of CircuitPython, and is a new stable release.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
For notable changes to 9.0.0 since 8.x.x, see the 9.0.0 release notes.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.3
Fixes and enhancements
- External flash cache allocation crashed into safe mode when heap was too small. #9169. Thanks @dhalbert.
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
- Move state word that survives reset to avoid its being overwritten by bootloader. #9168, #9160. Thanks @tannewt.
- Fix regression from 9.0.3 treating small internal-only negative ADC values as large positive values. #9161. Thanks @dhalbert.
- Allow reuse of
AnalogInpins as other types of pins. #9161. Thanks @dhalbert.
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
Documentation changes
Build and infrastructure changes
Translation additions and improvements
New boards since 9.0.3
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 since 9.0.3, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.3
This is CircuitPython 9.0.3, the latest bugfix release of CircuitPython, and is a new stable release.
The only changes to 9.0.3 from 9.0.2 are a fix for AnalogIn on Nordic nRF boards, and the addition of the Waveshare RP2040-GEEK board.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
For notable changes to 9.0.0 since 8.x.x, see the 9.0.0 release notes.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.2
Fixes and enhancements
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
Documentation changes
Build and infrastructure changes
Translation additions and improvements
New boards since 9.0.2
- Waveshare RP2040-GEEK. #9090. Thanks @RetiredWizard.
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 since 9.0.2, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.1.0-beta.0
This is CircuitPython 9.1.0-beta.0, a beta for CircuitPython 9.1.0, and is a new unstable release. This release has known bugs that will be addressed before 9.1.0 final.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes since 9.0.0
Audio
- RP2040
I2SOutsupportsBLCKandLRCLKin either order.
Built-in modules
- Enhance
collections.dequefunctionality. - Add
keypad_demux.DemuxKeyMatrix: use multiplexer for one side of a keypad matrix. - Add integration-based debouncing to
keypad.
Internal
- Espressif: update to ESP-IDF v5.2.1.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0
Fixes and enhancements
- Turn off
displayiowarnings noting name changes since 8.x.x. #9100, #9096. Thanks @dhalbert. - Fix
bitbangio.SPIidle polarity forpolarity=1. #9075. Thanks @kbsriram. - Enhance
collections.dequefunctionality. #9065. Thanks @SAK917. - Add
keypad_demux.DemuxKeyMatrix: use multiplexer for one side of a keypad matrix. #9035. Thanks @CDarius. - Add integration-based debouncing to
keypad. #8855. Thanks @xs5871.
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
RP2040
- Implement
Socket.setsockopt(SOL_SOCKET, SO_REUSEADDR)for Pico W. #9100, #9084. Thanks @jepler. I2SOut: supportBLCKandLRCLKin either order. #9097. Thanks @Fabien-Chouteau (@wee-noise-makers).
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit ItsyBitsy ESP32: fix
board.NEOPIXELandboard.NEOPIXEL_POWERpin assignments. #9100, #9087. Thanks @RetiredWizard. - Adafruit Trinkey SHT4x: fix
board.I2C()pins. #9108, #9107. Thanks @dhalbert and @BlitzCityDIY.
Documentation changes
Build and infrastructure changes
- Do not include PICODVI-related sources if
CIRCUITPY_PICODVI = 0. #9099. Thanks @bablokb. - Fix compile error when
CIRCUITPY_USB_HOST = 0. #9091. Thanks @bablokb. - Update GitHub codespaces devcontainers. #9068. Thanks @bablokb.
- Rename
ports/nrftoports/nordicto avoid overlap with MicroPython. #9062. Thanks @dhalbert.
Translation additions and improvements
- Thanks for translations:
- @wtuemura (Portuguese - Brazil)
New boards since 9.0.0
- M5Stack CoreS3. #9093. Thanks @CDarius.
- RF.Guru MicroPico. #9095. Thanks @ure (@Guru-RF).
- Sunton ESP32-2432S028. #9092. Thanks @SeanTheITGuy.
- Waveshare ESP32-S3 GEEK. #9076. Thanks @kylefmohr.
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 since 9.0.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.2
This is CircuitPython 9.0.2, the latest bugfix release of CircuitPython, and is a new stable release.
The only change to 9.0.2 from 9.0.1 is a fix for a pin error for the Adafruit SHT4x Trinkey board. You do not need to upgrade from 9.0.1 unless you are using this board.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
For notable changes to 9.0.0 since 8.x.x, see the 9.0.0 release notes.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0
Fixes and enhancements
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit Trinkey SHT4x: fix
board.I2C()pins. #9107. Thanks @dhalbert and @BlitzCityDIY.
Documentation changes
Build and infrastructure changes
Translation additions and improvements
New boards since 9.0.0
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 since 9.0.1, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.1
This is CircuitPython 9.0.1, the latest bugfix release of CircuitPython, and is a new stable release.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
For notable changes to 9.0.0 since 8.x.x, see the 9.0.0 release notes.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0
Fixes and enhancements
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit ItsyBitsy ESP32: fix
board.NEOPIXELandboard.NEOPIXEL_POWERpin assignments. #9087. Thanks @RetiredWizard.
Documentation changes
Build and infrastructure changes
Translation additions and improvements
New boards since 9.0.0
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 since 9.0.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.0
This is CircuitPython 9.0.0, the latest major revision of CircuitPython, and is a new stable release.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes to 9.0.0 since 8.x.x
Incompatibility warnings
- New storage management. See Internal below about possible new memory errors with existing programs.
- Filesystems such as SD cards must now be mounted on an existing directory as a mount point. See Storage below.
- Incompatible change in
socketbehavior: Sockets must be explictly made reusable. See Networking below. displayio.*Display.show()has been removed. Use*Display.root_group =instead.I2CPeripheralis nowI2CTarget.
Audio
- Add
synthio.Note.loop_startand.loop_endproperties. - Add
synthio.Synthesizer.note_state. - Add I2S MCLK support on Espressif.
- Allow signed amplitude in
synthio.
Built-in modules
- Add
OrderedDict.move_to_end(). - Add
warningsmodule, similar to what is in CPython. - Add
locale.getlocale(). - Add
codeop.compile_command(). - Remove 8.x.x deprecations:
displayio.*.show(),I2CPeripheralrenamed toI2CTarget.
Graphics
- Reorganize and split
displayio. 8.x.x naming structure is available in 9.x.x, but will be removed in 10.0.0.displayio.Displayis nowbusdisplay.BusDisplay.displayio.FourWireis nowfourwire.FourWire.displayio.EPaperDisplayis nowepaperdisplay.EPaperDisplay.displayio.I2CDisplayis nowi2cdisplaybus.I2CDisplayBus.
- Add
jpegioJPEG decoder support. - Add
bitmapfilterimage manipulation.
Internal
- New split-heap internal dynamic storage mechanism. Some CircuitPython programs may fail with
MemoryError. If you encounter programs that work in 8.x.x but getMemoryErrorexceptions, consider filing an issue with details. - Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
- Espressif: update to ESP-IDF v5.1.3.
Networking
- Allow specifying protocol for raw sockets.
- Add mDNS TXT record support.
- Make SD cards available over web workflow.
- Allow fetching of associated stations in access-point mode.
- Incompatible change: Require explicit socket port reuse. Use
socket.setsockopt(pool.SOL_SOCKET, pool.SO_REUSEADDR, 1), as in CPython.
Python interpreter
- Use terser error messages on small builds.
Storage
- CIRCUITPY drives now mount on Android.
- Increased file capacity on CIRCUITPY drives <= 128kB.
- Incompatible change: Require filesystem mounts to be on existing directories. Create
/sdin fresh filesystems to provide a mount point.
Supervisor
- Add
repl.py, which runs just before the REPL starts up.
USB
- Video device ("Webcam", UVC) support.
- HID can wake up sleeping host computer.
- Further USB host support, on i.MX and RP2040.
- Allow setting USB HID interface name.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0-rc.1
Fixes and enhancements
Port and board-specific changes
Broadcom
Espressif
i.MX
nRF
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
- M5Stack Cardputer: fix
board.I2S_DATApin name typo. #9020. Thanks @RetiredWizard.
Documentation changes
Build and infrastructure changes
Translation additions and improvements
New boards since 9.0.0-rc.1
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 since 9.0.0-rc.1, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.0 Release Candidate 1
This is CircuitPython 9.0.0-rc.1, a release candidate for 9.0.0 final. This release is believed to be stable, and is meant for testing before the final release of 9.0.0.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes to 9.0.0 since 8.x.x
Incompatibility warnings
- New storage management. See Internal below about possible new memory errors with existing programs.
- Filesystems such as SD cards must now be mounted on an existing directory as a mount point. See Storage below.
- Incompatible change in
socketbehavior: Sockets must be explictly made reusable. See Networking below. displayio.*Display.show()has been removed. Use*Display.root_group =instead.I2CPeripheralis nowI2CTarget.
Audio
- Add
synthio.Note.loop_startand.loop_endproperties. - Add
synthio.Synthesizer.note_state. - Add I2S MCLK support on Espressif.
- Allow signed amplitude in
synthio.
Built-in modules
- Add
OrderedDict.move_to_end(). - Add
warningsmodule, similar to what is in CPython. - Add
locale.getlocale(). - Add
codeop.compile_command(). - Remove 8.x.x deprecations:
displayio.*.show(),I2CPeripheralrenamed toI2CTarget.
Graphics
- Reorganize and split
displayio. 8.x.x naming structure is available in 9.x.x, but will be removed in 10.0.0. - Add
jpegioJPEG decoder support. - Add
bitmapfilterimage manipulation.
Internal
- New split-heap internal dynamic storage mechanism. Some CircuitPython programs may fail with
MemoryError. If you encounter programs that work in 8.x.x but getMemoryErrorexceptions, consider filing an issue with details. - Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
- Espressif: update to ESP-IDF v5.1.3.
Networking
- Allow specifying protocol for raw sockets.
- Add mDNS TXT record support.
- Make SD cards available over web workflow.
- Allow fetching of associated stations in access-point mode.
- Incompatible change: Require explicit socket port reuse. Use
socket.setsockopt(pool.SOL_SOCKET, pool.SO_REUSEADDR, 1), as in CPython.
Python interpreter
- Use terser error messages on small builds.
Storage
- CIRCUITPY drives now mount on Android.
- Increased file capacity on CIRCUITPY drives <= 128kB.
- Incompatible change: Require filesystem mounts to be on existing directories. Create
/sdin fresh filesystems to provide a mount point.
Supervisor
- Add
repl.py, which runs just before the REPL starts up.
USB
- Video device ("Webcam", UVC) support.
- HID can wake up sleeping host computer.
- Further USB host support, on i.MX and RP2040.
- Allow setting USB HID interface name.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0-rc.0
Fixes and enhancements
- Update frozen libraries. #9046. Thanks @dhalbert.
- Fix tlsf allocation logic. #9039. Thanks @tannewt.
Port and board-specific changes
Broadcom
Espressif
- Fix RMT clock speed on ESP32-H2. #9051. Thanks @tannewt.
- Fix
_bleio.Adaptername setting. #9041. Thanks @dhalbert. - Fix
tlsfallocation logic. #9039. Thanks @tannewt. - Fix error reporting for certain connection errors. #8888. Thanks @bill88t.
i.MX
nRF
RP2040
- Handle multiple USB setup packets: TinyUSB fix. #9042. Thanks @hathach.
- Don't claim
PWMOutpin before validation. #9024. Thanks @dhalbert. - Update
cyw43-driverto upstream version v1.0.3. #9022. Thanks @eightycc.
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit MatrixPortal S3: disable
espcameraproperly. #9043. Thanks @jerryneedell and @dhalbert.
Documentation changes
- Fix
supervisor.Runtime.serial_bytes_availabledocumentation. #9032. Thanks @RetiredWizard.
Build and infrastructure changes
Translation additions and improvements
- Thanks for translations:
- @Sokromatrix (German)
- @wtuemura (Portuguese - Brazil)
- @Xfox20 (German)
New boards since 9.0.0-rc.0
- Adafruit Feather ESP32-C6 4MB Flash No PSRAM. #9018. Thanks @dhalbert.
- Waveshare RP2040-Tiny. #8796. Thanks @bill88t.
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 since 9.0.0-rc.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.
CircuitPython 9.0.0 Release Candidate 0
This is CircuitPython 9.0.0-rc.0, a release candidate for 9.0.0 final. This release is believed to be stable, and is meant for testing before the final release of 9.0.0.
WARNING for nRF52 boards only: If your board has an nRF52 UF2 bootloader whose version is before 0.6.1, you will not be able to load CircuitPython 8.2.0 and later, due to increased size of the firmware. See these instructions for updating your bootloader.
Notable changes to 9.0.0 since 8.x.x
Incompatibility warnings
- New storage management. See Internal below about possible new memory errors with existing programs.
- Filesystems such as SD cards must now be mounted on an existing directory as a mount point. See Storage below.
- Incompatible change in
socketbehavior: Sockets must be explictly made reusable. See Networking below. displayio.*Display.show()has been removed. Use*Display.root_group =instead.I2CPeripheralis nowI2CTarget.
Audio
- Add
synthio.Note.loop_startand.loop_endproperties. - Add
synthio.Synthesizer.note_state. - Add I2S MCLK support on Espressif.
- Allow signed amplitude in
synthio.
Built-in modules
- Add
OrderedDict.move_to_end(). - Add
warningsmodule, similar to what is in CPython. - Add
locale.getlocale(). - Add
codeop.compile_command(). - Remove 8.x.x deprecations:
displayio.*.show(),I2CPeripheralrenamed toI2CTarget.
Graphics
- Reorganize and split
displayio. 8.x.x naming structure is available in 9.x.x, but will be removed in 10.0.0. - Add
jpegioJPEG decoder support. - Add
bitmapfilterimage manipulation.
Internal
- New split-heap internal dynamic storage mechanism. Some CircuitPython programs may fail with
MemoryError. If you encounter programs that work in 8.x.x but getMemoryErrorexceptions, consider filing an issue with details. - Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
- Espressif: update to ESP-IDF v5.1.3.
Networking
- Allow specifying protocol for raw sockets.
- Add mDNS TXT record support.
- Make SD cards available over web workflow.
- Allow fetching of associated stations in access-point mode.
- Incompatible change: Require explicit socket port reuse. Use
socket.setsockopt(pool.SOL_SOCKET, pool.SO_REUSEADDR, 1), as in CPython.
Python interpreter
- Use terser error messages on small builds.
Storage
- CIRCUITPY drives now mount on Android.
- Increased file capacity on CIRCUITPY drives <= 128kB.
- Incompatible change: Require filesystem mounts to be on existing directories. Create
/sdin fresh filesystems to provide a mount point.
Supervisor
- Add
repl.py, which runs just before the REPL starts up.
USB
- Video device ("Webcam", UVC) support.
- HID can wake up sleeping host computer.
- Further USB host support, on i.MX and RP2040.
- Allow setting USB HID interface name.
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 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 in 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 consider stable (but see Known Issues below):
atmel-samd: Microchip SAMD21, SAMx5xcxd56: Sony Spresenseespressif: Espressif ESP32, ESP32-S2, ESP32-S3, ESP32-C3nrf: Nordic nRF52840, nRF52833raspberrypi: Raspberry Pi RP2040stm: ST STM32F4 chip family
These ports are considered alpha and will have bugs and missing functionality:
broadcom: Raspberry Pi boards such as RPi 4, RPi Zero 2Wlitex: fomumimxrt10xx: NXP i.MX RT10xxxsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip families
Changes since 9.0.0-beta.2
Fixes and enhancements
- Update frozen libraries. #9019. Thanks @dhalbert.
- Fix corrupted BLE ScanEntry objects. #9014. Thanks @dhalbert.
- Setting the
WatchdogTimertimeout will reset the watchdog interval. #9012. Thanks @tannewt. - Improve
RGBMatrixreliability. #9008. Thanks @tannewt. - Fix
ETIMEDOUTexceptions inssl. #9006. Thanks @jepler. - Postpone web workflow request if SPI bus is locked. #9005. Thanks @jepler.
- Fix USB Host HID. #8999. Thanks @hathach.
- Allow web workflow to write to CIRCUITPY when connected to USB. #8994. Thanks @tannewt.
- Disable
warningsduring REPL autocomplete. #8993. Thanks @tannewt. - Allow setting USB HID interface name. #8989. Thanks @MariuszCwikla.
- Include language code in USB Host string descriptors. #8976. Thanks @tannewt.
- Use finalizer to properly clean up
PWMOutobjects, including those used by other objects. #8966. Thanks @tannewt. - Freeze new
adafruit_connection_managerlibrary on appropriate boards. #8963. Thanks @justmobilize. - Fix
ssl.SSLSocket.bind()error checking. #8962. Thanks @tannewt. - Allow fetching of associated stations in access-point mode. #8820. Thanks @romkey.
Port and board-specific changes
Broadcom
Espressif
- Update ESP-IDF to v5.1.3. #9008. Thanks @tannewt.
- Fix
WatchdogTimerunits. #9012. Thanks @tannewt. - Use a finalizer to clean up
espcameraobjects. #8990. Thanks @dhalbert.
i.MX
nRF
RP2040
SAMx
SiLabs
Spresense
STM
Individual boards
- Adafruit QT Py M0 Haxpress: allow W25Q32FV flash chip. #9011. Thanks @guutz.
- M5Stack Atom S3: fix display colors. #8998. Thanks @jins-tkomoda.
- PewPew LCD: update board to v4.1. #8959. Thanks @deshipu.
Documentation changes
Build and infrastructure changes
- Update
tlsflibrary to allow allocating just-freed region. #9004. Thanks @tannewt. - Update
tools/convert_release_notes.pyto usemistunev3. #8955. Thanks @dhalbert.
Translation additions and improvements
New boards since 9.0.0-beta.2
- Adafruit ItsyBitsy ESP32. #8953. Thanks @BlitzCityDIY.
- Adafruit SHT4x Trinkey M0. #9007. Thanks @ladyada.
- M5Stack Cardputer. #8816. Thanks @jamesjnadeau and @FoamyGuy.
- senseBox MCU-S2 ESP32S2. #8997, #8965. Thanks @mariopesch.
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 since 9.0.0-beta.2, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.