Daily tips and tricks from the experts at Adafruit!
View this email in your browser

View this email in your browser. Warning: Flashing Imagery

Welcome to the latest Python on Microcontrollers newsletter! This has been another busy week leading up to the holidays. Apple has finally performed some bug fixes for loading UF2 files onto microcontrollers, but work remains with hex files. The Adafruit PyLeap application now makes it easier to load code onto wireless microcontroller. Grab a free PDF copy of the Raspberry Pi Handbook 2023 to review the latest on their boards. And check out all the projects this week, including some very imaginative ones – Ed.

NOTE: The next issue will be delayed one day to December 28th (verses December 27th) due to the holidays.

We’re on Discord, Twitter, and for past newsletters – view them all here. If you’re reading this on the web, subscribe here. Here’s the news this week:

Issue Uploading UF2 files with macOS 13.0 Ventura Fixed in Version 13.1

Uploading UF2 files with macOS

Uploading UF2 file issues with macOS 13.0 Ventura have been fixed in Version 13.1. Not all is perfect, though. It is still the case that UF2 uploading does not work on nRF52840 boards that use an older UF2 bootloader (versions 0.6.2 and newer work). On those boards, the bootloader appears to fail quickly. Copying a UF2 file does not work, which is indicated by the UF2 filename appearing in the BOOT drive.

The bootloader can be updated by following the directions here. Otherwise, on these nRF52840 boards, including the Adafruit Circuit Playground Bluefruit, the Feather nRF52840, and the ItsyBitsy nRF52840, the only way to load a UF2 file is to use a non-Ventura computer.

It is also still true that copying .hex files larger than 1MB does not work (e.g., on the micro:bit). See https://github.com/ARMmbed/DAPLink/issues/982 for workarounds and further investigation – Adafruit Blog and Raspberry Pi.

PyLeap Gets a Major Update – Now With WiFi Transfer and More!

PyLeap Gets a Major Update

A major update for PyLeap, the free Adafruit iOS app that simplifies downloading code files and assets and transferring them to Adafruit devices using BLE.

With this update, Adafruit added the ability for users to transfer files using WiFi in addition to BLE. This means that you can now transfer code and assets to your Adafruit devices even faster without having to rely on a physical connection (like USB).

They’ve also made several other improvements and enhancements to PyLeap to make it more user-friendly and efficient. Some of the other highlights of this update include:

  • Enhanced transfer speeds: the transfer process has been optimized to make it even faster, so you can get your code and assets onto your Adafruit devices very quickly.
  • More devices supported: added support for some new Adafruit devices, so you can use PyLeap with even more hardware.

Download PyLeap today! PyLeap App and see the Adafruit Blog.

Raspberry Pi is Supporting KiCad Open Source Design Automation Software

Raspberry Pi is Supporting KiCad

Raspberry Pi Ltd is helping KiCad with their end-of-year funding drive by matching donations made on KiCad’s website up to $5000 – Raspberry Pi.

… We use it for some of our product designs. Dominic developed the Compute Module 4 IO board using KiCad, and the design database is free for anyone to download and use as a starting point for their own CM4 projects: you can download a zip file of the database here.

The Official Raspberry Pi Handbook 2023 is Available

Official Raspberry Pi Handbook 2023

Discover the true potential of Raspberry Pi with the new, official Handbook for 2023. With over 200 pages of amazing projects, fun tutorials, practical guides, and clear reviews, it has everything you need to master Raspberry Pi – Raspberry Pi.

Inside The Official Raspberry Pi Handbook 2023

  • QuickStart guide to setting up your Raspberry Pi computer
  • Make stuff with Raspberry Pi Pico W
  • Incredible projects built by the global Raspberry Pi community
  • Find the right kit and products for your dream builds
  • Get creating with our comprehensive tutorials and guides
  • Over 200 pages of essential advice!

Available as a book to purchase or as a free PDF download.

New 3D Printing Model Website: Printables


