ESP32-SDR: Turbo Mode Throughput Improvement + Real I/Q Output

Thank you to Zoltan Doczi for writing in and sharing with us an article he's written explaining how he managed to speed up the ESP32-SDR's sampling time by 50x. The ESP32 has recently been discovered to have undocumented features that let it be used as an SDR. However, ESP32s have very limited USB bandwidth, so the full 80 MS/s I/Q sample rate cannot be sent to a PC, and hence only the spectrum data can be sent to a browser-based UI in bursts with gaps in between.

Previously, the gap was ~42 ms between bursts. However, Zoltan's investigation managed to yield a 50x speedup. The core idea was to implement a data buffer ring across three SRAM banks, so the dump engine never has to stop.

The result is a gapless spectrum output that can rival spectrum analyzers worth thousands of dollars. Zoltan's article explains how the implementation works and provides multiple characterization measurements made with a Signal Hound VSG60 signal generator. 

ESP32 Turbo Mode outputting 80 MS/s / 256 bins, filter wide open: 1295 spectra/s, gapless on chip.
ESP32 Turbo Mode outputting 80 MS/s / 256 bins, filter wide open: 1295 spectra/s, gapless on chip.

Zoltan's work on the SRAM buffer bank also enabled a real I/Q output, albeit limited to a maximum bandwidth of 250 ksps, which we are now starting to see in some ESP32-SDR projects.

To receive the 250ksps limited I/Q data stream on a PC with SDR++, Zoltan created sdrpp-esp-sdr-source, an SDR++ source module that lets an ESP32 act as a real SDR. And then by using a moRFeus signal generator as an upconverter with LO set at 2259.1 MHz, a 90.9 MHz broadcast FM station is mixed up to 2350 MHz. Zoltan was then able to receive the broadcast FM signal with the ESP32-SDR in SDR++.

The module can also stream the full 80 MHz spectrum to SDR++, but this is spectrum data only - no I/Q, so nothing can be demodulated.

The ESP32-S3 Wi-Fi radio is now listening to the FM broadcast band!

ESP32 Showing the Full BCFM Band Spectrum (Spectrum Only - No IQ Data, No Demod Possible)
ESP32 Showing the Full BCFM Band Spectrum (Spectrum Only - No IQ Data, No Demod Possible)

 

esp32-sdr-trx: Use an ESP32-S3 as a Receiver for SDR++ and as an FM/SSB Voice Transmitter on 13cm

Thank you to Jochen (DA2JH) for writing in and sharing with us his project, esp32-sdr-trx,  a software-defined transceiver built from a single ESP32-S3 dev board and two USB cables.

esp32-sdr-trx uses the same undocumented I/Q dump that we posted about previously, which was first discovered by h0m3us3r. To be able to get the data off the ESP32 and into the PC via the ESP32's limited USB streaming bandwidth, it is necessary to decimate the IQ data oln the chip down to 250 or 333 ksps. Then to keep things simple, the espdr-rx tool presents itself as an rtl_tcp server, allowing any RTL-SDR compatible software like SDR++ and GNU Radio to receive data within 1.84 to 2.79 GHz.

On the transmit side, the espdr-tx tool is used to transmit narrowband FM or SSB voice in the 13cm amateur band via a WAV file, audio pipe or sound card. Jochen notes that the ESP32 has no I/Q input so the PHY's test-tone carrier is steered in frequency and amplitude 40,000 times a second (polar modulation).

Jochem notes that there are several limitations to be aware of with this software and hardware "one board and one Linux host tested; the transmitter's power is not calibrated and its harmonics were not measured; transmitting needs an amateur radio licence (the tool asks for confirmation, and the firmware only sends in 2320 to 2450 MHz)".

The ESP32-S3 (Top) |  SDR++ receiving a PlutoSDR through the ESP32 (Left) | SDR++ receiving SSB voice transmitted by the ESP32 with a HackRF. (Right)
The ESP32-S3 (Top) | SDR++ receiving a PlutoSDR through the ESP32 (Left) | SDR++ receiving SSB voice transmitted by the ESP32 with a HackRF (Right)

