# CircuitPython Weekly Meeting for February 20, 2024


Welcome to the CircuitPython Weekly meeting notes! Feel free to add your Hug Reports and Status Updates before the meeting, alphabetically by your username. During the meeting, we go through them in order. If you can’t make the meeting and would still like to participate, add your notes with a “(missing meeting)” after your username and we’ll read them off for you. 


Add any longer-form discussion topics or general questions you have to the “In the weeds” section. 


Thanks! We hope to see you in the meeting!


Tim is hosting.


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


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.
## 03:18 Community News
### 03:19 CircuitPython 8.2.10 Released
CircuitPython 8.2.10 is the latest bugfix revision of CircuitPython and is a new stable release - Adafruit Blog and release notes - GitHub.
Notable changes to 8.2.10 since 8.2.9
* Fix EPaperDisplay garbage collection.
* Add proto argument to SocketPool.socket constructor to allow specifying protocol.
* Allow RGBMatrix framebuffer size to be more than 65535 bytes.
* Allow creating a mount point on an existing directory.
* Individual board fixes.
### 04:10 CircuitPython 9.0.0 beta.1, beta.2 Released [not in newsletter yet]
CircuitPython 9.0.0 beta.1 was released on Saturday, and beta.2 released on Monday. Beta.1 contains a number of significant fixes since beta.0, and beta.2 contains an important fix for the Adafruit MEMENTO Camera board. You should backup CIRCUITPY, upgrade your MEMENTO to beta.2 and reformat the filesystem as described in the Release Notes or MEMENTO Learn Guide  [@danh]
### 05:07 Renesas to Buy PCB Design Software Firm Altium for US $5.9 Billion
Japanese chip company Renesas Electronics Corp. has said it plans to acquire PCB design software firm Altium Ltd. for Aus$9.1 billion (about US$5.9 billion). The move is an extension of Renesas’ mainstream business, which is predominantly the supply of digital and mixed-signal chips for automotive and industrial applications - EE News.


### 06:00 Hands-on With the Bus Pirate 5 Debugging Tool
The Bus Pirate is a hardware protocol analyzer used by thousands of designers since its introduction in 2008. It's been a number of years since the last iteration but now the Bus Pirate 5 is available, based on the Raspberry Pi RP2040 chip. Hackaday provides a hands-on look at the latest incarnation - Hackaday and Adafruit Blog.


### 06:33 CircuitPythonista Helen Leigh Featured on Embedded.fm Podcast
CircuitPythonista Helen Leigh joined embedded.fm to talk about putting together conferences (including Teardown 2024), indie hardware producers (including via Crowd Supply), and building communities - embedded.fm.


### 07:00 Project of the Week: Pico and microPython Meets Vintage Radio Shack Kit
Don Wilcher uses a Raspberry Pi Pico to build an adjustable clock with an LED display then integrate the clock with a vintage Radio Shack Science Fair Microcomputer Trainer programmed to function as a 7-bit binary counter. Don adds a Raspberry Pi Pico programmed in MicroPython, making an adjustable digital clock - Adafruit Blog and All About Circuits.


### 07:42 New Notes from Adafruit Playground
Adafruit Playground is a new place for the community to post their projects and other making tips/tricks/techniques. Ad-free, it's an easy way to publish your work in a safe space for free.
#### Using CIRCUP with Web-Workflow (beta) - Adafruit Playground.
#### Custom ANO Fidget Firmware
Custom CircuitPython firmware for the NeoPixel rotary fidget project - Adafruit Playground.
  



### 09: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, or tag a post with #CircuitPython on Mastodon, Bluesky, or X (formerly known as Twitter),.
## 09:57 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.**
### 10:21 Overall
* 38 pull requests merged
  * 14 authors - hexthat, kbsriram, EzrSchwartz, justmobilize, weblate, tekktrik, radiac, bill88t, noqman, dhalbert, jepler, tannewt, RetiredWizard, CDarius
  * 5 reviewers - tannewt, brentru, FoamyGuy, dhalbert, jepler
