# CircuitPython Weekly Meeting for March 17, 2025

Video is available [on YouTube](https://youtu.be/AVjHZtDuZZI).

Join here for the chat all week: [http://adafru.it/discord](http://adafru.it/discord).

The CircuitPython Weekly Meeting normally is held at 2pm US ET/11am PT on Mondays. Check the \#circuitpython channel on Discord for notices of change in time and links to past meetings. Meeting times are also available in [iCal format](https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical) for use with standard calendar applications and can also be viewed [in your browser](https://open-web-calendar.hosted.quelltext.eu/calendar.html?url=https%3A%2F%2Fraw.githubusercontent.com%2Fadafruit%2Fadafruit-circuitpython-weekly-meeting%2Fmain%2Fmeeting.ical&title=CircuitPython%20Meeting%20Schedule&tab=agenda&tabs=month&tabs=agenda).

If you want to be able to participate in the meeting by speaking, you will need to be added to the @circuitpythonistas role on Discord. Please ask any of the moderators or admins to add you if you’d like to join.

CircuitPython development is sponsored by Adafruit. Please support them by purchasing hardware from https://adafruit.com.

Reminders: Podcast available on most services. Let us know if we’re missing some. The canonical URL for the podcast version is [https://adafruit-podcasts.s3.amazonaws.com/circuitpython\_weekly\_meeting/audio-podcast.xml](https://adafruit-podcasts.s3.amazonaws.com/circuitpython_weekly_meeting/audio-podcast.xml) which you may be able to enter directly into compatible podcast apps.

## 3:12 Community News

### 3:20 CircuitPython.Org to Get an Update

CircuitPython.org will be updated soon with a fresh new look. CircuitPython has come a long way since the original landing page for [CircuitPython.org](https://circuitpython.org/) was created. The new design will focus on what is possible with CircuitPython. And there will be a new Made with CircuitPython badge that will show off the wide range of projects all created with CircuitPython. Each time the page is loaded, it will show off different projects throughout the page.

The new design will do a better job of explaining CircuitPython to those who are new to the language. It also does a better job of organizing the most used aspects of the site, like the individual board pages. This new design is already complete and is under review. So expect to see this update very soon\! \- [Adafruit Blog](https://blog.adafruit.com/2025/03/11/coming-soon-a-new-circuitpython-org/).

### 4:08 Newsletter Details

The Python on Microcontrollers Weekly Newsletter is a CircuitPython-community-run newsletter emailed every Monday. The complete archives are \[here\](https://www.adafruitdaily.com/category/circuitpython/). It highlights the latest Python on hardware related news from around the web including CircuitPython, Python and MicroPython developments. 

To contribute your own news or project, edit next week's draft [on GitHub](https://github.com/adafruit/circuitpython-weekly-newsletter/tree/gh-pages/_drafts) and [submit a pull request](https://help.github.com/articles/editing-files-in-your-repository/) with the changes. You may also or email [cpnews@adafruit.com](mailto:cpnews@adafruit.com), or tag a post with \#CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.

## 4:52 State of CircuitPython, Libraries and Blinka

**This report contains information from the previous seven days. Any changes (PRs merged, etc.) made today are not included in this report.**

### 5:10 Overall

* 24 pull requests merged  
  * 13 authors \- mikeysklar, wtuemura, Core-i99, tyeth, jepler, frank-pet, tannewt, Neradoc, bablokb, dependabot\[bot\], eightycc, FoamyGuy, vladak  
  * 9 reviewers \- dhalbert, jepler, tyeth, makermelissa, tannewt, BlitzCityDIY, Neradoc, FoamyGuy, brentru  
* 11 closed issues by 6 people, 8 opened by 7 people

### 5:42 Core

* 9 pull requests merged  
  * 5 authors \- tannewt, wtuemura, Neradoc, eightycc, FoamyGuy  
  * 3 reviewers \- Neradoc, jepler, tannewt  
* 23 open pull requests  
  * [https://github.com/adafruit/circuitpython/pull/7811](https://github.com/adafruit/circuitpython/pull/7811) (Open 718 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/8647](https://github.com/adafruit/circuitpython/pull/8647) (Open 481 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9009](https://github.com/adafruit/circuitpython/pull/9009) (Open 376 days)  
  * [https://github.com/adafruit/circuitpython/pull/9094](https://github.com/adafruit/circuitpython/pull/9094) (Open 355 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9349](https://github.com/adafruit/circuitpython/pull/9349) (Open 271 days)  
  * [https://github.com/adafruit/circuitpython/pull/9559](https://github.com/adafruit/circuitpython/pull/9559) (Open 205 days)  
  * [https://github.com/adafruit/circuitpython/pull/9844](https://github.com/adafruit/circuitpython/pull/9844) (Open 108 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9876](https://github.com/adafruit/circuitpython/pull/9876) (Open 100 days)  
  * [https://github.com/adafruit/circuitpython/pull/9878](https://github.com/adafruit/circuitpython/pull/9878) (Open 99 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9883](https://github.com/adafruit/circuitpython/pull/9883) (Open 97 days)  
  * [https://github.com/adafruit/circuitpython/pull/9909](https://github.com/adafruit/circuitpython/pull/9909) (Open 83 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9955](https://github.com/adafruit/circuitpython/pull/9955) (Open 63 days) (draft)  
  * [https://github.com/adafruit/circuitpython/pull/9974](https://github.com/adafruit/circuitpython/pull/9974) (Open 58 days)  
  * [https://github.com/adafruit/circuitpython/pull/9994](https://github.com/adafruit/circuitpython/pull/9994) (Open 51 days)  
  * [https://github.com/adafruit/circuitpython/pull/10023](https://github.com/adafruit/circuitpython/pull/10023) (Open 42 days)  
  * [https://github.com/adafruit/circuitpython/pull/10044](https://github.com/adafruit/circuitpython/pull/10044) (Open 36 days)  
  * [https://github.com/adafruit/circuitpython/pull/10056](https://github.com/adafruit/circuitpython/pull/10056) (Open 31 days)  
  * [https://github.com/adafruit/circuitpython/pull/10073](https://github.com/adafruit/circuitpython/pull/10073) (Open 28 days)  
  * [https://github.com/adafruit/circuitpython/pull/10080](https://github.com/adafruit/circuitpython/pull/10080) (Open 25 days)  
  * [https://github.com/adafruit/circuitpython/pull/10119](https://github.com/adafruit/circuitpython/pull/10119) (Open 10 days)  
  * [https://github.com/adafruit/circuitpython/pull/10127](https://github.com/adafruit/circuitpython/pull/10127) (Open 6 days)  
  * [https://github.com/adafruit/circuitpython/pull/10129](https://github.com/adafruit/circuitpython/pull/10129) (Open 4 days)  
  * [https://github.com/adafruit/circuitpython/pull/10131](https://github.com/adafruit/circuitpython/pull/10131) (Open 2 days)  
* 1 closed issues by 1 people, 1 opened by 1 people  
* 768 open issues  
  * [https://github.com/adafruit/circuitpython/issues](https://github.com/adafruit/circuitpython/issues)  
* 7 active milestones  
  * 10.0.0: 18 open issues  
  * 9.2.x: 13 open issues  
  * 9.x.x: 59 open issues  
  * Libraries: 17 open issues  
  * Long term: 624 open issues  
  * Support: 22 open issues  
  * Third-party: 15 open issues  
  * 1 issues not assigned a milestone

### 7:15 Libraries

* Adafruit Libraries: 354 Community Libraries: 155 (Total: 509\)  
* 6 pull requests merged  
  * 5 authors \- mikeysklar, bablokb, tyeth, FoamyGuy, vladak  
  * 5 reviewers \- dhalbert, BlitzCityDIY, tyeth, FoamyGuy, brentru  
  * Merged pull requests:  
    * [https://github.com/adafruit/Adafruit\_CircuitPython\_MiniMQTT/pull/240](https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/240) (Days open: 43\)  
    * [https://github.com/adafruit/Adafruit\_CircuitPython\_MiniMQTT/pull/244](https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/244) (Days open: 30\)  
    * [https://github.com/adafruit/Adafruit\_CircuitPython\_HDC302x/pull/4](https://github.com/adafruit/Adafruit_CircuitPython_HDC302x/pull/4) (Days open: 1\)  
    * [https://github.com/adafruit/Adafruit\_CircuitPython\_MiniMQTT/pull/247](https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/247) (Days open: 1\)  
    * [https://github.com/adafruit/Adafruit\_CircuitPython\_Display\_Text/pull/218](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/pull/218) (Days open: 1\)  
    * [https://github.com/adafruit/CircuitPython\_Community\_Bundle/pull/242](https://github.com/adafruit/CircuitPython_Community_Bundle/pull/242) (Days open: 1\)  
  * 47 open pull requests (Oldest: 942, Newest: 2\)  
* 5 closed issues by 4 people, 5 opened by 4 people  
  * 697 open issues  
  * 3 good first issues  
* [https://circuitpython.org/contributing](https://circuitpython.org/contributing)

#### 11:11 Library updates in the last seven days:

* **New Libraries**  
  * [bablokb/circuitpython-iperf](https://github.com/bablokb/circuitpython-iperf)  
* **Updated Libraries**  
  * [adafruit/Adafruit\_CircuitPython\_MiniMQTT](https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT)  
  * [adafruit/Adafruit\_CircuitPython\_Display\_Text](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text)  
  * [todbot/CircuitPython\_TMIDI](https://github.com/todbot/CircuitPython_TMIDI)

### 11:35 Blinka

* 9 pull requests merged  
  * 5 authors \- frank-pet, Core-i99, jepler, dependabot\[bot\], FoamyGuy  
  * 3 reviewers \- jepler, makermelissa, FoamyGuy  
* 24 open pull requests  
  * [https://github.com/adafruit/Adafruit\_Blinka\_bleio/pull/40](https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40) (Open 1256 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/335](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335) (Open 444 days) (draft)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/884](https://github.com/adafruit/Adafruit_Blinka/pull/884) (Open 215 days) (draft)  
  * [https://github.com/adafruit/Adafruit\_Blinka\_Displayio/pull/140](https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/140) (Open 211 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/888](https://github.com/adafruit/Adafruit_Blinka/pull/888) (Open 198 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/908](https://github.com/adafruit/Adafruit_Blinka/pull/908) (Open 128 days) (draft)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/914](https://github.com/adafruit/Adafruit_Blinka/pull/914) (Open 105 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/915](https://github.com/adafruit/Adafruit_Blinka/pull/915) (Open 100 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/372](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/372) (Open 95 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/925](https://github.com/adafruit/Adafruit_Blinka/pull/925) (Open 67 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/375](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/375) (Open 67 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/928](https://github.com/adafruit/Adafruit_Blinka/pull/928) (Open 64 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka\_Displayio/pull/143](https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/143) (Open 60 days) (draft)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/378](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/378) (Open 58 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/931](https://github.com/adafruit/Adafruit_Blinka/pull/931) (Open 55 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/379](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/379) (Open 36 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/945](https://github.com/adafruit/Adafruit_Blinka/pull/945) (Open 22 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/380](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/380) (Open 22 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka\_Displayio/pull/156](https://github.com/adafruit/Adafruit_Blinka_Displayio/pull/156) (Open 21 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka\_Raspberry\_Pi5\_Neopixel/pull/6](https://github.com/adafruit/Adafruit_Blinka_Raspberry_Pi5_Neopixel/pull/6) (Open 13 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka\_Raspberry\_Pi5\_rp1pio/pull/19](https://github.com/adafruit/Adafruit_Blinka_Raspberry_Pi5_rp1pio/pull/19) (Open 13 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/950](https://github.com/adafruit/Adafruit_Blinka/pull/950) (Open 12 days)  
  * [https://github.com/adafruit/Adafruit\_Blinka/pull/955](https://github.com/adafruit/Adafruit_Blinka/pull/955) (Open 5 days)  
  * [https://github.com/adafruit/Adafruit\_Python\_PlatformDetect/pull/381](https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/381) (Open 5 days)  
* 5 closed issues by 1 people, 2 opened by 2 people  
* 151 open issues  
  * [https://github.com/adafruit/Adafruit\_Blinka/issues](https://github.com/adafruit/Adafruit_Blinka/issues)  
* Number of supported boards: 146

## 13:00 Hug reports

13:28 @tannewt (host)

* @blitzcitydiy for hosting for me last minute last week.  
* @ladyada for documenting her LLM coding assistant journey. Claude Code is very powerful.

14:08 @anecdata (text only)

* @eightycc for digging in to some PIO UART issues

14:17 @danh

* @hathach for NINA-FW work: getting it to run on ESP32-C6 and getting Bluetooth to work

14:46 @foamyguy

* Scott for looking into new ways to load fonts  
* @MichalPokusa and @tyeth for help with JS bluefruit connect packet and byte manipulation formats  
* Jeff for continued help and improvements to piomatter  
* @MakerMelissa for showing a really cool circuitpython implementation of chip’s challenge on S\&T last week.

15:36 @jepler

* Tim & jp for testing piomatter changes & finding problems  
* Tim & Liz for taking on the task of documenting some of the emulator work I’m doing on fruit jam

16:20 @mark\[gamblor\] (missing probably)

* @Jepler for a discussion on fixed point and integer / floating point math in audio processing that sent me down a rabbit hole I had not thought about before

## 16:48 Status Updates

17:08 @tannewt (host)

* Was around last week after Japan trip was cancelled due to me getting a stomach bug. We leave Friday for a shorter California trip. Back next Thursday the 27th.  
* Adding LVGL font binary format loading to bitmap font library. Looks very useful for us. Branch is here: [https://github.com/tannewt/Adafruit\_CircuitPython\_Bitmap\_Font/tree/lvfontbin](https://github.com/tannewt/Adafruit_CircuitPython_Bitmap_Font/tree/lvfontbin)  
* Now adding it to CircuitPython so we can load glyphs from the filesystem into the terminal. This will help us support emoji and other languages with large alphabets with a large number of characters (korean and japanese). Using Claude Code to get much of it in place. Very neat to have it reference the Python library when generating the C code.

19:23 @danh

* Updating NINA-FW firmware for AirLift co-processors:  
  * Can use a lot of the arduino-esp32 libraries instead of existing code in the NINA-FW repo.  
  * Got TLS and HTTPS working.  
  * ESP32-C6 port is working on both an Espressif dev board and a Feather C6.  
  * Thach just reported he got Bluetooth working.  
  * Need to get the “data available” pin working.  
* Releasing CircuitPython 9.2.5 is still on my short list.

21:59 @eightycc

* Noodling around with RP2350 clocks and timing. Got some basic timing tests running at 240 MHz. Also got PSRAM QSPI clocked up to 120 MHz after I discovered the “secret sauce” by turning on PSRAM wrap boundary mode. 240 MHz is an integral multiple of 48 MHz, potentially freeing up the USB PLL for use as an HSTX clock, allowing accurate pixel clock generation. This also works at 144 MHz, so we could stay inside the RP2350’s documented clock limits and still free up the USB PLL. Having SYS\_CLK at a multiple of 48 MHz would also benefit Pico-PIO-USB in full-speed mode by avoiding the jitter inherent in using a fractional divider for the PIO clock.

23:27 @foamyguy

* Snake game for metro RP2350 learn guide  
* Experimenting with multiple mice  
* Wrote code for a memory game  
* Trying improvements to PioMatter and helping troubleshoot with JP. Also tested mirroring from a USB HDMI adapter to the matrix panels.  
* Got help from claude to convert arduino matrix example to circuitpython using the new tile palette mapper module  
* Started implementing an HTTPServer script that sends bluefruit connect compatible packets over websockets / WIFI instead of BLE. 

26:12 @jepler

* Not a lot of circuitpython activity again  
* Updates to piomatter improving temporal dithering.  
* I tried to remove a workaround but it turns out the workaround is still needed  
* Over in pico-sdk land I’m working on making the pico-mac emulator work as well as possible on fruit jam rp2350  
* Just two weeks before my big trip\! So i’m getting a bit antsy, if we’re being honest.  
* My last regular day is March 28\!

## 27:40 In The Weeds

@tyeth

* 28:00 Frozen Libraries \- Can we do a minor/patch release weekly if there are updated frozen modules, users can’t find the current version number and don’t often find the necessary info to support updating them, and the general library advise to stick everything in lib doesn’t work (and it’s discouraged to chuck all libraries in root). Circup could be made aware of frozen modules and how to place them correctly, but many users don’t use circup.  
  Easiest seems to do a round up release if any frozen modules have changed in last week. Thoughts? Maybe can be part of weekly report as to which / how many frozen modules have been updated since last release...  
  * @danh: I plan to update the frozen libraries for 9.2.5 release.

* 32:39 State of Ruff in the circuitpython libraries / An update mechanism for the cookiecutter projects? (@tyeth \- maybe offline) The ruff rules don’t currently catch basic errors in examples like missing imports / undeclared variables seen in MiniMQTT (so I’ve temporarily bumped version of ruff and added two rules).   
  Having chatted with Tim briefly on the subject (thanks Tim+Dan+Justin) it seems the original transition goal was to duplicate any pylint rules we specifically wanted into the ruff config. This inadvertently overwrites the default included rule categories.  
  I’ve now seen that there is an extends mechanism (select-extends too) so we don’t need to select “instead” but maybe “as well” (Dan also suggested taking Micropythons ruleset now as it didn’t exist when we transitioned, although warns they are more loose with rulesets generally).   
  There is also the desire to have project specific rules overriding our defaults. The issue is cookie cutter projects won’t get updates to new pre-commit.yaml and ruff rules (pyproject.tom / ruff.toml / ruff-base.toml).  
  So we can possibly have a github stored ruleset, that is duplicated to each cookiecutter project called ruff-base.toml (and can re-fetch in future via a script) and then that is extended by the project specific one. This works similarly for pyproject.toml instead (ruff.toml takes precedence).   
  I’m aware that adabot can do some things automatically, maybe we can take out a PR on community libraries with the cookiecutter updates, and equally a user could run something like \`cookie-cutter update\` in repo, or pre-commit clean would also fetch the latest base ruleset from github too.

## 39:36 Wrap-Up
