OrcSDR: Running RTL-SDR Directly on an ESP32-P4
Thank you to Erik Elfstrom for writing in and sharing news about the release of OrcSDR, an open-source standalone SDR application built around the M5Stack Tab5 / ESP32-P4 and an RTL-SDR Blog V4. OrcSDR enables an RTL-SDR to run directly on an ESP32-P4-based microcontroller, meaning no heavy compute is required, such as a full-sized PC or Raspberry Pi. This enables a standalone device to be created with a microcontroller-based tablet like an M5Stack Tab5.
A microcontroller might struggle with multi-channel or wideband decoding when compared to a more powerful computer like a Raspberry Pi 4/5. However, most applications are single-channel, such as FM audio, ADS-B, or P25 decoding, and this is where the ESP32-P4 may shine. Being a microcontroller, it draws much less power, boots instantly, and needs no OS. So OrcSDR could enable a significantly more efficient portable RTL-SDR setup. An ESP32-P4-based M5Stack Tab5 also currently only costs US$60 (including a screen and battery), versus a Raspberry Pi 5 by itself, which has inflated to insane ~US$150+ prices.
Erik writes:
The part I’m most excited about is that this isn’t a Raspberry Pi or Linux system hiding behind a touchscreen. The RTL-SDR Blog V4 plugs directly into the ESP32-P4 USB host, and the P4 handles the radio, DSP, graphics, audio, storage, and touchscreen interface itself.
The idea is to turn the Tab5 and RTL-SDR V4 into a little self-contained radio appliance instead of making the SDR dongle a peripheral that always needs a laptop or desktop application.
OrcSDR currently has dedicated screens for FM, P25, ADS-B, LoRa, RF analysis, and 2.4 GHz Wi-Fi analysis, with more radio modes still being worked on.
I’ve also put quite a bit of effort into the visualization side. Along with the normal spectrum and waterfall, I’ve been building views for things like phosphor persistence, 3D spectrum history, I/Q constellation, I/Q oscilloscope, polar/phase, channel occupancy, and peak hold/averaging.
I want it to be useful as more than just a receiver. The goal is something you can use to listen, decode, explore signals, and also poke around at RF behavior without needing to pull out a computer.
The decoder side has been another big part of the project. FM stereo and RDS have involved a lot of real on-air testing and capture/replay work, and I’m also working through ADS-B, P25, LoRa/Meshtastic monitoring, scanning, and other decoder paths. I’ve tried to be careful about labeling things honestly as working, experimental, or still in progress rather than claiming everything is finished just because there is a button for it.
Erik writes how the project grew from his prior ESP32 RTL-SDR driver project. The standard Osmocom RTL-SDR drivers are written assuming they run on an OS, like Windows or Linux. However,the goal of esp-rtl-sdr was to write drivers so that "An ESP32 should own, characterize, monitor, and adapt an RTL dongle as a native embedded peripheral — not pretend it’s a PC running GQRX." Regarding the drivers Erik writes:
Rather than porting librtlsdr, I treated the RTL-SDR Blog V4 as a black box and worked from the actual USB behavior of the hardware. I used Wireshark and USBPcap while known desktop software operated a real Blog V4, then recorded and analyzed that traffic.
For example, I captured the full manual tuner gain ladder while stepping through the gain settings in SDR#, recorded the screen at the same time so the dB values could be lined up with the USB activity, and separately captured bias-tee control using the normal RTL-SDR tools. From there I built the ESP32 implementation from those measurements.
The driver also keeps track of things that matter a lot more on a microcontroller than they usually do on a desktop, like effective sample rate, USB overruns, consumer drops, and whether a particular sample rate is actually sustainable on that host.
The same driver has now worked unchanged on both the M5Stack Tab5 and a Waveshare ESP32-P4 development board, which was a nice surprise and made me realize the driver could probably be useful as its own reusable ESP32-P4 component instead of just something buried inside OrcSDR.
Erik goes on to write about OrcSDR:
There’s also a backend/control side to OrcSDR that I’ve been having a lot of fun with.
The device has a serial command interface that can tune the radio, scan, start and stop reception, query signal and decoder status, change device settings, start captures, and move capture files on and off the SD card.
That means the radio doesn’t have to be controlled only from the touchscreen. It can be driven from scripts, test tools, automation, or AI tools as well.
I’m trying to make testing a first-class part of the project, so a lot of the same functions you use from the touchscreen can also be exercised through the serial backend. There’s also an optional LAN companion/Mission Control view for checking device status from a browser or Android TV.
One of my main goals with all of this is simply to see how far the ESP32-P4 can actually be pushed as a standalone SDR host.
It has been a pretty interesting engineering exercise because USB streaming, DSP, audio, PSRAM, display rendering, decoder work, and the radio UI are all competing for resources on the same microcontroller.
The project is still beta, but it’s far enough along now that other SDR and embedded developers have started finding it, testing it, and forking both OrcSDR and the underlying RTL-SDR driver.
Erik has posted a photo gallery of OrcSDR here running on an M5Stack Tab5. The code is open-source and can be found on Erik's GitHub.

AI Disclaimer: Claude AI appears to have been used in the development of this software.






