dumpvdl2: A Lightweight VDL2 Decoder

The VHF Data Link mode 2 (VDL2) is a relatively new wireless transmission mode used on aircraft for sending short messages, position data (similar to ADS-B) and also for allowing traffic controllers to communicate to pilots via text and data. VDL2 is an evolution of ACARS and is eventually supposed to replace it entirely. The advantage over ACARS is that VDL2 can transmit data 10 times faster, and supports a much wider range of services. The main default channel is at 136.975 MHz, but channels could exist on other air band frequencies too.

Over on GitHub Tomasz Lemiech (szpajder – also the author of RTL-Airband) has uploaded a new VDL2 decoder called dumpvdl2. This is a lightweight command line Linux based VDL2 decoder and protocol analyzer. The features include:

  • Runs under Linux (tested on: x86, x86-64, Raspberry Pi)
  • Supports following SDR hardware:
    • RTLSDR (via rtl-sdr library)
    • Mirics SDR (via libmirisdr-4)
    • reads prerecorded IQ data from file
  • Decodes up to 8 VDL2 channels simultaneously
  • Outputs messages to standard output or to a file (with optional daily or hourly file rotation)
  • Outputs ACARS messages to PlanePlotter over UDP/IP socket
  • Supports message filtering by type or direction (uplink, downlink)
  • Outputs decoding statistics using Etsy StatsD protocol

In a previous post we showed how VDL2 could be decoded with MultiPSK on Windows. But the advantage of dumpvdl2 is that it allows you to set up a lightweight monitoring station on something like a Raspberry Pi. dumpvdl2 can also be interfaced with PlanePlotter, and statistics can be graphed with another program such as Grafana.

dumpvdl2 running.
dumpvdl2 running.
Notify of

Inline Feedbacks
View all comments

dumpvdl2 1.4.0 has just been released. It features a completely revamped DSP engine which gives much better decoding success rate (ie. more messages, especially from distant aircraft). Downlad here.


Can the program easily calculate the Channel Congestion? Detect Modulated dp8sk time + non-dp8sk time in a given set of frequencies.


It might do it, but it doesn’t do it right now.


dumpvdl2 v. 1.2.0 is out. Changelog and download are . Enjoy.


Works well. But vy often: “unknown protokoll 0x0a”.


This may be CPDLC or some other ICAO application that is yet to be implemented in dumpvdl2.

Could you please collect some logs of these frames and contact me? (my email is in README.md file in the dumpvdl2 source directory). I need this data to continue the development of the app. Thanks in advance.


Decoding of CPDLC and ICAO Context Management messages is supported in dumpvdl2 version 1.1.0 onwards.

Thanks to everybody who submitted their log files. You made this possible.


I’ve been able to use it. It works very well. The frequency correction parameter is important. It is advisable to run rtl_test for estimating the error. I can see about 600 KB of data per hour.

Lama Bleu

Tested and working well on Ubuntu 16.04 LTS- Thanks to Tomasz for he first free VDL2 decoder.


./dumpvdl2: symbol lookup error: ./dumpvdl2: undefined symbol: mirisdr_set_transfer

Where is problem?

Piotrek, sp5xsb