← Workshop RTL-SDR Browser Scanner v3.2
← Radio Workshop

πŸ“‘ RTL-SDR Browser Scanner

PythonFlask + SSERTL2838 ADS-BAISLocal only

A self-hosted browser interface for any RTL-SDR dongle. Runs a local Python+Flask server and streams the spectrum to a full waterfall display using Server-Sent Events. No WebSocket, no external services β€” your local network only.

What it does

Live waterfall + spectrum

~13fps FFT. Tune 25MHz–1.75GHz. Six presets: FM, ADS-B, AIS, NOAA, ACARS, VHF.

Scan mode

Sweeps a range, dwells per step, auto-detects signals above SNR threshold. Builds a channel list with drag-to-reorder and editable labels.

ADS-B aircraft decoder

rtl_adsb.exe + pyModeS. Click ✈ to decode Mode S transponders. Aircraft table with callsign, altitude, speed, heading. Waits ~30s for CPR pairs before showing positions.

AIS ship decoder

rtl_fm.exe + GMSK demod + pyais. Decode ships on 161.975/162.025MHz. Ships table in popup.

Audio streaming

Device handoff to rtl_fm for FM/AM demod. WAV stream to browser audio element. Server coordinates the handoff β€” only one process holds the device at a time.

Hardware

Software

⚠ pyrtlsdr must be patched. Wrap rtlsdr_set_dithering and several GPIO functions in try/except AttributeError in both librtlsdr.py and rtlsdr.py. Without this the device open call throws AttributeError on 64-bit DLL builds.

Run it

taskkill /F /IM python.exe   # kill any existing instance first
cd C:\your-rtlsdr-folder
python sdr_server.py
# open http://localhost:5000/
⚠ Only one process can hold the RTL-SDR at a time. LIBUSB_ERROR_ACCESS = another process has it open.

Files

Transport: SSE (not WebSocket). WebSocket failed due to version mismatches. SSE is native browser API, no libraries, works reliably.

Forking this

This is a local-only app β€” it needs a running Python process and cannot be deployed to BTH as a static game. Fork this project page to document your own SDR setup, or fork the concept to build a WebSDR-style interface that works without local hardware (there are free SDR APIs available).