AI Disclaimer: Jochen notes that much of the code and documentation for this project was written with Claude.

ESPsoup: Turn an ESP32-C5 into a 2.4 & 5 GHz Pocket Scanner with a Connected Phone or PC

Thank you to Peter Holzhauser for writing in and sharing with us his latest open-source project, 'ESPsoup'. Peter has written in previously to share his Android app, V2X2MAP, which detects and plots vehicle V2X (car-to-car) communications used by some modern cars. His new project, ESPsoup, combines an ESP32-C5 and a connected PC or phone into a fully featured scanner for the 2.4 GHz and 5 GHz bands.

ESPsoup has various features including a live spectrum view up to 80 MHz wide, a sweep mode to monitor larger bandwidths, a GPS-enabled heatmapping tool, Bluetooth analysis tools, an AirTag detector, WiFI analysis tools, a car-to-car V2X monitor, a smart home sensor reader, a drone remote ID detector, a microwave oven detector, and an analog FPV video demodulator and display.

The website notes that if you want to monitor multiple FPV drone video channels, up to eight ESP32-C5s have been tested to work together on a single USB hub connected to a PC.

Peter notes that he is planning to add RTL-SDR support to ESPsoup in approximately two weeks, so keep an eye out on their website for updates.

ESPsoup screenshots from a mobile device.
ESPsoup screenshots from a mobile device.

ChronAlert: Live Dashboard for Radio, Weather, Alerts with RTL-SDR Integration for APRS, ADS-B and AIS

Thank you to Danny from brokensignal.tv, who wrote in and shared the release of his new project, 'ChronAlert'. Danny describes ChronAlert as "a free PC-based live dashboard for radio, weather, alerts, and other live information". 

ChronAlert appears to be a situational awareness dashboard that combines multiple live feeds into one screen. It includes feeds like weather and emergency, ham radio & propagation, hazards & infrastructure, and local radio & tracking.

On the local radio side, we see that RTL-SDR is supported for receiving and tracking aircraft and ships via ADS-B and AIS, and for receiving APRS messages.  The dashboard also supports Meshtastic radios, allowing users to see heard Meshtastic nodes and messages.

ChronAlert is free at the basic level, which allows 2 saved panels and 1 watch zone. A one-time fee of US$39.99 unlocks 10 panels and 10 watch zones, as well as various other features.

If you want more information, Danny has also published a detailed article with screenshots about ChronAlert on his blog.

ChronAlert: Weather, Ham Radio, Alerts & More in One Free Dashboard

HamRadioWeb FT8 WSJTx JTDX Remote Control Android App

Thank you to Patricio (LU5AKF) for sharing with us the release of HamRadioWeb.com's new FT8 WSJTx JTDX remote control Android app. Previously, we posted about HamRadioWeb's browser-based remote FT8 and FT4 receiver, and this Android app seems like a natural continuation of their software.

Patricio writes:

The app allows amateur radio operators to remotely control their JTDX or WSJT-X station from any Android phone or PC — no VPN, no port forwarding required.

What operators can do with it:

  • Monitor real-time FT8/FT4 decodes and band activity, just like sitting in front of JTDX or WSJT-X
  • Respond to CQ calls and transmit CQ remotely
  • Check where your signal is being heard via PSKReporter
  • Explore a worldwide activity map and a public DX spot page
  • Keep a contact log — auto-detected or manually added/imported
  • Follow community rankings and chat with other operators

The station connection is handled by a free Windows companion app (HamRadioWeb Companion) that links JTDX or WSJT-X to the user's account.

No radio at hand? The app opens in demo mode with simulated data so anyone can explore before creating an account.

Screenshots from the HamRadioWeb.com FT8 Remote Control App.
Screenshots from the HamRadioWeb.com FT8 Remote Control App.

