Lightweight ACARS decoders for RTL-SDR

 Posted by:   Posted on:   Updated on:  2018-04-14T19:04:16Z

How to use AcarsDeco2 and acarsdec to receive and decode ACARS messages with RTL SDR hardware. Free, reliable and cross platform tools.

ACARS is a digital data link system for the transmission of messages between aircraft and ground stations. The transmissions usually take place in VHF band, between 130 and 137 MHz. The wide availability of cheap software defined radios makes it easy for anyone to receive and decode ACARS transmissions. Since RTL2832U based USB sticks are the cheapest SDR hardware this is what I will use for reception. There are many tutorials on this subject and most of them involve piping an audio stream from a SDR application to an ACARS decoder application. This is not reliable and takes a lot of resources. More than that, by selecting one frequency, demodulating it and sending the audio stream to ACARS decoder software you are limited to that single frequency.

But there are a few tools that work directly with RTL-SDR hardware, are free, cross-platform and perform ACARS demodulation. More important than that, the software tools you will see here can listen to multiple frequencies at once. The only requirement is that those frequencies should fit in the bandwidth of RTL-SDR (about 2.4 MHz).

Lightweight ACARS decoders for RTL-SDR

Signal and frequencies

Visual SDR tools are always good for finding signals and monitoring RF spectrum. Here, we can use SDRSharp to view ACARS signals and calibrate the RTL dongle. Since most of them use cheap crystals that do not work on exactly 28.8 MHz, some frequency correction is needed.

First of all, let's see on what frequencies you should look for ACARS transmissions:
  • 131.550 MHz - primary channel
  • 131.525 MHz - secondary channel
  • 131.725 MHz - primary channel
  • 131.825 MHz - additional channel
  • 131.850 MHz - additional channel
  • 136.750 MHz - additional channel
  • 136.900 MHz - SITA secondary channel
  • 136.925 MHz - ARINC channel
  • 129.125 MHz
  • 130.025 MHz
  • 130.425 MHz
  • 130.450 MHz
  • 131.125 MHz
  • 136.700 MHz - additional channel
  • 136.750 MHz - additional channel
  • 136.800 MHz - additional channel
  • 136.850 MHz - SITA channel, North America
  • 129.125 MHz
  • 130.025 MHz
  • 130.450 MHz
  • 131.475 MHz - Air Canada channel
  • 131.450 MHz - primary channel
For Europe and USA you need to RTL dongles to cover all frequencies, while for the other regions one is enough since all frequencies are within the 2.4 MHz bandwidth of RTL SDR.

You should be able to receive ACARS even with an ordinary FM band whip antenna. Start SDRSharp and look on one of the ACARS frequencies for your region. You should see signal bursts of no more than 10 kHz width.

ACARS signals on the waterfall
ACARS signals on the waterfall
You will not receive signals on all of the above frequencies. If you get signals on frequencies very near to the channel assignments, this means your dongle needs frequency correction. While SDR is playing, click the Configure Source button and adjust Frequency correction (ppm) value until ACARS signals fit on the correct channel frequency.

Write down all frequencies on which you received ACARS signals and also the ppm value for frequency correction. Close SDRSharp.


This is the first software. It is a command line tool which controls the RTL SDR and outputs data in many ways. It creates a web server that can be accessed at http://localhost:8080, but it can send data over network to other tools, like COAA PlanePlotter.

Web server of AcarsDeco2
Web server of AcarsDeco2
AcarsDeco2 is offered as binaries for Windows, Linux Ubuntu, Raspberry Pi and OS X. It can be downloaded from xDeco. This is how you can run it:
./acarsdeco2.exe --device-index 1 --gain 48 --freq-correction 30 --freq 131725000 --freq 131825000 --http-port 8080 --outConnectUdp pp:
Here is what each argument does:
  • select a device with --device-index or --device-serial.
  • set tuner gain with --gain and frequency correction with --freq-correction.
  • add frequencies to receive with --freq arguments (one for each frequency).
  • set web server port with --http-port.
  • send data to PlanePlotter via UDP using --outConnectUdp pp: The address and port should match those set in PlanePlotter as you will see later.


This one is offered as source code and compiles on Linux. It has similar capabilities, like multiple frequencies and PlanePlotter data output. The utility is developed by Thierry Leconte and its source can be downloaded from GitHub. To compile it, you need some development tools and libraries. Here are all the commands you need to have acarsdec installed.
sudo apt install gcc build-essentials git libusb-dev libusb-1.0.0-dev librtlsdr-dev
git clone
cd acarsdec
make -f Makefile.rtl
sudo mv ./acarsdec /usr/bin/acarsdec
This is how you will run acarsdec:
acarsdec -n -g 480 -p 30 -r 1 131.725 131.825
The arguments do the following:
  • send data over UDP in PlanePlotter format with -n
  • set gain to 48 dB with -g 480. Without this argument, AGC is enabled.
  • set frequency correction with -p 30. Adjust value for your dongle if needed.
  • select device and channels with -r 1 131.725 131.825. The first number after -r is the device index. After this, you can set up to 8 frequencies in MHz.
Unfortunately, acarsdec does not feature a web server. Still, it has network capabilities, being able to send data over network to PlanePlotter or other applications in JSON format.

I run both tools with 131.725 MHz and 131.825 MHz frequencies, assigned to primary European channel and additional European channel, respectively. Adjust the argument with the frequencies you get signals on.

Display in PlanePlotter

PlanePlotter is shareware software developed by COAA (with 20 days trial). It can process ACARS, ADS-B and HFDL signals. It supports also audio piping, but for the tools presented above, network is the preferred medium. Both AcarsDeco2 and acarsdec are run with arguments that enable sending ACARS messages over UDP.

PlanePlotter is Windows only software. However it runs without issues in Wine. The screenshot below is made in Linux Ubuntu.

On the first run, you are prompted to enter your location coordinates. If you closed that dialog, you can find it in Options - Home location - Home location setup. UDP is configured in Options - I/O settings by checking UDP/IP data from net and setting local port to 9742 (or whatever you passed as argument to AcarsDeco2 or acarsdec).

PlanePlotter UDP configuration
PlanePlotter UDP configuration
If you have the ACARS decoder running, you can start PlanePlotter by clicking the green button on the toolbar. If the IP address to which one of the decoders is sending messages matches the computer that runs PlanePlotter (and no firewall is blocking traffic), you should see live data.


No comments :

Post a Comment

Please read the comments policy before publishing your comment.