Category: RTL-SDR

Creating a FIS-B ADS-B Weather Information Receiver for Pilots with an RTL-SDR

Recently a pilot wrote in to let us know about how he’s been using his RTL-SDR to receive real time FIS-B ADS-B weather updates in ForeFlight while flying in his plane. ForeFlight is an iOS app for pilots that helps with flight planning and provides access to important information like charts, real time weather reports and airport information. However, to access real time weather information usually you need to buy a $549 – 899 Stratus receiver

Now it is possible to use an RTL-SDR to receive the FIS-B weather information that is transmitted on the 978 MHz UAT frequency which is available only in the USA. UAT stands for Universal Access Transmitter and is similar to ADS-B transmitted at 1090 MHz, however UAT has some extra features for pilots compared to ADS-B. In addition to location information UAT provides a Traffic Information Service (TIS-B) which allows pilots to see what ground control sees on their traditional RADAR system. It also provides a Flight Information Service-Broadcast (FIS-B) which includes weather and other information. UAT is commonly used on small aircraft due to it’s lower cost and additional features. 

To receive UAT FIS-B weather information the pilot used dump978 on a Raspberry Pi 2. Dump978 is a UAT decoder, similar in operation to dump1090. He has also created a program called “Stratux“, which together with a WiFi adapter allows the decoded FIS-B data to be transmitted from the Raspberry Pi by WiFi to an iPad running ForeFlight. Running the software is as simple as piping the 978 MHz signal from rtl_fm into dump978, and then piping the decoded output of dump978 into stratux. Foreflight can then connect to the WiFi signal and work like it is connected to an expensive Stratus receiver.

In the video example below you can see some weather radar animations from FIS-B data received from the RTL-SDR shown on the ForeFlight screen at around 4:29 and onwards.

RTL-SDR, Rasperry Pi, WiFi dongle and portable battery pack for receiving UAT.
RTL-SDR, Rasperry Pi, WiFi dongle and portable battery pack for receiving UAT.
FIS-B UAT Weather Report received on Foreflight from a Raspberry Pi and RTL-SDR running dump978.
FIS-B UAT Weather Report received on Foreflight from a Raspberry Pi and RTL-SDR running dump978.

ADS-B Air Demo (ForeFlight)

 

RTLSDR Scanner Standalone Application Released

RTLSDR Scanner is a program that can be used with an RTL-SDR to do a power scan over a very wide frequency. It works by quickly scanning the selected bandwidth in chunks and stitching the results together. Previously to install this software you had to run an installer which installed many dependencies. However just recently the author has released a standalone version which doesn’t require any installation. To use this version simply download the RTLSDR Scanner .exe file, and place it into the same folder as the official Windows librtlsdr drivers, which can be downloaded from Osmocom.

One useful application that RTLSDR Scanner can be used for is to generate a signal strength heatmap. If you connect a GPS device to your laptop, RTLSDR scanner will record GPS coordinates together with signal strengths as you drive around. From this a heatmap of signal strengths can be generated which can help you to find signal sources, or sources of interference.

RTLSDR Scanner scanning the cellular bands.
RTLSDR Scanner scanning the cellular bands.

Setting audio levels correctly when decoding with an RTL-SDR

When decoding a digital signal with an RTL-SDR the digital audio is usually piped from receiver software like SDR# via stereo mix or software like Virtual Audio Cable/VBCable into the decoding software. The decoding software expects a clean audio signal with the volume levels set not too loud, but also not too quiet. Usually this can be achieved by trial and error.

However amateur radio hobbyist K3RRR found that setting the audio level correctly was critical for maximizing decodes on his digital HF signals when using his RTL-SDR. To correctly set the audio levels he uses a program called Peak Level Meter and another called Soundcard Oscilloscope. Peak Level Meter is used to ensure that the audio levels are set correctly and Soundcard Oscilloscope is used to ensure that the audio is not being over driven into square waves.

Checking for over driven audio waveforms in Soundcard Oscilloscope.
Checking for over driven audio waveforms in Soundcard Oscilloscope.

Setting up a Raspberry Pi based APRS RX IGate with an RTL-SDR

Recently amateur radio hobbyist WB20SZ wrote in to us to let us know about his work with creating an easy to build receive only APRS internet gateway (IGate) with a Raspberry Pi and RTL-SDR dongle. The process involves using WB20SZ’s “Dire Wolf” software which is a free Linux based APRS encoder/decoder. He writes that it can be used to observe APRS traffic, as a digipeater, APRStt gateway or Internet Gateway (IGate). Setting up the APRS IGate is a simple matter of piping the received APRS audio from rtl_fm into the direwolf software. Instructions for installing direwolf can be found here.

