Who, why, and how the data was built
About this site
One person, one working deployment, and a dataset assembled out of a government database that does not want to be read by machines.
Why it exists
Every RTL-SDR meter-reading tutorial starts one step too late. They all assume you already have a transmitting meter, and they go straight to installing software.
The question people actually ask first — "will this work at my house?" — was
answered nowhere. It sat scattered across a GitHub wiki, a meters.md file in a
decoder repository, individual FCC filings, and a decade of forum threads. This site
exists to put a straight answer in one place, ideally before anyone spends $40 to
find out the hard way.
The second reason is the number on the front page: 288 of 933 certified meter radios transmit outside the 902–928 MHz band entirely. That is roughly one in three, and it is the exact failure mode where somebody sweeps the ISM band, hears nothing, and reasonably concludes their meter is dead. It is not dead. It is somewhere else. Nobody was telling people that.
Where the data comes from
The lookup is backed by the FCC Office of Engineering and Technology equipment-authorisation database — a public record of every radio certified for sale in the United States. Every device that intentionally transmits has a filing, and that filing states the frequencies it is authorised to use.
Getting it out is the hard part, and it is why this dataset is worth building.
| Stage | Source | How |
|---|---|---|
| Grantee codes → company names | opendata.fcc.gov | Plain HTTPS. The only endpoint not behind bot protection — and the only one with no frequency data. |
| Grants → frequencies | apps.fcc.gov | A real browser. No API exists. |
| Collapse and export | local | Many grant rows per device become one record. |
There is no JSON endpoint for the part that matters. curl gets HTTP 403 from
Akamai even with complete browser headers, and so does a headless browser. Only a
real, visible browser page passes — so every request is issued as a fetch() from
inside a loaded page, at a deliberate two-second interval.
This is a government server behind bot protection, holding a public record that changes slowly. So the data is harvested once and served as a static file — this site never proxies a live query to the FCC, and the whole run is under a hundred requests. Refreshed quarterly at most.
If the FCC ever publishes a real API for grant frequency data, this entire harvester becomes obsolete in an afternoon, and that would be a good outcome.
One detail that shapes the numbers: a single FCC ID has many grant rows — one per authorised emission, plus one per permissive change over the device's life. One manufacturer's 96 grant rows collapse to 42 actual devices. The counts on this site are devices, not rows.
What the field data comes from
The frequencies, protocols and failure modes described here are not compiled from other people's tutorials. They come from a working deployment: two RTL-SDR dongles on a Raspberry Pi, one parked on a gas meter at 912.6 MHz logging continuously, one sweeping 902–928 MHz for anything new.
That deployment is also where the awkward lessons come from — the day lost to a broken antenna element that presented as a software bug, and the discovery that two of three meters at the address have no radio in them at all.
Limits, stated plainly
Being useful requires being honest about what this does not do.
- An authorised band is not a tuning target. A grant of 910–920 MHz means the device may operate anywhere in that span and will typically hop within it. Treat it as where to listen, never as a frequency to punch into a decoder.
- In-band does not mean decodable. The dataset tells you a device is authorised in 902–928 MHz. Whether an open tool actually decodes its particular protocol is a separate question, and one no scraper can answer — it needs a human with a receiver. Filling in that column is ongoing work.
- Coverage is meter manufacturers specifically. A non-match usually means a
misread code, a device that is not a utility meter, or a maker not yet harvested.
0/Oand1/Iconfusion on a stamped plate accounts for most of them. - Regional variation is real. The same manufacturer's meter may be provisioned differently by different utilities. Verify against your own meter.
- Not affiliated with anyone. Not with the FCC, not with any utility, not with any manufacturer.
Who
Built and maintained by one person, along the receiver project that prompted it. Corrections are genuinely welcome — particularly field reports about devices this dataset gets wrong. Get in touch.