Category: Applications

An Open Source VOR Receiver for Airspy and RTL-SDR

Thank you to Thierry Leconte (TLeconte) for writing in and submitting his new command line based open source software called vortrack. Vortrack is a simple VOR decoder which calculates the angle towards the VOR. It is compatible with both RTL-SDR and Airspy radios, and runs on Linux.

In the past we've seen several other posts about RTL-SDRs being used to decode VOR signals, but Thierry's implementation appears to be the easiest way to get a bearing straight away. You'll get the most use out of the software if you install it on a portable device like a Raspberry Pi and take it out for a drive as you'll be able to see the VOR angle changing then.

VOR stands for VHF Omnidirectional Range and is a way to help aircraft navigate by using fixed ground based beacons. The beacons are specially designed in such a way that the aircraft can use the beacon to determine a bearing towards the VOR transmitter. VOR beacons are found between 108 MHz and 117.95 MHz, and it's possible to view the raw signal in SDR#.

A DVOR Ground Station at an Airport. Source Wikipedia.
A DVOR Ground Station at an Airport. Source Wikipedia.

Motherboard Article: Creating an IMSI Catcher with an RTL-SDR

Motherboard, an online technology magazine has recently run an article titled "With $20 of Gear from Amazon, Nearly Anyone Can Make This IMSI-Catcher in 30 Minutes". The article describes how an RTL-SDR together with the IMSI-Catcher Linux software can be used to collect IMSI numbers from cellphones connected to a nearby cell tower. The IMSI is a unique number assigned to each SIM card and collecting this data could be used to identify if someone is in the area covered by the cell tower.

The IMSI-Catcher software only works with the older 2G GSM signals which are now being phased out in some countries and are relatively unused in others. Also unlike more advanced IMSI-Catchers which create a fake cell tower signal, the RTL-SDR based IMSI-Catcher can only collect IMSI numbers when the cellphone first connects to the cell tower.

One of our older posts with a YouTube tutorial video explains the RTL-SDR IMSI Catcher in more detail. 

IMSI-Catcher Python Script
IMSI-Catcher Python Script

Measuring Broadcast FM Multipath Distortion with an RTL-SDR

Over on GitHub user jj1bdx has just released a new tool called rtl_power-fm-multipath which can be used for estimating broadcast FM multipath distortion with an RTL-SDR. Broadcast FM multipath is caused when a signal is received from multiple directions due to it reflecting off and refracting through physical objects like buildings and terrain. As the reflected/refracted signals will be delayed it can cause echo like distortions in the RF signal which can cause issues like poor digital decoding, poor FM audio reception and ghosting in analogue video.

The multipath distortion estimation method works by measuring the ratio of the strength of direct/reflected radio waves which results in the desired/undesired (D/U) ratio. This measurement method was proposed by Komiya87 and JushinFM who both wrote papers in Japanese describing the method. In summary the methodology is:

  • Measure the maximum peak strength for +-50kHz spectrum of the target FM station
  • Obtain the maximum value (Lmax) and minimum value (Lmin) within the spectrum
  • Obtain the ratio of the maximum and minimum values L = Lmax / Lmin (note: Lmax and Lmin are real values (not in dB), and L must be > 1)
  • The estimated D/U ratio R = (L+1) / (L-1) (in the real value, not in dB)

The rtl_power-fm-multipath program is based on rtl_power and works by using rtl_power to record power measurements for 5 minutes, then sending the data to a peakhold function which computes the maximum power value for each frequency, and then calculations the distortion ratio.

An example of Multipath Distortion on a DAB+ Signal. From Gough Lui's post https://goughlui.com/2015/03/28/trip-to-hk-cn-2014-part-5-rtl-sdr-more-radio-ais-night-photos/
An example of Multipath Distortion on a DAB+ Signal. From Gough Lui's post at https://goughlui.com/2015/03/28/trip-to-hk-cn-2014-part-5-rtl-sdr-more-radio-ais-night-photos

Setting up Air Traffic Control Audio Sharing with Broadcastify, RTL-Airband, RTL-SDR and a Raspberry Pi

Over on YouTube Fuzz The Pi Guy has uploaded a video tutorial showing how to set up a Broadcastify air traffic control audio feed with RTL-Airband and an RTL-SDR running on a Raspberry Pi. This allows you to publicly share your received air traffic control audio online via sites like Broadcastify.

The video is based on a comprehensive Radioreference text tutorial which takes you through the process from scratch. Setting it up involves installing the Raspbian OS, installing RTL-SDR, installing and setting up RTL-Airband, configuring ezstream and then ensuring that everything runs automatically on boot. It's a fairly involved setup process, but the video helps make things easier.

How To Setup Broadcastify On A Raspberry Pi Using RTL_AM For Aviation

Video Tutorial: Installing GNU-Radio on Windows 10

Over on YouTube user Petr Horký has uploaded a helpful tutorial video showing how to install GNU Radio on Windows 10. Petr goes through the steps from installing Python, pip and other dependencies like numpy and pyqt, to installing GNU Radio itself and then ensuring that the system PATH is set correctly.

GNU Radio is a block based programming language for building digital signal processing applications (e.g. demodulators/decoders). It is very useful for experimenting with more advanced SDR concepts, and there are also many RTL-SDR compatible applications built with GNU Radio as well. GNU Radio is typically run on Linux, but can also run on Windows now too, although perhaps not every program will be compatible.

How to install GNU Radio Companion on Windows 10 (pip, environment variables)

USA-Satcom XRIT Decoder Updated

