Thank you to a contributor for submitting an article about Airframes.io, which is an ACARS/VDL2/HFDL/Satellite ACARS aggregation site. The article below it attributed to Kevin Elliott and was edited by Frank Vance. They would also like to attribute the large group or volunteers at Airframes.io.
One of the most popular hobbyist uses of SDR is receiving and decoding vehicle information data such as ADS-B for aircraft or AIS for marine traffic. Some hobbyists have been banding together to exchange their mutual data streams to provide coverage over wide geographic areas.
One of the largest and most successful such projects in the aviation realm is ADS-B Exchange (https://www.adsbexchange.com/), where over 8,000 volunteer feeders provide ADS-B data to a global aviation map in real time.
But modern air carriers have much more data to and from their aircraft than just the position information from ADS-B. In the 1970s, ACARS was created to carry that traffic. Today, ACARS is seen on its own frequencies on VHF, embedded in AVLC on the VDL2 VHF frequencies, on HF (shortwave) frequencies using the HFDL network of stations worldwide, and on satellite on both the Inmarsat (ACARS over AERO, or AoA) and the Iridium (called ACARS over Iridium, or AoI) systems.
Airframes.io (https://app.airframes.io/) is a project that has been under development for a while to aggregate ACARS data in the same way ADS-B Exchange is aggregating ADS-B data. Under the capable leadership of Kevin Elliott (https://github.com/kevinelliott), software development has progressed to the point that new feeders are actively being sought to improve the global coverage and provide a broader base of data to improve the decoding.
With a wide variety of data sources, this is a collaboration project that is open to all levels of SDR hobbyists. A simple RTL-SDR.COM unit attached to a Raspberry Pi with a smaller antenna works well with the VHF coverage. Depending on one's interest level, an HFDL feeder may require multiple SDRs with much broader frequency range, capable of reception in the sub-30 MHz bands. The L-band based Iridium AoI uses a small antenna as well, but requires a wide bandwidth SDR. Finally, reception of the C-band Inmarsat (AoA) traffic may involve a moving dish antenna of at least 6 foot diameter to obtain usable signals.
What kind of data is seen in ACARS? One can observe weather conditions aloft, messages to/from the carrier operations staff, information about the origin and destination of the flight, and technical data on the aircraft operation (not all of which can be decoded at this time.) Additionally, the HFDL and satellite feeds offer location information out of sight of the traditional ADS-B coverage, such as over the oceans and polar regions.
The About page at Airframes.io (https://app.airframes.io/about) has plenty of good information to help anyone get started with feeding, including links to popular software packages useful for running different types of feeders. Support is available on the #airframes-io channel (https://discord.gg/X2TgnFgsRW) on the ADSBExhange Discord server (https://discord.gg/aXt7KdycJk).
Additional information about setting up a receiver/feeder for HFDL, Inmarsat L-band, Inmarsat C-band, and Iridium L-band is available on The Bald Geek's GitHub page: https://thebaldgeek.github.io/Consider joining with the dozens of volunteers already feeding and contributing software updates to the Airframe.io project.
Thank you to Tomasz Lemiech for writing in and sharing with us the release of his new software "dumphfdl". Tomasz is the author of dumpvdl2 and also maintains RTLSDR-Airband. Regarding dumphfdl Tomasz writes:
dumphfdl is a multichannel HFDL decoder for Linux. HFDL (High Frequency Data Link) is a protocol used for radio communications between aircraft and a network of ground stations using high frequency (HF) radio waves. Thanks to the ability of short waves to propagate over long distances, HFDL is particularly useful in remote areas (eg. over oceans or polar regions) where other ground-based communications services are out of range. While many aircraft carriers prefer satellite communications these days, HFDL is still operational and in use.
Available HFDL decoding applications typically run on Windows and take an audio signal on input. The signal has to be delivered to the decoder via a physical cable from an external shortwave receiver or via a virtual cable from an SDR. This makes these apps inherently single-channel. This shortcoming does not apply to dumphfdl which interfaces directly with the SDR, so no pipes or virtual audio cables are needed. The program can decode multiple HFDL channels simultaneously, up to available CPU power and SDR bandwidth (there is no fixed channel count limit).
dumphfdl uses SoapySDR library (https://github.com/pothosware/SoapySDR) to communicate with the radio. Any HF-capable receiver for which a SoapySDR driver exists, should work. I have tested it briefly with an RTL-SDR v3 dongle in direct sampling mode. While I had a bit of a success with it, HFDL signals are often quite weak, so a real HF radio (like SDRPlay RSP1A or Airspy HF+) gives much better results (more decoded messages).
The program may log decoded messages to a file or send them over the network for external processing and storage.
HFDL messages often contain diagnostic data accompanied with aircraft position information. The program may extract this data from decoded messages and provide a positional data feed for external plane tracking apps (eg. Virtual Radar Server). An example screenshot from VRS is attached - taken after about 2 hours of decoding eight HFDL channels spread across three HFDL subbands: 6.6, 8.9, and 10.0 MHz with two dumphfdl instances on two radios - RSP1A and Airspy HF+. Definitely a nice way to expand the coverage of a home ADS-B radar :-)
Refer to the README.md file in the project repository for more details. The program is still under development, so new features and further improvements might be expected in subsequent releases.
dumphfdl - decoded aircraft positions plotted on a map
In the previous episode Rob from the Frugal Radio YouTube channel showed us how to decode HF ACARS using PC-HFDL and an HF capable SDR such as the Airspy HF+. In that episode he mentioned that it is possible to decode HF ACARS using a WebSDR as well.
In this weeks episode, Rob shows us how to do just that, making use of WebSDR receivers and the PC-HFDL software. Like the previous episode we see how to plot the aircraft HF ACARS position data on Google Earth and how to read and interpret some example messages received.
In Rob's latest episode of his excellent aviation communications series on his Frugal Radio YouTube channel he shows how to decode aircraft HF ACARS (HFDL) using a software defined radio. HFDL is short for "high frequency data link", and is a method aircraft use for sending text and data communications to ground stations. It is an alternative to VHF or satellite ACARS communications methods.
In the video he shows how he's been able to receive HFDL from all over the world using a simple HF dipole antenna and an Airspy HF+ Discovery. He goes on to show how to find HFDL signals, and how to decode signals using SDR# and the PC-HFDL software. Finally he shows examples of aircraft received, and how to interpret some of the information being received, including location information.
How to decode HF ACARS (HFDL) free with your SDR - Monitoring Aviation Communications Episode 8
In the latest episode of his YouTube series on Aviation monitoring Rob explores how to decode L-band satellite ACARS (Aircraft Communication Addressing and Reporting System) and CPDLC (Controller Pilot Data Link Communications) messages using JAERO, an SDR like an RTL-SDR, and a appropriate L-band antenna such as our RTL-SDR Blog Active L-Band Patch (currently out of stock).
In the video Rob shows examples of what you might receive such as CPDLC ATC instructions, digital ATIS information, arrival information and suggested landing data configuration instructions. He goes on to show satellite coverage maps, what hardware is required to receive these signals, and finally how to setup the receiving and decoding software.
How To Decode L band Satellite ACARS and CPDLC messages with JAERO and your SDR
Rob from Frugal Radio has recently uploaded episode five in his YouTube series on Aviation monitoring. This episode covers VHF ACARS decoding with an RTL-SDR. ACARS is an acronym for Aircraft Communications Addressing and Reporting System and is a short text based wireless communications system used by aircraft when communicating with ground stations.
In the video Rob overviews the frequencies that ACARS is transmitted on in various regions of the world and what equipment you need to decode ACARS. He goes on to explain in depth what some typical data messages that you might receive are including D-ATIS/WX Reports, Pre Departure Clearance, Loadsheets, OOOI, Aircraft performance telemetry, ATC/Oceanic Clearances and arrival airport and parking gate information. Finally he shows various ACARS software decoders that can be used including ACARSDEC, Black Cat ACARS and ACARSDECO2.
Decoding ACARS on VHF with your SDR Radio - Monitoring Aviation Communications Ep 5
Back in late 2019 we posted about the Electrosense network which is an open source project aiming to deploy radio spectrum sensors worldwide. The idea is to help analyze and understand radio spectrum usage across the globe. Each sensor consists of an RTL-SDR, Raspberry Pi and an optional downconverter to receive the higher bands.
Recently Dr. Sofie Pollen wrote in and informed us that they have recently upgraded Electrosense and now users can use any sensor on the network to actually decode signals remotely over a web browser. The currently supported demodulators/decoders include FM/AM, ADS-B, AIS, LTE base station info and ACARS. This makes the Electrosense network kind of similar to the KiwiSDR or OpenWebRX SDR network where there are also various decoders built into the web software.
To test it out you need to create an Electrosense account at electrosense.org. Once logged in, go to "My Electrosense" on the top right, and choose "Spectrum Decoder". You can then choose from a number of Electrosense contributors stationed around the world. Once the waterfall is displayed you can click on signals to decode and listen to them, or change the decoder. Changing to ADS-B or AIS will bring up a map with decoded aircraft or boat positions. Changing to ACARS or LTE will show a text window with the decoded information.
The KerberosSDR is our 4-channel phase coherent capable RTL-SDR unit that we previously crowdfunded back in 2018. With a 4-channel phase coherent RTL-SDR interesting applications like radio direction finding, passive radar and beam forming become possible. KerberosSDR is currently available from the Othernet store and Hacker Warehouse for US$149.95.
Although the KerberosSDR was mostly created to help unlock projects requiring phase coherency, we've had interest from multiple users asking for information on how to use the KerberosSDR as a tool for monitoring multiple separate signals at once.
Doing this is actually very simple. If you ignore the extra circuitry to make the KerberosSDR phase coherent, the KerberosSDR is at it's core just 4 separate RTL-SDR dongles connected to a quality USB hub. So if you're not using our coherent demo software, then plugging a KerberosSDR into a PC or single board PC will result in four RTL-SDR dongles that can be accessed individually.
The tutorial below could also be done with four individual RTL-SDR dongles, but you would also want to have a reliable powered USB hub.
Example Aviation Radio Monitor
Below we show an example tutorial of how the KerberosSDR could be used as a 4-channel aviation monitor for monitoring air traffic control, ADS-B, ACARS and VDL2 simultaneously on a single Raspberry Pi 3B+. The video below shows a demo.
KerberosSDR Monitoring Air Traffic Control Voice, ADS-B, ACARS & VDL2 on a Raspberry Pi 3 B+
The first step is to simply burn the latest Raspbian Buster to an SD Card, and set up your WiFi wpa_supplicant file as you would on any standard Raspbian install. Also add a blank file called "SSH" or "SSH.txt" to the boot directly to enable an SSH connection. Alternatively you could set this up with a monitor. We used Raspbian Buster Lite, as we are not intending to use the desktop GUI.
Next use PuTTY or your preferred terminal software to connect to your Raspberry Pi via SSH. You may need to use your routers config software/page to find the IP address of the Raspberry Pi. The default SSH port is 22.
Finally, update the repos on your install before continuing with the software installation process.
Here we connected a single quarterwave ground plane antenna tuned to the airband frequencies to three input ports on the KerberosSDR via a cheap RF TV splitter. The fourth antenna input was to a RadarBox ADS-B antenna.
The KerberosSDR and Raspberry Pi are powered via two official Raspberry Pi 5V plug packs, and the KerberosSDR is connected to the Pi via a single short high quality USB cable.
Setup Topology
Installing RTL-Airband
RTLSDR-Airband is an efficient command line based scanner program for the RTL-SDR. It works by rapidly scanning over a set of frequencies and looking for active signals, and playing the active AM or FM transmission. When an active signal is found it can be configured to stream the audio to an Icecast server, record to a file, or to play directly to your speakers. Alternatively you can also configure it to stream multiple channels simultaneously. If set up to stream to an Icecast server you can listen to the scanned audio from any device on your network with an internet browser.
Here we will use RTL-Airband to scan the air traffic control voice bands which are used by air traffic controllers and pilots to communicate by voice with one another. The transmissions are in AM and are found between 118–136.975 MHz.
First install the pre-requisites, and then install RTL-Airband.
sudo apt-get install -y build-essential libmp3lame-dev libshout3-dev libconfig++-dev libraspberrypi-dev librtlsdr-dev
cd
wget -O RTLSDR-Airband-3.0.1.tar.gz https://github.com/szpajder/RTLSDR-Airband/archive/v3.0.1.tar.gz
tar xvfz RTLSDR-Airband-3.0.1.tar.gz
cd RTLSDR-Airband-3.0.1
make PLATFORM=rpiv2
sudo make install
Next install an Icecast server onto your Raspberry Pi. This will allow us to connect to the Pi via a web browser to listen in to the audio.
sudo apt-get install icecast2 -y
The install steps will ask you to input admin passwords of your choice, make sure you remember or write these down.
Now edit the rtl_airband.conf file with:
sudo nano /usr/local/etc/rtl_airband.conf
Paste in the configuration below making sure to set the actual frequencies used by air traffic control and airlines in your particular area by adding or removing frequencies from the "freqs" line.
Also be sure to set the "index" to whatever antenna input you have used (0 - 3) on your KerberosSDR for your VHF air band antenna. You may want to experiment with the gain value, but for now you can leave it as default.
If you are using another template for the config file, ensure that the "correction" value is set to 0 as the KerberosSDR uses a TCXO and requires no PPM correction.
Finally, don't forget to also set the Icecast server password that you set up in the previous step, making sure to leave the username as "source".
devices:
({
type = "rtlsdr";
index = 2;
gain = 32;
correction = 0;
mode = "scan";
channels:
(
{
freqs = ( 118.1, 118.7, 119.5 );
labels = ( "Tower A", "Tower B", "Tower Control");
outputs: (
{
type = "icecast";
server = "127.0.0.1";
port = 8000;
mountpoint = "stream.mp3";
name = "Airband Voice";
genre = "ATC";
description = "My local airport - aggregated feed";
username = "source";
password = "kerberos";
send_scan_freq_tags = false;
}
);
}
);
}
);
Next set up the Icecast server if required using the instructions here. If the default port and number of source is fine for you, you can leave everything as default.
Now to start RTL-Airband run:
sudo rtl_airband -f
To listen to the scanned audio, browse to http://RASPI_IP_ADDRESS:8000/stream.mp3 on any device connected to the same network
Installing dump1090
Leave the RTL-Airband PuTTy window open, and open a new instance of PuTTy and once again connect to the Raspberry Pi in a new session. We will install the FlightAware branch of dump1090, as this is the most up to date version. dump1090 allows you to track aircraft that are transmitted ADS-B.
Now we can run dump1090 with the following line. Make sure to set the "--device 3" flag to the antenna input that you have connected your ADS-B antenna to. In our case we connected it to the last SMA input which is input 3.
./dump1090 – device 3 – interactive – net
Now to view the data on a map, you can install Virtual Radar Server on any Windows PC on the same network. Once installed, add an "AVR or Beast Raw Feed" receiver, with the IP address of your Raspberry Pi and Port 30002.
Installing ACARSDeco2
Again, leave both PuTTy windows open, and open a new PuTTy SSH terminal and connect again. Here we'll install ACARSDeco2 which is a multiband ACARS decoder. ACARS is an acronym for Aircraft Communications Addressing and Reporting System which is a digital communications system that aircraft use to send and receive short messages to and from ground stations. Most messages are unreadable telemetry data intended for computers, but often you will see messages about weather, wind, dangerous cargo warnings, fuel loading information and more.
ACARSDeco2 is not an open source program, so you'll need to first download the compressed file from http://xdeco.org/?page_id=30 on a PC. Make sure to get the Raspberry Pi 2/3 version of ACARSdeco2 for Stretch.
Now use a program like WinSCP to transfer the .tgz file to the Raspberry Pi. In WinSCP select SCP as the file transfer protocol, log in with "pi/raspberry" and drag the file over to the Pi's home folder.
Then back on the Raspberry Pi, simply move the file into it's own folder, and extract the files.
mkdir acarsdeco2
mv acarsdeco2_rpi2-3_debian9_20181201.tgz acarsdeco2
cd acarsdeco2
tar -xvzf acarsdeco.tgz
Now you can run the program with the following command. Make sure to specify the ACARS frequencies used in your area if they are different. Also here we used antenna input 1 for the ACARS antenna and specified that with "--device-index 1". If you are running Virtual Radar Server on your Windows PC as explained in the dump1090 install, you can enter the Windows VRS server IP address, so that location data will be sent back to the ACARSdeco2 server.
Now on your Windows PC, open a browser and open PI_IP_ADDR:8081 to view the incoming ACARS messages.
Installing dumpvdl2
Again, leave both PuTTy windows open, and open a new PuTTy SSH terminal and connect again. Here we will install dumpvdl2 which is a VDL2 decoder. VDL2 is a replacement for the aging ACARS system which is being phased out in some areas. In some areas VDL2 is now more common than ACARS, and in some areas it's the opposite.
Dumpvdl2 requires libacars to work, so install libacars first:
cd
git clone https://github.com/szpajder/libacars
cd libacars
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
Finally, install dumpvdl2
cd
git clone https://github.com/szpajder/dumpvdl2.git
cd dumpvdl2
mkdir build
cd build
cmake ../
make
sudo make install
Now to run dumpvdl2:
dumpvdl2 – rtlsdr 2 – gain 35
dumpvdl2 has no webserver so it can only be viewed from the terminal window.
Alternative Tools
Stations in the USA could replace one program with dump978, which decodes UAT positional data from smaller aircraft. If you live near a glider range, a FLARM decoder could also be used. You could also run an AIS receiver if you live near a water way.
Further Steps
If setting this up as a permanent station, you might want to go ahead and create a startup script that runs these programs on boot. Then you won't need to open up PuTTy terminals to start all the programs. The easiest way to do this is to use the @reboot code in crontab to run your script. Be sure to use sudo crontab -e for running RTL-Airband as this requires root.