Category: RTL-SDR

Demod Analyzer: Analyze Digital Modulation (BPSK, QPSK, 16-QAM) in IQ Files

Thank you to Attila Zsellér, who has submitted his latest Python program called "Demod Analyzer". This program is designed for analyzing BPSK/QPSK/QAM16 signals in recorded IQ samples. Atilla writes:

I'm developing OpenStint, an SDR-based lap timing solution for rc racing and motorsport, which [RTL-SDR.COM] presented during the summer. Active transponders emit short bursts of data containing a unique id. By the time of reception, it's often full of various impairments. People are sometimes sending me IQ recordings for debugging purposes, and I was in need of a tool that can do a basic initial analysis on them, just to see if there is a chance of decoding anything.

It's a set of tools, doing a typical RX chain, with instant visual feedback:

  1. Segment the bursts of transmissions based on RSSI
  2. Apply phase/frequency offset (with an "auto" button that just works)
  3. Optional upsample + (matched) filtering
  4. Symbol synchronization
  5. Optional blind-EQ

It supports BPSK/QPSK/QAM-16. By the end of the process, you see the demodulated bits and MER & EVM figures.

There are sample recordings of actual transponders in the repository. It's Python, and the CI builds a Windows-variant. Images are in the github repository.

Demod Analyzer Screenshot
Demod Analyzer Screenshot

AI Disclaimer: The submitted notes that this program was created via vibe coding.

Marine VHF Scanner: A General Purpose Narrowband Receiver and Scanner for the RTL-SDR

Thank you to Wolfgang (OE1MWW) for writing in and sharing with us his software called "Marine VHF Scanner". Although its title suggests it's a Marine band scanner, Wolfgang notes that he has since evolved it into a general-purpose narrowband scanning tool. Wolfgang writes:

Marine VHF Scanner began as a purpose-built receiver for VHF marine channels using an RTL-SDR USB receiver.

It has evolved into a general-purpose narrowband receiver and scanner. User-editable channel databases support marine, airband (AM), 2 m and 70 cm amateur radio (FM), and other AM/FM services within the RTL-SDR tuning range of approximately 24 MHz to 1.7 GHz.

Recent additions include manual and unattended frequency-range sweeps (Section 4.7) and two configurable keyboard hotkeys (Section 4.8) for quickly saving interesting frequencies.

A note on its development
Although the project consists of around 4,000 lines of Python code, I did not write those lines myself. The code was generated - completely - by Claude.ai under my supervision. I developed it iteratively by specifying features, requesting changes, and reporting operational logic errors (views, handling etc.) until reaching Version 6.6.17.

Unique features

  • Pre-recording and recording to WAV files (where permitted by local laws!)
  • Frequency-range scan in Discovery Mode, registering and storing where signals have been heard
  • Frequency-range scan with automatic stop on detected signals - Continue button to go to the next signal.
  • Dual-channel monitoring (helpful for duplex split-frequency stations)
  • Remembers recent settings, the last-used database, and window position
  • Priority Channel button (the same frequency must be twice in the database, once marked PriCh)
  • Database editor for the CSV frequency database
  • JSON settings editor for viewing and editing configuration files

The ZIP package includes English and German manuals and additional documentation.

Download: http://oe1mww.work/marine_vhf_scanner.v6.6.17.zip

The program is supplied as a compiled Windows executable (.exe), together with configuration files (.json), example frequency databases (.csv), recent rtlsdr.dll files, and detailed documentation in the ZIP package.

No Python installation is required. Download, unzip – read the manuals – start it!

To protect your ears, Mute is enabled at startup. Set the volume low and click Unmute before listening.

The Python source code is available on request

Marine VHF Scanner: A general purpose narrowband VHF scanner
Marine VHF Scanner: A general purpose narrowband VHF scanner

AI Disclaimer: This program was generated entirely by Claude.

LakeShark: P25 Phase 1, FM, POCSAG, ADS-B and Sub-GHz with an RTL-SDR on the LilyGO T-Display P4 (ESP32-P4)

