Introducing Baudpunk: Hacking Softmodems and USB, the Curious Way 🌀

When you think of classic hacking imagery—dial tones, terminal prompts, the chirp of modems connecting—there’s a certain retro-tech romance that lingers. But beneath that nostalgia lies deep technical complexity, especially when it comes to the weird and wonderful world of USB.

I'm a cybersecurity consultant and researcher. A lot of my work involves peeling back the layers of how hardware and software interact—especially in safety- and security-critical systems. But one interface I’ve always wanted to master is USB. It’s everywhere, and deceptively messy under the hood.

So I started baudpunk.


🧠 What is baudpunk?

At its core, baudpunk is a personal deep dive into how modems (modulator/demodulators) and USB audio/networking devices actually work.

It targets the ESP32-S3 microcontroller, using its USB OTG features alongside the TinyUSB stack to create a modern reinterpretation of a dial-up-style softmodem—communicating over audio and USB.

But baudpunk isn’t just an experiment. It’s the foundation for a learning platform—something I hope others can use to understand:

  • How USB devices enumerate and negotiate
  • What a software-based modem looks like in 2025
  • How USB Audio and CDC-NCM interfaces behave in practice
  • What modern embedded systems can teach us about security posture

📡 Why softmodems?

Softmodems are a beautiful junction of signal processing, protocol design, and hardware interaction. They demand layered thinking—how bits become frames, how frames form protocols, and how software interprets it all. That kind of reasoning is at the heart of good security engineering.

They’re also practical: softmodems simulate “edge” network interfaces, which makes them useful for studying attack surfaces, fuzzing, and embedded security controls.


🔌 Why USB?

Because it’s complicated. Really complicated.

USB seems simple—plug and play—but it’s a layered protocol stack full of nuance. Descriptor parsing, endpoint configuration, isochronous transfers, composite devices—it’s a jungle in there.

And if you’re reverse engineering firmware, analyzing exploits, or building custom tooling, knowing how USB behaves on the wire is power.

baudpunk is a constrained, tangible way to explore that power.


🛠️ What can you do with baudpunk?

Right now, the project supports:

  • 🎧 USB Audio Class 1: Mono microphone + mono speaker over USB
  • 🌐 CDC-NCM: Network Control Model (Ethernet over USB, composite device)
  • 🔁 Audio loopback test mode: Debug USB audio streaming + roundtrip latency
  • 🧪 Experimental modem signal processing: Encoding/decoding data through audio

Check out the code here:
🔗 github.com/beLizzard1/baudpunk


🚧 What’s next?

Beyond tech exploration, baudpunk is also about teaching, testing, and tinkering. I’m using it to:

  • 🎓 Explain signal encoding: Turning bits into audio and back again
  • 🕳️ Explore covert channels: Using speakers/mics for esoteric data exfil
  • 🔍 Study USB stack behavior: Enumeration, streaming, and edge cases

I’m also thinking hard about how to use this to train the next generation of specialists—because modulation, encoding, and USB internals remain underexplored even among experts (myself included!).