Integrating Radio Signals with the Smart Home - RTL-433 SDR
I should just get an SDR, replace batteries in the old door sensors of the ancient alarm system and integrate them into Home Assistant. It'll be easy!
I broke up the steps into separate pages below if anyone is interested in seeing how I installed everything or jump right in https://stevewilsonjr.blogspot.com/p/installing-and-setting-up-rtl-433.html.
RTL-433 is an awesome piece of software that can work with an SDR like this Nooelec NESDR Mini 2+ I got from Amazon. There is a list of signals it can decode by default here, and there are ways you can decode them yourself. I spent a good month reading, learning and playing with the thing until I finally got comfortable with what I had.
| Example of LaCrosse Thermometer Sensor with graph overlaying with a BLE device and NWS data |
This was a frustrating and fun experience. First, I have compiled a list of issues and other things I came across along the way that might help.
Caveats Issues and Downsides
- Check version numbers. At the time of this writing, the latest version is 25.2. I had started my testing on a Linux Mint box which is based on Ubuntu. It had installed version 23. I went to install this on my Debian server for production and it was so much better. I wasted so much time playing with availability templates that I don't need.
- With one tuner, you can only pick up one frequency at a time. You can pick up multiple frequencies with one tuner, but then you have to set up a hop interval. Honeywell door sensors are on 345MHz and LaCrosse weather sensors use 433MHz. While it's on one frequency it missed others, so I might miss a door opening or closing.
- Use USB2 ports, don't use USB3. A powered USB hub isn't a bad idea.
- To check if RTL-SDR drivers are installed on Linux, plug in your device and run rtl_test in the terminal. If installed, it will list the device (e.g., Realtek RTL2838UHIDIR) and start sampling. If not found, install using sudo apt install rtl-sdr. Sometimes the driver will be available but the USB port just won't work with the tuner. Try another tuner on another bus.
- Detailed Verification Steps
- List USB Devices: Verify the hardware is detected by running lsusb. Look for
- Bus 001 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
- Run Test Command: Execute rtl_test in the terminal.
- Success: The output will display "Found 1 device(s)" and start showing sample data.
- Failure: It will show "No supported devices found".
- Check Kernel Modules: Ensure the default DVB drivers are not conflicting by running:
- lsmod | grep dvb_usb_rtl28xxu
- Blacklist Conflicting Drivers: If the kernel driver is loaded, it can interfere with the RTL-SDR driver. Prevent this by blacklisting it:
- echo "blacklist dvb_usb_rtl28xxu" | sudo tee /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
- echo "blacklist rtl2838" | sudo tee /etc/modprobe.d/blacklist-rtl2838.conf
- echo "blacklist rtl2832" | sudo tee /etc/modprobe.d/blacklist-rtl2832.conf
- echo "blacklist rtl2830" | sudo tee /etc/modprobe.d/blacklist-rtl2830.conf
- Reboot after running this command.
Now, for the fun stuff
Install RTL-433 and set it up as a service
Coming Soon...
See what you get and try to make sense of it
Add it to HomeAssistant
Comments