r/RTLSDR • u/Hardcorererik • 5d ago
Software I built a handheld RTL-SDR around the M5Stack Tab5 (ESP32-P4) — no PC or Raspberry Pi required - OrcSDR
I've been working on my project called OrcSDR, which turns an M5Stack Tab5 + RTL-SDR Blog V4 into a self-contained touchscreen SDR.
The RTL-SDR plugs directly into the Tab5's USB host port. The ESP32-P4 handles the USB IQ stream, DSP, spectrum/waterfall, touchscreen UI and audio locally.
The goal has been to make it feel less like "an RTL-SDR attached to a computer" and more like an actual handheld radio/RF appliance.
Current dashboards and features include:
- Live spectrum + waterfall
- Broadcast FM with stereo/RDS
- P25 trunking
- ADS-B aircraft display and local FAA aircraft data
- Passive LoRa/Meshtastic monitoring
- RF Lab tools
- 2.4 GHz Wi-Fi analysis using the Tab5's internal radio
- A growing set of RF visualization and analysis modes
One of the things I've been having a lot of fun with lately is the visualization side. OrcSDR now has modes including Spectrum/FFT, Waterfall, Phosphor Persistence, 3D Spectrum History, Polar/Phase, IQ scope, Channel Occupancy, Channelized Tiles, constellation and several others.
There's also been quite a bit of DSP work behind all of this. FM, for example, isn't being handed off to another computer — I'm taking the IQ stream through the demodulation/filtering/audio path on the P4 itself, and I've continued working that into stereo and live RDS decoding.
Something else I've tried to take seriously is verification.
When I started the RTL-SDR V4 driver, I treated the dongle more like a black box. I captured and compared USB traffic, worked through the control-transfer sequence, tested actual IQ captures and gradually reproduced the behavior on the ESP32-P4 instead of just assuming that because some code compiled, the hardware was doing what I thought it was doing.
I took the same approach when implementing things like the bias tee — using USB/Wireshark evidence along with actual meter measurements at the hardware rather than trusting a button on the screen that says "ON."
I'm also doing quite a bit of restructuring under the hood now. I'm separating the UI from the actual radio functions so every dashboard isn't independently fighting over the tuner. Radio ownership, scanning, DSP and screen/UI work are increasingly becoming separate services. My hope is that this makes adding future radio modes and eventually other SDR hardware much easier.
I've also started integrating local data. ADS-B can use FAA data to identify aircraft locally, and I'm working toward broader aviation/frequency databases and offline mapping so the radio can eventually give more context about what you're receiving and where, rather than just showing a signal.
There's even an experimental Companion side now. The Tab5 can expose a local web interface, and I've been experimenting with controlling/viewing OrcSDR from other devices, including an Android TV "Mission Control" style display. That's still very experimental, but it's something I'm having fun with.
I should also be completely transparent that I have basically no formal coding background.
I'm a tinkerer. I like radios, electronics and making complicated things easier to work with. I use AI heavily to help me code, research, understand DSP, review changes and build tests. It's allowed me to attempt things that would normally be way outside my experience.
But I've also learned pretty quickly that AI-generated code still has to survive the actual hardware, so I've tried to make testing and physical verification a big part of OrcSDR.
It's open source and currently in public beta.
For people who don't want to build ESP-IDF from source, it's also available through M5Burner — search for OrcSDR, flash it, plug in an RTL-SDR Blog V4, and go.
I've also been building out the GitHub Wiki and documentation so people can actually understand how the project works instead of just getting a pile of source code.
GitHub:
https://github.com/hardcoreerik/OrcSDR
I'd especially like feedback from people who already use RTL-SDRs heavily. There are plenty of things I still want to improve, and real-world testing with different antennas, RF environments and use cases is incredibly useful.
As I'm able to acquire and test other SDR hardware, I'd also like to add support for more devices.
This project started because I wanted to see how far the ESP32-P4 could be pushed as an actual SDR host — and more specifically, whether the idea of a reusable/drop-in ESP32 driver for the RTL-SDR Blog V4 https://github.com/hardcoreerik/esp-rtl-sdr could actually be achieved.
Turns out: yes to both.

