The device decoder catalog
rtl_433 ships with a large library of device decoders — one per supported protocol. Each decoder knows how to turn the demodulated pulses of a particular family of ISM-band devices (a weather station, a tire-pressure sensor, a door remote, an energy meter, and so on) into a structured record. The set of decoders is the heart of the project: the current tree has roughly 320 numbered protocol decoders (run -R help to see the exact list for your version), and it grows with almost every release.
This page explains how that catalog is numbered, how to list it, how to turn individual decoders on and off, and how the numbers relate to the source code.
The decoders operate on whatever the radio delivers. rtl_433 is a generic receiver for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915 MHz ISM bands, using RTL-SDR (Realtek RTL2832-based dongles) or, when built with SoapySDR, devices such as LimeSDR, PlutoSDR, and HackRF One.
How the catalog is numbered
Every decoder has a protocol number, shown in square brackets, and a human-readable name:
[01] Silvercrest Remote Control
[02] Rubicson, TFA 30.3197 or InFactory PT-310 Temperature Sensor
[03] Prologue, FreeTec NC-7104, NC-7159-675 temperature sensor
...
[12] Oregon Scientific Weather Sensor
...
[320] Cellular Tracking Technologies LifeTag/PowerTag/HybridTag
The numbered lines above are an illustrative excerpt of the catalog. The authoritative, complete list is whatever your installed binary prints — see Listing the catalog below.
The numbering is positional: protocol N is the N-th decoder registered in the source, and new decoders are usually appended at the end. Protocol numbers are not guaranteed to be stable across releases, though — decoders can be added, removed, or reordered — so confirm a number with -R help for your installed version rather than hard-coding it.
Listing the catalog
The fastest way to see exactly which decoders your build supports — and their numbers — is the -R help form:
rtl_433 -R help
This enumerates the full numbered list and exits. It is the canonical reference, because it reflects the decoders compiled into your binary rather than any external document.
Pipe it through your pager or a search to find a device quickly, for example rtl_433 -R help 2>&1 | grep -i acurite to locate every Acurite decoder and its number.
Enabling and disabling decoders
By default rtl_433 runs every decoder that is enabled by default, so you normally do not need to choose. When you do want to narrow things down, use -R:
| Form | Effect |
|---|---|
-R <n> | Enable only decoder n (repeatable to build an allow-list) |
-R -<n> | Disable decoder n (repeatable) |
-R 0 | Disable all decoders |
-R help | Print the numbered catalog and exit |
The man page describes the flag as: "Enable only the specified device decoding protocol (can be used multiple times). Specify a negative number to disable a device decoding protocol (can be used multiple times)."
For example, to listen for only the LaCrosse TX ([08]) and Oregon Scientific ([12]) decoders:
rtl_433 -R 8 -R 12
Or to run everything except a noisy decoder:
rtl_433 -R -11
And to disable all decoders — useful when you only want raw analyzer output:
rtl_433 -R 0 -A
Some protocols are disabled by default and marked with an asterisk in the catalog listing: "Disabled by default, use -R n or a conf file to enable." These are typically decoders without a message-integrity check (mic), which are prone to excessive false positives. Enable them explicitly with -R n or via a config file when you know the device is present.
For a configuration that persists across runs, the same selections can live in a config file rather than on the command line; see the project's configuration documentation. Note that the old register_all flag (-G) is deprecated — "Use -R or a config file to enable additional protocols."
A representative slice of the catalog
The table below pairs a sample of protocol numbers with their decoders, to show the breadth of device categories the catalog covers. The number/name pairs are real; the category column is editorial grouping for orientation.
| # | Decoder | Category |
|---|---|---|
01 | Silvercrest Remote Control | Remote control |
02 | Rubicson / TFA 30.3197 temperature sensor | Temperature |
03 | Prologue / FreeTec NC-7104 temperature sensor | Temperature |
08 | LaCrosse TX temperature/humidity | Weather |
10 | Acurite 896 Rain Gauge | Weather (rain) |
11 | Acurite 609TXC temperature/humidity sensor | Temperature |
12 | Oregon Scientific weather sensor | Weather |
23 | DSC security contact | Security |
Decoder numbers are positional, so always confirm a number against rtl_433 -R help on the same version you are running rather than trusting a copied list — a decoder added in a later release does not change earlier numbers, but documentation can drift.
How the catalog maps to source
The catalog is auto-documentable: the numbered list, the man page section, and the project website are all generated from a single source of truth — the decoder registration table in include/rtl_433_devices.h. Each decoder is declared there with a DECL(...) entry, and its position in that file is its protocol number. For example, the first entries are silvercrest, rubicson, prologue, waveman, … which is exactly the [01], [02], [03], [04], … order you see in -R help.
Because of this, the catalog is large but mechanical: adding a device means adding a decoder source file and one DECL line, and the numbered listing, help output, and published device list update from there. This is also why the -R help output is the most reliable reference — it is produced from the same table at runtime.
What a decoded record looks like
Every decoder emits records that follow the project's common data format, so output is consistent regardless of which protocol matched:
time : 2026-05-30 14:02:18
model : Acurite-Tower id : 11524
channel : A battery_ok : 1
temperature_C : 21.3 humidity : 47
Illustrative output — exact fields depend on the device.
The model field is formatted <Manufacturer>-<Model>, and the optional mic field reports the integrity check the decoder used (CRC, CHECKSUM, or PARITY). Decoders without a mic are the ones most often disabled by default. See the data-format documentation for the full field list.