CircuitPython 7.2.0 Alpha 2 Released! @circuitpython

From the GitHub release page:

This is CircuitPython 7.2.0-alpha.2, the second published alpha release for CircuitPython 7.2.0. It is relatively stable, but there will be further additions and fixes before final release.

Notable additions to 7.2.0 since 7.1.0

  • Continuing work on Raspberry Pi Broadcom board support.
  • Espressif ESP32-S3 and ESP32-C3 support, including BLE.
  • RP2040 PIO sideset support.
  • board.STEMMA_I2C() available on all boards with STEMMA connectors.
  • binascii.crc32().
  • vectorio.contains().

Download from

Firmware downloads are available from the downloads page on The site makes it easy to select the correct file and language for your board.


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).

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, atmel-samd, cxd56 (Spresense), esp32s2, nrf,raspberrypi, stm for the F4 family are stable. stm for other STM chip families is being actively improved but may be missing functionality and have bugs. broadcom (Raspberry Pi), litex and mimxrt10xx are in an alpha state and will have bugs and missing functionality.

Changes since 7.2.0-alpha.1

Fixes and enhancements

  • Add SPI half-duplex capability (only available on STM for now). #5990, #6003. Thanks @sgauche and @dhalbert.
  • wifi.monitor: improve channel argument validation. #5996. Thanks @anecdata.
  • bitbangio.I2C: switch pin to input mode when reading. #5977. Thanks @prplz.
  • Add binascii.crc32(). #5969. Thanks @Life-Imaging-Services.
  • Add board.STEMMA_I2C for all boards with a STEMMA, STEMMA/QT, or QWIIC connector. #5966, #5962. Thanks @Neradoc.
  • displayio: expose REPL group as supervisor.splash. #5954. Thanks @kmatch98.
  • neopixel_write: check if DigitalInOut has been deinited. # 5946. Thanks @tammymakesthings.
  • Make CIRCUITPY writable by default on boards without USB. #5902. Thanks @tannewt.
  • io.__name__ fixed. #5897. Thanks @dunkmann00.
  • Validate file modes for open(). #5896. Thanks @dhalbert.
  • Allow displayio.EpaperDisplay two-byte LUT table length. #5874. Thanks @dkulinski.
  • Update ulab to 4.0.0. #5859. Thanks @jepler.
  • Add audiomp3.MP3Decoder.decoded_samples. #5807, #5808. Thanks @unwiredben.
  • countio: add selectable rise and fall selection, pull support. #5803. Thanks @dhalbert.
  • Add vectorio.contains(). #5784. Thanks @WarriorOfWire.
  • Add pixelbuf support in is31fl3741 #5726. Thanks @gamblor21.
  • Allow multiple buses of the same type with different names in board. #5422. Thanks @Neradoc.

Port and board-specific changes


  • Set JTAG pins to pull down on initialization. #5798. Thanks @jerryneedell.


  • Fix ping timeout. #5980. Thanks @DavePutz.
  • busio.I2C: Use ESP-IDF combined write/read I2C routine. #5958. Thanks @dhalbert.
  • Update to latest v4.4 commit. #5796, #5923. Thanks @MicroDev1.
  • Fix microcontroller.cpu.frequency. #5921. Thanks @MicroDev1.
  • Fix pulseio.PulseIn channel assignments to work on ESP32-S3. #5912. Thanks @DavePutz.
  • Refactor pin reset code. #5894. Thanks @tannewt.
  • neopixel_write: improve timing and pin reset state. #5892. Thanks @tannewt.
  • Ensure supervisor_tick() is run on same core as CircuitPython. #5888. Thanks @tannewt.
  • Increase ESP32-S3 heap size when no PSRAM. Fix S2 build problem. #5884. Thanks @tannewt.
  • Enable reset to bootloader on USB 1200 baud speed change. #5880. Thanks @jepler.
  • Fix digitalio.DigitalInOut open-drain outputs. #5866. Thanks @dhalbert.
  • Patch ESP-IDF to fix I2C crash. #5854. Thanks @jepler.
  • ESP32-S3: Use core 1 for CircuitPython. #5860. Thanks @tannewt.
  • ESP32-S3: Fix USB when enabling wifi. #5858. Thanks @tannewt.
  • Refactor configurations. USB and CircuitPython will use the same core. #5853. Thanks @tannewt.
  • Enable rgbmatrix for all boards. #5796. Thanks @MicroDev1.
  • ESP32-S3, ESP32-C3:
    • Fix BLE scanning forever. #5957. Thanks @tannewt.
    • Support BLE advertising. #5936. Thanks @tannewt.
    • Add BLE scanning. #5927. Thanks @tannewt.


  • Enable is31fl3741 only on Adafruit LED Glasses Driver Board. #5955. Thanks @prplz.


  • Fix audiobusio.PDMIn to use supplied sample rate. #5993. Thanks @DavePutz.
  • Record initial SPI frequency in busio.SPI(). #5987. Thanks @dhalbert.
  • audiobusio.PDMIn and I2SOut: Fix PIO argument order to fix values. #5984. Thanks @DavePutz.
  • Update pico-sdk to 1.3.0. #5974. Thanks @jepler.
  • Claim pins properly in busio.UART(). #5834. Thanks @arturo182.


  • SAMx5x: Fetch RTC count more atomically, to prevent time jumps. #6004. Thanks @dhalbert.
  • Fix tracking of board device singletons. #5951. Thanks @dhalbert.
  • Fix SAMD audiobusio.PDMIn(). #5842. Thanks @dhalbert.


  • Fix SPI flash reading. #5948. Thanks @EmergReanimator.
  • Fix busio.UART deinit checking. #5945. Thanks @EmergReanimator.

