GNU Radio World: Browser-Based GNU Radio Flowgraphs

Thank you to Marc Lictman, vice president of GNU Radio, for writing in and sharing with us his new project called "GNU Radio World," which is essentially GNU Radio Companion in a web browser, written in WebAssembly.

If you're not familiar with it, GNU Radio is a very popular free and open-source toolkit for implementing digital signal processing algorithms and applications. It lets you experiment with and build radio receivers, transmitters, and DSP chains through a graphical block-based flowgraph.

Marc Lictman writes:

I thought your readers might be interested in the relatively new website that I put together, https://gnuradioworld.com, as it is starting to have some nice RTL-SDR support, e.g. there is a basic spectrum analyzer and a full ADS-B application with map, but the best part is that it's really just GNU Radio in the browser so you can assemble your own flowgraphs and play around without installing anything, either with live USB SDRs, signal recordings, or simulated signals. It runs entirely client-side and comes with several out-of-free modules (OOTs), including gr-adsb by Matt Hostetter.

The other nice part about GNU Radio World is it comes with dozens of example flowgraphs (see tab on the left) as well as a bunch of example IQ recordings that can be used in place of the typical File Source block, and when you run the flowgraph it streams the IQ to your browser, a lot of the IQ recordings are used in the example flowgraphs to show off various OOTs functionality.

The whole project is free and open source (GPLv3), I think that it will be especially valuable for those learning RF signal processing, and those without a Linux background who want to jump straight into learning GNU Radio. Here are some specific example flowgraphs that may be of interest to RTL-SDR enthusiasts:

If anyone wants to reach out, they can email [email protected] or join the Discord server linked at the top of the site.

We test-drove GNU Radio World with both RTL-SDR Blog V3 and V4 dongles and found it to work well. However, it seems that V4L support has not been added yet. We have forwarded this feedback to Marc, so hopefully it will be supported soon.

GNU Radio World Browser Flow Graph
GNU Radio World Browser Flow Graph
GNU Radio World Running an RTL-SDR Blog V3
GNU Radio World: Running an RTL-SDR Blog V3

GridDown Secure Messenger: Using an SX1262 LoRa Radio as a Drone Scanner and Secure Messenger

Back in March, we posted about GridDown, an open-source Android tablet-based situational awareness system designed to operate without an internet connection, which uses sensors such as an RTL-SDR, a SARSAT receiver and an ESP32-S3/SX1262 LoRa radio.

Recently, GridDown developer Cameron wrote in again and shared with us that the LoRa firmware for GridDown has now been released as an open-source project called "GridDown Secure Messenger" (main website).

The project uses a LILYGO T-Deck CYPHER-M8K (an ESP32-S3 with SX1262, 2.8" display, keyboard, and GPS) to implement secure, encrypted off-grid text messaging, and it also doubles as a 900 MHz drone scanner, with the ability to decode drone Remote ID.

Cameron has also provided two YouTube shorts [1] [2], showing the firmware in action.

Example Renders of the GridDown Secure Messenger Running on a LILYGO T-Deck CYPHER-M8K.
Example Renders of the GridDown Secure Messenger Running on a LILYGO T-Deck CYPHER-M8K.

AI Disclaimer: The renders appear to have been AI-generated.

IC-SDR: A New Multimode SDR Software for Windows Written in Go

Thank you to Luis Lopez Martinez for writing in and sharing the release of his open-source software, IC-SDR, a new multi-mode SDR application for Windows written in Gowith a focus on performance and efficiency. Luis writes:

IC-SDR supports AM, NFM, WFM, LSB and USB demodulation, along with several integrated digital decoders:

  • AIS
  • ADS-B (1090 MHz and UAT 978 MHz)
  • Radiosondes
  • APRS
  • RTL_433
  • DMR
  • SSTV
  • TETRA

It also includes a memory bank, real-time spectrum and waterfall displays, an audio recorder with automatic silence removal, and a frequency-segment scanner with instant triggering.

The Windows release can be found on the project's GitHub Releases page.

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.