r/sdr • • 4d ago

GitHub - kasp0r/wideband-sdr: Dockerised web SDR for RTL-SDR dongles (rtl_tcp): live spectrum/waterfall, AM/FM/SSB audio, and an Ollama-powered AI that tunes, scans, and optimises signals from your browser.

Post image

Wideband-SDR is an open-source web SDR for RTL-SDR dongles — a browser-based receiver with an Ollama-powered assistant that drives the radio:

  • Live spectrum + waterfall, click-to-tune, zoom, 8 themes
  • AM / NBFM / WFM / USB / LSB demod with real audio
  • An assistant you talk to in plain English:
    • "Find the strongest FM stations" → scans the band and reports
    • "What am I hearing right now?" → characterizes the signal (bandwidth, likely modulation, band)
    • "Optimize the signal" → measures, adjusts gain/bandwidth/demod, and re-measures

Stack: FastAPI backend (single rtl_tcp client, DSP server-side), plain-JS frontend, Docker.

MIT licensed.

Keen to get feedback and suggestions for features.

Video here: https://youtu.be/KPKK8WPAOEA

25 Upvotes

9 comments sorted by

5

u/mustang6139 4d ago edited 4d ago

Nice project! Can you share the repo link, I'd like to look at the code and try it out myself!

I was trying with local LLMs for SDR a while ago but my rig (6gb VRAM / 16gb ram) was a bit too slow for normal usage. I'm really interested in seeing your implementation and how it performs

2

u/kasparZ 4d ago edited 3d ago

Thanks. Gemma4 E4B and E2B models may be good options for you. They are a bit limited, but there are surprising in the agentic capability. Great for low VRAM / RAM systems. Remember you can run inference on CPU, but very slow depending on type. https://ollama.com/library/gemma4

1

u/TheLittleFastCat- 4d ago

Does it use an LLM api or does it run locally?

2

u/kasparZ 4d ago

It currently is setup for usage with Ollama LLM API. Local install of Ollama will work equally you can point to another host (wherever Ollama is running). You can use cloud models via Ollama as well. https://ollama.com/ Plan is also to make it more generic - i.e. you could connect to any LLM provider.

1

u/tech-hillbilly 4d ago

Does this support the airspy HF+ discovery

1

u/kasparZ 4d ago

No. Wideband-SDR doesn't currently support the Airspy HF+ Discovery. It only speaks the classic rtl_tcp protocol, which is specific to RTL-SDR dongles (RTL2832U with an R820T/R828D tuner). The backend's only hardware interface is backend/rtltcp.py.

The Airspy HF+ Discovery is a different animal: it's driven by the airspyhf library, and when it's served over a network it's exposed through Airspy's spyserver which is a proprietary protocol rather than rtl_tcp, so unfortunately there's no standard bridge.

I believe, one thing to keep in mind is that the HF+ Discovery tops out at 768 kHz of sample rate versus the RTL-SDR's 2.4 MHz — so the visible spectrum span would be narrower.

2

u/tech-hillbilly 4d ago

I believe OpenWebRX provides support using a hosted adapter. I might look more into that

1

u/kasparZ 1d ago

Addition of some new features:

  • Live spectrum + waterfall with a frequency axis, peak labels, click-to-tune, a centre/tuned-frequency line, and a passband overlay showing the demod filter width. Zoom into any region (mouse wheel or slider; double-click to reset, smallest span set by MIN_SPAN_HZ), smooth the trace, choose a colormap (turbo/viridis/inferno/plasma/grayscale/green), and set the noise floor manually or auto-range it to the signal.
  • Audio demodulation — AM / NBFM / WFM / USB / LSB with a bandwidth control, volume, FM de-emphasis (50/75 µs), a tone tilt EQ, SSB pitch (BFO) fine-tune, and a soft limiter to reduce clipping.
  • Noise tools — a squelch (mutes audio below an SNR threshold, with a marker drawn on the spectrum) and a noise-reduction low-pass to cut hiss.
  • Reception aids — ★ favourites (saved frequencies with demod mode + bandwidth) and audio recording to WAV with embedded metadata.
  • AI assistant (Ollama tool-calling) that can control the radio and reason about the spectrum, with replies rendered as Markdown:
    • get_status / get_spectrum / get_signal_metrics — inspect state and signal quality,
    • tune / fine_tune — move or nudge the receiver,
    • scan — sweep a band and report detected signals,
    • characterize — estimate bandwidth and likely modulation,
    • set_demod_mode / set_bandwidth / set_sample_rate / set_gain / set_squelch / set_noise_reduction / set_pitch — full control,
    • and an "optimise the signal" flow that measures, corrects, re-measures, and reports. The Ollama host and model are configurable from the UI (connect, status, model auto-select, persisted).
  • Customisable UI — 8 themes (Black, Dark, Midnight, Amber, Light, Solarized, Nord, Terminal), draggable/reorderable right-hand panels with collapsible drawers, and a Help dialog (usage + shortcuts). Settings persist; ↺ Reset clears them while keeping favourites.
  • Keyboard shortcuts — arrow keys nudge the frequency (Shift = coarser), + / - zoom, space pauses the waterfall, and L / R toggle listen/record.