Broadcast Engineer at BellMedia, Computer history buff, compulsive deprecated, disparate hardware hoarder, R/C, robots, arduino, RF, and everything in between.
5627 stories

ICYMI Python on Microcontrollers Newsletter: New Releases of MicroPython and CircuitPython and more! #Python #CircuitPython #ICYMI @micropython @ThePSF

1 Share

If you missed Tuesday’s Python on Microcontrollers Newsletter, here is the ICYMI (in case you missed it) version.

To never miss another issue, subscribe now! – You’ll get one terrific newsletter each Tuesday (which is out before this post). 9,300+ subscribers worldwide!

The next newsletter goes out in a week and being subscribed the best way to keep up with all things Python for hardware. No spam, no selling lists, leave any time.

Welcome to the latest Python on Microcontrollers newsletter! We have new software releases, neat technology and projects galore this issue.

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:

MicroPython version 1.18 released

MicroPython version 1.18 released

The MicroPython dev team has announced MicroPython, v1.18! There were 335 commits since the last release on September 2021, so there were about 2.5 commits per day since then – MicroPython Forums and Adafruit Blog.

This release of MicroPython sees a boost to the overall performance of the VM and runtime… Performance options are enabled on the esp32, mimxrt, rp2, stm32 and unix ports.

Source code and firmware and the full change log.

CircuitPython 7.1.1 Released

CircuitPython 7.1.1 Released

CircuitPython 7.1.1, the latest bugfix revision of CircuitPython, is the current stable release. It has fixes for RGBMatrix on RP2040 and PDMIn (microphone input) on SAMx boards, such as Circuit Playground Express. There are no other changes; unless you are affected by these problems, you do not need to upgrade from 7.1.0. – Adafruit Blog and GitHub.

CircuitPython2022 Updates

CircuitPython2022 Updates

Here’s the CircuitPython 2022 feedback received to date.

The CircuitPython Team wants to hear from you. When you post, please add #CircuitPython2022 and email to let us know about your post – More information.

Reading Floppy Disks in CircuitPython

Reading Floppy Disks in CircuitPython

JEpler just created a build of CircuitPython with the new native ‘adafruit_floppy’ module which implements MFM decoding ‘on the fly’ to provide Python-native filesystem support for floppy drives! You can now store files and code that is read or executed off of a floppy disk. Adafruit whipped up a quick demo that lists the files on a disk and pages through any text files it finds on these FAT12 disks. Arduino libraries and more CircuitPython capability are being worked on at the moment – Adafruit Blog, YouTube and Twitter.

Mounting Floppy Disks in Windows

In related work, Adafruit also demonstrates using TinyUSB and Arduino to make a USB mass storage floppy drive on Windows. Most of us have not seen a Drive A: on their computers in many years – Adafruit Blog, and YouTube.

The CircuitPython Show

The CircuitPython Show

The CircuitPython Show is a new independent podcast, hosted by Paul Cutler, focused on the people doing awesome things with CircuitPython. Each episode features Paul in conversation with a guest for a twenty to thirty minute interview – CircuitPythonShow, Blog Post and Twitter.

The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and More

The Pi Cast

The Pi Cast Celebrates 10 Years of Raspberry Pi: New Episodes With Ladyada, Eben Upton, and others. Adafruit’s Limor Fried will be on a livecast on February 15, 2022 – More on Tom’s Hardware and YouTube.

CircuitPython Deep Dive Stream with Scott Shawcroft

Deep Dive with Scott

This week, Scott discusses #CircuitPython2022, answers questions, and chats with Ladyada.

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:

Catch all the episodes in the YouTube playlist.

News from around the web!

CircuitPython Debug Library

CircuitPython does not support Python’s pdb debugger, so River Wang has come up with a library for line-by-line debugging. It is a very coarse implementation at the moment – YouTube and GitHub.

PS4 controller over Bluetooth with CircuitPython

Melissa writes about finding some awesome firmware called Bluepad32 by Ricardo Quesada which runs on the Adafruit Airlift that allows her to use a PS4 controller over Bluetooth with CircuitPython – Twitter Thread.

