Skip to content

Episode 37 - The Spirit of Radio

Welcome to the show

Published: October 5th, 2026

Paul and Tod are back with a new episode. They discuss CircuitPython Turbo, an open source ambient TV lighting project, LoRa radios, cheap music gadgets, and more.

Follow the show on Bluesky. Follow Paul on Bluesky or Mastodon and Tod on Bluesky and Mastodon.

Support the show

Support the show! Join the Supporter tier and get early access to episodes, exclusive content, and more. Visit TheBootloader.net/support to learn more.

Come hang out with the community in our Discord channel. Go behind the scenes or chat about the latest episodes with Paul, Tod, and other community members.

Listen to the podcast

Transcript

Full transcript available here.

Show Notes

00:30 CircuitPython Turbo (Tod #1)

If you've done Python programming, you quickly learn to just not do certain things in Python because it's too slow. Python is great, but it's not a raw speed demon. If you need to do a lot of math in Python, you use various native packages like NumPy, PyTorch, TensorFlow, and the like. But what about on microcontrollers? MicroPython and CircuitPython have had a secret for many years to speed up code and recent work has made it easier in CircuitPython. Adafruit has labeled it CircuitPython Turbo.

What is Turbo? If you're familar with the Micropython Viper code emitter, it's just that but with some added work to make the lives of library authors eaiser.

But first, on microcontrollers running MicroPython or CircuitPython what can we do to make our code faster? We've had a mini version of NumPy for a long time. And if the code you want to speed up is a algorithm expressable as an array operation, you can get C-like speed. But what then?
In MicroPython you can "decorate" your code with the "@micropython.native" or "@micropython.viper" function decorators. Add one of these to your function and the MicroPython parser on the chip will take it and compile it into native code. This can get you a 2x to 10x the speed boost. It's a pretty amazing trick.

But it's not a cure-all. Just sprinkling these decorators on your functions won't do you much good. In microcontroller programs, there's I/O slowdowns: SD card writes, WiFi transactions, display updates, I2C sensor reads. None of these will be sped up with these decorators. They really only work for pure logic operations: basically math algorithms that are are trickier than simple array operations that NumPy could do. So imagine things like image or audio processing, maybe game physics engine processing.

You can choose to "compile" your code ahead of time with the "mpy-cross" tool on your computer. The resulting .mpy file contains a tokenized version of your code and any native code functions you've decorated. But a .mpy file contains native code for only one chip, so you need to have multiple if your code supports multiple boards.

In CircuitPython, on-device native compilation is disabled by default. You'll get a "SyntaxError: invalid micropython decorator" if you try. As of CircuitPython 10.3.1, native code loading in .mpy files has been fully turned on for many chips. You can use CircuitPython's "mpy-cross" to make a .mpy from your .py file, with "@micropython.viper" decorators in it and it'll work fine. But like with MicroPython, if you're making a library for others, you have to keep track of the different .mpy files for the different chips.

This is part of what CircuitPython Turbo is: a tool for bundling up a library so it can support multilple architectures. And a slightly different loader in CircuitPython to load the right version. You can imagine this is important for Adafruit because one of the nice things it does for the CircuitPython community is peridocically publish two bundles of CircuitPython libraries in .mpy form: the Adafruit Library bundle and the Community Library bundle. This is really handy! We get nice small versions of these libraries, easily installable with tools like "circup". But you can imagine the headache Adafruit would have if they want to offer libraries with native code in them. This part of Turbo is critical for them I think.

So what is CircuitPython Turbo finally? It's kinda three things: enabling native code loading in .mpy files in CircuitPython, a tool for helping libraries with native code manage multiple chip architectures, and a light rebranding of the existing MicroPython native code decorators. It's not required. I've been using just "@micropython.viper" and "mpy-cross" without anything named "turbo" and it all works as expected.

So if you have some CircuitPython code that is compute-bound, try out these decorators. Links in the notes for how to get started. Or send me a message on the Discord and I can help you get going.

Links:

6:53 HyperHDR (Paul #1)

HyperHDR is an open source ambient lighting system to install behind your television. By splitting your HDMI signal with one feed going to the TV and the other to a USB video capture device connected to a Raspberry Pi or PC, it matches the LED colors to what is being displayed on your TV for an immersive experience.

HyperHDR installed on Paul's TV

HyperHDR 30 second demo video:

Links:

13:42 Evil-M5 Project (Tod #2)

I normally don't talk about various "hacking" tools like the Flipper Zero or similar because I'm not in network security and they're often targetted at younger people who really need to learn the legality of the tools before they use them. But having said that, there's an interesting firmware for the M5Stack Cardputer ADV called "Evil-M5" that could be useful to those of us who don't consider ourselves "h@xz0rz".

You may remember me talking about the Cardputer back in 2024 on Episode 9 of The Bootloader. The Cardputer is a pocketable ESP32-S3 WiFi device with a built-in screen, QWERTY keyboard, speaker, sdcard slot, and battery. Since then, M5 has released the Cardputer ADV, same size as the original, still $29, but has a headphone/line out port! This makes it entirely more useful to me as a music guy. But it also has a GPIO port and M5 has made a bunch of snap-on modules useful for hackers like a $30 LoRA module with optional GPS to turn it into a Meshtastic node or an $30 NFC and sub-1GHz RF scanner to turn it into a Flipper Zero.

This is what makes it a next level wireless protocol exploration tool. With the Evil-M5 firmware installed, you can do the normal WiFi/BLE hacking stuff that people do with ESP32s for years like WiFi sniffing or BLE jamming. Since it's an ESP32-S3, it can do USB hacks like BadUSB or mouse jiggling, or just act as a thumb drive. But it has also tools that may be useful if you find yourself not trusting of established networks like a WiFi dead drop server or an ESP-NOW mesh IRC-like chat client. It also has several anti-surveillance tools like a CCTV toolkit for finding IP cameras and discover if you're being tracked by AirTags.

And if you have the NFC module for the Cardputer ADV, you have a bunch of NFC tools and RF scanning tools too, making this as powerful as a Flipper Zero but much cheaper and with more features. I'm bummed I cannot use my original Cardputer with this but I'm getting a Cardputer ADV for music stuff so maybe I'll get one of these modules too. I'd definitely get this over a Flipper Zero.

Links:

18:08 Meshtastic and Meshcore and the 900 MHz band (Paul #2)

Tom Nardi at Hackaday had a great article a couple weeks breaking down the impact of FCC regulations on the 900 MHz Industrial, scientific and medical (or ISM) band and what it might mean for the Meshtastic and Meshcore projects.

As Tom shares, it turns out that the default radio configurations may be in violation of the Federal Communications Commission's regulations that have been around since the 80s. The radios need to operate above the 500 kHz band, and currently work at 62.5 kHz for MeshCore and 250 kHz for Meshtastic.

Due to bugs and issues with Meshtastic, Philly Mesh announced they were switching to MeshCore. This will impact users running older radios who will no longer be able to communicate with the newer hardware. It will be interesting to watch PhillyMesh over time to see how the transition works.

Links:

21:53 Broke Beats: cheap music hardware (Tod #3)

As you know, I love inexpensive music gadgets. I make them! Buy them please! But there's two groups of people going much harder on the cheap music gizmo front than I ever could: Cardputer hackers and Chinese guitar pedal makers.

The first group are the various hackers making audio apps for the M5Stack Cardputer, ADV or regular.
In last two years since I spoke about the Cardputer, a whole app ecology has built up around it and similar boards. And it's now so easy to try out the many projects! Point your browser at the M5 Launcher Project, install its "GRUB-like bootloader", then choose from literally hundreds of different apps for the Cardputer. Search, click, upload, and the Cardputer becomes a whole new thing. And this is done in the browsesr, via WebSerial.

But the most amazing thing (to me) in the Launcher firmware catalog is the BKLVA Pocket DAW app.
It's a full 4-track digital audio workstation on a teeny tiny screen. It's got a sampler, a drum machine, a six-voice synth, a sequencer with arranger and song mode. And a mixer with audio effects like delay & reverb. All free, all running on this $30 handheld gadget. And because it's a little embedded gadget not running an OS, it comes up immediately. You can just turn it off without issue. Fits in your pocket so you can sketch music ideas anywhere. Or erase it all and install on the MiniAcid app, a TR-808 & TR-303 emulator sorta like Propellerheadas Rebirth app. Or maybe instead install a webradio MP3 player. It only takes a few seconds to flash new firmware. Cardputer ADV plus BKLVA is highly recommended.

The other group of people going at the cheap music gizmo space are the China-based, usually sold only on Aliexpress, companies that are producing little synths and guitar pedals. One I really like is the Livtra Nanocore, it's an guitar effects box. It's got a big color screen and two knobs, battery-powered and with USB-C & Bluetooth. Like a pedal, it's got mono inputs and outputs. It can do 8 simultaneous effects and are chained together internally. The effects are everything a guitarist usually needs: amp simulators, compressor, drive & distortion, delay, chorus/flanger/tremolo, reverb, eq, and others. Each effect's paramters are adjustable and an entire chain of effects can be saved as a preset. These things are going for around $50 on Aliexpress. It's incredible. I don't have one yet, but the UI looks pretty usable. I'm hoping to get one for myself this Christmas.

Both the BKLVA DAW app and the Nanocre gadget I learned about from the "Broke Beats" series that's on SonicState.com, one of the better music gear websites out there. Links to the gadgets and their articles in the notes.

Links:

IKEA Skyrim Mod (Paul #3)

Skyrim, a fifteen year old roleplaying game in the Elder Scrolls series from Bethesda Games, just saw a mod released for it from IKEA of all companies. IKEA created a mod that includes a KALLAX 4x2 shelf unit you can use in the game. And the funniest part is that it is voiced by Matt Berry, from What We Do in the Shadows and The IT Crowd.