This is CircuitPython 8.0.0-beta.1, a beta release for 8.0.0. It is relatively stable, but there will be further additions and fixes before final release.
Notable changes to 8.0.0 since 7.3.0
- Added WiFi workflow with browser-based device discovery, filesystem browsing, upload, download, file editing, serial/REPL connection.
- Added a one-line status bar, which displays connection status, last exception, and version on a terminal window title or on the top line of an attached display. Support for status bar display is also being added to the Mu and Thonny editors.
.env
file in CIRCUITPY specifies WiFI connection parameters, BLE name, and other startup values.dotenv
support:os.getenv()
values can be set in the.env
file.- Preliminary implementation of WiFi on the Pi Pico W.
- Revised Espressif camera support, now available on ESP32, ESP32-S2, and ESP32-S3.
- Bulk analog input:
analogbufio
(available only on RP2040 for now). - Pin state can be preserved during deep sleep (available only on Espressif for now).
- Allow setting USB VID, PID, manufacturer, and product ids at runtime.
AnalogIn
values are full range from 0 to 65535, instead of having zeros on low-order bits.OneWire
is only inonewireio
, and is no longer inbusio
orbitbangio
.gamepadshift
has been removed: usekeypad.ShiftRegisterKeys
instead.MP3Decoder
andWaveFile
can now take a filename instead of an open file.PulseOut
no longer accepts aPWMOut
. Use aPin
instead.- Added
TileGrid.contains()
. i2ctarget.I2CTarget
is the new name fori2cperipheral.I2CPeripheral
. Accept both for now.I2CPeripheral
will be removed in 9.0.0.- Auto-brightness support in
displayio
andframebufferio
has been removed. It was never implemented completely. - Restored
rainbowio
andonewireio
to a number of boards. - Print out whole-number floats exactly and correctly.
- Enabled
collections.deque
on most builds.
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:
atmel-samd
: Microchip SAMD21, SAMx5xcxd56
: Sony Spresenseespressif
: Espressif ESP32-S2nrf
: 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 2Wespressif
: ESP32, ESP32-S3, ESP32-C3litex
: fomumimxrt10xx
: NXP i.MX RT10xxxstm
: ST non-STM32F4 chip families
Changes since 8.0.0-beta.0
Fixes and enhancements
- Update frozen libraries #6971. Thanks @dhalbert.
- Simplify status bar code, and make partial writes less likely. #6952. Thanks @dhalbert.
- Support opening a file by name in
MP3Decoder
and WaveFile. #6943, #6931. Thanks @snkYmkrct. - Update
ulab
to 5.1.1. #6939. Thanks @jepler. - Clean up implementation and internal use of
ringbuf
. #6915. Thanks @dhalbert. - Fix slowdown on devices with dimmable displays. #6894. Thanks @gamblor21.
- Improve web workflow directory page. #6885. Thanks @MicroDev1.
- Allow writing empty color frame in
EpaperDisplay
. #6871. Thanks @pepijndevos. - Allow status bar to be enabled and disabled. #6847. Thanks @dhalbert.
- Make
PulseIn
objects be long-lived so they won't be moved. #6834. Thanks @DavePutz. - Improve
usb_hid.Device.get_last_received_report()
. #6818, #6810, #6767. Thanks @maximkulkin. - Allow move and rename to be used from localhost in web workflow. #6807. Thanks @makermelissa.
- Remove deprecated
usb_hid.Device.last_received_report
, replaced byget_last_received_report()
. #6802. Thanks @dhalbert. - Fix
hashlib.Hash.digest_size
. #6797. Thanks @jepler. - Make
rotaryio
objects be long-lived so they won't be moved. #6789. Thanks @DavePutz. - Add UID to web workflow
version.json
. #6787. Thanks @Neradoc. - Fix
is31fl3741
display issues. #6784. Thanks @gamblor21. - Fix display scroll area issues when scale > 1. #6783. Thanks @tannewt.
- Allow setting USB VID, PID, manufacturer, and product ids at runtime. #6247. Thanks @s-ol.
Port and board-specific changes
Broadcom
- Enable console UART by default. #6887. Thanks @RetiredWizard.
Espressif
- Manage I2C device locking for
esp32_camera
. #6940. Thanks @jepler. - Pin state can be preserved during deep sleep. #6907. Thanks @dhalbert.
- Fix PWM reset issues. #6898. Thanks @dhalbert.
- Correct available run modes on different chips. #6886. Thanks @MicroDev1.
- Improve
esp32_camera
error checking. #6794. Thanks @jepler.
i.MX
nRF
UART.read()
now returnsNone
when nothing read, consistent with other ports. #6908. Thanks @dhalbert.- Handle zero-length
PulseOut
pulses properly. #6798. Thanks @DavePutz.
RP2040
- Preliminary implementation of WiFi on the Pi Pico W. #6976, #6960, #6933. Thanks @jepler.
- Bulk analog input:
analogbufio
. #6911, #6757. Thanks @latkinso42. - Fix
rp2pio
issue when no OUT pins used. #6863. Thanks @jepler. - Update
pico-sdk
to 1.4.0. #6822. Thanks @jepler. - Improve compilation error checking. #6973. Thanks @jepler.
SAMx
STM
Individual boards
- Adafruit ESP32-S2 TFT: remove now-unneeded pin reset workaround. #6909. Thanks @dhalbert.
- Adafruit Grand Central M4: update preferred pin names to match silkscreen. #6953. Thanks @kattni.
- Adafruit MatrixPortal: disable
ulab
to make room for frozen modules. #6779. Thanks @dhalbert. - AIThinker ESP32-C3S-2M: use unique creation ids. #6937. Thanks @jepler.
- Cytron Maker Feather AIoT S3: most pins now enable pulldown when reset. #6895. Thanks @CytronTechnologies.
- Cytron Maker Feather AIoT S3: change pin assignments due to redesign. #6881. Thanks @CytronTechnologies.
- MicroDev microC3: update board definition. #6888. Thanks @MicroDev1.
- PewPew: remove alias to non-existent PewPew13 board. #6842. Thanks @Neradoc.
- PewPew ugame10: Update
ugame.py
and fix build typo. #6823. Thanks @pypewpew (@deshipu). - Smart Bee Designs Bee-Motion-S3: fix pin name. #6917. Thanks @strid3r21.
- Unexpected Maker FeatherS3: fix pin names. #6873. Thanks @UnexpectedMaker (@UnexpectedCircuitPython).
- Unexpected Maker ProS3: fix pin names. #6873. Thanks @UnexpectedMaker (@UnexpectedCircuitPython).
- Waveshare Electronics ESP32-S2-Pico: pin fixes. #6864. Thansk @bill88t.
Documentation changes
- Run black over all inline documentation to make its formatting consistent. #6972, #6951, #6950. Thanks @jepler.
- Temporary fixes to work around documentation building issues. #6946, #6944. Thanks @jepler.
- Correct documentation for
usb_cdc.Serial.readinto()
. #6944. Thanks @jepler. - Correct documentation for
UART.read()
. #6908. Thanks @dhalbert. - Fix some type annotations. #6905. Thanks @hardfury-labs.
- Add more links to external documentation. #6900. Thanks @tekktrik.
- Add documentation for
socketpool.SocketPool()
. #6855. Thanks @tekktrik. - Add web workflow documentation and links. #6854. Thanks @makermelissa.
- Fix
UART
documentation. #6846. Thanks @tekktrik. - Improve
os.stat
documentation. #6841. Thanks @thetazero. - Copyediting in Design Guide. #6833. Thanks @rshah713.
- Update license files. #6826. Thanks @MicroDev1.
- Fix type annotation for
adafruit_bus_device.SPIDevice()
. #6814. Thanks @MicroDev1. - Add ESP32 to Espressif port status in README. #6974. Thanks @MicroDev1.
Build and infrastructure changes
- Clean up of
port/*/.gitignore
. #6974. Thanks @MicroDev1 and @dhalbert. - Make
makeversionhdr
more strict. #6912. Thanks @jepler. fontio
by itself can now be enabled or disabled at compile time. #6890. Thanks @jepler.- Provide default versions for common
board.c
routines. #6878. Thanks @dhalbert. - Use Ubuntu 22.04 for pre-commit CI runs. #6875. Thanks @jepler.
- Check creatorid:creationid uniqueness. #6831. Thanks @jepler.
- Improve argument validation and consolidate error messages. #6522. Thanks @jepler.
Translation additions and improvements
Thanks for translations:
- @alvaro (Spanish)
- @bergdahl (Swedish)
- @bill88t (Greek)
- @boranroni (Turkish)
- @hexthat (Chinese - Pinyin)
- @Lisapple (French)
- @urfdvw (Chinese - Pinyin)
- @wtuemura (Portugese - Brazil)
New boards since 8.0.0-beta.0
- BananaPi BPI-Bit-S2. #6899. Thanks @BPI-STEAM.
- BananaPi BPI-Leaf-S3. #6904. Thanks @BPI-STEAM.
- Invector Labs Challenger RP2040 subGhz. #6681. Thanks @PontusO.
- Invector Labs Challenger RP2040 WiFi/BLE. #6868. Thanks @PontusO.
- STM Nucleo-F446RE. #6945. Thanks @flom84.
- Unexpected Maker TinyPICO Nano. #6918. Thanks @UnexpectedMaker.
- Unexpected Maker TinyPICO (V2/V3). #6918. Thanks @UnexpectedMaker.
- WEMOS LOLIN S3 16MB Flash 8MB PSRAM. #6859. Thanks @wemos.
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 8.0.0-beta.0, including the contributors above, and many others on GitHub and Discord. Join us on the Discord chat to collaborate.