Many of the 3D printable cases, parts and more designed to date have been placed on Thingiverse, controlled by MakerBot. A new model aggregator has emerged, with the backing from prominent content creators including Adafruit: Printables by Prusa – Prusa.

Wouldn’t it be great, if you could download official 3D printable files with replacement parts and accessories for your home appliances? Or an official fan model from your favorite game? Today, with our partners from various industries, we’re turning this into reality and starting a revolution in how big brands approach 3D printing!

All 3D models shared on Printables.com are available for free, allowing anyone to easily download and print them at home. This opens up a world of possibilities for businesses and consumers alike. Some replacement parts can be printed locally and on-demand, eliminating the need for inventory and shipping. This also makes it easier for brands to support the right-to-repair initiative. In addition to replacement parts, businesses can also create accessories and mods for their products. This allows consumers to personalize and improve their products, making them even more valuable and unique. And for fans of popular games and movies, brands can create official fan models, such as figures, costumes, and props.

RISC-V: The background, the benefits, and the future

RISC-V: The background, the benefits, and the future

US developers conceived of the revolutionary instruction set architecture (ISA) known as RISC-V in 2010. Grounded in reduced instruction set computer (RISC) principles, it’s a common, open-source, and completely free ISA that can be used to develop software and hardware. These attributes are just part of what makes the architecture unique and attractive to developers and manufacturers.

While it’s far from new, momentum around RISC-V is continuing to accelerate, with various services, technologies, and products that leverage this architecture emerging in the past year alone. According to Deloitte, use of RISC-V’s open-chip processors was expected to double this year and is set to double again in 2023 – EEWorld.

What We Can Learn From Vintage Computing

What We Can Learn From Vintage Computing

Thanks to open source, no technology ever has to become obsolete, so long as a community remains to support it. You can sync Newtons and Palm Pilots with modern desktops, download web browsers for long-discontinued operating systems, replace a 6502 with a Teensy, or connect vintage computers like the Apple IIe to the modern internet via WiFi. Every year, new cartridges are released for old-school video game consoles like the Nintendo Entertainment System and Game Boy – The ReadME Project.

This Week’s Python Streams

Python Streams

Python on Hardware is all about building a cooperative ecosphere which allows contributions to be valued and to grow knowledge. Below are the streams within the last week focusing on the community.

CircuitPython Deep Dive Stream

Deep Dive

This week, Tim streamed work on Ethernet Testing and Gradients.

You can see the latest video and past videos on the Adafruit YouTube channel under the Deep Dive playlist – YouTube.

CircuitPython Parsec

CircuitPython Parsec

John Park’s CircuitPython Parsec is off this week. Catch all the episodes in the YouTube playlist.

Project of the Week: A Runner’s Headlight

Runner's Headlight

The Metanerd Headlight Mk. 2

The Mk. 1 was a success in the sense that it was made entirely from leftover parts from unrelated earlier projects, but I wasn’t really satisfied with the design.
Particularly the area around the two close range LEDs bothered me and I also felt like it could be a little more compact.

Enter Mk. 2. Not only is it physically smaller and uses less power, it also looks much more professionally designed. It has the same control and the same mix of close and long range lights. Close range: 2 x 1W with 90 degree lens and angled down 15 degrees to illuminate the ground immediately in front of and around me. Long range: 1 x 3W with 5 degree lens for a focused cone of light so I can see far ahead.

Controlled by an Adafruit Trinket M0 running CircuitPython – Instagram.

News from around the web!


Boston College course Physical Computing: Art, Robotics & Tech for Good is a first course in electronics programming. Here is a look at the final Student Project Showcase for the Fall semester. All done in CircuitPython using a selection of Adafruit, Arduino, & Raspberry Pi boards – YouTube via Twitter.


A Raspberry Pi Pico powered CubeSat running MicroPython – Twitter.


Person-Sensor with a Wio Terminal using CircuitPython performing face detection – Element14 Community and YouTube.

Blinky Tree

Flashy new Christmas décor: Mario star was programmed with CircuitPython, palm tree from Alpenglow, wreath from boardamentsMastodon.