Individual boards

  • Adafruit Feather ESP32-S2: turn on I2C power by default. #5832. Thanks @ladyada.
  • Adafruit Feather ESP32-S2, ESP32-S2 TFT: add button pin. #5844. Thanks @kattni.
  • Adafruit Feather ESP32-S2 TFT: Use board.SPI() for display. #5846. Thanks @jepler.
  • Adafruit Feather ESP32-S2 TFT: Fix pin typo and pin order. #5829. Thanks @kattni.
  • Adafruit Feather RP2040: add support for Winbond flash chip. #5899. Thanks @tannewt.
  • Adafruit KB2040: Define default SPI pins. #5876. Thanks @Neradoc.
  • Adafruit QT Py ESP32-S2: fix pin error. #5889. Thanks @kattni.
  • Adafruit QT Py ESP32-S2: fix pin order. #5844. Thanks @kattni.
  • BDMicro VINA D51: add LED_AUX pin. #5816. Thanks @bd34n.
  • Capable Robot USB Hub: update pins and module choices. #6002. Thanks @CapableRobot.
  • Challenger RP204: Add missing pins. #5822. Thanks @PontusO.
  • Espressif ESP32-S3 DevKit boards: add GPIO40. #5975. Thanks @walshbp.
  • Espressif ESP32-S3 DevKitC: Fix UART pins and add board.UART. #5905. Thanks @prplz.
  • Espressif DevKit boards: rename boards for consistency. #5848. Thanks @prplz.
  • Gravitech Cucumber ESP32-S2 boards: add LED_INVERTED. #5997. Thanks @anecdata.
  • micro:bit v2: enable binascii. #5925. Thanks @jerryneedell.
  • Seeeduino XIAO nRF52840 Sense: Use SoftDevice 7.0.1. #5877. Thanks @0hopotman0.
  • Seeeduino XIAO SAMD: shrink build. #5981. Thanks @dhalbert.

New boards since 7.2.0-alpha.1

  • Adafruit ESP32-S2 Camera: #5832. Thanks @ladyada.
  • Adafruit QT Py ESP32-S3 no PSRAM: #5832. Thanks @ladyada.
  • Diodes Delight Piunora. #5819. Thanks @tannewt.
  • Espressif ESP32-C3 DevKitM-1. #5885. Thanks @tannewt.
  • Espressif ESP32-S2 DevKitC-1-NR42. #5998. Thanks @anecdata.
  • Raspberry Pi Zero. #5800, #5819. Thanks @tannewt.
  • Raspberry Pi Zero W. #5800, #5819. Thanks @tannewt.
  • Unexpected Maker FeatherS3. #5940, #5991. Thanks @UnexpectedMaker and @prplz.
  • Unexpected Maker ProS3. #5940, #5991. Thanks @UnexpectedMaker and @prplz.
  • Unexpected Maker TinyS3. #5940, #5991. Thanks @UnexpectedMaker and @prplz.
  • Waveshare RP2040-Zero. #5820. Thanks @CharString.

Documentation changes

  • Correct “libraries” to “classes”. #5994. Thanks @tekktrik.
  • Improve AnalogIn.reference_voltage description. #5989. Thanks @tekktrik.
  • Espressif README fixes. #5959. Thanks @andypiper.
  • Fix wifi type annotations. #5943. Thanks @prplz.
  • Fix I2SOut example. #5939. Thanks @TheWoodsy.
  • Fix pulseio.PulseOut example. #5907. Thanks @Neradoc.
  • Remove “Edit on GitHub” link in readthedocs. #5863. Thanks @tekktrik.
  • Update instructions for fetching submodules. #5856. Thanks @kattni.
  • Update re examples. #5849. Thanks @alustig3.

Build and infrastructure changes

  • STM: make ST driver repos be submodules. #5976. Thanks @sgauche.
  • Automatically cancel superseded PR CI builds. #5922. Thanks @MicroDev1.
  • Remove unused busio-using-bitbangio proxy files. #5862. Thanks @jepler.
  • Push circuitpython-stubs to only on a release. #5845. Thanks @dhalbert.
  • Use filesystem stubs when filesystem is disabled. #5841. Thanks @EmergReanimator.
  • Add execute permission to several scripts. #5817. Thanks @EmergReanimator.
  • Improve ringbuf initialization API. #5813. Thanks @EmergReanimator.
  • Improve TinyUSB build configuration options. #5812. Thanks @EmergReanimator.
  • Fix build problem when internal filesystem is disabled. #5810. Thanks @EmergReanimator.
  • Don’t include utils/ directories in frozen modules. #5791. Thanks @prplz.

Translation additions and improvements

  • Enable Turkish language builds. #5840. Thanks @electricalgorithm and @tannewt.
  • Thanks for translations:
    • @bergdahl (Swedish)
    • @electricalgorithm (Turkish)
    • @hexthat (Chinese – Pinyin)
    • @tawez (Polish)
    • @wtuemura (Portuguese – Brazil)

Known issues

  • See for other issues, including issues still to be addressed for 7.2.0 and 7.x.x.


Thank you to all who used, tested, and contributed, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.

Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

EYE on NPI — Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at !

No Comments

No comments yet.

Sorry, the comment form is closed at this time.