USA-Satcom is the programmer of XRIT Decoder (not to be confused with XRITDecoder by CM2ESP), which is a popular (paid) Windows decoding application for GOES weather satellites. Recently, over on the SDRplay forums RSP2user made a note about the latest update:

USA-Satcom has just released v2.1.0.0 of the XRIT Decoder. Along with enhancements for the XRIT Decoder, a new RSP Streamer X has been released and is operable with the RSP1A, RSP2, and RSPduo - new features include operation with two streams simultaneously (provided that the PC being used has sufficient processing power and an RSPduo or more than one compatible RSP are being used). Also new is the XRIT File manager which allows for improved operation with both LRIT and HRIT files, improved LUT for excellent false color images, user-selectable automated black filling of the white background on full disk visual and false color HRIT images, and country as well as state map overlays.

The new color enhancements are excellent:

GOES 16 Full Disk Weather Satellite Image. Received by RSP2user with V2.1.0.0 of XRIT Decoder.
GOES 16 Full Disk Weather Satellite Image. Received by RSP2user with V2.1.0.0 of XRIT Decoder.

If you are interested in receiving and decoding GOES images, we now have several previous blog posts on this topic which may be helpful.

A Tutorial on Receiving HF SSTV with a Raspberry Pi and RTL-SDR V3

Thank you to Giuseppe (IT9YBG) who has written in to share his tutorial about setting up a direct sampling RTL-SDR V3 based SSTV receiver on a Raspberry Pi. He writes that he uses the receiver to continuously receive images at 14.230 MHz, but with a frequency tweak in the command line code the system could also be used to receive the VHF SSTV images sent by the ISS.

In the tutorial he uses the free QSSTV software for decoding. An RTL-SDR together with the CSDR DSP software is used to set up a command line based receiver, which pipes the SSTV audio into a virtual audio sink, and then into QSSTV. The receiver setup procedure is similar to the method used in our RTL-SDR V3 QRP monitoring station tutorial, and is a very nice way of setting up an efficient command line based RTL-SDR audio output.

QSSTV Running on a Raspberry Pi with RTL-SDR V3 Radio
QSSTV Running on a Raspberry Pi with RTL-SDR V3 Radio

A Multi-Feature Raspberry Pi Radio with RTL-SDR, Internet Radio, Google Assistant and Alexa

Recently JJ wrote in and wanted to share his multi-feature living room radio that he's created with a Raspberry Pi, RTL-SDR, and various software packages installed on the Pi. Previously we posted about his cute LegoPi radio, and this living room radio is an iteration on that.

The radio is able to tune into live broadcast FM via an RTL-SDR and the NGSoftFM software, and also can be remotely access with SpyServer. It can also tune into internet radio, or play MP3 files. He's also installed Google Assistant and Alexa onto the Pi, so it can work as a digital assistant too. The features and software he uses are noted below:

FM / DAB+ / Internet radio with random mode / MP3 player / Google assistant / Amazon Alexa / SPYserver (SDRsharp), all controlled with a USB keypad or a Bluetooth remote control.

OS
I used RASPBIAN STRETCH LITE (https://www.raspberrypi.org/downloads/raspbian/)
Small, efficient and very stable (NO GUI). Radio boots in 15 seconds (Raspberry Pi 3 Model B).

FM
NGSoftFM (https://github.com/f4exb/ngsoftfm)
Works well but needs a clean / strong signal.

DAB+
dab-cmdline (https://github.com/JvanKatwijk/dab-cmdline)
Works well but needs a clean / strong signal. I used example-2.

Internet radio
VLC (https://www.videolan.org/vlc/index.html)
The random internet radio part is a lot of fun to use. You can do random by genre or just random everything. Reminds me when turning the MW dial at night when I was a kid and not knowing what was coming next!
It is just a python script that fetch the icecast directory then populate a small SQL database on the pi. I used this (https://github.com/ksc91u/icecast_play) as a starting point.

MP3 player
VLC. I used a 16GB SD card on the pi (good compromise between speed of boot versus capacity). The whole system takes a little bit less than 5GB, which means I have 10GB+ for MP3 files.

Google assistant
Fun and addictive, I used an old webcam that was gathering dust as a USB microphone. Pick-up range is pretty good, 4-5 meters in a quiet room. I followed these instructions:
https://developers.google.com/assistant/sdk/guides/library/python/

Amazon Alexa
My favorite! Fun and addictive, I followed these instructions:
https://developer.amazon.com/docs/alexa-voice-service/set-up-raspberry-pi.html

SPYserver
More a gadget than a serious tool because I'm using a wire for antenna (on the last radio) but has proven to be usefull to help position the wire for optimum FM / DAB+ reception by looking at the spectrum and play with the dongle gain in SDRsharp (https://airspy.com/spy-servers/).

Bluetooth remote control
I used a PlayStation 3 (PS3) bluetooth remote since the pi 3 has bluetooth built-in.
Easily available in used video game stores and very cheap, the remote works very well but it took me a while to get it going. This page helped:
https://www.mythtv.org/wiki/Sony_PS3_BD_Remote

Last but not least, the radio is a complete Linux environment so I can connect to it from my Win10 box via SSH (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) and play with all the RTL-SDR goodies, even GNU Radio :-) providing you install a desktop environment (for ex. PIXEL) on top of Raspbian Stretch Lite.

JJ has also uploaded a video here.

JJ's Radio is Packaged in a Plastic Toolbox
JJ's Radio is Packaged in a Plastic Toolbox
All the pieces
All the pieces