Micropython controlled educational boardgame

A MicroPython controlled educational board game running on a Pimoroni Pico Lipo with a Raspberry Pi chip on board – Twitter.

Banana Pi Pico W

Maker Advent 2022 Day 10: Banana Pi Pico W IoT Christmas Lights with CircuitPython and a HTTP server – YouTube and GitHub.

Maker Advent 2022 Day 12: Banana Pi Pico W DHT11 Temperature Sensor with CircuitPython – Twitter and YouTube.

How to design and make a robot

How to design and make a robot – YouTube.

GitHub Graph on Galactic Unicorn

Getting the GitHub commit graph working on the Pimoroni Galactic Unicorn – Twitter.

R2D2 Robot works with Raspberry Pi Pico

R2D2 Robot works with Raspberry Pi Pico and a Servo, programmed in MicroPython – Twitter.

Pico Mood Light

Making a mood lamp using a Pico W IoT with Anvil and MicroPython – Raspberry Pi.

Pico Hat Pad

Pico Hat Pad: A Raspberry Pi Pico hat with two mechanical switches and a rotary encoder. Powered by KMK using CircuitPython – GitHub via Twitter.

RP2040 Stamp Handheld Console

The RP2040 Stamp Handheld Console is a Flux (preview) product. The system supports Arduino, CircuitPython, and (experimentally) Arduboy games – lectronz via Twitter and GitHub.

CF Xiao

A Seeed Xiao nRF52840 inside a Compact Flash card with CircuitPython – Twitter.

LEGO Piano

A LEGO Raspberry Pi Pico-powered MIDI keyboard using parts from a broken toy piano, programmed in CircuitPython with the Adafruit MIDI Library – Twitter.

Turn The Radio Volume Down For Adverts and DJs talking

Turn The Radio Volume Down For Adverts and DJs talking for a Sonos speaker using the Soco-cli Python library when Tunein is being used – Matthew Felgate.

Virtual Environment in Python

How to Set Up a Virtual Environment in Python – and why it’s useful – freeCodeCamp.

Parallelization in Python: The Easy Way

Parallelization in Python: The Easy Way – Towards Data Science.

PyDev of the Week: Robert Smallshire on Mouse vs Python

CircuitPython Weekly Meeting for December 19, 2022 (notes) on YouTube

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? 20 Best Raspberry Pi Alternatives Best Single-Board Computer To Try.

Coming Soon

IDM2040-7A Intelligent Display Module

Bridgetek’s IDM2040-7A intelligent display module features a 7” 800×480 capacitive touch panel. The module carries the latest generation EVE4 controller BT817 supported by a low-cost high-performance RP2040 microcontroller. The onboard RS485 transceiver allows communication with long-distance sensor bus (LDSBus) devices or DMX512 devices through Cat 5/Cat 6 cables over an RJ45 connector.

The input power supply can be either a Type-C PD charger or a PSU via the DC jack. The Type-C PD port is controlled by FTDI’s FT232HP PD controller with a PD sink profile programmable through the FTDI utility FT_PROG. With the use of a Raspberry Pi RP2040 MCU, the IDM2040-7A module allows easy programming with various CircuitPython or MicroPython libraries – DigiKey.

New Boards Supported by CircuitPython

The number of supported microcontrollers and Single Board Computers (SBC) grows every week. This section outlines which boards have been included in CircuitPython or added to CircuitPython.org.

This week, there were no new boards added, but several are coming soon.

Note: For non-Adafruit boards, please use the support forums of the board manufacturer for assistance, as Adafruit does not have the hardware to assist in troubleshooting.

Looking to add a new board to CircuitPython? It’s highly encouraged! Adafruit has four guides to help you do so:

New Learn Guides!

New Learn Guides

Adafruit MOSFET Driver from Liz Clark

Adafruit EYESPI Breakout Board from Liz Clark and Kattni

CircuitPython Libraries!

CircuitPython Libraries