* 40 closed issues by 8 people, 16 opened by 16 people


### 12:03 Core
* 31 pull requests merged
  * 10 authors - bill88t, noqman, dhalbert, hexthat, kbsriram, tannewt, jepler, RetiredWizard, CDarius, weblate
  * 3 reviewers - tannewt, dhalbert, jepler
* 18 open pull requests
  * https://github.com/adafruit/circuitpython/pull/6555 (Open 595 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7440 (Open 405 days)
  * https://github.com/adafruit/circuitpython/pull/7618 (Open 365 days)
  * https://github.com/adafruit/circuitpython/pull/7675 (Open 353 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7811 (Open 327 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/7997 (Open 277 days)
  * https://github.com/adafruit/circuitpython/pull/8033 (Open 270 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8100 (Open 243 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8233 (Open 205 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8349 (Open 173 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8457 (Open 140 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8647 (Open 90 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8713 (Open 70 days)
  * https://github.com/adafruit/circuitpython/pull/8796 (Open 37 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8798 (Open 36 days) (draft)
  * https://github.com/adafruit/circuitpython/pull/8816 (Open 30 days)
  * https://github.com/adafruit/circuitpython/pull/8820 (Open 28 days)
  * https://github.com/adafruit/circuitpython/pull/8855 (Open 22 days) (draft)
* 32 closed issues by 4 people, 8 opened by 8 people
* 662 open issues
  * https://github.com/adafruit/circuitpython/issues
* 8 active milestones
 * 10.0.0: 2 open issues
 * 8.2.x: 0 open issues
 * 9.0.0: 13 open issues
 * 9.x.x: 13 open issues
 * Libraries: 24 open issues
 * Long term: 580 open issues
 * Support: 14 open issues
 * Third-party: 10 open issues
 * 7 issues not assigned a milestone


### 14:03 Libraries
* 7 pull requests merged
  * 6 authors - kbsriram, EzrSchwartz, justmobilize, tekktrik, radiac, jepler
  * 3 reviewers - FoamyGuy, brentru, dhalbert
  * Merged pull requests:
    * https://github.com/adafruit/Adafruit_CircuitPython_MacroPad/pull/54 (Days open: 9)
    * https://github.com/adafruit/Adafruit_CircuitPython_MiniMQTT/pull/203 (Days open: 3)
    * https://github.com/adafruit/Adafruit_CircuitPython_asyncio/pull/64 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Typing/pull/38 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_Typing/pull/37 (Days open: 1)
    * https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/pull/82 (Days open: 1)
    * https://github.com/adafruit/CircuitPython_Community_Bundle/pull/208 (Days open: 1)
  * 49 open pull requests (Oldest: 551, Newest: 1)
* 7 closed issues by 4 people, 6 opened by 6 people
  * 742 open issues
  * 19 good first issues
* https://circuitpython.org/contributing


#### Library PyPI Weekly Download Stats
* **Total Library Stats**
  * 92730 PyPI downloads over 324 libraries
* **Top 10 Libraries by PyPI Downloads**
  * Adafruit CircuitPython Requests (adafruit-circuitpython-requests): 7681
  * Adafruit CircuitPython BusDevice (adafruit-circuitpython-busdevice): 7672
  * Adafruit CircuitPython Register (adafruit-circuitpython-register): 2174
  * Adafruit CircuitPython ADS1x15 (adafruit-circuitpython-ads1x15): 1070
  * Adafruit CircuitPython Pixelbuf (adafruit-circuitpython-pixelbuf): 1035
  * Adafruit CircuitPython NeoPixel (adafruit-circuitpython-neopixel): 1031
  * Adafruit CircuitPython DHT (adafruit-circuitpython-dht): 981
  * Adafruit CircuitPython Motor (adafruit-circuitpython-motor): 876
  * Adafruit CircuitPython HTTPServer (adafruit-circuitpython-httpserver): 746
  * Adafruit CircuitPython PCA9685 (adafruit-circuitpython-pca9685): 723


