# CircuitPython Weekly Meeting for October 30, 2023

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


Join here for the chat all week: http://adafru.it/discord.


The CircuitPython Weekly happens normally at 2pm 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 one 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.
## 02:35 Community News
### CircuitPython 9.0.0-alpha.2, an alpha release for 9.0.0 has been released. Version 9 adds significant capabilities over Version 8 - Adafruit Blog and release notes - GitHub.
* Notable changes to 9.0.0
* Merge updates from MicroPython v1.19.1, v1.20.0, and v1.21.0.
* Espressif: update to ESP-IDF v5.1.
* Remove 8.x.x deprecations: displayio.*.show(), I2CPeripheral: now I2CTarget.
* Add repl.py, which runs just before the REPL starts up.
* Add OrderedDict.move_to_end().
* Add synthio.Synthesizer.note_state.
* Further USB host support, on i.MX and RP2040.
* Reorganize and split displayio.
* Add warnings module, similar to what is in CPython.
### 03:13 The CircuitPython Blinka Python Compatability Layer Now Supports Raspberry Pi 5
The CircuitPython Blinka Python compatability layer now supports Raspberry Pi 5. Create CircuitPython programs for Raspberry Pi and other Single Board Computers (SBCs) running Python. Raspberry Pi 5 support added via the latest Pi 5 compatible version of libgpiod - PyPI and GitHub.


For more on Blinka - CircuitPython.org, Adafruit Learning System and GitHub.
### 03:36 Project of the Week: A QR Code Menu Printer
A LA QRTE is a portable, combination scanner/printer for converting QR code menus into physical copies.
It runs on a rechargeable 12V battery and uses a Tiny Code Reader (from Useful Sensors) for QR scanning. It uses a Seeed Studio XIAO Esp-32 S3 to read from the scanner, communicate with the backend, and drive a thermal printer module, talking to a web server written in CircuitPython that fetches menus, scrapes text, feeds it to ChatGPT, and formats the final result - Hackaday, YouTube and GitHub.
### 03:56 Newsletter Details
The CircuitPython 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 tag a tweet with #CircuitPython on Twitter, or email cpnews@adafruit.com.
## 04:34 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.**
### 04:47 Overall
* 34 pull requests merged
  * 19 authors - daanzu, tannewt, makermelissa, pedro-mancano, Snipeye, BlitzCityDIY, FoamyGuy, CedarGroveStudios, andibing, UnexpectedMaker, deshipu, anhmiuhv, weblate, jepler, vladak, dhalbert, eightycc, RetiredWizard, wtuemura
  * 6 reviewers - brentru, jepler, tannewt, BlitzCityDIY, dhalbert, makermelissa
* 84 closed issues by 11 people, 21 opened by 18 people
* Assigned Hacktoberfest label to 0 issues.
### 05:21 Core
* 25 pull requests merged
  * 13 authors - UnexpectedMaker, daanzu, deshipu, tannewt, weblate, jepler, pedro-mancano, Snipeye, dhalbert, eightycc, RetiredWizard, wtuemura, andibing
  * 3 reviewers - jepler, tannewt, dhalbert
* 19 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 482 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 292 days)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 252 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 240 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7711 (Open 233 days)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 214 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 164 days)
  * https://github.com/adafruit/circuitpython/pull/7996 (Open 164 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 157 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 130 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 92 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8262 (Open 85 days)
  * https://github.com/adafruit/circuitpython/pull/8285 (Open 75 days)
  * https://github.com/adafruit/circuitpython/pull/8349 (Open 60 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8457 (Open 27 days)
  * https://github.com/adafruit/circuitpython/pull/8502 (Open 7 days)
  * https://github.com/adafruit/circuitpython/pull/8518 (Open 4 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8528 (Open 2 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8541 (Open 0 days)
* 74 closed issues by 6 people, 12 opened by 9 people
* Assigned Hacktoberfest label to 0 issues.
* 671 open issues
  * https://github.com/adafruit/circuitpython/issues
* 8 active milestones
 * 10.0.0: 0 open issues
 * 8.2.x: 15 open issues
 * 9.0.0: 60 open issues
 * 9.x.x: 1 open issues
 * Libraries: 24 open issues
 * Long term: 552 open issues
 * Support: 10 open issues
 * Third-party: 8 open issues
 * 2 issues not assigned a milestone