CircuitPython support for hardware continues to grow. We are adding support for new sensors and breakouts all the time, as well as improving on the drivers we already have. As we add more libraries and update current ones, you can keep up with all the changes right here!

For the latest libraries, download the Adafruit CircuitPython Library Bundle. For the latest community contributed libraries, download the CircuitPython Community Bundle.

If you’d like to contribute, CircuitPython libraries are a great place to start. Have an idea for a new driver? File an issue on CircuitPython! Have you written a library you’d like to make available? Submit it to the CircuitPython Community Bundle. Interested in helping with current libraries? Check out the CircuitPython.org Contributing page. We’ve included open pull requests and issues from the libraries, and details about repo-level issues that need to be addressed. We have a guide on contributing to CircuitPython with Git and GitHub if you need help getting started. You can also find us in the #circuitpython channels on the Adafruit Discord.

You can check out this list of all the Adafruit CircuitPython libraries and drivers available.

The current number of CircuitPython libraries is 395!

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

Library PyPI Weekly Download Stats

  • Total Library Stats
    • 121295 PyPI downloads over 306 libraries
  • Top 10 Libraries by PyPI Downloads
    • Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 17800
    • Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 17305
    • Adafruit CircuitPython Register (adafruit-circuitpython-register): 1630
    • Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1136
    • Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1095
    • Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 861
    • Adafruit CircuitPython ESP32SPI (adafruit-circuitpython-esp32spi): 836
    • Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 775
    • Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 717
    • Adafruit CircuitPython SSD1306 (adafruit-circuitpython-ssd1306): 687

What’s the team up to this week?

What is the team up to this week? Let’s check in!


I’ve been researching and fixing a variety of issues for the CircuitPython 8.0.0 release. Some issues were fixed easily, some were not reproducible, and some I moved forward, past 8.0.0. We have about a dozen issues open: the number goes up and down, but the trend is down!


This week I collaborated with Liz to publish the EYESPI Breakout Board guide. It has everything you need to get started with your EYESPI breakout. If you picked one of these up and need more info or a little help getting started, check out this guide!

The next guide is a scrolling countdown timer using three quad alphanumeric STEMMA QT display backpacks, and a QT Py ESP32-S2. You can customise it for any event you would like to count down to, and it scrolls the time left until that event, as well as displaying any message you choose when the event starts.


I’ve been out most of the past week due to the death of a close friend. Prior to that I was working on updating code.circuitpython.org and rewriting the USB workflow to make use of the File System Access API. The initial pull request was merged in and I have been working on polishing the changes up to make the USB workflow even more usable.


I have been working on helper functions that generate lists of colors representing a gradient between two or more given input colors. I’ve implemented 3 different types of increasing complexity: linear, polylinear, and bezier gradients. I have experimented with visualizing with displayio and vectorio. I’m hoping to use the gradients with neopixels and led_animation ultimately as well.


The settings.toml change I mentioned in the last newsletter has finally been merged, and will be in beta.6 and newer! Aside from that, I worked on some hidden problems with building CircuitPython that was a pre-existing problem that was exposed when a new version of isort was released.