APRS stands for Automatic Packet Reporting System and is a packet radio protocol used by radio amateurs to broadcast real time data such as messages, announcements, weather station reports and sometimes the location of vehicles. If an APRS station has a GPS attached to it, the broadcasts will also contain the GPS coordinates. Internet Gateways or IGates are repeaters that are used to receive messages from a local radio and pass them on via the internet to a transmit capable IGate repeater anywhere in the world. To run an IGate you should be a radio amateur with a callsign. A global aggregation of APRS broadcasts received by IGates can be seen at aprs.fi.

Various APRS messages seen on aprs.fi
Various APRS messages seen on aprs.fi

Outernet “Lighthouse” Receiver now for sale

Although this isn’t directly SDR related, this story may still be of interest to some readers. The Outernet project have just put on sale their first receiver which is called the Lighthouse. The standard Lighthouse consists of custom hardware, but there is also a DIY option in the store which consists of a HDStar DVB-S2 receiver board and a Raspberry Pi with custom software. You also need a satellite dish antenna and LNB which can be bought from their store, or found locally.

The Outernet project aims to be a “library in the sky” satellite based service that will provide free one-way access to daily downloads of data such as books, news, videos and other information. Its goal is to provide people who may not have easy physical or uncensored access to the internet an easy way to access daily information.

The currently available Outernet services cover almost the entire globe and use Ku-band (12 – 18 GHz) and C-band (4 – 8 GHz) geostationary satellite links, which is what the Lighthouse is capable of receiving when used with an appropriate dish antenna (the Ku-band service requires a 90cm dish, while the C-band service requires a much larger dish). The Lighthouse receives data from the satellites and then allows users to view the downloaded data by connecting to it via a WiFi enabled device such as a PC or smartphone. They currently broadcast 1 GB of data per day to most of the world, and 100 GB per day to sub-saharan African countries.

In the future Outernet is hoping to release their “Lantern” receiver, of which one prototype is based on a modified RTL-SDR design. The Lantern will receive their upcoming L-band (1-2 GHz) transmissions which will only require a small patch antenna and LNA’s to receive. A standard RTL-SDR with appropriate antenna and LNA’s should also be capable of receiving this service when it is released.

New Outernet Receiver: Lighthouse
New Outernet Receiver: Lighthouse

Getting the RTL-SDR to work in Windows 10

The RTL-SDR is fully compatible with Windows 10. However with the recent release of Windows 10 some users have been having trouble using their RTL-SDR after upgrading. We thought that we'd announce that the simple solution to most problems is to reinstall the SDR drivers with Zadig. The latest version of Zadig can be downloaded from zadig.akeo.ie or if you use SDR# then it will already be in your SDR# folder. The process is:

  1. Plug in the RTL-SDR.
  2. Run Zadig as administrator by right clicking it and choosing run as administrator.
  3. Go to Options -> List all devices and make sure it is checked.
  4. In the drop down box choose Bulk-In, Interface (Interface 0). This may also sometimes show up as something prefixed with "RTL28328U". That choice is also valid.
  5. Make sure that WinUSB is selected as the target driver and click on Replace Driver.

If you need more help see the Quickstart Guide. (NOTE: If you have come across this post before the quickstart guide, be sure to use the quickstart guide as your first point of reference for installing RTL-SDR drivers and software!)

The Windows 10 upgrade process appears to replace the WinUSB drivers with the Windows DVB-T ones, so reinstalling the SDR drivers is necessary. It shouldn't be necessary, but one user also reported the need to log in to Windows with an administrator account and to uninstall the current drivers before running Zadig, so try that if you continue to have problems.

As in our previous post we can confirm that several popular SDR apps such as SDR#, HDSDR, SDR-Radio, CubicSDR and Unitrunker all work fine in Windows 10.

Skywave Linux: New Linux Ubuntu Distribution made for Software Defined Radio

Skywave Linux is a new Linux distribution based on Ubuntu 14.10. It is designed for users of software defined radio’s and comes with several useful SDR software packages preinstalled. It can be run from a bootable DVD, USB or SD card.

The author writes that Skywave Linux is currently compatible with the RTL-SDR and HPSDR hardware. At the moment it seems that the first version has only very few preinstalled software programs. These include: QT Radio, CubicSDR, Fldigi, and Dump1090. The authors write about Skywave:

