Building rtl_433
rtl_433 currently supports these input types:
- RTL-SDR (optional, recommended)
- SoapySDR (optional)
- files: CU8, CS16, CF32 I/Q data, U16 AM data (built-in)
- rtl_tcp remote data servers (built-in)
Building rtl_433 with RTL-SDR or SoapySDR support is optional but using RTL-SDR is highly recommended. The libraries and header files for RTL-SDR and/or SoapySDR should be installed beforehand.
Nightly builds
Some distributions offer nightly builds.
openSUSE
openSUSE users of at least Leap 42.3 or Tumbleweed can add the repository with daily builds:
$ sudo zypper addrepo -f obs://home:mnhauke:rtl_433:nightly/rtl_433
rtl_433-nightly
$ sudo zypper install rtl_433
The usual update mechanism will now keep the rtl_433 version current.
Fedora
Fedora users (38, 39 and Rawhide) can add the following copr repository to get nightly builds:
$ sudo dnf copr enable tvass/rtl_433
$ sudo dnf install rtl_433
The usual update mechanism will now keep the rtl_433 version current.
Linux / Mac OS X
Depending on your system, you may need to install the following libraries.
Debian:
sudo apt-get install libtool libusb-1.0-0-dev librtlsdr-dev rtl-sdr build-essential cmake pkg-config
- If you require TLS connections, also install
libssl-dev
(sudo apt-get install libssl-dev
).
Centos/Fedora/RHEL with EPEL repo using cmake:
- If
dnf
doesn't exist, useyum
. - If you require TLS connections, install
openssl-devel
.
sudo dnf install libtool libusb1-devel rtl-sdr-devel rtl-sdr cmake
Mac OS X with MacPorts:
- If you require TLS connections, install
openssl
from either MacPorts or Homebrew.
sudo port install rtl-sdr cmake
Mac OS X with Homebrew:
brew install rtl-sdr cmake pkg-config
CMake
Get the rtl_433
git repository if needed:
git clone https://github.com/merbanan/rtl_433.git
Installation using CMake and Make (commonly available):
cd rtl_433/
cmake -B build
cmake --build build --target install
Installation using CMake and Ninja (newer and faster):
cd rtl_433/
cmake -DFORCE_COLORED_BUILD:BOOL=ON -GNinja -B build
cmake --build build -j 4
cmake --build build --target install
If installing to a global prefix (e.g. the default /usr/local
) then instead run make install
with privileges, .i.e.
sudo cmake --build build --target install
Use CMake with -DENABLE_SOAPYSDR=ON
(default: AUTO
) to require SoapySDR (e.g. with Debian needs the package libsoapysdr-dev
), use -DENABLE_RTLSDR=OFF
(default: ON
) to disable RTL-SDR if needed. E.g. use:
cmake -DENABLE_SOAPYSDR=ON ..
Tips
If you use CMake older than 3.13 (check cmake --version
), you need to build using e.g. mkdir build ; cd build ; cmake .. && cmake --build .
Tips
In CMake 3.6 or older the OpenSSL search seems broken, you need to use cmake -DENABLE_OPENSSL=NO ..
Warning
If you experience trouble with SoapySDR when compiling or running: you likely mixed version 0.7 and version 0.8 headers and libs. Purge all SoapySDR packages and source installation from /usr/local. Then install only from packages (version 0.7) or only from source (version 0.8).
Package maintainers
To properly configure builds without relying on automatic feature detection you should set all options explicitly, e.g.
cmake -DENABLE_RTLSDR=ON -DENABLE_SOAPYSDR=ON -DENABLE_OPENSSL=ON -DBUILD_DOCUMENTATION=OFF -DCMAKE_BUILD_TYPE=Release -GNinja -B build
cmake --build build -j 10
DESTDIR=/tmp/destdir cmake --build build --target install
Windows
Visual Studio 2017
You need PothosSDR installed to get RTL-SDR and SoapySDR libraries. Any recent version should work, e.g. 2021.07.25-vc16.
When installing PothosSDR choose "Add PothosSDR to the system PATH for the current user".
For TLS support (mqtts and influxs) you need OpenSSL installed. E.g. install Chocolatey then open a Command Prompt and
choco install openssl
Clone the project, e.g. open Visual Studio, change to "Team Explorer" > "Projects" > "Manage Connections" > "Clone" and enter https://github.com/merbanan/rtl_433.git
If you want to change options, in the menu select "CMake" > "Change CMake Settings" > "rtl433", select e.g. "x64-Release", change e.g.
"buildRoot": "${workspaceRoot}\\build",
"installRoot": "${workspaceRoot}\\install",
To start a build use in the menu e.g. "CMake" > "Build all"
Or build at the Command Prompt without opening Visual Studio. Clone rtl_433 sources, then
cd rtl_433
cmake -G "Visual Studio 15 2017 Win64" -B build
cmake --build build
MinGW-w64
You'll probably want librtlsdr and libusb.
libusb has prebuilt binaries for windows, librtlsdr needs to be built (or extracted from the PothosSDR installer)
librtlsdr
taken and adapted from here: https://www.onetransistor.eu/2017/03/compile-librtlsdr-windows-mingw.html
- install MinGW-w64 and CMake
- it's easiest if you select the option to include CMake in your path, otherwise you'll need to do this manually
- download the libusb binaries from https://sourceforge.net/projects/libusb/files/libusb-1.0/ or from https://libusb.info/
- take the latest release and then download the .7z file, the other file contains the sources (or 'windows binaries' on the .info website)
- extract the archive and open the extracted folder
- copy the contents of the include folder to
<mingw_installation_folder>/include
- copy the
mingw64/dll/libusb-1.0.dll.a
file to `<mingw_installation_folder>/lib - copy the
mingw64/dll/libusb-1.0.dll
file to<mingw_installation_folder>/bin
- download the source code of librtlsdr https://github.com/steve-m/librtlsdr
- go into the librtlsdr folder
- open CMakeLists.txt with an editor that knows unix line endings
- go to
# Find build dependencies
(around line 65) and comment/remove the line withfind_package(Threads)
- add the following lines instead:
SET(CMAKE_THREAD_LIBS_INIT "-lpthread")
SET(CMAKE_HAVE_THREADS_LIBRARY 1)
SET(Threads_FOUND TRUE)
- go into the cmake/modules folder and open FindLibUSB.cmake with a text editor
- find the lines with the following text in them
/usr/include/libusb-1.0
/usr/include
/usr/local/include
- add some extra lines to point to the MinGW include folder where you extracted libusb-1.0, making it look like this
- take note of the "" around the folder names, these are needed when there are spaces in the folder name
- you'll need to find out the exact paths for your system
/usr/include/libusb-1.0
/usr/include
/usr/local/include
"C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/include"
"C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/include/libusb-1.0"
- open a MinGW terminal in the librtlsdr folder
- generate makefiles for MinGW:
cmake -G "MinGW Makefiles" -B build
- build the librtlsdr library:
cmake --build build
rtl_433
- clone the rtl_433 repository and cd into it
- run
cmake -G "MinGW Makefiles" -B build
in the build directory - run cmake-gui (this is easiest)
- set the source (the rtl_433 source code directory) and the build directory (one might create a build directory in the source directory)
- click configure
- select the grouped and advanced tickboxes
- go into the librtlsdr config group
- point the
LIBRTLSDR_INCLUDE_DIRS
to the include folder of the librtlsdr source - point the
LIBRTLSDR_LIBRARIES
to thelibrtlsdr.dll.a
file in the <librtlsdr_source>/build/src folder- that's the one you've built earlier
- start a MinGW terminal and run
cmake --build build
to build- when something in the tests folder doesn't build, you can disable it by commenting out
add_subdirectory(tests)
in the CMakeLists.txt file in the source folder of rtl_433
- when something in the tests folder doesn't build, you can disable it by commenting out
- rtl_433.exe should be built now
- you need to place it in the same folder as librtlsdr.dll and libusb-1.0.dll (you should have seen both of them by now)
- good luck!
If your system is missing or you find these steps are outdated please PR an update or open an issue.