OFFgrid-SDR
Offline RTL-SDR receiver for your browser Source & downloads: github.com/diddy-boy/OFFgrid-SDR
A self-contained web receiver for RTL-SDR sticks (tested with the RTL-SDR Blog V4), built for listening to FM, medium wave and shortwave broadcasts — anywhere, with or without an internet connection. Everything — radio libraries, DSP, fonts — is inside index.html. Nothing is downloaded when it runs.
Demonstration Video
==== HOW TO RUN ====
1. Put index.html anywhere (a USB pen drive works too). It's the whole receiver: one file, nothing else needed. Grab it from GitHub — open index.html in the repo and click "Download raw file".
2. Open index.html in Google Chrome, Microsoft Edge, or Opera (desktop or Android). Safari and Firefox do not support WebUSB, so the stick cannot be used there.
3. Plug in the stick, press Power on, and pick the stick in the browser's USB chooser.
-- No stick handy? Try the demo --
Open index.html?demo for simulated stations — no hardware required.
(In Chrome: open index.html, add ?demo to the end of the address bar, press Enter.)
A "Demo stations" list appears — press Power on, then click any station:
FM
• 98.8 — stereo + RDS (name, RadioText, clock) — try Stereo / Wide / Mono
• 99.3 — weak stereo, RDS comes and goes — try Mono
• 100.0 — mono talk station, RDS "News"
• 101.1 — classical, stereo, RDS
Shortwave, 49 m band — one station per filter, all visible on the waterfall at once:
• 5.950 — clean reference station
• 5.985 — a whistle from a nearby carrier — click Notch
• 6.010 — selective fading — switch AM to SAM
• 6.070 — mains hum — Hum 50 Hz filter
• 6.120 — electric-fence clicks — Blanker
• 6.190 — weak and hissy — Noise reduction
Shortwave, 41 m band — SSB, CW and weather fax:
• 7.210 — SSB voice, LSB (a little noisy) — try the noise filters
• 7.240 — SSB voice, USB — switch to LSB to hear the difference; try the SSB filter widths
• 7.275 — CW Morse beacon, 20 WPM — the CW decoder shows its message: "OFFGRID-SDR DESIGNED BY DIDDY"
• 7.330 — AM broadcaster — compare its loudness with SSB
• 7.395 — fast CW Morse beacon, 35 WPM — the decoder learns the speed by itself
• 7.425 — weather fax — the decoder draws a test chart
Mystery
• 4.625 — a simulated Buzzer (UVB-76), with its 25-buzzes-a-minute rhythm
==== ONE-TIME DRIVER SETUP ====
The browser must be allowed to talk to the stick directly.
Windows: Run Zadig, go to Options → List All Devices, choose "Bulk-In, Interface (Interface 0)" / RTL2838UHIDIR, select WinUSB, and click Replace Driver.
Linux: four steps, then check.
1. Stop the TV driver loading at boot:
echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-sdr-blacklist.conf
2. Unload it now (the blacklist alone does not unload a driver that is already running — skipping this causes "setRegBuffer failed" errors):
sudo modprobe -r rtl2832_sdr dvb_usb_rtl28xxu
(or simply reboot)
3. Give your user access to the stick:
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE="0666"' | sudo tee /etc/udev/rules.d/20-rtlsdr.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
4. Unplug the stick and plug it back in.
Check: lsmod | grep -i rtl28 should print nothing.
Snap Chromium (Ubuntu): also run sudo snap connect chromium:raw-usb.
Also stop anything else using the stick (rtl_tcp, rtl_433, gqrx, SDR++).
(OFFgrid-SDR also retries USB commands that Linux reports as "stalled" — up to 5 times, waiting a little longer each time — which otherwise stopped the stick starting up on some Linux systems.)
macOS: No configuration needed
Chromebooks: No configuration needed
Only one program can use the stick at a time — close SDR#, SDR++, etc. first.
==== SUPPORTED STICKS ====
Tested by the OFFgrid-SDR author:
• RTL-SDR Blog V4 (recommended: HF without any adapter, 4.5 V bias-tee)....
Read more »
diddy




APRS ALL IN ONE