Welcome to the first release of Skywave Linux! This is an operating system designed to provide access to a growing network of software defined radios all over the world. With global SDR access, shortwave listeners can access broadcast, utility, amateur radio, military, and other signals from almost anywhere in the world – from state-of-the art radio servers. All you need to do is boot Skywave Linux on a computer with internet access.

Why was Skywave Linux created? The developer of this system was plagued by a lack of access to quality radio broadcasts due to his residence in a country practising tight media control and censorship. In addition, software defined radio is an exciting way to experience the hobby of shortwave listening. By connecting to remote radio servers on the internet, it is possible to enjoy bleeding edge radio operation without large antennas or setting up a station on-site. Installing SDR software can be difficult for many computer users, and Skywave Linux eliminates the hassle of downloading, compiling, and configuring apps for the SDR servers on the internet.

If you’re instead looking for a distribution with GNU Radio preinstalled, then we note that other distributions such as KB1OIQ – Andy’s Ham Radio Linux, the GNU Radio live DVD, and Kali and Pentoo Linux also exist.

CubicSDR running in Skywave Linux
CubicSDR running in Skywave Linux

An Alternative NOAA Weather Satellite Tutorial using RTL_FM and WxToImg

The RTL-SDR software defined radio is often used to receive signals from NOAA APT weather satellites. Once decoded these signals produce a freshly captured image of the earth over your current location. We have a simple tutorial on setting this up here.

However, recently Marco Johansson wrote into RTL-SDR.com to explain an alternative method to the one described in our tutorial. His method uses rtl_fm as the receiver instead of the GUI based software SDR# and uses several other pieces of software to automate the whole process. Marco believes that his method may be useful for some people and his tutorial is presented below. Also, if you are interested Marco has a WxtoImg generated webpage which shows all his recently received images here wxsat.haastaja.net.

A composite weather satellite image received from the NOAA-18 satellite by Marco
A composited weather satellite image made up of several images received from NOAA satellites by Marco Johansson

Note that the following tutorial is written by Marco Johansson.

Marco’s NOAA APT Decoding Tutorial

As a Windows user I had some serious problems using an RTL-Dongle as a receiver for WxtoImg. Signal drops, CPU load, and no receiver control. I had to use 5 different pieces of software to get automatic reception to work and every day one of the programs had some weird problems causing the whole system to stop working. I read several forum posts about similar problems. A huge bit of help came from WxtoImg’s own forum where a user told how he was able to use rtl_fm as a receiver. His system was Linux based, so I was not able to use his scripts, but it gave me enough information to find a Windows based solution.

I stumbled on to a software program that solves my problem totally. It is originally made to control Windows MCE (Media Center), but since it’s release it has been enhanced to work as a universal remote control for the Windows system.

Steps:

1) Install WxtoImg normally
2) Install VB Cable Virtual Audio Cable software to be able to pipe audio from receiver to WxtoImg (http://vb-audio.pagesperso-orange.fr/Cable)
3) Install virtual COM port BRIDGE(!) for COM-communication between programs (I tested with: http://freevirtualserialports.com)
4) Install rtl_fm for windows (http://sdr.osmocom.org/trac/attachment/wiki/rtl-sdr/RelWithDebInfo.zip)
5) Install SoX for Windows (http://sourceforge.net/projects/sox/files/sox)
6) Install MCE Control to act as a command-shell between WxtoImg and MCE Controll (http://mcec.codeplex.com)

In WxtoImg I selected “Baykal” receiver, port COM1 and 2400baud. The protocol for remote control is very easy to understand and after every command WxtoImg sends CR/LF to receiver, which is mandatory to get commands to work.

Control commands are handled with MCE controller. It listens to COM2 (bridged with COM1) and when it hears a valid command string (A Magic ‘word’) it activates a task. Tasks are .bat files, one for every satellite and a “kill” to stop receiver after the satellite pass.

When satellite is coming (one minute before it is over head) WxtoImg sends a command “MUA” that triggers “kill.bat”. Then WxtoImg sends a command “RF0xxxxxxx” where xxxxxxx is the frequency of the satellite, “1371000” for NOAA19 – this triggers “rec-noaa19.bat”. When the pass is over, Wxtoimg sends again “MUA” to kill the receiver program.

Now I can control recordings directly from WxtoImg without any other software (Orbitron, SDR#, DDE client etc).

.bat files and other configurations are provided below for others to use. I ended up to have separate .bat to start the tasks as in that way I can set the system start and stop recording in the background without a command prompt popping around my desktop every 90 mins 🙂

My system is Windows 8.1, I have not tested this in 7, 8 or 10 but I believe it should work without any modification. The HW ID of the RTL-Dongle I use for wx_rtl_fm.exe is “3” (‘-d 3’ in script). If you have only one RTL-Dongle, then this should be set to “0”. I use the bandwidth of 55 kHz that seems to be enough for good APT reception including doppler error as in this method the doppler error is not corrected in the receiver at all (no AFC).

NOTE! I have copied the original ‘rtl_fm.exe’ to ‘wx_rtl_fm.exe’ to be able to start other rtl_fm.exe instances without the risk that WxtoImg kills my other receiver accidentaly. And of course, remember that these are from my system and the correct path used in scripts will be different for you 🙂 Also, the original ‘sox.exe’ is copied to ‘play.exe’ as instructed in the SoX’s manual for Windows user. And because I’m lazy, I copied rtl_fm and SoX binaries to same directory so that I do not have to put so long path strings into my .bat scripts 🙂

Final words:

.bat’s used in this are very dirty hacks and there are lot’s of improvement available for sure – but it works! Also, the remote protocol for Baykal receiver actually sends two more commands, one is used for telling the modulation of the transmission (RM NFM) and second to do something I do not know (MUF).

The whole communication in my system goes like this:

1) “MUA” => Kill all wx_rtl_fm.exe processes currently running (if any). This happens one minute before satellite pass starts.

2) “RF0xxxxxxx” => Start wx_rtl_fm & SoX, xxxxxxx=frequency of the satellite and is used to select correct .bat for different satellites (see MCE Control XML-file for details). This happes when satellite pass starts.

