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

OrcSDR Running on an M5Stack Tab5
OrcSDR Running on an M5Stack Tab5

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

Cat2Web: Sync a Transceiver with WebSDR/KiwiSDR

Thank you to Val (LZ2XA) for writing in and sharing with us a program he's created called "Cat2Web," which is designed to keep a ham transceiver and a public browser SDR, such as a KiwiSDR tuned to the same frequency and mode, in both directions. This is useful for amateur radio operators, as they could easily determine if their signal is being heard by a distant public remote SDR station.

Cat2Web (C2W) is a small Windows app that keeps a ham transceiver and a public browser SDR — WebSDR, KiwiSDR, OpenWebRX/OWRX+ — tuned to the same frequency and mode, in both directions.

Besides standard CAT (via OmniRig), it controls FlexRadio 6000/8000 directly over the network (SmartSDR TCP, no CAT cable) and SunSDR via TCI, and it can pull a SpyServer/Airspy stream and demodulate it itself. It also lets you pick the audio
output device for the SDR sound, and stores a frequency offset per bookmark.

We note that the program is not open source and has a €20 lifetime license price tag attached to it. However, a demo is available with full sync, but limited bookmarks.

The Cat2Web Interface
The Cat2Web Interface

The PZSDR Team Demonstrates 7-Board Phase Coherence

Last week we posted about the Crowdfunding debut of the PZSDR, a high-end US$8,749 SDR based on the AMD Zynq™ UltraScale+ XC ZU47DR RFSoC. It features a direct-sampling SDR with a 1 MHz to 6 GHz tuning range, 8RX/8TX 14-bit coherent channels with 5GSPS/9.95GSPS sampling rates.

The team at PZSDR wanted to share a guest post with us, showing how multiple boards can be combined in a phase-coherent manner. This enables a large number of elements for radar, radio astronomy, direction finding, and other applications. Their guest post is below, and is not written by us:


# Achieving 7‑Board Phase‑Coherent Synchronization with the PZSDR P047 Zynq RFSoC SDR

As phased‑array radar, massive‑MIMO and distributed spectrum‑sensing systems scale up, multi‑board phase‑and‑timing coherence becomes critical for good beam‑forming and reliable signal capture. Jitter and phase skew will directly degrade array performance.
 
The PZSDR P047 is built around the AMD Xilinx Zynq UltraScale+ RFSoC XCZU47DR. It integrates 8×ADC and 8×DAC channels with direct‑sampling coverage of 1 MHz‑6 GHz. The higher‑spec P047Pro shares exactly the same synchronization hardware design.
 
To validate large‑scale coherent operation, a 7‑board test configuration was assembled, delivering a total of 56 synchronized RF channels, representative for mid‑size RF‑array development.
 

Key Measured Results

  • Channel‑to‑channel phase coherence across all seven boards stays within **±3°**.
  • Phase relationships remain stable through multiple power‑cycles and are independent of power‑up sequence.
  • The synchronization architecture delivers deterministic, repeatable performance when scaled to multiple units.
Our hardware demo illustrates this multi‑board locking behavior.
 
*Demo video captured using PZSDR P047Pro. The synchronization hardware is identical to the PZSDR P047.*
 
PZSDR P047Pro 7-Board Synchronization Demo | 56 Channels ±3° Phase Accuracy | AMD RFSoC

 

Prototyping Use‑Cases

With 7‑board phase‑coherent synchronization, the PZSDR P047 hardware can be used for prototyping several popular RF‑array applications:
 
  • Phased‑array radar: Build multi‑channel coherent receive/transmit arrays for radar‑algorithm validation.
  • Radio astronomy: Prototype multi‑element antenna arrays for capturing weak astronomical radio signals.
  • Direction‑finding: Construct multi‑channel coherent‑receiver arrays for radio‑signal DF‑algorithm research.
  • 5G massive‑MIMO test‑beds: Support coherent‑transceiver development for high‑throughput wireless R&D.
 