Thank you to Samuel Reynolds (aka SAMS0N1TE on GitHub), for writing in and sharing with us his project called 'LakeShark'. LakeShark is firmware for the LilyGO T-Display P4 (an ESP32-P4-based microcontroller with a 4.1 Inch touchscreen, detachable keyboard, GPS, and nine-axis motion sensor), which allows a USB-connected RTL-SDR Blog V3 or V4 to be used for P25 Phase 1 trunking, FM, POCSAG, ADS-B, and sub-GHz capture. Samuel writes:

LakeShark supports P25 Phase I conventional and trunked voice, analog FM, POCSAG pager decoding and 1090 MHz ADS-B, with a spectrum display and waterfall for tuning around.

There are a few other things that might interest your readers:

  • Passive sub-GHz pulse recording with export to Flipper .sub files, so captures can be transferred to a Flipper and opened in its Sub-GHz app.'
  • Offline maps showing aircraft and MeshCore nodes, plus GPS track recording with GPX export.
  • Mixed P25/FM scan lists and a field journal for saving notes with radio readings, position and sensor data.
  • MeshCore messaging and LoRa experiments using the onboard SX1262. The optional MIX-RF keyboard adds CC1101, nRF24 and NFC tools.

The T-Display-P4 touchscreen works on its own, but you can also use the keyboard or connect a Flipper Zero over Bluetooth. LakeShark also supports a headless ESP32-P4 Nano receiver controlled from the Flipper. That lets you keep the radio and antenna in a bag while tuning from the Flipper.

Version 2.2.0 is available now. Experimental work includes manually tuned P25 Phase II decoding, HackRF support and GPS-based scan filtering. Those have separate limitations documented in the wiki. Next steps include live-RF validation, Phase II automatic call following and further work on portable power and everyday usability.

There’s also an experimental CELL WATCH app for surveying cellular-band activity and comparing it against a saved baseline. It’s meant for spotting changes worth investigating, rather than identifying a cell site as malicious or claiming to detect an IMSI catcher.

LakeShark builds on xtrsdr, OP25 and other open-source projects. ADS-B Scope also provided a reference for part of the aircraft position decoding. Full credits are in the README.

Showcase, photos and overview:
https://terminalbay.com/?m=lakeshark-showcase

Source and credits:
https://github.com/SAMS0N1TE/LakeShark

Version 2.2.0 downloads:
https://github.com/SAMS0N1TE/LakeShark/releases/tag/v2.2.0

Flipper companion app:
https://github.com/SAMS0N1TE/LakeShark-Flipper

Wiki and guides:
https://terminalbay.com/?m=wiki

LakeShark is part of a growing repertoire of ESP32-P4 microcontroller RTL-SDR applications. Just last week we posted about OrcSDR, a standalone RTL-SDR application built around the M5Stack Tab5. Back in May, we also posted about a portable open-source 1090 MHz ADS-B firmware for the LILYGO T-Display-P4.

Previously, RTL-SDR applications have only run on full general-purpose CPUs running an OS like Windows/Linux/MacOS/Android. But the ESP32-P4 has shown that commodity microcontrollers are now powerful enough to run an RTL-SDR too, via custom bare-metal drivers and software.

LakeShark Running on A LilyGO T-Display-P4 next to a HackRF (left) and Flipper Zero (right).
LakeShark running on A LilyGO T-Display-P4 next to a HackRF (left) and a Flipper Zero (right).
LarkShark Screens
LarkShark Screens

Frugal Radio: A Six SDR Setup with KrakenSDR and SDRplay for ADSB, ACARS, VDL2, P25

Over on YouTube, Rob from the 'Frugal Radio' channel has uploaded a video showing his multi-SDR monitoring setup that consists of a KrakenSDR, SDRplay RSP1A, and a cheap 12-year-old computer. The KrakenSDR is a 5-channel coherent SDR based on RTL-SDRs, and when connected to a computer, it appears as five independent RTL-SDRs that you can use for any purpose.

