rtl_433
rtl_433 (despite the name) is a generic data receiver, mainly for the 433.92 MHz, 868 MHz (SRD), 315 MHz, 345 MHz, and 915 MHz ISM bands.
The official source code is in the https://github.com/merbanan/rtl_433/ repository.
See also a list of software that works with
rtl_433
in the wiki.
For more documentation and related projects, particularly those that
help with rtl_433 development, see the https://triq.org/ site.
It works with RTL-SDR and/or SoapySDR.
Actively tested and supported are Realtek RTL2832 based DVB dongles (using RTL-SDR) and LimeSDR (LimeSDR USB and LimeSDR mini engineering samples kindly provided by MyriadRf), PlutoSDR, HackRF One (using SoapySDR drivers), as well as SoapyRemote.
Building
rtl_433 is written in portable C (C99 standard) and known to compile on Linux (also embedded), FreeBSD, MacOS, and Windows systems.
Older compilers and toolchains are supported as a key-goal.
Low resource consumption and very few dependencies allow rtl_433 to run on embedded hardware.
Most common 32-bit and 64-bit CPU architectures like amd64, arm64, armhf, i386, ppc64el, riscv64, s390x and others are well supported.
See BUILDING.md
Installation
Linux (Debian, Ubuntu): sudo apt install rtl-433. For other distributions see repology or pkgs.org.
FreeBSD: pkg install rtl-433.
MacOS: brew install rtl_433.
Docker images with rtl_433 are available on the github page of hertzg.
How to add support for unsupported sensors
See CONTRIBUTING.md.
Running
rtl_433 -h/* Detailed source-code truncated for AI context efficiency. */Some examples:
| Command | Description |
|---|---|
rtl_433 |
Default receive mode, use the first device found, listen at 433.92 MHz at 250k sample rate. |
rtl_433 -C si |
Default receive mode, also convert units to metric system. |
rtl_433 -f 868M -s 1024k |
Listen at 868 MHz and 1024k sample rate. |
rtl_433 -M hires -M level |
Report microsecond accurate timestamps and add reception levels (depending on gain). |
rtl_433 -R 1 -R 8 -R 43 |
Enable only specific decoders for desired devices. |
rtl_433 -R -216 -R 216 |
Enable all default decoders plus a decoder disabled by default (216). |
rtl_433 -A |
Enable pulse analyzer. Summarizes the timings of pulses, gaps, and periods. Can be used with -R 0 to disable decoders. |
rtl_433 -S all -T 120 |
Save all detected signals (g###_###M_###k.cu8). Run for 2 minutes. |
rtl_433 -K FILE -r file_name |
Read a saved data file instead of receiving live data. Tag output with filenames. |
rtl_433 -F json -M utc | mosquitto_pub -t home/rtl_433 -l |
Will pipe the output to network as JSON formatted MQTT messages. A test MQTT client can be found in examples/mqtt_rtl_433_test_client.py. |
rtl_433 -f 433.53M -f 434.02M -H 15 |
Will poll two frequencies with 15 seconds hop interval. |
Security
Please note: We aim to make rtl_433 safe to use, but it should not be assumed secure.
There is no reason to e.g. run with sudo, we do read and write files without any checks.
The output is literally pulled from thin air, it's not to be trusted.
If you feed downstream systems with data make sure edge cases are checked and handled.
Network inputs and outputs are for use in a trusted local network, will contain unfiltered data, and might overload the recipient
(know that e.g. the MQTT output can be controlled by anyone with a radio sender).
Google Group
Join the Google group, rtl_433, for more information about rtl_433:
https://groups.google.com/forum/#!forum/rtl_433
Troubleshooting
If you see this error:
Kernel driver is active, or device is claimed by second instance of librtlsdr.
In the first case, please either detach or blacklist the kernel module
(dvb_usb_rtl28xxu), or enable automatic detaching at compile time.then
sudo rmmod rtl2832_sdr dvb_usb_rtl28xxu rtl2832or add
blacklist dvb_usb_rtl28xxuto /etc/modprobe.d/blacklist.conf
Releases
Version numbering scheme used is year.month. We try to keep the API compatible between releases but focus is on maintainablity.