RTL-SDR

From ArchWiki

RTL-SDR is a set of tools that enables DVB-T USB dongles based on the Realtek RTL2832U chipset to be used as cheap software defined radios, given that the chip allows transferring raw I/Q samples from the tuner straight to the host device.

See the RTL-SDR wiki for exact technical specifications.

Installation

The latest stable RTL-SDR version can be installed from rtl-sdr.

Bleeding edge is on rtl-sdr-gitAUR.

Note: RTL-SDR conflicts with existing DVB-T drivers in the kernel, and upon installation blacklists the relevant drivers as can be seen in /usr/lib/modprobe.d/rtlsdr.conf. To use the dongle with the original DVB-T drivers, it is required to manually load them, see DVB-T#Driver.

udev rules are installed at /usr/lib/udev/rules.d/10-rtl-sdr.rules and set the proper permissions such that non-root users can access the device.

Tip: The official RTL-SDR software does not include an infrared module. If one is desired, this fork, which includes an rtl_ir module, should be used instead.

rngd claims rtlsdr devices by default - exclude it's use in /etc/conf.d/rngd with RNGD_OPTS="--exclude rtlsdr"

Usage

Performing a simple test, and make sure the dongle works and that there are no lost samples:

$ rtl_test

Raw samples can be captured directly to file (or fifo), for example to tune to 123.4MHz and capture 1.8M samples/sec:

$ rtl_sdr capture.bin -s 1.8e6 -f 123.4e6

Tune to your favorite radio station and pipe to sox for audio:

$ rtl_fm -f 102.7e6 -M wbfm -s 200000 -r 48000 - | aplay -r 48000 -f S16_LE


Using on a Headless Server

To use an RTL SDR device over ssh, add the user you are logging in as to the rtlsdr group. Replace <USERNAME> with your username and run the following:

$ sudo usermod <USERNAME> -a -G rtlsdr

Now, log out and back into a new ssh session. The groups that your user is a member of can be listed with the following:

# groups

If the rtlsdr group shows up, the current user should now be able to use any application that uses the RTL SDR USB device over ssh.

Note that being a member of the rtlsdr group is not necessary if you are logging into your system over a TTY or through a GUI login manager. In that case, the TAG+="uaccess" piece of the /usr/lib/udev/rules.d/10-rtl-sdr.rules config file handles giving you access to the RTL SDR USB device. More details on this are available in archlinux/packaging/packages/rtl-sdr#1.

Applications

Some popular applications that use RTL-SDR:

  • gqrx - a popular SDR receiver with waterfall GUI for Linux
  • urh - complete suite for wireless protocol investigation with native support for many common SDR
  • dump1090-gitAUR - a lightweight ModeS (1090Mhz) decoder
  • multimon-ng - a decoder for various digital modes
  • rtl_433 - protocol aware receiver for multiple devices. Supports automatic packet interception and protocol analyzers for reverse engineering.
  • rng-tools - Random number generator related utilities
  • sdrpp-gitAUR - SDR receiver application with a number of features.

Troubleshooting

When using certain tuners (like generic/unbranded "DVB" devices), the signal can get overloaded very easily even at low gain levels. This is an issue starting with version 2.0.1 of the official rtl-sdr package, which switched from a fork to the official Osmocom repository. To fix this, the package must be downgraded to version 0.8.0-6, or alternatively use the rtl-sdr-librtlsdr-gitAUR package which points to the fork repository which does not have this issue. Any applications which use the libraries from the rtl-sdr package must be re-built against the alternative package.