Software Defined Radio

Software Defined Radio devices, often abbreviated as SDR, is a radio communication system where components that have been traditionally implemented in hardware (e.g. mixers, filters, amplifiers, modulators/demodulators, detectors, etc.) are instead implemented by means of software on a personal computer.

In short SDR is a programmable radio-receiver which you can connect to your PC. Software on your PC tunes it, and processes/receives/reads the radio-data.

There are numerous cheap USB-dongles which you can buy for approximately €10, and the one I purchased looks like this:

SDR dongle

The USB-device identifies itself as follows when inserted into my desktop:

[17844333.387774] usb 3-9: New USB device found, idVendor=0bda, idProduct=2838
[17844333.387777] usb 3-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[17844333.387778] usb 3-9: Product: RTL2838UHIDIR
[17844333.387778] usb 3-9: Manufacturer: Realtek
[17844333.387779] usb 3-9: SerialNumber: 00000001

Tracking Aircraft

The first use I found for my SDR device, and the reason why I bought it, was for tracking aircraft flying above me.

Getting started was very simple, thanks to the existing software. Getting started involved installing the appropriate dependencies upon my Debian GNU/Linux system:

# apt-get install librtlsdr-dev libusb-1.0-0-dev

Once that was done I could clone antirez's repository, and build it:

$ git clone https://github.com/antirez/dump1090.git
$ cd dump1090
$ make

And run it:

$ sudo ./dump1090 --interactive --net

This failed initially as a kernel-module had claimed the device, but removing that was trivial:

$ sudo rmmod dvb_usb_rtl28xxu
$ sudo ./dump1090 --interactive --net

Once it was running I'd see live updates on the console, every second:

  Hex    Flight   Altitude  Speed   Lat       Lon       Track  Messages Seen       .
  --------------------------------------------------------------------------------
  4601fc          14200     0       0.000     0.000     0     11        1 sec
  4601f2          9550      0       0.000     0.000     0     58        0 sec
  45ac52 SAS1716  2650      177     60.252    24.770    47    26        1 sec

Because the --net flag was provided I could also point my web-browser at the local HTTP-server, and view aircraft in real-time:

I was later informed, via private email, that librtlsdr0 installs a suitable collection of udev-rules that include my device.

I can confirm that restarting udev, and removing + re-inserting the radio-receiver allows me to run the dump1090 command as my regular-user, without the need for sudo.

Decoding Radio Transmissions

A lot of cheap hardware uses Radio transmissions at 433Mhz, for example the "home automation" kits that consist of a small remote control that will allow you to turn on/off electrical outlets, and a large number of wireless temperature sensors.

I took advantage of this myself in my Smart Alarm Button-project, because there is a great piece of software which allows decoding a lot of protocols and devices.

You can download the receiver/decoder from the following link:

Once built, following the instructions, you can launch it like so to listen for all known traffic:

./rtl_433 -G

Leaving that running for a while I soon started receiving interesting data. For example :

2018-02-10 11:53:33 :      Schrader       :      TPMS       :      25
  ID:          1B747B0
  Pressure:    2.500 bar
  Temperature: 6 C
  Integrity:   CRC

This example is me receiving something called "TPMS", which is Tire-pressure monitoring system - transmitted by local car.