Wavelens

Works anywhere in the world · follow your local laws

Two dongles, two jobs: a scanner that also decodes TPMS, sensors and aircraft

31 Oct 2026 · 7 min read · RTL-SDR · rtl_433 · dump1090 · Raspberry Pi

An RTL-SDR streams 2.4 MHz of spectrum to one program. While dsd-fme is following a trunked system, nothing else can open that dongle. The bridge plans around that:

DonglesRoles
1Scanner + sweep. The sweep pauses while you listen; Follow hits from other bands wait.
2One sweeps VHF/UHF/800 and listens; the other runs rtl_433 for TPMS, remotes and sensors on 315/433/915 MHz.
3Sensors · sweep · a dedicated listening dongle, so the sweep never stops.
4…plus a VHF sweep of its own, or dump1090 for ADS-B on 1090 MHz.

Let it plan

With WAVELENS_AUTO=1 in /etc/default/wavelens-bridge (the shipped default), the bridge counts the dongles at every start and assigns those roles itself. The journal says what it decided:

sudo journalctl -u wavelens-bridge -n 50 | grep plan
bridge: plan: RTL-SDR 00001090 → rtl_433 sensors (TPMS, 315/433/915 MHz)
bridge: plan: RTL-SDR 00000978 → VHF + UHF + 800 sweep; listening borrows it
bridge: plan: HackRF not found; 2 RTL-SDR(s) by serial

Prefer to pin it? Set WAVELENS_AUTO=0 and spell it out. This is the two-dongle block that runs in our car:

WAVELENS_RTL433="-d :00001090 -f 315M -f 433.92M -f 915M -H 30 -g 40"
WAVELENS_ARGS="--rtl-power 144M:174M:12.5k@00000978 --rtl-power 440M:470M:12.5k@00000978 \
  --rtl-power 806M:824M:12.5k@00000978 --listen-device 00000978 --rr-county Pinellas"

Either way the bridge adapts: if a named dongle isn't on the bus at start, its job moves to one that is, and the Companion screen's hardware line tells you what each stick is doing right now.

What rtl_433 hears from a car

rtl_433 knows a few hundred sub-GHz protocols. Hopping 315 → 433.92 → 915 MHz every 30 s, from a moving car you get: tyre-pressure sensors of every vehicle around you (each with a unique ID — the bridge uses them to notice a car that keeps pace with you), garage and gate remotes, doorbells, weather stations, utility meters on 915 MHz, and the odd soil or pool sensor. The app files them under Sub-GHz and never alerts on them alone.

The dongle rtl_433 uses doesn't need to be good at 800 MHz, which is why the plan always gives the sensor job to the first stick and the best one to the scanner.

Planes too

If the Pi already runs PiAware (ours does — it's a FlightAware feeder with the day job of counting airliners), the bridge reads dump1090's port 30003 feed and shows aircraft overhead with callsign and altitude. Give it --dump1090 localhost:30003. dump1090 holds its dongle permanently, so count it as one of the "jobs" above; a 1090 MHz stick with the little blue filter is cheap.

Power

Three sticks and a Pi 4 draw about 1.6 A at 5 V with everything streaming. A 3 A USB-C car adapter does it; a cheap 2.1 A one doesn't, and the symptom is a dongle quietly vanishing from the bus. If you see rtl_433 exited … no sensor dongle? or the hardware line shows a stick missing, check the supply before the software.

Rather not build it?

Spotter $64 · Full Spectrum $499: the builds on this blog, programmed and tested, set up for where you drive, with free updates for life. The guides stay here, free, if you change your mind.

Shop Join the free Android beta

Open firmware and bridge on GitHub · receive only · every command on this blog is copied from a Pi we run

Next: Find any trunked system's control channel with rtl_power — no database needed · all articles