OFFgrid-SDR: A Fully Offline RTL-SDR Receiver Program in a Single Index.html File

Thank you to Richard Didd for submitting his new software, 'OFFgrid-SDR', a fully offline RTL-SDR receiver program in an installer-free, single index.html file.

The OFFgrid-SDR program runs in any modern WebUSB-compatible browser, can demodulate common modulation types, and includes a spectrum and waterfall display, plus RDS, weather fax, and Morse code decoders. No internet connection is required to run it in the browser.

The program's advantage is that you can put the index.html file on a USB drive and use it portably on almost any machine with a browser. However, Windows users will still need to have installed the WinUSB drivers via Zadig first, and Linux users will need to blacklist the DVB-T drivers from taking over the dongle. macOS and Chromebook should just work without any additional steps.

The code is entirely open source and available on GitHub. More information about the project can be found on the project's GitHub.io page.

OFFgrid-SDR Screenshot
OFFgrid-SDR Screenshot
OFFgrid-SDR Demonstration with RTL card and Demo Mode

FernSDR: An Open-Source WebSDR Server

Thank you to 'magicint1337' for writing in and sharing with us a new program he's created called FernSDR. The author writes that FernSDR is an open-source WebSDR server rebuilt from scratch, based on feedback from WebSDR operators. It replaces his two previous programs, NovaSDR and PhantomSDR, the latter of which we covered in 2024.

A WebSDR program like FernSDR allows users to set up an SDR receiver on a remote device, such as a Raspberry Pi or PC, and access that SDR's data from anywhere in the world via a network connection. The author explains why FernSDR stands out:

What's different: a single binary with no dependencies and a one-line install on any Linux, an admin panel for everything (bands, updates with rollback, modules), day/night band switching by sunrise at the station, and modules for RTL-SDR (incl. Blog V4), RX-888 MkII and SDRplay, plus an FT8 decoder with PSK Reporter spots. In my lab tests against ten other WebSDR servers it had the lowest delay and memory use; the method and raw data are public.

A live demo of FernSDR is available at demo.fernsdr.org. The code is open-source and available on GitHub.

FernSDR: A New WebSDR Server
FernSDR: A New WebSDR Server

sdrtop: A Terminal-Based SDR Bench Tool

Thank you to Viktor László (MusiThang on GitHub), for writing in and sharing with us his new project called sdrtop. sdrtop is a terminal-based SDR tool that is compatible with the HackRF and RTL-SDR. Viktor writes:

I bought a HackRF because I was curious how SDR works and found the whole topic interesting.

Later I wanted to understand what was actually in the radio signals, and I ended up writing a terminal tool for that. Along the way it grew RTL-SDR support too.

sdrtop is a bench instrument in a terminal: spectrum, waterfall, gain and clipping, lab-style readouts, and digital demodulation for measurement, not for listening.

I started it to learn the signal path. What it turned into is a gap I kept hitting: cheap SDRs used for real measurements over SSH, in tmux, or on a cyberdeck, where a heavy GUI just slows you down.

No audio on purpose. If RX stops, the numbers go stale instead of looking fine forever.

I care about being able to trust the numbers, so the signal path is written in Rust from scratch rather than sitting on a DSP library. The only external piece in that chain is the FFT crate. (rustfft).

On RTL-SDR it has native full support (R820T, E4000, R828D): single tuner gain + AGC, spectrum, waterfall, and the measurement panels the dongle can actually back.
HackRF and tinySA are supported as well; Soapy is available in beta for other devices.

Written in Rust, open source, one-person hobby project, and still very much in active development. Classic Bluetooth is in progress; spectrum and lab are what I use every day.

sdrtop reminds us of a few previous terminal-based SDR programs such as sdrrat, as well as terminal-based ADS-B radar displays such as radar-tui and coole-radar.

SDRtop Terminal Based SDR Tool Screenshots
SDRtop Terminal Based SDR Tool Screenshots