> Full test methodology and complete measured performance data are provided in the attached supplementary document.
 

References

PZSDR 7-Board Phase Coherence Test
PZSDR 7-Board Phase Coherence Test
PZSDR Block Diagram
PZSDR Block Diagram

Instro: Python Hardware Instrumentation Library Adds RTL-SDR Support

Instro is an open-source Python library designed to talk to test instrumentation such as power supplies, multimeters, electronic loads, DAQs, oscilloscopes, and PLCs from a unified, typed API.  The maintainers describe the goal as follows:  "Code against an instrument category once, then swap vendors with a single configuration change. When you want to capture the data, attach a publisher to stream it to a file, Nominal, or a destination of your own." A library like this saves engineers from having to write custom drivers for each piece of equipment.

Recently, Alexander Arsenovic, the original author of the excellent scikit-rf RF engineering Python library, wrote and wanted to share that he has added RTL-SDR support to Instro. He has uploaded a video showing it in action with an RTL-SDR Blog V3.

The code is open-source and available on GitHub.

rtl-sdr in nominal.instro

ADSBee m1421: The World’s Smallest Dual-Band ADS-B Receiver

'Pants for Birds' recently announced the release of the ADSBee m1421 module, which they describe as the world's smallest dual-band ADS-B receiver.

The ADSBee m1421 is based on the LR2021 chip, and while it supports dual-band 1090 MHz and 978 MHz UAT, they note that 1090 MHz support is somewhat limited. This is because the LR2021 can listen to only one Mode S packet type, so it cannot receive squawk codes and receives fewer non-ADS-B packets. This, however, does not affect the usual application: tracking aircraft. The LR2021 also cannot implement timestamping or RSSI, meaning that MLAT is not possible.

Apart from its ADS-B capabilities, they have also broken out the LR2021’s 2.4 GHz front end as a waveguide, allowing it to be used as a mesh transmitter or LoRa receiver.

 

The ADSBee m1421 Module - Described as as the world's smallest ADS-B Receiver.

FreeDV RADE: An Open-Source Digital Voice Mode for HF that Beats SSB at Low SNR

Thank you to Rebecca Key (KO4KVG) for writing in and sharing with us an article she's written over on the ARDC website about a relatively new amateur open-source radio digital voice mode called FreeDV RADE.

ARDC is a private foundation that issues grants that support amateur radio and digital communications technologies. FreeDV is an ARDC grantee, and it has been using the funds to develop "a digital voice mode that could compete with SSB across varying signal-to-noise conditions on HF while providing more natural-sounding speech".

Last year, they released the FreeDV Radio Autoencoder (FreeDV RADE), which is their flagship digital voice mode. FreeDV RADE incorporates both machine learning and classical DSP, resulting in working audio at SNRs as low as -2 dB, with only half the bandwidth of a typical 3 kHz SSB voice signal. The article goes on to describe how the audio quality, power, and bandwidth efficiency are superior to other digital voice modes. 

The article also mentions how FreeDV RADE is seeing increased adoption by hardware manufacturers, with FlexRadio now supporting the mode in several radios. It also mentions upcoming improvements, including a goal of reducing bandwidth use to under 1 kHz.

FreeDV Software
FreeDV Software

PZSDR: New AMD Zync Ultrascale Based SDR Crowd Funding on Crowd Supply

Recently, the team from Puzhi Electronic wrote in and wanted to share the release of their new PZSDR software-defined radio. This is a high-end SDR, based on the AMD Zynq™ UltraScale+ XC ZU47DR RFSoC. For US$8,749 you get a direct sampling SDR with 1 MHz to 6 GHz tuning range, 8RX/8TX 14-bit coherent channels with 5GSPS/9.95GSPS sampling rate.