Rob currently uses three out of the five channels on the KrakenSDR to monitor three aviation digital signals: ADS-B, ACARS, and VDL2. The SDRplay is used on the same PC to monitor a 700 MHz P25 digital voice system. Rob uses the ADSB.im Docker image, which lets users feed multiple flight aggregation services, such as ADSBExchange, FlightRadar24, FlightAware, etc., all on one device. 

In the future, Rob hopes to add Inmarsat L-band reception with the spare channels on the KrakenSDR, which will be received by a Discovery Dish.

6 x SDR, 4 x monitor PC decoding ADSB, ACARS, VDL2, P25

SDR–: A Software-Defined Radio Application with Visual Signal Path

Thank you to Julian for writing in and sharing with us his interesting project called SDR-- (SDR minus minus). SDR-- is an open-source app that lets you wire devices, decoders, and displays together on a desktop window or browser-based canvas. It is described as "a software-defined radio application with a visual signal path. Connect devices, decoders, displays, and recorders on a canvas, then pin the controls you use to a rack."

A separate Rust server, which can sit on the same PC or a remote computer (like a Raspberry Pi), handles the DSP. Julian notes that SDR-- has native RTL-SDR support, and decoders for ADS-B, AIS, POCSAG, FT8, SSTV, and RDS are already implemented, with more in progress. The app also has a built-in signal generator and a repository of IQ recordings that can be used for experimentation and testing the various decoders.

The project releases are available on GitHub releases, and they cover Windows, Linux, and MacOS. 

SDR-- Screenshot
SDR-- Screenshot

AVARE ADS-B Receiver for Android Updated

All the way back in 2014, we posted about Avare ADS-B Receiver, which back then was a simple RTL-SDR ADS-B receiver and map for Android devices. The author of this app, TFL, recently wrote in and shared that the app is now a modern, fully featured ADS-B app, having added many new features such as UAT decoding with aviation weather products and NEXRAD weather radar/lightning strikes shown on the map, aircraft pictures, better SDR support, traffic filters, and audio alerts.

ADSB Receiver lets you collect live air traffic data directly on your Android device using any RTL-SDR (RTL2832U) dongle and an OTG cable. No cloud. No fees. Just raw RF decoded in real time.

  • Dual-band reception — 1090 MHz Extended Squitter (ES) for worldwide traffic, and 978 MHz UAT for US general aviation traffic plus integrated weather products (METAR, TAF, PIREP, SIGMET, AIRMET, WINDS, NOTAM)
  • Live aircraft details — tap any target on the map to pull a live photo alongside aircraft type and registered operator
  • NEXRAD weather imagery — receive official NEXRAD radar images over UAT 978 MHz
  • Network send/receive —
    • Forward all received data to any GDL90-capable EFB app (AvareX, ForeFlight, iFlyGPS, DroidEFB, and others)
    • Stream dump1090/dump978 frames to any SDR tool on your network, or ingest from an external source
  • Bias Tee and Gain support — power an external LNA or active antenna, adjust Gain as needed
  • Proximity alerts — configurable range-based traffic warnings with optional callsign filtering; useful for drone pilots monitoring airspace
  • Data logging — save all received data
  • Metric support — instead of imperial values

Webpage: https://hiz.ch/index.php/adsb-receiver-avare-adsb

Play Store Links:

https://play.google.com/store/apps/details?id=bs.Avare.ADSB
https://play.google.com/store/apps/details?id=bs.Avare.ADSB.Pro

AVARE ADS-B Receiver Android App
AVARE ADS-B Receiver Android App

FoxSDR: A From-Scratch Software-Defined Radio Receiver for Windows

Thank you to an anonymous contributor (known only as wonderingStars on GitHub) for writing and sharing their project, 'FoxSDR'. FoxSDR is advertised as a 'software-defined radio receiver written from scratch'. Like most receiver programs, it includes a spectrum and waterfall and various demodulation modes.

