GPIO Announcer

jamesbowman1 pts0 comments

GPIO announcer - by James Bowman - Excamera Labs Substack

Excamera Labs Substack

SubscribeSign in

GPIO announcer<br>A quick hack for checking out microcontroller pin assignments

James Bowman<br>Aug 04, 2026

Share

Excamera Labs shop note: the ever-popular SPIDriver is back in stock.

Your PCB comes back. You put a microcontroller on it. It powers up, wonderful! Then you start testing all the pin connections. Maybe there’s a bad solder joint, a short, maybe you even messed up the design?

Subscribe

It’s an important step, and being certain of all the GPIO connections before connecting any peripherals is a lot better than crossing your fingers and carrying on.<br>But how do you check the signals? I guess everyone has their own method.<br>What I used to do until yesterday was write a little hack on the microcontroller to toggle each pin, and then probe the signal on the PCB. After confirming that it toggles, I’d change the code, recompile, and test the next pin. A laborious process.<br>Well not anymore , now that I have gpio-announcer. It’s a tiny CircuitPython script (or dedicated .uf2, see below) that drives all the GPIOs simultaneously, each one saying their name at 115200 baud. All you have to do is connect a serial converter (e.g. the wonderful TermDriver) to the signal and it literally shouts its name nonstop!<br>Here the RP2040 Pico’s pin GP14 is being probed, and the string “GP14” is continuously being sent out at 115200 baud.

This is the development board I wanted to check out. I can just quickly probe all the hookups, confirming each one against the schematic.

Pretty handy. The script has a little bit of smarts. It first probes every pin, and only transmits the pattern on ones that are floating. So if the PCB has a GPIO already hooked up to an input, that’s not included in the test pattern.<br>It’s directly inspired by this FPGA implementation by Alex Forencich in 2023 (youtube, and github repo pin-uart). As far as I could find out there wasn’t an existing RP2040 implementation, or indeed much else for any microcontroller.<br>If you’re familiar with the RP2040, you might be wondering how it makes every pin function as a serial output, when only a few of them (the UART TX ones below) support hardware serial out.

The code uses a tiny PIO program to send out data on all pins at the same time. Codex and I wrote it together over the course of an hour. The implementation is brutally simple: it blasts the different bit patterns out across all 23 GPIOs at 115200 Hz.<br>Codex also made a C port thats in the repository under pico/. That single C program builds gpio_announcer.uf2 that’s in this release. Just drop it into a blank RP2040 and it will announce its pins.<br>Thanks for reading.

Share

Discussion about this post<br>CommentsRestacks

TopLatestDiscussions

No posts

Ready for more?

Subscribe

© 2026 James Bowman · Privacy ∙ Terms ∙ Collection notice<br>Start your SubstackGet the app<br>Substack is the home for great culture

This site requires JavaScript to run correctly. Please turn on JavaScript or unblock scripts

gpio announcer microcontroller rp2040 james bowman

Related Articles