Star Trek Warp Core

Making a model Star Trek: The Next Generation warp core with NeoPixels and CircuitPython – Twitter.

LED Glasses

I finally finished putting together my LED glasses from the last Adafruit AdaBox and setup the scrolling text over Bluetooth in an iOS app – so cool! (Of course the text says “Subscribe to the CircuitPython Show” – Twitter.

A distance-reacting LED lamp

CircuitPython School – A distance reacting lamp / luminaria with a the Adafruit VL53L1X Time of Flight distance sensor and CircuitPython – YouTube via Twitter.

Mini Midi Vizi Version 2

Version 2 of my Mini Midi Vizi board is looking way sharper and is much easier to assemble. And my fave part is that I got a self-hosted web app up and running via CircuitPython. The device carries around it’s own configuration software – Twitter.

nRF24L01 Radios

nRF24L01 Radios

Testing out the range of the nRF24L01 radios with my custom Vivaldi antennas. Currently getting 1000ft non-line-of-sight! The Adafruit CircuitPython PyBadges make really nice portable testing platforms – Twitter Thread.

New Year

A lunar New Year celebration with CircuitPython – Twitter.

A guide I made on keyboard sizes

A guide on keyboard sizes – Reddit via Twitter.

Microcontroller to microcontroller I2C using CircuitPython

Microcontroller to microcontroller I2C using CircuitPython – Twitter Thread.

WIZnet Ethernet HAT

WIZnet Ethernet HAT for Raspberry Pi Pico CircuitPython library – GitHub.

Running MicroPython in Minecraft

Using MicroPython in a terminal in Minecraft – Twitter.

MIDI to CV interface

Using a Raspberry Pi Pico as a MIDI to CV interface, using a 12-bit ADC (MCP4725). Coded in MicroPython, using @diyelectromusic’s SimpleMIDIDecoder class – Twitter and YouTube.


ProtoESP – an educational ESP32 board with a small flock of peripherals, all pre-connected, MicroPython compatible – Twitter.

upip: the MicroPython package manager – Documentation and GitHub.


A proportional integral derivative (PID) controller running a home-made precision heater with a Raspberry Pi Pico and MicroPython – Hackaday, GitHub and YouTube.

Skate of Die on Raspberry Pi

Coding an homage to Skate or Die! on Raspberry Pi in Python – Raspberry Pi News.

5 Ways To Use Python On An iPad

5 Ways To Use Python On An iPad – David Amos.

Numbers in Python

3 Things You Might Not Know About Numbers in Python – David Amos and Adafruit Blog.

Unicode in Python


PyFlow: a general purpose visual scripting framework for Python – GitHub.

Unicode in Python: Working With Character Encodings – Real Python via Twitter.

PyDev of the Week: Rodrigo Girão Serrão on Mouse vs Python

The CircuitPython Weekly Meeting is postponed to Tuesday in observance of Martin Luther King Jr. Day in the US. Check Adafruit’s YouTube channel for the video later on today.

#ICYDNCI What was the most popular, most clicked link, in last week’s newsletter? Adafruit PrettyPins.

Coming soon

ESP32 Pico V3 02 modules

New ESP32 Pico V3 02 modules are small, allowing for a new Feather with more capability – Twitter Thread.

They are also small enough to place on ItsyBitsy size boards – Twitter.

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

This week, there were no new boards added, but several are in development.

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

MagTag James Webb Telescope Status from Tim C

Navi10 MacroPad with KB2040 and KMK CircuitPython keyboard firmware from Eva Herrada

PyPortal WFH Busy Sounds Simulator from Tim C

CircuitPython on Raspberry Pi (Bare Metal / No OS) from Scott Shawcroft

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 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 344!

New Libraries!

Here’s this week’s new CircuitPython libraries:

Updated Libraries!

Here’s this week’s updated CircuitPython libraries:

What’s the team up to this week?

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


I fixed a longstanding problem with audiobusio.PDMIn, which reads data from PDM digital microphones, such as the one on the Circuit Playground Express. I’m now working on a deep-sleep power consumption issue with ESP32-S2.

Either or both of these deserve a CircuitPython 7.1.1 release, so I’ll do so after we figure out what should be in it.


Great success with floppies! With my work in progress branch, I’ve been able to mount 1.44MB (3.5”) and 1.2MB (5.25”) floppies and access the files inside from CircuitPython! Next up, I’ll make the code usable from both CircuitPython and Arduino and then make a pull request to add it to CircuitPython.

If you want to ask me anything about the MFM floppy encoding, do it now, because in a week or so from now the knowledge will vanish from my working memory, safely sealed away in Adafruit_Floppy.

You can watch a demo of the code in action from a segment on last week’s Ask an Engineer.


This week I published the basics of the Adafruit ESP32-S2 TFT Feather guide. We wanted to get something live so folks who picked up this board had a place to get started. Keep an eye on the guide for the rest of the content, coming soon!

I also updated the Factory Reset page for the ESP32-S2 to have all the info needed for a factory reset or a bootloader repair, and updated the Install the UF2 Bootloader page to point to that so all the information is in one place. The process is identical, so we ran into having two pages with the same lengthy info on them. Not anymore!

Next up is finishing up the rest of the content for the QT Py ESP32-S2 guide, followed by the content for the TFT Feather guide. It involves a bit of bouncing around, but I’m working to get everything good to go!


Last week I wrapped up my Raspberry Pi work for a while. I wrote a Learn guide to get folks going using it. I also merged in support for the original Zero and Zero W (not supporting WiFi).

After wrapping this up, I started working on the ESP32-S3 in CircuitPython. I’ve started by reworking the sdkconfig generation to support different target platforms. After wrapping that up, I’ll be debugging the problems with WiFi on the S3.

Lastly, I’ll be finishing my #CircuitPython2022 post so that I can cover it tomorrow in my second Deep Dive of the new year. In the first Deep Dive, I reviewed last year’s #CircuitPython2021.

Upcoming events!

MicroPython Meetup

The next MicroPython Meetup in Melbourne will be on January 26th – Meetup. See the blog for past notes.

PyCascades 2022

PyCascades is a regional PyCon in the Pacific Northwest, celebrating the west coast Python developer and user community. Our organizing team includes members of the Vancouver, Seattle, and Portland Python user groups. DATES ANNOUNCED! February 5th-6th, 2022 The conference will take place on Saturday and the first half of Sunday, with the post-conference sprints following that on Sunday afternoon. After three amazing in-person conferences and an engaging online conference, we are ready to do it again! – PyCascades 2022.

PyCon US 2022

PyCon US 2022 planning is underway. The team is planning to host the event in person with an online component. April 27, 2022 – May 5, 2022. Head over to the PyCon US 2022 website for details about the conference and more information about the sponsorship program – PyCon Blog.

PyCon IT 2022

PyCon Italia is the Italian conference on Python. Organised by Python Italia, it is one of the more important Python conferences in Europe. With over 700 attendees, the next edition will be June 2-5, 2022 – Ticket Registration.

Send Your Events In

As for other events, with the COVID pandemic, most in-person events are postponed or cancelled. If you know of virtual events or events that may occur in the future, 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.1.1 and its unstable release is 7.2.0-alpha.1. New to CircuitPython? Start with our Welcome to CircuitPython Guide.

20220117 is the latest CircuitPython library bundle.

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

3.10.2 is the latest Python release. The latest pre-release version is 3.11.0a4.

2759 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. – Find a dream job, find great candidates! 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.

Job of the Week

Education Engineer @ Hack Club – Adafruit Jobs Board.

32,696 thanks!

32,696 THANKS

Adafruit Discord

The Adafruit Discord community, where we do all our CircuitPython development in the open, reached over 32,696 humans – thank you! Adafruit believes Discord offers a unique way for Python on hardware folks to connect. Join today at

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.

Read the whole story
4 days ago
Burlington, Ontario
Share this story

Discover ‘Retro’ internet protocols you still can use today #Internet @devgenius1

1 Share

Tired of heavy web pages, browser pop-ups, flashing banners, N-factor authentication, user tracking and analytics? Well, there are some internet and communication protocols that have not changed in the last 30 years and you can still try using them.

Discussed in detail:

  • FTP
  • BBS
  • Gopher
  • IRC
  • Newsgroups

See the article here for all the details on how to explore yourself.

Read the whole story
4 days ago
Burlington, Ontario
Share this story

Adding WiFi Remote Control to Home Electronics? Be Prepared to Troubleshoot

1 Share

[Alex] recently gave a Marantz audio amplifier the ability to be remotely-controlled via WiFi by interfacing an ESP32 board to a handy port, but the process highlights how interfacing to existing hardware often runs into little, unforeseeable problems that can sink the project unless solved.

At its core, the project uses an ESP32 and the ESPAsyncWebServer project to create a handy web interface that is accessible over WiFi. Then, to actually control the amplifier, [Alex] decoded the IR-based remote signals by watching the unit’s REMOTE ports, which are intended as a pass-through and repeater for IR signals to other Marantz units. This functionality can be exploited; by sending the right signals to the REMOTE IN port, the unit can be controlled by the ESP32. With the ESP32 itself accessible by just about any WiFi device, [Alex] gains the freedom to control his amplifier with much greater flexibility than just the IR remote would offer.

Sounds fairly straightforward, but as usual when interfacing to an existing piece of electronics, there were a few glitches. The first was that high and inconsistent latency (from 10 ms to 100 ms) made controlling the amplifier a sometimes frustrating experience, but that was solved by disabling power saving on the WiFi interface. Another issue was that sending signals by connecting a GPIO pin to the REMOTE IN port of the amplifier worked, but had the side effect of causing the amplifier to no longer listen to the IR remote. Apparently, current flowing from the REMOTE port to the ESP32’s GPIO pin was to blame, because adding a diode in between fixed the problem.

The GitHub repository holds the design files and code. This kind of project can be pretty complex, because the existing hardware doesn’t always play nice, and useful boards like a modern ESP32 aren’t always available. Adding a wireless interface to vintage audio equipment has in the past involved etching circuit boards and considerably more parts.

Read the whole story
4 days ago
Burlington, Ontario
Share this story

Identifying Malware by Sniffing its EM Signature

1 Share

The phrase “extraordinary claims require extraordinary evidence” is most often attributed to Carl Sagan, specifically from his television series Cosmos. Sagan was probably not the first person to put forward such a hypothesis, and the show certainly didn’t claim he was. But that’s the power of TV for you; the term has since come to be known as the “Sagan Standard” and is a handy aphorism that nicely encapsulates the importance of skepticism and critical thinking when dealing with unproven theories.

It also happens to be the first phrase that came to mind when we heard about Obfuscation Revealed: Leveraging Electromagnetic Signals for Obfuscated Malware Classification, a paper presented during the 2021 Annual Computer Security Applications Conference (ACSAC). As described in the mainstream press, the paper detailed a method by which researchers were able to detect viruses and malware running on an Internet of Things (IoT) device simply by listening to the electromagnetic waves being emanated from it. One needed only to pass a probe over a troubled gadget, and the technique could identify what ailed it with near 100% accuracy.

Those certainly sound like extraordinary claims to us. But what about the evidence? Well, it turns out that digging a bit deeper into the story uncovered plenty of it. Not only has the paper been made available for free thanks to the sponsors of the ACSAC, but the team behind it has released all of code and documentation necessary to recreate their findings on GitHub.

Unfortunately we seem to have temporarily misplaced the $10,000 1 GHz Picoscope 6407 USB oscilloscope that their software is written to support, so we’re unable to recreate the experiment in full. If you happen to come across it, please drop us a line. But in the meantime we can still walk through the process and try to separate fact from fiction in classic Sagan style.

Baking a Malware Pi

The best way of understanding what this technique is capable of, and further what it’s not capable of, is to examine the team’s test rig. In addition to the aforementioned Picoscope 6407, the hardware configuration includes a Langer PA-303 amplifier and a Langer RF-R H-Field probe that’s been brought to rest on the BCM2837 processor of a Raspberry Pi 2B. The probe and amplifier were connected to the first channel of the oscilloscope as you might expect, but interestingly, the second channel was connected to GPIO 17 on the Pi to serve as the trigger signal.

As explained in the project’s Wiki, the next step was to intentionally install various rootkits, malware, and viruses onto the Raspberry Pi. A wrapper program was then used that would first trigger the Picoscope over the GPIO pin, and then run the specific piece of software under examination for a given duration. This process was repeated until the team had amassed tens of thousands of captures for various pieces of malware including bashlite, mirai, gonnacry, keysniffer, and maK_it. This gave them data on what the electromagnetic (EM) output of the Pi’s SoC looked like when its Linux operating system had become infected.

But critically, they also performed the same data acquisition on what they called a “benign” dataset. These captures were made while the Raspberry Pi was operating normally and running tools that would be common for IoT applications. EM signatures were collected for well known programs and commands such as mpg123, wget, tar, more, grep, and dmesg. This data established a baseline for normal operations, and gave the team a control to compare against.

Crunching the Numbers

As explained in section 5.3 of the paper, Data Analysis and Preprocessing, the raw EM captures need to be cleaned up before any useful data can be extracted. As you can imagine, the probe picks up a cacophony of electronic noise at such close proximity. The goal of the preprocessing stage is to filter out as much of the background noise as possible, and identify the telltale frequency fluctuations and peaks that correspond to individual programs running on the processor.

The resulting cleaned up spectrograms were then put through a neural network designed to classify the EM signatures. In much the way a computer vision system is able to classify objects in an image based on its training set, the team’s software demonstrated an uncanny ability to pick out what type of software was running on the Pi when presented with a captured EM signature.

When asked to classify a signature as ransomware, rootkit, DDoS, or benign, the neural network had an accuracy of better than 98%. Similar accuracy was achieved when the system was tasked with drilling down and determining the specific type of malware that was running. This meant the system was not only capable of detecting if the Pi was compromised, but could even tell the difference between a gonnacry or bashlite infection.

Accuracy took a considerable hit when attempting to identify the specific binary being executed, but the system still manged a respectable 82.28%. Perhaps most impressively, the team claims an accuracy of 82.70% when attempting to identify between various types of malware even when attempts were made to actively obfuscate their execution, such as running them in a virtualized environment.

Realistic Expectations

While the results of the experiment are certainly compelling, it’s important to stress that this all took place under controlled and ideal conditions. At no point in the paper is it claimed that this technique, at least in its current form, could actually be used in the wild to determine if a computer or IoT device has been infected with malware.

At the absolute minimum, data would need to be collected on a much wider array of computing devices before you could even say if this idea has any practical application outside of the lab. For their part, the authors say they chose the Pi 2B as a sort of “boilerplate” device; believing it’s 32-bit ARM processor and vanilla Linux operating system provided a reasonable stand-in for a generic IoT gadget. That’s a logical enough assumption, but there’s still far too many variables at play to say that any of the EM signatures collected on the Pi test rig would be applicable to a random wireless router pulled off the shelf.

Still, it’s hard not to come away impressed. While the researchers might not have created the IT equivalent of the Star Trek medical tricorder, a device that you can simply wave over the patient to instantly see what malady of the week they’ve been struck by, it certainly seems like they’re tantalizingly close.

Read the whole story
4 days ago
Burlington, Ontario
Share this story

This DIY Clock Changes With The Moon Phase

1 Share
This DIY Clock Changes With The Moon Phase

no arduinos were involved in the making of this beautiful moon phase clock.

The post This DIY Clock Changes With The Moon Phase appeared first on Make: DIY Projects and Ideas for Makers.

Read the whole story
5 days ago
Burlington, Ontario
Share this story

New Products 1/14/2022 Featuring Adafruit QT Py ESP32-S2 WiFi Dev Board with uFL Antenna Port – STEMMA QT! (Video)

1 Share

New Products 1/14/2022 Featuring Adafruit QT Py ESP32-S2 WiFi Dev Board with uFL Antenna Port – STEMMA QT! (Video)

Read the whole story
6 days ago
Burlington, Ontario
Share this story
Next Page of Stories