Here’s a quick tutorial on settings.toml:

  • Just like the removed .env support, these values are used e.g., to set up the web workflow, or can be retrieved with a call to os.getenv()
  • CircuitPython supports a subset of the full toml syntax.
  • It supports simple string and integer values
  • It supports comments which start with “#”
  • Each line should be of the form “NAME=value”.
  • String values have to be enclosed in double quotes (NAME="string value"). You can directly use non-ASCII characters like œ or 🎉 as long as you save in UTF-8 format. Or, you can use non-ascii characters with a \uxxxx 4-digit code.
  • Integers must not be quoted. They may be in decimal or hexadecimal format only. (NAME=42)
  • A non-supported value type that is written on a single line will not cause a compatibility problem. However, trying to retrieve the value will generally result in an exception
  • A non-supported value that is written on multiple lines (like triple quoted strings) can cause a problem if one of the contained lines looks like a supported NAME=value line.
  • Parsing ends at a line that starts with [.

We’ll be updating our guides and sample code that referred to .env to reflect the new settings.toml way of doing things shortly after the release of beta.6.


This week I’ve continued working on the coprocessor/ULP support for the ESP32-S2 and S3. I’ve been testing a ULP program that reads a pin input and then wakes up the main core when the pin goes low. It now works during pretend deep sleep but not full deep sleep. Once I get that working, I hope to send out the pull request.


I worked on the EYESPI breakout board guide with Kattni. It gives a basic overview on how to use the EYESPI breakout and EYESPI connector port on the newer SPI displays in the shop. I’d always avoided SPI displays in the past because of the wiring but this breakout with the FPC cable makes everything a lot simpler. I think folks will especially find this standard to be especially useful for cyberdecks.

I also worked on the MOSFET Driver Learn Guide. This breakout has the MOSFET diode circuit that is needed for driving things like high power LED’s, motors and solenoids. The terminal block onboard is very fancy and provides a sturdy connection.

Upcoming events!

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on January 25th (the December meeting will not happen this month) – Meetup. Slides from the October meeting are here.


FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. February 4-5, 2023 in Brussels, Belgium – Fosdem.

PyCon US 2023

PyCon US 2023 will be April 19-17, 2023, again in Salt Lake City, Utah USA – PyCon US 2023.

Send Your Events In

As for other events, with the COVID pandemic, most in-person events are postponed or held online. If you know of virtual events or upcoming events, please let us know on Twitter with hashtag #CircuitPython or email to cpnews(at)adafruit(dot)com.

Latest releases

CircuitPython’s stable release is 7.3.3 and its unstable release is 8.0.0-beta.5. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20221219 is the latest CircuitPython library bundle.

v1.19.1 is the latest MicroPython release. Documentation for it is here.

3.11.1 is the latest Python release. The latest pre-release version is 3.12.0a3.

3,322 Stars Like CircuitPython? Star it on GitHub!

Call for help – Translating CircuitPython is now easier than ever!

CircuitPython translation statistics on weblate

One important feature of CircuitPython is translated control and error messages. With the help of fellow open source project Weblate, we’re making it even easier to add or improve translations.

Sign in with an existing account such as GitHub, Google or Facebook and start contributing through a simple web interface. No forks or pull requests needed! As always, if you run into trouble join us on Discord, we’re here to help.

jobs.adafruit.com – Find a dream job, find great candidates!


jobs.adafruit.com has returned and folks are posting their skills (including CircuitPython) and companies are looking for talented makers to join their companies – from Digi-Key, to Hackaday, Micro Center, Raspberry Pi and more.

36,188 thanks!

36,188 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 36,188 humans – thank you! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at https://adafru.it/discord.

ICYMI – In case you missed it


Python on hardware is the Adafruit Python video-newsletter-podcast! The news comes from the Python community, Discord, Adafruit communities and more and is broadcast on ASK an ENGINEER Wednesdays. The complete Python on Hardware weekly videocast playlist is here. The video podcast is on iTunes, YouTube, IGTV (Instagram TV), and XML.

The weekly community chat on Adafruit Discord server CircuitPython channel – Audio / Podcast edition – Audio from the Discord chat space for CircuitPython, meetings are usually Mondays at 2pm ET, this is the audio version on iTunes, Pocket Casts, Spotify, and XML feed.

Codecademy “Learn Hardware Programming with CircuitPython”

Codecademy CircuitPython

Codecademy, an online interactive learning platform used by more than 45 million people, has teamed up with Adafruit to create a coding course, “Learn Hardware Programming with CircuitPython”. The course is now available in the Codecademy catalog.


The CircuitPython Weekly Newsletter is a CircuitPython community-run newsletter emailed every Tuesday. The complete archives are here. It highlights the latest CircuitPython related news from around the web including Python and MicroPython developments. To contribute, edit next week’s draft on GitHub and submit a pull request with the changes. You may also tag your information on Twitter with #CircuitPython.

Join the Adafruit Discord or post to the forum if you have questions.