This is CircuitPython 10.3.1, a bugfix revision of CircuitPython, and is a new stable release.
Highlights of changes since 10.3.0
- Allow importing turbo (
@viperand@native).mpyfiles on RP2xxx boards. More to come. - Espressif ESP32-C5 support.
- Espressif and nordic BLE fixes that improve BLE workflow.
- Many other bug fixes.
- Many build infrastructure improvements and speedups.
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 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-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 MAX32690broadcom(will be removed in CircuitPython 11): Raspberry Pi boards such as RPi 4, RPi Zero 2Wespressif: ESP32-P4litex: fomumimxrt10xx: NXP i.MX RT10xxxrenode: hardware simulatorsilabs: Silicon Labs MG24 familystm: ST non-STM32F4 chip familieszephyr: multiplatform RTOS, running on multiple chip families
Changes since 10.3.0
Fixes and enhancements
- Keep serving web workflow after a watchdog reset. #1337. Thanks @grgrant.
- Add a guard service to BLE workflow services so user-created services won't cause problems. #11333. Thanks @dhalbert.
- Allow loading "turbo" (native and viper)
.mpyfiles without adding the@nativeand@vipercompilers. #11332, #11331. Thanks @mikeysklar. - Fix
WaveFile8-bit sample padding at end of file. #11320. Thanks @4RH1T3CT0R7. - Validate
epoch_timeinTimeAlarm. #11318. Thanks @4RH1T3CT0R7. - Allow scanning 5 GHz WiFi channels on dual-band boards. #11308. Thanks @mikeysklar.
- Validate passed display in
picogame. #11306. Thanks @lynt-smitka. - Add
freezeproperty toaudiodelays.PitchShift. #11293. Thanks @relic-se. - Fix dirty-rectangle checks in
picogame. #11290. Thanks @lynt-smitka. - Fix dropped note when re-pressed after decay in
synthio#11289. Thanks @bdbarnett. - Fix regression in LED status code display. #11288. Thanks @dhalbert.
usb_hid: honor boot protocol request that arrives after startup. #11282. Thanks @mikeysklar.- Fix
synthioBiquadfilter reset. #11278. Thanks @bdbarnett. - Fix
audiofilters.Distortion(soft_clip=False). #11277. Thanks @bdbarnett. - Fix
synthiooscillator wrapping one sample late. #11276. Thanks @bdbarnett. - Fix
synthioBiquadfilter computation. #11275. Thanks @bdbarnett. - Mark
usb_audio.SpeakerOUT adaptive so Windows UAC2 driver can start. #11256. Thanks @jbirchall-svg.
Port and board-specific changes
Analog Devices
Broadcom
Espressif
- Fix
touchio.TouchInregression. #11307. Thanks @dhalbert. - Don't run out of space for BLE CCCDs. #11304. Thanks @dhalbert.
- Don't drop
Characteristic.valuenotifications under load. #11301. Thanks @dhalbert. - Add ESP32-C5 support. #11297. Thanks @mikeysklar.
- Don't lose
_bleio.PacketBufferdata when buffers are temporarily not available. #11286. Thanks @dhalbert. - Don't clear sleep memory after a reload; only clear after hard reset. #11274. Thanks @mikeysklar.
i.MX
Nordic
- Fix hardcrash when activating watchdog in
boot.py. micropython#11925. Thanks @FoamyGuy. - Add
emmciomodule, currently only used for Teenage Engineering SP-1. #11257. Thanks @FoamyGuy.
renode
RP2xxx
SAMx
SiLabs
Spresense
STM
- Make entering bootloader more robust by retrying. #11270. Thanks @mikeysklar.
Zephyr
- nrf7002dk: give slot0 the unused 32 kB storage partition. #11335. Thanks @mikeysklar.
- RP2xxx: make
nvmsize be a whole erase block. #11272. Thanks @lynt-smitka. - Build changes:
- Build translations more selectively. #11336. Thanks @lynt-smitka.
- Run tests only when a change can reach them. #11327. Thanks @lynt-smitka.
- Allow display capture tests to stop the simulator after the last display write. #11323. Thanks @lynt-smitka.
- Add
asannative_simbuild. #11317. Thanks @tannewt. - Install 32-bit SDL2 packages only for
native_sim. Thanks @lynt-smitka. - Use Python 3.13 for board jobs because wheels do not yet exist for some 3.14 packages. #11312. Thanks @lynt-smitka.
- Check that zephyr board firmware layouts match the non-zephyr builds for those boards. #11310. THanks @lynt-smitka.
- Use dummy SDL video driver for
native_sim. #11303. Thanks @tannewt. - Use autogen for
emmcio,picogame,board. #11296. Thanks @tannewt. - Run tests in their own workflow. #11294. Thanks @mikeysklar.
- Increase timeouts for
test_saved_wordtest. #11280. Thanks @dhalbert. - Add partition layout check. #11273. Thanks @lynt-smitka.
- Add ranges to partitions node. #11271. Thanks @lynt-smitka.
- Ignore more file changes that don't affect board builds. #11264. Thanks @tannewt.
Individual boards
- Pajenicko PicoPad: Use 62.5 MHz for display SPI frequency. #11291. Thanks @lynt-smitka.
Documentation changes
Build and infrastructure changes
- Run zephyr tests as three jobs, to improve parallelism. #11350. Thanks @lynt-smitka.
- Add
lib/mp3as a dependency formimxrt10xxinci_fetch_deps.py. #11346. Thanks @lynt-smitka. - Get
ninjafrom ESP-IDF tools instead of fetching it again withapt. #11343. Thanks @lynt-smitka. - Fix
unixcoveragebuild on arm64. #11330. Thanks @4RH1T3CT0R7. - Predict translation sizes to avoid needing to build translations that will not overflow during PR runs. #11326. Thanks @lynt-smitka.
- Split ports with more than 256 board jobs into several matrix jobs. #11325. Thanks @lynt-smitka.
- Build
firmware.size.jsonin all cases now. #11314. Thanks @lynt-smitka. - use
-j$(nproc)formakeparallelism. #11313. Thanks @lynt-smitka.
Translation additions and improvements
New boards
- Challenger RP2040 NFC. #11321. Thanks @TheFilipcom4607.
- Espressif ESP32-C5-DevKitC-1-N8R8. #11297. Thanks @mikeysklar.
- Teenage Engineering SP-1. #11298, #11261. Thanks @FoamyGuy.
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.