### 07:56 Libraries
* 7 pull requests merged
  * 5 authors - vladak, BlitzCityDIY, dhalbert, FoamyGuy, CedarGroveStudios
  * 5 reviewers - brentru, tannewt, BlitzCityDIY, dhalbert, makermelissa
  * Merged pull requests:
        * https://github.com/adafruit/Adafruit_CircuitPython_HUSB238/pull/1 (Days open: 10)
        * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/439 (Days open: 7)
        * https://github.com/adafruit/Adafruit_CircuitPython_BNO055/pull/119 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_Display_Text/pull/194 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/179 (Days open: 1)
        * https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/440 (Days open: 1)
        * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/193 (Days open: 1)
  * 43 open pull requests (Oldest: 438, Newest: 1)
* 6 closed issues by 6 people, 7 opened by 7 people
* Assigned Hacktoberfest label to 0 issues.
  * 666 open issues
  * 19 good first issues
* https://circuitpython.org/contributing
#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 168124 PyPI downloads over 316 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 9759
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 9304
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 4000
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 2300
  * Adafruit CircuitPython LIS3DH (adafruit-circuitpython-lis3dh): 1770
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1338
  * Adafruit CircuitPython Display Text (adafruit-circuitpython-display-text): 1323
  * Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1315
  * Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1269
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1246
#### Library updates in the last seven days:
* **New Libraries**
  * [adafruit/Adafruit_CircuitPython_TemplateEngine](https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine)
  * [adafruit/Adafruit_CircuitPython_HUSB238](https://github.com/adafruit/Adafruit_CircuitPython_HUSB238)
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_turtle](https://github.com/adafruit/Adafruit_CircuitPython_turtle)
  * [adafruit/Adafruit_CircuitPython_Display_Text](https://github.com/adafruit/Adafruit_CircuitPython_Display_Text)
  * [cedargrovestudios/circuitpython_chime](https://github.com/cedargrovestudios/circuitpython_chime)
### 11:16 Blinka
* 2 pull requests merged
  * 2 authors - makermelissa, anhmiuhv
  * 2 reviewers - makermelissa, tannewt
* 3 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka/pull/417 (Open 992 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 752 days)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/299 (Open 155 days)
* 4 closed issues by 1 people, 2 opened by 2 people
* Assigned Hacktoberfest label to 0 issues.
* 76 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 15747
* Piwheels Downloads in the last month: 8799
Number of supported boards: 125
## 12:31 Hug reports
12:48 @Liz (hosting)
* Group hug


13:00 @CGrover (text only)
* @foamyguy for digging into the circup dependency scheme for Community Bundle libraries that reference other Community Bundle libraries.
* @eightycc for continuing to apply exceptional insight into addressing a MacOS Sonoma fix.


13:10 @danh
* @makermelissa for working on broken library builds on Sunday.
* @FoamyGuy for reviewing and releasing my updates to circup on Sunday.
* @jepler for changes that bring us closer to MicroPython, even while on vacation.
* @deshipu for a quick fix for 9.0.0 module properties for keypad.
* @tannewt for remaining MicroPython merge fixes, and adding the `warnings` module.


14:22 @deshipu
* group hug


14:40 @DJDevon3 (text only)
* @Todbot for expanding his QTEye (eyeball) code to the Qualia RGB-666 boards & displays.
* @RetiredWizard for the shout out in helping get Todbot’s QTEye code working on their Hacktablet.
* @Liz for a beautiful Earth & Mars demo on the Qualia 4” round display posted on Mastodon and for expanding her Matrix scoreboard with even more capabilities.
* @Tannewt for the Friday deep dive on features and changes coming on the horizon.  
* @FoamyGuy for a Saturday morning deep dive into Circup & Web Workflow
* @CGrover for all his work on the Chimes and Midi libraries


15:22 @eightycc
* @danh for always being available with helpful advice and information


15:37 @foamyguy
* @danh for finding and pulling a specific old version of nina firmware from a pyportal
* Another for @danh for looking into issues that circup was having and submitting a fix that makes it more resilient to failed bundle downloads
* @vladak for submitting web workflow functionality in circup
* @tannewt for continuing the displayio evolution and splitting out the various display types into separate modules
* @makermelissa for working on pi5 support for Blinka
* Outside of circuitpythonland: Snyk and Youtuber John Hammond for putting on the 24hr Fetch the Flag event last Friday. It was my first capture the flag event and was quite fun with many interesting puzzles. I learned several nifty tips and tricks from solving the ones that I managed.


17:00 @kattni
* @paul cutler for a lovely chat and some great ideas
* @danh for keeping me in mind with regards to some science updates
* @blitzcitydiy and @noe for a great and informative chat
* @melissa for excellent regular chats
* Group hug!


17:30 @makermelissa
* @danh for helping out with issue causing library builds to fail
* @kattni for some great chats
* @anne b for the quick review of the CircuitPython boards
* Group Hug


17:53 @michalpokusa (text only)
* @danh for explaining issue with GitHub builds connected to Python 3.x being changed from 3.11 to 3.12
* @jepler for adding support for repl.py that I suggested some time ago during a meeting, I somehow missed that it got merged and learned only a few days ago from Adafruit Blog


18:16 @tannewt
* @liz for iterating with me on new CP library APIs
* @danh for leading three MP merge efforts, going through all of the long term issues and fixing lots of stuff over the weekend.
* @deshipu for fix to keypad properties
## 18:54 Status Updates
19:26 @Liz (hosting)
* I’ve started working on a space clock project with the 720x720 round display and the qualia board. The project will display coordinated mars time (MTC) and earth time in the timezone of your choice as an analog clock face. Right now I’m in the beginning phases of the project researching how MTC is calculated, making sure the images look good on the display and figuring out the math involved for having the clock hands point to the correct positions


20:02 @CGrover (text only)
* After building a custom PCM5101A I2S DAC breakout for stereo line output, I’ve been looking into how to use it to send Eurorack CV (control voltage) signals from synthio, such as LFO and ADSR envelope waveforms. The I2S DAC is DC-coupled and is capable of outputting frequencies of well less than 1Hz – including DC voltages –  from -3 to +3 volts. It’s looking like a new synthio CV object will be needed. Expecting that the new object could be made to be compatible with traditional analog DAC and audiopwmio outputs as well.


20:45 @danh
* Released CircuitPython 9.0.0-alpha.2. We’ll probably have an alpha.3 relatively quickly, since there are some showstopper problems in various modules.
* Reviewed all 600 or so “Long Term” CircuitPython issues, and managed to close about 50 of them.
* Fixed some build problems caused by GitHub CI making Python 3.12 the default version of Python. setuptools is no longer included automatically. Adding it in requirements.txt did not always work. Pinned CI scripts to Python 3.11 for now. Melissa also worked on this – thanks!
* Scott had added 9.x bundle building, but it was breaking due to the Python 3.12 coincidence. I also made a new release of a library to force a new bundle, and that pointed out more issues. Not sure if it’s all fixed.
* Missing 9.x bundles broke circup. I made it more forgiving of being unable to download bundles. It used to just throw up its hands and stop immediately if there was any problem. Now it will keep downloading what it can and use what it’s already downloaded. Merged and released.
* uf2conv.py also broke because of Python 3.12. Limor fixed the Learning Guides builds. I submitted a PR to microsoft/uf2 to fix it as well. It is used downstream in the bootloader repos.


23:13 @deshipu
* gave up on the touch keypad, I don't know how to do this
* still looking into the speech module
* added a cirque touchpad to my circuitpython keyboard https://hackaday.io/project/183834-klap-keyboard/log/224693-a-touchpad
* made my weebug extra fluffy https://hackaday.io/project/188909-wee-bug/log/224561-add-some-fluff 


25:01 @DJDevon3 (text only)
* Purchased 2 Qualia ESP32-S3 boards and 4” round RGB-666 displays. Modified Todbot’s QTEye code to work within a couple hours. There are pros and cons to the 720x720 display. The bad thing is there’s a ton of pixels to draw so the performance ceiling for FPS is much lower than say the 2” RGB-666 display. The display itself has gorgeous image quality that looks perfect for CAN-BUS and automotive gauges with vector graphics. There are many new possibilities to be explored with the RGB-666 displays but the sheer size of the larger displays will require performance concessions for most projects.


25:45 @eightycc
* Pulled back into the MacOS Sonoma issue. Useful new data indicates that filesystems larger than 8M are not affected. Looking into ballooning CP flash filesystems to >8M to work around the issue. (Issues 2751 and 8449)
* Found root cause of CircuitPython not mounting on Android. CP reports a fake MBR with a partition code that Android does not support. Changing the code allows Android to mount CP. Need to do some more testing on various OSs to make sure changing the code doesn’t cause any new problems.(Issue 2751)
* No RP2 _bleio progress this week.


27:14 @foamyguy
* Lots of testing of various available nina firmware versions with cleveland art API to try to find one that can get successful responses from the server. Did find that there is an old version, perhaps the one that came pre-loaded that did work, but newer ones have issues related to specifics of the https certificate.
* Looking into the cause of an exception raised by bitmap_label in certain conditions, perhaps related to certain fonts and triggered by certain characters appearing in certain positions within the string. This was also uncovered during testing on the Cleveland art project, it is occasionally triggered by specific artwork titles that are returned by the API and displayed within a bitmap_label. I found one very simple case that caused it and submitted a fix for that, but it appears there are still other situations where it occurs. I’m trying to find one of the titles that triggers it so that I can understand the root cause and submit another fix.
* Digging in to Circup, testing the web workflow support PR, and working to understand where the appropriate place within the code would be to add functionality for library dependencies that are specific to circup, and not published to pypi. 


30:32 @kattni
* Since I was last here, I’ve been building up and wiring up my office into a workshop recording studio. I’ve been going nonstop and everything is really coming together. I’m super close to being ready to start documenting projects and builds, and sharing content. I’m really excited about reaching this point. This was a lot of work but it’s been entirely worth it.
* Sneak peek: One of the things I did was put acoustic panels on my door, as sound carries really easily in this house. It took two tries, I made a lot of notes on what I did, and kept track of what worked and what didn’t. This is the first project I’m going to document and share.


31:25 @makermelissa
* Last Week:
   * Finished up writing CircuitPython Driver for CST826 Capacitive Touch Screen
   * Did a speed comparison between libgpiod and gpiozero on the Raspberry Pi 5 and wrote up a Playground note about it: https://adafruit-playground.com/u/MakerMelissa/pages/comparing-libgpiod-and-gpiozero-speeds-on-the-raspberry-pi-5
   * Added 4” round display to the  Qualia ESP32-S3 guide
   * Added a bunch of new boards to circuitpython.org
   * Helped out with fixing an issue causing libraries to fail when building
* This week:
   * Writing the Arduino Driver for the CST826 Touch Screen
   * Probably guide updates and continue to try and find some solutions for Bookworm issues


33:00 @tannewt
* Merged in displayio split
* Added `warnings` module and displayio related warnings. Will see if it is helpful now because we can’t update since 8.0 is the stable release now.
* Added friendly error for .show()
* Merged 8.2.7 into main
* Fixed neopixels in main.
* A couple cleanups after 1.21 merge
* Picked up split heap work. Will finish it this week. Uncertain how to handle display related objects that may or may not need to live past the VM.
## 36:08 In The Weeds


36:30 @foamyguy - Would it be good to add circup PRs / issues to circuitpython.org/contributing page? Or perhaps “piped in” via the discord bot like the core and a few other repos are?  I think currently these don’t show up anywhere outside of the standard github notifications which makes them a little easier to fall thru the cracks. 
* @danh: I would like to add circup and a few build-tool repos to the #circuitpython-dev notifications. This is easy and I’ll do it after the meeting if there’s agreement.


37:34 @DJDevon3 (text only & likely missing the meeting) - The new Qualia displays currently require the init sequence to be included in code.py which is a departure from the way most displays work in Circuit Python. I’m assuming it’s because there’s no driver library yet? Will there be an RGB-666 driver library with a display import in the future? 
* @tannewt: Good idea. Melissa agrees and will take a look into it.


39:25 @foamyguy - Library patch(s). The RTD build fix patch file in Adabot is approved https://github.com/adafruit/adabot/pull/360, but I do not have access to merge it. Anyone else need to look over it before it can be merged, and is there any preference on timing to run it? And somewhat related I think I saw mention of other necessary changes to account for the default version of python changing inside of github actions containers. If there will be a change related to that for libraries would we want to potentially run both patches at the same time and then create a single release in each library that encompassess both changes?


42:27 @danh - https://github.com/circuitpython/CircuitPython_Org_Bundle has had no additions since 2021. Is this bundle still useful? Should its libraries be added to the Community bundle? … Or if not, how can I force a bundle build for this bundle?


## Wrap-Up
