Receiver · antenna · host
The hardware, and what actually matters in it
Four items, about $60 all in. Only two of the four decisions matter, and the one everybody obsesses over is not one of them.
Before spending anything, check that your meter transmits. Roughly one meter radio in three is not in the 902–928 MHz band at all, and no amount of good hardware fixes that.
Assuming it does transmit, here is the whole shopping list.
| Item | Rough cost | Matters? |
|---|---|---|
| RTL-SDR dongle with a TCXO | $30–40 | Yes — but only the TCXO part |
| Antenna cut for 915 MHz | $10–25 | Yes. Most of all. |
| Host computer | $0–60 | Anything with USB works |
| USB extension cable | $6 | More than you would think |
The dongle
Any receiver built on the RTL2832U demodulator with an R820T2 tuner will do this job. That describes most of the market: Nooelec NESDR Smart, RTL-SDR Blog V3, and a long tail of unbranded kits.
The one specification worth paying for is a TCXO — a temperature-compensated crystal oscillator. Bargain dongles use a plain crystal that sits somewhere between 30 and 100 ppm off frequency, and worse, moves as the dongle warms up. At 915 MHz, 100 ppm is about 91 kHz of error.
rtlamr captures a wide slice of spectrum and searches inside it,
so it tolerates a static frequency offset far better than a narrowband receiver
would. A cheap dongle usually works.
What a TCXO actually buys you is the elimination of drift as a variable. Warm-up drift is why a setup decodes fine for ten minutes and then goes quiet, and why it behaves differently in a cold garage than on a desk. When something stops working at 3am you want the oscillator off the list of suspects.
The V4 trap
The RTL-SDR Blog V4 is a good receiver and a bad default recommendation, because it does not use the R820T2 — it uses an R828D with a different tuning arrangement. It needs a librtlsdr build that knows about it. On an older distribution, the V4 will be detected, will appear to open, and will return noise or nothing at all, with no error message that points at the real cause.
If you buy a V4, install the driver from RTL-SDR Blog's own fork before
concluding anything about your meter. If you would rather not think about it, buy
a V3 or a Nooelec and the stock rtl-sdr package in any distribution will just
work.
Running two dongles
Worth knowing early, because it changes what you buy: a common and genuinely useful layout is two dongles — one parked on your meter's frequency logging continuously, one sweeping the band looking for anything new.
Both dongles ship with the same serial number, 00000001, which means
librtlsdr cannot tell them apart and your two services will fight over
whichever enumerates first. Fix it once, permanently, before wiring anything up:
rtl_eeprom -d 0 -s 1000 # the watcher
rtl_eeprom -d 1 -s 2000 # the surveyor
Then address them by serial (-d serial=1000) in every service file rather than
by index, and reboot order stops mattering.
The antenna
This is the decision that determines whether the project works. It is also the one that gets skipped, because dongles come in kits with an antenna in the box and it is natural to assume the included antenna is fit for purpose. It usually is not — the telescopic whips in cheap kits are cut for VHF/UHF television and are roughly four times too long for 915 MHz.
A quarter-wave at 915 MHz is 8.2 cm:
λ = 300 / 915 MHz = 32.8 cm
λ/4 = 32.8 / 4 = 8.2 cm
So: either buy a whip actually specified for 900–930 MHz — they exist for a few dollars, sold for LoRa and ISM telemetry — or collapse the telescopic whip in your kit down to 8.2 cm, which works surprisingly well against the kit's magnetic ground plane.
On one deployment the entire receiver went deaf after a hardware move. A day went into driver versions, sample rates, and service configuration. Both dongles tested fine on a bench. The cause was a bad radiator element — a physically broken antenna. Swapping the radiator fixed it instantly.
A dead antenna and a meter that does not transmit produce byte-for-byte identical output: nothing. Nothing is not a diagnosis. Before you conclude anything about your meter, prove the antenna independently.
The cheapest possible proof: your meters' neighbours. Point the receiver at the
band, run rtlamr -filterid= with no filter, and see whether anybody's meter
appears. If half a dozen strangers' IDs scroll past, the antenna and receiver are
good and the problem is elsewhere. If the screen stays empty in a residential
neighbourhood, suspect the antenna long before you suspect the software.
The host
Anything with a USB port. A Raspberry Pi is the natural fit because this is a
service you want running unattended for years, and a Pi's power draw makes that
painless. A Pi Zero W is marginal — rtl_tcp plus a decoder at 2.4 MSPS is real
CPU work — while any Pi 3 or later has ample headroom.
Two host-level details that cost real time:
- Get the dongle away from the computer. A Raspberry Pi is an unshielded digital board radiating broadband hash, and 900 MHz sits right in it. A $6 USB extension that moves the dongle 50 cm away and toward a window is the highest return-per-dollar purchase in this entire list — frequently a larger improvement than upgrading the dongle.
- Power matters. RTL dongles draw noticeably more than a typical USB device. On an underpowered supply you get intermittent USB resets that read as random decode failures.
What not to buy
- A HackRF, an SDRplay, or anything over $100. Meter traffic at 915 MHz is strong, unencrypted, and narrow. A $30 dongle is not the limiting factor and never will be. Spend the difference on the antenna.
- An LNA, at first. Meters within a hundred metres arrive plenty strong. An amplifier in a dense RF environment more often makes things worse by overloading the front end.
- A 900 MHz filter, at first. A SAW bandpass filter is genuinely useful if you are near a cell site or a paging transmitter and seeing intermodulation. Buy it as a fix for a problem you have measured, not as insurance.
- An upconverter or downconverter. Not needed. 915 MHz is comfortably inside the RTL2832U's native range.
Software
All free, all open source.
| Tool | Use it for |
|---|---|
| rtl_test | Proving the dongle enumerates and reporting its tuner and PPM error |
| rtlamr | The ERT family: SCM, SCM+, IDM, R900. This is the one you want. |
| rtl_433 | Everything else on the band — and a good first sweep, because it tries hundreds of decoders at once |
| rtl_power | A spectrum sweep as a heat map. Answers "is there anything here" without decoding. |
Start with rtl_433 in its promiscuous default mode for the first sweep. Once
you know what protocol your meter speaks, switch to rtlamr filtered to your own
meter ID and leave it running.
Next
Where this leads.