Fork me on GitHub

Project Notes

#352 Decoding ACARS

Decoding ACARS with rtl_acars_ng and a R820T2+RTL2832U dongle on MacOSX.

Build

Notes

I’m playing with a cheap RTL-SDR Dongle and one of the signals I can pick up quite well are the Aircraft Communications Addressing and Reporting System (ACARS) transmissions from the air traffic around Singapore.

ACARS is a short message digital datalink protocol, and thus needs decoding.

I quickly found a promising open-source package to try: rtl_acars_ng

Compiling rtl_acars_ng

I’m running on MacOSX and use brew for package management. So it was this easy…

$ brew install rtl-sdr
$ git clone git@github.com:gat3way/rtl_acars_ng.git
$ cd rtl_acars_ng
$ make
gcc -o rtl_acars_ng rtl_acars_ng.c `pkg-config --cflags --libs librtlsdr libusb-1.0` -lpthread -lm -O2
36 warnings generated.

Command-line Options

$ ./rtl_acars_ng -h
rtl_acars_ng - decoding ACARS transmissions with RTL2832 based DVB-T receivers

Usage:  rtl_acars_ng -f freq [-options]
  -f frequency_to_tune_to [Hz]
   (use multiple -f for scanning, requires squelch)
   (ranges supported, -f 118M:137M:25k)
   (try 131.55M, 129.125M, 130.025M, or 130.425M)
  [-d device_index (default: 0)]
  [-g tuner_gain (default: automatic)]
  [-l squelch_level (default: 0/off)]
  [-o oversampling (default: 1, 4 recommended)]
  [-p ppm_error (default: 0)]
  [-r squelch debug mode ]
  [-t squelch_delay (default: 0)]
   (+values will mute/scan, -values will exit)
  [-D datasets_dir (default: ./datasets)]
  [-F enables Hamming FIR (default: off/square)

Finding ACARS

The Signal Identification Guide indicates I should expect it probaby at 131.550 MHz in my area.

With CubicSDR I found ACARS broadcasts centered around 131.546MHz

acars

Trial Run

So firing up rtl_acars_ng instead .. success!!

$ ./rtl_acars_ng -f 131546000
Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001
Using device 0: Generic RTL2832U OEM
Found Rafael Micro R820T tuner
Oversampling input by: 21x.
Oversampling output by: 1x.
Buffer size: 8.13ms
Tuned to 131798000 Hz.
Sampling at 1008000 Hz.
Output at 48000 Hz.
Exact sample rate is: 1008000.009613 Hz
Tuner gain set to automatic.

Loaded: 406995 aircrafts from dataset.....
Loaded: 7733 airports from dataset.....
Loaded: 110952 flights from dataset.....
Loaded: 365 ACARS message labels from dataset.....
Listening for ACARS traffic...


[BEGIN_MESSAGE]----------------------------------------------------------

RX_IDX: 0
CRC: Correct
Timestamp: 28/10/2017 11:56
ACARS mode: 2
Message label: _ (ACK)
Aircraft reg: .9V-SFK, flight id: SQ7294
Aircraft: Boeing 747-412F
Registration: 9V-SFK
Mode-S ID: 76CCCB
Airline: Singapore Airlines Cargo

Block id: 52,  msg. no: S57A
Message content:-


[END_MESSAGE ]------------------------------------------------------------

DecodingACARS_build

Credits and References

About LEAP#352 SDRRadio

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

Project Source on GitHub Return to the LEAP Catalog
About LEAP

LEAP is my personal collection of electronics projects - usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting.

Projects are often inspired by things found wild on the net, or ideas from the many great electronics podcasts and YouTube channels. Feel free to borrow liberally, and if you spot any issues do let me know or send a pull-request.

NOTE: For a while I included various scale modelling projects here too, but I've now split them off into a new repository: check out LittleModelArt if you are looking for these projects.

Project Gallery view the projects as an image gallery Notebook reference materials and other notes Follow the Blog follow projects and notes as they are published in your favourite feed reader