# CircuitPython Weekly Meeting for March 18, 2024


Video is available [on YouTube](https://www.youtube.com/watch?v=cKWX92YQOks).


Join here for the chat all week: 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 which you may be able to enter directly into compatible podcast apps.
## Community News
We're getting close! CircuitPython 9.0.0-rc.1 is a release candidate for 9.0.0 final. This release is believed to be stable, and is meant for testing before the final release of 9.0.0. The full list of new and updated items is in the blog and release notes - [Adafruit Blog](https://blog.adafruit.com/2024/03/14/circuitpython-9-0-0-release-candidate-1-released/) and [Release Notes](https://github.com/adafruit/circuitpython/releases/tag/9.0.0-rc.1).

A Pacman ghost light for serves as an indicator for [Uptime Kuma](https://uptime.kuma.pet/), a self-hosted monitoring tool. A ESP32-C3 monitors and displays status with colored NeoPixel LEDs after prototyping with CircuitPython on a Raspberry Pi Pico W - [Reddit](https://www.reddit.com/r/circuitpython/comments/1bbv2nn/i_used_circuitpython_to_turn_a_pacman_ghost_light/), [Imgur](https://imgur.com/a/5eR2c1H), [GitHub](https://github.com/psitem/uptime-kuma-pacman-ghost-light).
  
Custom Flight Sim Controllers with CircuitPython and MobiFlight - [Adafruit Playground](https://adafruit-playground.com/u/Gamblor21/pages/custom-flight-sim-controllers-with-circuitpython-and-mobiflight).
### 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, or tag a post with #CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.
## 4:35 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.**
### Overall
* 29 pull requests merged
  * 21 authors - eightycc, dhalbert, jamesjnadeau, guutz, weblate, ladyada, justmobilize, LelandSindt, tannewt, hathach, kbsriram, DJDevon3, jins-tkomoda, BlitzCityDIY, jepler, bablokb, michalpokusa, bill88t, anonymouscowhead, andibing, shawnchainw
  * 6 reviewers - makermelissa, tannewt, dhalbert, tekktrik, BlitzCityDIY, FoamyGuy
* 37 closed issues by 9 people, 12 opened by 10 people


### 5:38 Core
* 18 pull requests merged
  * 12 authors - eightycc, tannewt, hathach, jins-tkomoda, jamesjnadeau, dhalbert, guutz, bill88t, jepler, andibing, weblate, ladyada
  * 3 reviewers - makermelissa, tannewt, dhalbert
* 24 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 615 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 425 days)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 385 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 373 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 347 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 297 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 290 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 263 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 225 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8349 (Open 193 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8457 (Open 160 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8647 (Open 110 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8713 (Open 90 days)
  * https://github.com/adafruit/circuitpython/pull/8798 (Open 56 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8855 (Open 42 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8954 (Open 19 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8991 (Open 10 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/9009 (Open 5 days)
  * https://github.com/adafruit/circuitpython/pull/9018 (Open 3 days)
  * https://github.com/adafruit/circuitpython/pull/9025 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/9023 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/9020 (Open 2 days)
  * https://github.com/adafruit/circuitpython/pull/9032 (Open 0 days)
  * https://github.com/adafruit/circuitpython/pull/9030 (Open 0 days)
* 29 closed issues by 5 people, 6 opened by 5 people
* 656 open issues
  * https://github.com/adafruit/circuitpython/issues
* 9 active milestones
 * 10.0.0: 2 open issues
 * 8.2.x: 0 open issues
 * 9.0.0: 2 open issues
 * 9.0.x: 3 open issues
 * 9.x.x: 21 open issues
 * Libraries: 22 open issues
 * Long term: 589 open issues
 * Support: 6 open issues
 * Third-party: 13 open issues
 * 1 issues not assigned a milestone


### 7:35 Libraries
* 8 pull requests merged
  * 8 authors - kbsriram, DJDevon3, BlitzCityDIY, dhalbert, bablokb, michalpokusa, justmobilize, LelandSindt
  * 5 reviewers - tannewt, dhalbert, tekktrik, BlitzCityDIY, FoamyGuy
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/205 (Days open: 15)
    * https://github.com/adafruit/Adafruit_CircuitPython_Requests/pull/156 (Days open: 6)
    * https://github.com/adafruit/Adafruit_CircuitPython_BLE/pull/193 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_BitbangIO/pull/31 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/208 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_FT5336/pull/3 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine/pull/3 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_HT16K33/pull/117 (Days open: 1)
  * 55 open pull requests (Oldest: 571, Newest: 1)
* 6 closed issues by 5 people, 6 opened by 5 people
  * 740 open issues
  * 19 good first issues
* https://circuitpython.org/contributing


#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 117506 PyPI downloads over 325 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 8805
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 8701
  * Adafruit CircuitPython ConnectionManager (adafruit-circuitpython-connectionmanager): 7704
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 2353
  * Adafruit CircuitPython MiniMQTT (adafruit-circuitpython-minimqtt): 1731
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 1184
  * Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 1136
  * Adafruit CircuitPython ServoKit (adafruit-circuitpython-servokit): 1120
  * Adafruit CircuitPython Wiznet5k (adafruit-circuitpython-wiznet5k): 1091
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1075


#### Library updates in the last seven days:
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_OAuth2](https://github.com/adafruit/Adafruit_CircuitPython_OAuth2)
  * [adafruit/Adafruit_CircuitPython_TemplateEngine](https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine)


### 11:22 Blinka
* 3 pull requests merged
  * 2 authors - anonymouscowhead, shawnchainw
  * 1 reviewers - makermelissa
* 6 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 885 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/65 (Open 103 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/749 (Open 96 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/766 (Open 73 days) (draft)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335 (Open 73 days) (draft)
  * https://github.com/adafruit/Adafruit_Blinka/pull/790 (Open 12 days)
* 2 closed issues by 1 people, 0 opened by 0 people
* 83 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 12496
* Piwheels Downloads in the last month: 11775
Number of supported boards: 129




## 12:24 Hug reports
12:53 @jepler
* Group hug
* Hug to scott for a quick chat before the meeting
* And one for Deshipu for the neat (but specific to 16-color bitmaps) PNG decoder


13:20 @danh
* @praxiscode for noticing a USB Host pin power problem on Teensy 4.x. Fixed for 9.0.0 final.
* @jerryn for noticing a typo in disabling espcamera on matrixportal S3. Fixed for 9.0.0 final.
* @tlyu, @eightycc, @hathach for fixing the tricky RP2040 serial disconnect bug. Fixed for 9.0.0 final.
* @jepler and @tannewt for the previous few weeks’ fixes, which brought 9.0.0 to final.


14:31 DJDevon3
* @Developers for 9.0 RC1 this week.
* @BrentRubell for the encouragement to continue investigating the ATECC crypto chip bug.
* @FoamyGuy for help with getting pre-commit commands to work with Github Desktop. 
* @DanH for teaching me more about Git branch management and a bunch of excellent advice.
* @Anecdata, @Elpekenin, and @Justin for python syntax discussions.
* @pReya on Github for making myself and reviewers aware of a year old commit that was approved but never merged. It was a minor syntax PR update, nothing major.
* @Justin & DanH for holding my hand walking me through GIT issues on a Sunday night.
* @FoamyGuy for reviewing 4 of 11 adafruit_requests PR’s I submitted over the weekend. There are a total of 12 examples and I got 11 done.  I swear it ends at 12 PR’s. 😀


16:01 DavidGlaude (text only)
* @FoamyGuy, @CDarius, @jamesjnadeau for contribution to support the M5 Stack Cardputer and it’s keyboard
* @RetiredWizard for supporting the Cardputer in PyDos and cardputer_repl
* @tanewt and @danh for review and support to integrate the Cardputer and soon the Multiplexed Key Matrix keyboard in CP 9.0
* @Jepler for all the Keyboard upgrade to USB learn guide


16:37 @foamyguy
* @hathach for looking into some very low level USB Host stuff related to an issue I filed
* @CDarius, @jamesjnadeau, @RetiredWizard, and @DavidGlaude all for sharing and working on things for M5 CardPuter device. It’s amazing to see the capabilities for circuitpython on it evolving so quickly!
* @danh and all contributors to 9.0 RC’s
* @pinkavaj on Github for submitting several improvements to the Wiznet5k library
* @DJDevon3 and @anecdata for updating and adding examples in requests and ntp libraries to work with the new Connection Manager.


17:46 @jerryn
* Group hug.


17:57 @Justin
* @danh and @anecdata for trying to help me see if I can get my M4 Matrix working with Google APIs because of a cert change they made


18:27 @Liz
* @Melissa for reviewing my PR to the HT16K33 CircuitPython library
* Group hug


18:41 @MakerMelissa
* Group Hug


18:51 RetiredWizard (text only)
* @FoamyGuy for his M5 Stack Cardputer streams
* @David Glaude for working out the cardputer key number mappings for CDarius’s DemuxKeyMatrix PR
* A late hug for @CDarius and @jamesjnadeau for their original work on the Cardputer PRs
* @SeanTheITGuy for re-sparking my interest in the “Cheap Yellow Display” devices
* @Everyone at Adafruit for great products and fostering this great community


19:27 @tannewt
* @penguinist for testing CP on the H2
## 19:50 Status Updates
@jepler (hosting)
* Working on Adafruit_Floppy in Arduino
* Will update it in CircuitPython when this is complete
   * Because the new version of MFM decoding stores the entire track in flux form instead of decoding on the fly, it will be a challenge to make it work without an incompatible API change, but I’ll try.


21:49 @danh
* Released CircuitPython 9.0.0-rc.1 Thursday. One fix since then which is just a pin typo fix. We don’t need a whole new rc.2 for that fix. Could release 9.0.0 final today or tomorrow. We will discuss In the Weeds.


22:24 DJDevon3
* Made some progress investigating a bug with the Adafruit ATECC608 crypto module. The serial number gets randomly truncated which causes the ensuing certificate process to fail with a CRC Mismatch error. By deleting the serial number functions and error handling I was able to produce a public certificate but with the serial number all zeros. That is actually great progress. One of the neatest features about this chip is that it can avoid an I2C scan as part of its security. Most people will believe they’ve bricked the chip when they can no longer detect the I2C device and give up on using it, especially since it has a bug in Circuit Python that currently makes it unusable anyway. It will return the error “No such device”. You must send it a specific frequency ping to wake it up and then access the I2C address. Sneaky little chip. I figured that out after hundreds of iterations and refused to believe it was dead. 
* Helped discord user @RivenWarder attempt to get RocketLaunch.live API working on a PyPortal. After helping with their issue, I dove straight into creating an adafruit_requests example with Connection Manager. It should make a nice addition to the API examples.
* Then I dove into updating all the adafruit_requests API examples with Connection Manager. Almost got them all done in a weekend.


24:56 DavidGlaude (text only)
* M5 Stack Cardputer weeks:
   * Discovered the M5 Stack Cardputer thanks to @FoamyGuy streams… and ordered one.
   * Created the board description for circuitpython-org
   * Tested the Multiplexed Key Matrix keyboard contribution (using artifact)
   * Created the key_id to USB HID keycode matrix for the Cardputer keyboard https://gist.github.com/dglaude/6f2a3f9c3c1e2f1bdf055245f1a2edb7


25:22 @foamyguy
* Cleaned up and submitted PR for OutlinedLabel class that I created a little while back but set down and got distracted by other projects for a bit. Extends BitmapLabel and allows you to set color and stroke size for the outline. It uses many small blit operations, 1 per pixel drawn in the font Bitmap, so it’s not terribly efficient but it seems to render reasonably fast with small and medium sized fonts.
* Started attempting to use BitmapLabels Bitmap as an overlay for the PyCamera library. It sort of works in that the text becomes visible in the resulting photo, but it’s location and color are both wrong. Will need to dive back into colorspaces a bit to make that work I think.
* Continued working on M5 Cardputer Messanger server app. Coming along nicely with message sending and receiving now working and the beginnings of a basic menu structure on the Cardputer side that uses PageLayout to swap between 4 different screens. Next steps are: implement the conversation viewing screen, add some Ctrl + Number shortcuts to move between pages without going back to the menu, and then trying to add public key crypto for messages being sent across the network and probably AES for stored data on the SDCard, also update it to use the demuxed keypad from the core
* Start working on a Simon style game built from arcade buttons and convenient grove connectors and featherwing, the second of my cardboard arcade creations.
* Reviewing library PRs, starting with NTP, Requests, and Wiznet
* Outside CircuitPython: Trying to design and 3D print some parts that can be used with two cabinet locks to make a physical “safe” like box that can be used to demonstrate fundamental concepts of public key cryptography.


28:51 @jerryn
* Experimenting with asyncio in the RFM9x/69 combined library. Lots to learn. Trying to convince myself it actually helps.
* Playing with OV5640 cameras. Plan to test “manually” focusing the Auto Focus enabled module.
* I made my first PC board at OSH Park! It is a crude adaptor to connect the OV5640 to a feather MCU.  I was having problems when using jumper wires to connect, presumably due to the wire length.   https://oshpark.com/shared_projects/M1wdG7Iq I should have spent some time on the silk-screen, but just wanted something to try. It is working well for me.


30:37 @Justin
* Spent most of my CP time this week going down a rabbit hole on an updated Google cert that stops the ESP32SPI from being able to connect
* Spent less time coding and more time in Discord so also helped when I could


31:16 @Liz
* I added a quick fix to the HT16K33 library for the bicolor 8x8 matrices. Previously when you would call shift(), the colors would flip flop. Red would turn green and green would turn red. The culprit was a misplaced bit. I was looking into this because I’d like to try coding up a snake game at some point with one of these matrices.
* For project work, I wrote some code to control an Elgato key light with an esp32-s3 reverse tft and circuitpython. The code sends HTTP requests via the Elgato API. This will be a learn guide that should hopefully be out later this week
* I’m also working on quick learn guides for the new PiCowbells that are in the shop


32:12 @MakerMelissa:
* Fixed a bug in the CircuitPython Code Editor that wasn’t allowing folders to be downloaded
* Finished my Learn Guide for using Web Workflow with the PyCamera
* Added New Boards to CircuitPython.org
* Worked on Learn Guide Feedback
* Worked on trying to figure out a big issue with some code that displays the Wayland Desktop on the SnakeEyes bonnet Displays


32:54 @tannewt
* Fixed CP 9 on the H2
* Hancho looks really interesting for CP but needs more work. Will keep working on it in the background.
* Working on USB host featherwing support this week.
* Picking up any urgent 9.0.0 bugs.
* Will update to IDF 5.2.1 after usb featherwing support.
## 35:19 In The Weeds
35:46 @foamyguy - Adding isort to library repos, some discussion here: https://github.com/adafruit/cookiecutter-adafruit-circuitpython/pull/236


Open questions in my mind:

* How to make the required changes in existing libraries? PR for every repo? Or Direct commits to main? Assume we would release sweep afterward with adabot?
* Timeline to carry it out?
* Any other changes we would want to include if we’re going to be touching every library anyway?
   * From @Justin - there was talk over the weekend of changing line ending requirements to make windows development easier

53:08 @tyeth [text only - nothing to add more the first question and raising awareness of wokwi / RC1]
   * How’s USB Host support, it was a bit less functional than hoped (MSC) is this a 9.1 thing or likely to squeeze into 9.0?
   * Did some testing of 9rc1 on Wokwi this weekend (online virtual simulator) via CI testing, ESP32 went to safemode (possibly simulator related), S2/S3 worked well, C3 had a simulation error (being fixed by urish), C6 and H2 to come! Give wokwi a try if you haven’t already, and if you want to test CI then ping me for an API token you can use


57:14 @tannewt - Ready for 9.0.0?
   * Consensus is YES


## 1:00:35 Wrap-Up
Next Meeting: March 25 at the regular time!
