rtl_433 turns your Realtek RTL2832 based DVB dongle into a 433.92MHz generic data receiver
How to add support for unsupported sensors
Read the Test Data section at the bottom.
Compiling rtl_433 requires rtl-sdr to be installed.
Depending on your system, you may also need to install the following libraries:
sudo apt-get install libtool libusb-1.0.0-dev librtlsdr-dev rtl-sdr
Installation using cmake:
cd rtl_433/ mkdir build cd build cmake ../ make make install
Installation using autoconf:
cd rtl_433/ autoreconf --install ./configure make make install
The final 'make install' step should be run as a user with appropriate permissions - if in doubt, 'sudo' it.
Usage: = Tuner options = [-d <RTL-SDR USB device index>] (default: 0) [-g <gain>] (default: 0 for auto) [-f <frequency>] [-f...] Receive frequency(s) (default: 433920000 Hz) [-p <ppm_error] Correct rtl-sdr tuner frequency offset error (default: 0) [-s <sample rate>] Set sample rate (default: 250000 Hz) [-S] Force sync output (default: async) = Demodulator options = [-R <device>] Enable only the specified device decoding protocol (can be used multiple times) [-G] Enable all device protocols, included those disabled by default [-l <level>] Change detection level used to determine pulses [0-16384] (0 = auto) (default: 0) [-z <value>] Override short value in data decoder [-x <value>] Override long value in data decoder [-n <value>] Specify number of samples to take (each sample is 2 bytes: 1 each of I & Q) = Analyze/Debug options = [-a] Analyze mode. Print a textual description of the signal. Disables decoding [-A] Pulse Analyzer. Enable pulse analyzis and decode attempt [-I] Include only: 0 = all (default), 1 = unknown devices, 2 = known devices [-D] Print debug info on event (repeat for more info) [-q] Quiet mode, suppress non-data messages [-W] Overwrite mode, disable checks to prevent files from being overwritten = File I/O options = [-t] Test signal auto save. Use it together with analyze mode (-a -t). Creates one file per signal Note: Saves raw I/Q samples (uint8 pcm, 2 channel). Preferred mode for generating test files [-r <filename>] Read data from input file instead of a receiver [-m <mode>] Data file mode for input / output file (default: 0) 0 = Raw I/Q samples (uint8, 2 channel) 1 = AM demodulated samples (int16 pcm, 1 channel) 2 = FM demodulated samples (int16) (experimental) 3 = Raw I/Q samples (cf32, 2 channel) Note: If output file is specified, input will always be I/Q [-F] kv|json|csv Produce decoded output in given format. Not yet supported by all drivers. [-C] native|si|customary Convert units in decoded output. [-T] specify number of seconds to run [-U] Print timestamps in UTC (this may also be accomplished by invocation with TZ environment variable set). [<filename>] Save data stream to output file (a '-' dumps samples to stdout) Supported device protocols: * Silvercrest Remote Control  Rubicson Temperature Sensor  Prologue Temperature Sensor  Waveman Switch Transmitter * Steffen Switch Transmitter * ELV EM 1000 * ELV WS 2000  LaCrosse TX Temperature / Humidity Sensor * Template decoder * Acurite 896 Rain Gauge  Acurite 609TXC Temperature and Humidity Sensor  Oregon Scientific Weather Sensor  Mebus 433 * Intertechno 433  KlikAanKlikUit Wireless Switch  AlectoV1 Weather Sensor (Alecto WS3500 WS4500 Ventus W155/W044 Oregon) * Cardin S466-TX2  Fine Offset Electronics, WH2 Temperature/Humidity Sensor  Nexus Temperature & Humidity Sensor  Ambient Weather Temperature Sensor  Calibeur RF-104 Sensor * X10 RF * DSC Security Contact * Brennenstuhl RCS 2044 * GT-WT-02 Sensor  Danfoss CFR Thermostat * Energy Count 3000 (868.3 MHz) * Valeo Car Key  Chuango Security Technology  Generic Remote SC226x EV1527  TFA-Twin-Plus-30.3049 and Ea2 BL999  Fine Offset WH1080 Weather Station  WT450  LaCrosse WS-2310 Weather Station  Esperanza EWS * Efergy e2 classic * Inovalley kw9015b rain and Temperature weather station  Generic temperature sensor 1 * Acurite 592TXR Temp/Humidity, 5n1 Weather Station, 6045 Lightning * Acurite 986 Refrigerator / Freezer Thermometer  HIDEKI TS04 Temperature, Humidity, Wind and Rain Sensor  Watchman Sonic / Apollo Ultrasonic / Beckett Rocket oil tank monitor  CurrentCost Current Sensor  emonTx OpenEnergyMonitor  HT680 Remote control  S3318P Temperature & Humidity Sensor  Akhan 100F14 remote keyless entry  Quhwa  OSv1 Temperature Sensor  Proove  Bresser Thermo-/Hygro-Sensor 3CH  Springfield Temperature and Soil Moisture  Oregon Scientific SL109H Remote Thermal Hygro Sensor  Acurite 606TX Temperature Sensor  TFA pool temperature sensor  Kedsum Temperature & Humidity Sensor  blyss DC5-UK-WH (433.92 MHz)  Steelmate TPMS  Schraeder TPMS * LightwaveRF  Elro DB286A Doorbell  Efergy Optical  Honda Car Key * Template decoder  Fine Offset Electronics, XC0400  Radiohead ASK  Kerui PIR Sensor  Fine Offset WH1050 Weather Station  Honeywell Door/Window Sensor  Maverick ET-732/733 BBQ Sensor * RF-tech  LaCrosse TX141TH-Bv2 sensor  Acurite 00275rm,00276rm Temp/Humidity with optional probe  LaCrosse TX35DTH-IT Temperature sensor  LaCrosse TX29IT Temperature sensor  Fine Offset Electronics, WH25 Temperature/Humidity/Pressure Sensor  Fine Offset Electronics, WH0530 Temperature/Rain Sensor * Disabled by default, use -R n or -G
||Default receive mode, attempt to decode all known devices|
||Typical usage: Enable device decoders for desired devices. Correct rtl-sdr tuning error (ppm offset).|
||Will run in analyze mode and you will get a text description of the received signal.|
||Enable pulse analyzer. Summarizes the timings of pulses, gaps, and periods. Can be used in either the normal decode mode, or analyze mode.|
||Will run in analyze mode and save a test file per detected signal (gfile###.data). Format is uint8, 2 channels.|
||Play back a saved data file.|
||Will save everything received from the rtl-sdr during the session into a single file. The saves file may become quite large depending on how long rtl_433 is left running. Note: saving signals into individual files wint
||Will pipe the output to network as JSON formatted MQTT messages. A test MQTT client can be found in
This software is mostly useable for developers right now.
Supporting Additional Devices and Test Data
Note: Not all device protocol decoders are enabled by default. When testing to see if your device
is decoded by rtl_433, use
-G to enable all device protocols.
The first step in decoding new devices is to record the signals using
-a -t. The signals will be
stored individually in files named gfileNNN.data that can be played back with
rtl_433 -r gfileNNN.data.
These files are vital for understanding the signal format as well as the message data. Use both analyzers
-A to look at the recorded signal and determine the pulse characteristics, e.g.
rtl_433 -r gfileNNN.data -a -A.
Make sure you have recorded a proper set of test signals representing different conditions together with any and all information about the values that the signal should represent. For example, make a note of what temperature and/or humidity is the signal encoding. Ideally, capture a range of data values, such a different temperatures, to make it easy to spot what part of the message is changing.
Add the data files, a text file describing the captured signals, pictures of the device and/or a link the manufacturer's page (ideally with specifications) to the rtl_433_tests github repository. Follow the existing structure as best as possible and send a pull request.
Please don't open a new github issue for device support or request decoding help from others until you've added test signals and the description to the repository.
The rtl_433_test repository is also used to help test that changes to rtl_433 haven't caused any regressions.
Join the Google group, rtl_433, for more information about rtl_433: https://groups.google.com/forum/#!forum/rtl_433
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.
sudo rmmod dvb_usb_rtl28xxu rtl2832