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
  • 6.010 — selective fading — switch AM to SAM
  • 6.070 — mains hum — Hum 50 Hz filter
  • 6.120 — electric-fence clicks — Noise blanker
  • 6.190 — weak and hissy — Noise reduction

Shortwave, 41 m band — SSB and CW:

  • 7.210 — SSB voice, LSB (a little noisy) — try the noise filters
  • 7.240 — SSB voice, USB — switch to LSB to hear the difference
  • 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

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: usually nothing to do.

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). The V3 also works.
  • Nooelec NESDR SMArt v5 (R820T2 tuner)

Other RTL2832U sticks with an R820T/R820T2/R828D tuner should work too.

Browsers

OFFgrid-SDR needs a browser with WebUSB: Google Chrome, Microsoft Edge, or another Chromium-based browser (Opera, Vivaldi, Chromium). Firefox and Safari don't support WebUSB; if you open it in one of those, the page says so, and demo mode (index.html?demo) still works there.

Version

The version is shown on the welcome...

Read more »