Key features include a Windows desktop application and optional browser-based interface, a built-in ADS-B decoder and map, and native support for drivers for the HackRF, Airspy R2/Mini/HF+, RTL-SDR, SDRplay RSPs, Mirics MSi2500, RX888 mk2 and the ALDAMN-Pluto. Being browser-based means that the server can run remotely and be placed close to the antenna to reduce signal losses, and the SDR can be accessed from any networked device. They have also recently added AIS, APRS, SSTV, Morse, RTTY, POCSAG, Inmarsat-C, ACARS, SSTV, NOAA APT, GOES HRIT/LRIT, WEFAX, two-tone paging, EAS/SAME alerts, 406 MHz distress beacons, VOR, ERT utility meters, 433 MHz weather sensors, a satellite pass predictor and map, a band survey engine, and OpenStreetMap map imagery.

The contributor writes that FoxSDR is currently Windows-only; however, they will add full Linux support once the Windows version is completely stable. They note that they are in the final stages of the beta and that, based on telemetry, they have over 100 installs in the last month and a few dozen people using it on any given day. They note that their three-year development plan includes support for all operating systems, including Android.

FoxSDR Interface
FoxSDR Interface

Using a Fruit Fly Brain to Tune an RTL-SDR FM Radio

You may have seen in the news that researchers have recently mapped the brain and nervous system of a fruit fly and digitally simulated it in what they call a 'connectome'. Without additional training, the connectome exhibited fruit fly-like behavior when connected to a virtual body, suggesting that the fruit fly's behavior is encoded in its brain structure.

The fly brain neural network can also be hacked into performing other tasks. Various researchers have already repurposed it for tasks like controlling robots, driving a simulated car, playing virtual games like Beat Saber and Doom, trading crypto, and more. One novel fly brain application related to RTL-SDRs was submitted to us by Nik K (SV1EEX). Nik used the fruit fly connectome to tune an RTL-SDR-based FM radio. Nik writes:

Can the reconstructed nervous system of a fruit fly navigate the FM broadcast band and find a radio station?

I built an open-source experiment to test that question using an RTL-SDR Blog V4 and the published adult male Drosophila melanogaster CNS connectome: 165,122 traced neurons connected by more than 10 million signed neural edges.

The RTL-SDR V4 scans the real 87.5–108 MHz broadcast band and creates a panoramic RF environment. Instead of giving the software a list of stations, I convert that measured spectrum into an egocentric visual scene and present it through the 892 retinotopic optic columns used by the connectome simulation. Activity produced by anatomically identified DNa02 descending neurons moves a virtual receiver left or right along the dial.

The experiment also gives the simulated biomimetic fly a substituted RF “mechanosensory” channel. Spectral shape is mapped to bilateral Johnston’s-organ input, while the 19 kHz stereo pilot and 57 kHz RDS subcarrier stimulate JO-A and JO-B populations. This helps distinguish stations that appear similar in power and occupied bandwidth. These mappings are engineered sensory substitutions; they are not a claim that biological flies can detect radio waves.

In one preliminary run on a panorama recorded with the RTL-SDR Blog V4, the connectome-driven controller started at 97.750 MHz. Without receiving the target frequency directly, it entered the predefined ±100 kHz acquisition region around the hidden 95.200 MHz target after 33 actions and stopped at 95.126973 MHz.

The result is deliberately reported as a single preliminary observation. The repository separates external acquisition from neural DNp09 lock events and includes random, visual-only and direct-peak controllers for controlled comparisons.

I describe the resulting system as a connectome-driven virtual embodied agent operating in an RF-derived sensory environment—effectively, a digital fruit-fly nervous system whose world is the FM spectrum and whose movement consists of tuning a radio.

The complete source code, Windows setup, RTL-SDR V4 compatibility fixes, connectome setup procedure, technical manual, experimental protocol, limitations and acquisition dashboard are available here:

https://github.com/z1000biker/DrosophilarRFsensory

The project builds on the open-source flycoinrh implementation and the published adult male Drosophila CNS connectome.

Fly Brain FM Dial
Fly Brain FM Dial