The PZSDR is similar to the AntSDR T510, which we posted about earlier. The AntSDR T510 is also based on the ZU47DR RFSoC, however, the AntSDR model will come with a built-in NVIDIA Jetson for Edge AI/GPU based compute. The AntSDR T510 is also due to launch on Crowd Supply soon.

We note that, when purchased from Western parts distributors like Digikey, the same AMD XCZU47DR-2FFVE1156I chip used in the PZSDR costs US$30,000+ for the chip alone, so AMD is obviously giving significantly better pricing to Asian manufacturers. Regardless, $8000 for this sort of RF capability is insane, and shows that high-end RF performance is getting cheaper and more capable over time.

Puzhi Electronic has introduced the PZSDR P047 and P047Pro, two high-performance software-defined radio platforms built around the AMD Xilinx Zynq UltraScale+ RFSoC XCZU47DR-2FFVE1156I. As direct-sampling SDRs with no front-end tuners, both platforms integrate 8 14-bit RF-ADC channels sampling at up to 5 GSPS and 8 14-bit RF-DAC channels running at up to 9.85 GSPS, delivering continuous frequency coverage from 1 MHz to 6 GHz. The on-chip FPGA fabric provides 930k logic cells and 4272 DSP slices for flexible channelization and real-time signal processing, paired with an on-chip processing system of 4 Arm Cortex-A53 cores at 1.333 GHz and 2 Cortex-R5 real-time cores at 533 MHz.

A defining feature of the P047 series is its native multi-board phase-coherent synchronization capability. Puzhi has validated stable synchronized operation across both 2-board and 7-board configurations, making the platforms suitable for large-scale array applications including phased array radar, massive MIMO prototyping, and precision RF direction finding systems. To support high-throughput inter-board data transfer and streaming, each board is equipped with dual 100G QSFP28 optical ports.

The P047 series is designed for developer accessibility with full PYNQ framework support and an extensive library of pre-built demos covering FPGA logic, ARM Vitis, PetaLinux, RF transceiver operation, and PYNQ notebook examples. Design resources including user manuals, schematics, DXF mechanical files and firmware are provided under a permissive license. Both models include Gigabit Ethernet, USB 3.0, Mini DP, on-board GPS, and expandable IO interfaces.

The standard P047 ships with 4GB PS DDR4, 2GB PL DDR4, 512Mb QSPI Flash and 8GB eMMC. The P047Pro upgrades the memory subsystem to 8GB PS DDR4, 4GB PL DDR4, 1GB QSPI Flash and 32GB eMMC for higher workloads. All units carry an industrial temperature rating of -40°C to +85°C, suitable for field deployment.

Positioned as a cost-competitive alternative to premium high-end SDR platforms that typically retail for over US$30,000, the base P047 model is now available via Crowd Supply crowdfunding at US$8,749. Each unit ships as a complete kit including the board, metal enclosure, 12V power supply, GPS antenna, RF cables, USB and Ethernet cables, and accessories for immediate out-of-the-box use. The higher-spec P047Pro is also available directly from Puzhi Electronic.

Reference links:
- Official GitHub: https://github.com/pzsdr
The PZSDR
The PZSDR
Puzhi PZSDR P047 Software Defined Radio AMD Xilinx ZYNQ UltraScale+ RFSOC XCZU47DR RF-ADC RF-DAC

SDR++ IAK: A Modified Version of SDR++ Available on the Google Play Store

SDR++ is a popular general-purpose SDR receiver program, commonly used by RTL-SDR enthusiasts. It works on all platforms, including Android; however, the original author has not expressed interest in officially publishing it on the Google Play Store, so sideloading the APK has been the only way to get it on Android.

Recently, we've learned of an unofficial SDR++ fork called "SDR++ iak" that is now on the Google Play Store. The iak fork by OK1IAK includes several improvements, notably a touch-friendly UI overhaul, various crash fixes, KiwiSDR world-map directory, radiosonde decoder, and support for the QRP Labs QMX transceiver.

SDR++ IAK Screenshots
SDR++ IAK Screenshots