3) “RM NFM” => Not used in my system. Could trigger something fun if needed :). This happens right after ‘RF0xxxxxxx’ command.

4) “MUF” => Not used in my system. Could trigger something fun if needed :). This happens right after ‘RM NFM’ command.

5) “MUA” => Kill all wx_rtl_fm.exe processes currently running. This happes right after satellite pass.

SoX is a very powerfull tool for audio manipulation. There are options that could greatly improve the audio quality of the received signal – denoice, better dynamics etc. I am not that keen to try everything SoX could do as the results are already very good in my system, but if there are someone who knows better ways to handle SoX then please do not hesitate to comment!

Used .bat Files

“Kill the receiver”:

kill.bat is triggered by MCE control and calls kill-wx_rtl_fm.bat to do the actual killing.

kill.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
start /min kill-wx_rtl_fm.bat ^& exit

This triggers;

kill-wx_rtl_fm.bat

taskkill /IM wx_rtl_fm.exe /F

“Start recording”:

Recording is started after MCE Control gets the correct ‘word’ from WxtoImg. For every satellite there are separate ‘words’ and separate .bat files.

rec-noaa15.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
start /min noaa15.bat ^& exit

This triggers;

noaa15.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
play -r 55k -t raw -e s -b 16 -c 1 "|wx_rtl_fm -d 3 -M fm -f 137.62M -s 55k -l 0" -t waveaudio

rec-noaa18.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
start /min noaa18.bat ^& exit

This triggers;

noaa18.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
play -r 55k -t raw -e s -b 16 -c 1 "|wx_rtl_fm -d 3 -M fm -f 137.9125M -s 55k -l 0" -t waveaudio

rec-noaa19.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
start /min noaa19.bat ^& exit

This triggers;

noaa19.bat

cd C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox
play -r 55k -t raw -e s -b 16 -c 1 "|wx_rtl_fm -d 3 -M fm -f 137.1M -s 55k -l 0" -t waveaudio

And finally, the MCE Control magic ‘words’. By default, MCE Control understands over 200 separate commands originally meant to remote control Windows MCE (Media Center). Fortunately, one can create their own commands and get MCE Control to do much more – control Wx-system!

MCE Control uses an XML configuration file for these extra commands. The file is located in the same directory where the main executable is located. My system uses following XML file to be able to control ‘wx_rtl_fm.exe’:

<?xml version="1.0" encoding="utf-8"?>
<MCEController xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Commands xmlns="http://www.kindel.com/products/mcecontroller">
<!-- Place command definitions here -->
<!--
==================================================================
StartProcess Commands
File: The full path to the executable you want to start.
==================================================================
-->
<StartProcess Cmd="RF01376200" File="C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox\rec-noaa15.bat"/>
<StartProcess Cmd="RF01379125" File="C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox\rec-noaa18.bat"/>
<StartProcess Cmd="RF01371000" File="C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox\rec-noaa19.bat"/>
<StartProcess Cmd="MUA" File="C:\Users\Mac Radio\ownCloud\SDR\rtl_fm_sox\kill.bat"/>
</Commands>
</MCEController>