#### Library updates in the last seven days:
* **New Libraries**
  * [EzrSchwartz/Circuitpython_BLE_Cycling_Power_Service](https://github.com/EzrSchwartz/Circuitpython_BLE_Cycling_Power_Service)
* **Updated Libraries**
  * [adafruit/Adafruit_CircuitPython_HTTPServer](https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer)
  * [adafruit/Adafruit_CircuitPython_MacroPad](https://github.com/adafruit/Adafruit_CircuitPython_MacroPad)
  * [cedargrovestudios/circuitpython_waveviz](https://github.com/cedargrovestudios/circuitpython_waveviz)


### 18:01 Blinka
* 0 pull requests merged
  * 0 authors - 
  * 0 reviewers - 
* 6 open pull requests
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/40 (Open 865 days)
  * https://github.com/adafruit/Adafruit_Blinka_bleio/pull/65 (Open 83 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/749 (Open 76 days)
  * https://github.com/adafruit/Adafruit_Blinka/pull/766 (Open 53 days) (draft)
  * https://github.com/adafruit/Adafruit_Python_PlatformDetect/pull/335 (Open 53 days) (draft)
  * https://github.com/adafruit/Adafruit_Blinka/pull/773 (Open 43 days)
* 1 closed issues by 1 people, 2 opened by 2 people
* 85 open issues
  * https://github.com/adafruit/Adafruit_Blinka/issues
* PyPI downloads in the last week: 12300
* Piwheels Downloads in the last month: 11990
Number of supported boards: 129


## 19:01 Hug reports
19:20 @foamyguy (hosting)
* @squid.jpg on discord and @justin for helping me with some colorspace conversion functions
* @retiredwizard and @DJDevon3 for testing out scenarios on the MEMENTO device to check if an issue I noticed was reproducible
* @danh and @jepler for figuring out the root cause(s) of that issue and working on fixes for it
* @kmatch, @jepler, and anyone else who has contributed to bitmaptools. So many nifty utilities within there.
* @danh for making new beta releases that contain the new board specific stubs feature and another for the MEMENTO storage fix
* @jepler for pointing me towards a way to convert between RGB565 swapped and non-swapped with ulab


20:31 @anecdata (text only)
* @jepler for the mbedtls PRs to extend HTTPS Server from raspberrypi-only (slow) to espressif (ESP32-S3: fast). And for exploring making TLS available to non-native sockets.
* @romkey for the PR to expose the details of stations connected to a wifi access point


21:06 @CGrover (text only)
* To @danh and the team for the release of 9.0.0-betas 1 and 2 – significant updates that represent some impressive problem solving.
* Group hug to our inspiring community.


21:27 @danh
* @jepler and @tannewt for reducing the number of remaining 9.0.0 issues significantly.
* @FoamyGuy, @DJDevon3, @jepler, @RetiredWizard, @eightycc for help with debugging MEMENTO storage problem.
* @jepler for co-work on the MEMENTO fix.
* @michalpokusa for updating HTTPServer to handle a new incompatible change to sockets that now requires SO_REUSEADDR when reusing a socket.


22:36 @DJDevon3
* @LadyAda & @Qyriad for the Arduino TSC2046 touch driver. I was able to pull a formula from embedded code comments in the driver for calculating analog resistive touch pressure. Even though it was for Arduino it helped immensely. 
* @FoamyGuy for running into a hard fault issue on the Memento. It derailed his fancy border project temporarily as he dove into investigating the hard fault. It was nice to see multiple people in the dev channel jump right into beta testing the issue with him.
* @Danh & @Jepler for the quick low level investigative work to discover & fix a fatal bug in the Memento build. 
* @Syndr0me for a private collaboration on our next matrix panel projects. We've had some excellent conversations comparing notes with large matrix arrays. We would like to present our findings in a playground note eventually after more experimentation.


23:35 @jepler
* @foamyguy @retiredwizard @eightycc @djdevon3 @danh and @ladyada for finding, diagnosing, and working through the whole memento CIRCUITPY drive size thing
* @deshipu for a hint about why my code wasn’t working
* @anecdata for the idea to further generalize the in core SSL implementation, maybe it could be used with wiznet?
* @justin for moving sockets forward in circuitpython
* @ide (on github) for circuitpython-https-server
* @michalpokusa for quickly finding and reporting a new problem with binding (ssl?) sockets
* @danh for releasing circuitpython (probably with more releases in the near future:) )


25:10 @justin (text only)
* @tannewt, @danh and @jepler with all their help in moving ConnectionManager along


25:24 @makermelissa
* @michalpokusa for improving circuitpython.org search performance
* Group Hug


25:43 @tannewt
* @bill88t for the test code that didn’t require any external libraries and had clear instructions.
## 26:22 Status Updates
26:50 @foamyguy (hosting)
* Less time for circuitpython in middle and end of last week dealing with IRL things.
* Tested Macropad rotation change after init feature
* Memento camera example with overlays:
   * Built PoC before hardware arrived with a TTL Serial camera and ESP32S3 Feather. This let me figure out some of the Colorspace conversions involved to get the final photo looking right. Did eventually get successfully merged images.
   * Went down a small rabbit hole making modifications in the core before Jeff pointed me to some very helpful conversion code that uses ulab so this can be done with user code and without further modifications in the core.
   * Moved this functionality over to the memento using it’s camera and example code as a base.
   * Discovered a wider unrelated problem with the storage configuration on memento when I started pasting some of my larger test images on the device
   * Figured out how to get the overlay into the preview as well using bitmaptools.rotozoom() to scale it to 75%
   * Refactored everything into a cleaner interface in the PyCamera library with overlay property and removed random hardcoded bits and extra prints.
* Not circuitpython related directly but eventually intend to use it with CircuitPython and HTTPServer library: SQL.json library. A very basic SQL engine that uses .json files to store and load data. https://github.com/FoamyGuy/SQL.json It supports only a very limited subset of SQL syntax. I’m hoping it can be used as a helpful introduction to the concepts of SQL and SQL Injection to people without prior knowledge of either, but perhaps with some CircuitPython or JSON data experience.  




30:08 @CGrover(text only)
* Upgraded WaveViz to automatically adjust to a synthio waveform or envelope input object when plotting an image rather than having to set an initialization kwarg. (WaveViz: Plot a synthio Wave Table or Envelope) Used the new version on the Faderwave WaveBuilder Testbed to graphically show the dynamically adjusted wave table and ADSR envelope settings. WaveBuilder Envelope Visualization Test
* Made significant headway saving and retrieving synthio waveform and envelope files using an SD card. The in-progress WaveStore class is designed to read and write synthio objects such as waveforms, envelopes, and filters as well as storing and retrieving WaveViz windows and screens. The objective is to create, manage, and share a collection of synthio assets. Of course, when completed, WaveStore and the initial asset library will be placed into the Community Bundle.
* Next on the list is to design a basement expansion PCB for Faderwave that incorporates an I2S speaker, stereo I2S DAC output, and SD card storage.


31:38 @danh
* Released CircuitPython 8.2.10 last Tuesday, with several minor but useful fixes.
* Released CircuitPython 9.0.0-beta.1 on Saturday with a large number of fixes.
* Released CircuitPython 9.0.0-beta.2 with an important fix for the Adafruit MEMENTO Camera board, to correct an internally inconsistent CIRCUITPY drive that reported as the wrong size and could cause crashes. Back up CIRCUITPY if necessary, update your MEMENTO to beta.2, and then erase and reformat CIRCUITPY with import storage; storage.erase_filesystem().
* Spent a lot of time debugging the MEMENTO issue, with a number of other folks helping.
* Updated root certificates list to include a new root for flightaware.com
* Fixed build filenames to include more info. Now the “Absolute Newest” PR merge builds include the branch merged to (e.g. main or 8.2.x) and the PR number.


34:37 @DJDevon3
* Turns out the XPT2046 resistive touch screen controller chip I’ve been working with is a clone of the Texas Instruments TSC2046. Discovered Adafruit has an Arduino driver for the TSC2046. Liz’s TSC2046 Learn Guide and LadyAda’s Arduino driver are excellently documented. Unfortunately there is no Circuit Python driver for the TSC2046 yet so that’s what I’m working on. 
* Released a 3D model for the Adafruit 2.5mm pitch matrix panel. I intend on submitting the model to Adafruit CAD Parts.  Currently designing 3D printed support brackets for the 2.5mm panels


35:42 @fede2 (text only)
* I built a zabbix library for circuitpython. I have an unofficial riscv-lab which uses zabbix as monitoring. So now I have a riscv board (QT-esp32-c3) monitoring my riscv-lab. The demo uses a neopixel strip to light a LED for each host, green for available, blue for load, red for down.
* Configuring HID-remappers on adafruit’s usb feather, to distribute them to linguists and indigenous language teachers to test a new keyboard layout for Costa Rica, before submitting it to Unicode.


36:27 @eightycc
* Traded in Sonoma delayed metadata writes (issue #8449) for a new FAT filesystem write performance regression (issue #8918). Researched it, wrote it up, wrote new Feedback for Apple. New regression affects Sonoma 14.4 betas.
* Continued work on _bleio for Pico W. Wrote PRs for minor upstream issues in BTstack and TinyUSB. Rebased WIP onto 9.0.0 beta1.


37:11 @jepler
* Working on bugs, filed a bunch of PRs late last week
* Helping out with the memento storage bug a little bit
* Side-tracked by @anecdata’s musings about wiznet ssl today and a PR 
* Rest of week:
   * More floppsy board bringup
   * Probably some time in arduino land
* Out or mostly-out next week


38:31 @justin (text only)
* Got a change into MiniMQTT that allowed me to move forward with ConnectionManager. Which in now updated and ready for a full review


38:47 @makermelissa
* Worked on updating Raspberry Pi Pi_Eyes project and now have it successfully getting an image of the Wayland Desktop.
* Taking a break from that to update Web Workflow Editor to reflect new API changes
* Then working on writing a Learn Guide


@michalpokusa (text only)
* Improved performance of search bar in circuitpython.org “Downloads” section
* Preparing adafruit_httpserver for 9.0.0
* Working on HTTPS support for adafruit_httpserver, there are still some problems on ESP boards but at one point using a specific version of CP 9.0.0 I was able to implement SSL to httpserver


40:09 @tannewt
* Tuned ESP neopixel output to be more reliable. Moved CP to core 1 on ESP32.
* Fixed iMX UART rx and updated it’s SDK.
* Debugged “impossible to ctrl-c” issue on iMX and adjusted USB CDC RX buffers to fill up less quickly.
* Changed socket.bind() to no longer allow reuse implicitly. You can now explicitly request it. This matches CPython behavior.
* Working on fixing SAMD PulseIn crash that is caused by conflicting reset mechanics. More info in the weeds.
* More bug fixing until we do a release candidate release.
## 43:11 In The Weeds


@justin
* With ConnectionManager-v1 nearly done, what is the path forward? Do we want to start with just requests and then updating documentation on that front? Some other way?


48:33 @tannewt
* A PulseIn crash on SAMD has me pulling a string where crashes happen with blanket reset code doesn’t play nice with deinit code run by finalizers. (blanket reset sets refcount to 0 and deinit decrements it and wraps around.) Should we move to finalizer-only resets?
## 56:22 Wrap-Up