Key takeaways
- VDL2 is digital ACARS with more speed: The datalink works at 31.5 kbit/s in 25 kHz channels and carries ACARS messages, among other things, and in European airspace CPDLC as well.
- One frequency is the most important: 136.975 MHz is the Common Signalling Channel. Depending on the region, other channels such as 136.725, 136.775 and 136.875 MHz come on top.
- One stick is enough for several channels: Because the VDL2 channels lie close together, dumpvdl2 decodes them simultaneously with a single RTL-SDR stick.
- Gain in moderation: For RTL-SDR sticks, the dumpvdl2 documentation recommends about 40 dB as a starting value – full gain tends to bring noise and overload.
- Interesting for spotters: The frames contain the aircraft’s ICAO 24-bit address, and ACARS messages often the registration and flight number – ideal for filling in sightings.
Contents
- 1.VDL Mode 2 in one paragraph
- 2.The VDL family: Mode 1 to Mode 4
- 3.The frequencies: where to find VDL2
- 4.The hardware you need
- 5.Installing and starting dumpvdl2
- 6.Setting gain and signal quality correctly
- 7.Output: text, JSON and network
- 8.What the data reveals
- 9.What spotters get out of it
- 10.Legal: reading along is not passing on
- 11.What to keep in mind
- 12.Conclusion
If you already have ADS-B on your screen, you know positions, altitudes and speeds. What the aircraft discuss with their airline and air traffic control, you don’t see there. A large part of exactly that runs over VDL Mode 2, a digital datalink in the VHF band. With an inexpensive SDR stick and the open-source decoder dumpvdl2, you can receive and decode VDL2 yourself. This guide shows you which frequencies you need, how to configure dumpvdl2 and what is really in the messages.
From the datalink to your own sighting
With Planetrack, you post your sightings with photo, aircraft type, registration, airline, airport and spot – and collect them in your hangar. Planetrack is launching soon – join the waitlist and get early access.
VDL Mode 2 in one paragraph
VDL Mode 2 (VHF Data Link Mode 2, often VDL2 or VDLM2 for short) is a digital radio datalink between aircraft and ground stations. It works in the upper part of the aviation band just below 137 MHz, uses D8PSK modulation in channels 25 kHz wide and reaches a raw data rate of 31.5 kbit/s. By comparison, classic VHF ACARS manages 2.4 kbit/s. Mainly ACARS messages between aircraft and airline run over VDL2, and in Europe CPDLC communication between controllers and the cockpit. The ground networks are operated by service providers such as ARINC and SITA.
If ACARS isn’t quite a familiar term yet, it is worth a look at ACARS explained first. To understand VDL2, though, a simple distinction is enough: ACARS is the messaging system, VDL2 one of its transmission paths.
The VDL family: Mode 1 to Mode 4
The name “Mode 2” suggests there are other variants – and there were indeed. In everyday use, though, only one prevailed.
| Variant | Principle | Status |
|---|---|---|
| VDL Mode 1 | data transmission compatible with analog ACARS radio | intended only for validation, removed from the ICAO standards |
| VDL Mode 2 | D8PSK, 31.5 kbit/s, channel access via CSMA | widely used in scheduled operations |
| VDL Mode 3 | data and digital voice in time slots (TDMA) | trialed in the USA, abandoned in 2004 |
| VDL Mode 4 | self-organizing time slots, also aircraft to aircraft | standardized by ICAO, but displaced as an ADS-B carrier by Mode S on 1090 MHz |
For you as a listener, almost only Mode 2 is therefore relevant. If you are interested in the ADS-B part of the story, you can find the background on the 1090 MHz method in Transponder modes A, C and S explained.
The frequencies: where to find VDL2
VDL2 uses a narrow section at the upper end of the aviation band. The central channel is 136.975 MHz, the so-called Common Signalling Channel (CSC). Aircraft check in here, and in many regions most of the traffic runs here. If capacity isn’t enough, network operators distribute the traffic across further channels.
| Frequency | Role |
|---|---|
| 136.975 MHz | Common Signalling Channel – always keep it running |
| 136.875 MHz | additional channel in busy regions |
| 136.775 MHz | additional channel in busy regions |
| 136.725 MHz | additional channel in busy regions |
Which additional channels are active near you depends on region and network operator. The most practical way: run all four at once and look after a few hours at which channels messages actually arrive. Because the frequencies are only a few hundred kilohertz apart, a single SDR stick can handle it. Classic analog ACARS, by contrast, sits lower in the band, in Europe for example on 131.525, 131.725 and 131.825 MHz. How to receive that is shown in Receiving ACARS messages with SDR.
You can find more on the structure of the aviation band and the channel allocation in Understanding aviation radio frequencies.
The hardware you need
The good news: VDL2 is not an expensive niche hobby. The basic equipment overlaps heavily with an ADS-B setup.
- SDR receiver: An RTL-SDR stick is the standard. dumpvdl2 also supports Mirics sticks, SDRplay receivers and, via SoapySDR, other devices – a sample rate of 2.1 million samples per second is required there. Devices with fixed sample rates such as Airspy receivers are not supported via SoapySDR, according to the documentation. Which stick suits what is compared in SDR sticks for ADS-B compared.
- Antenna: You need an antenna for the VHF aviation band. A 1090 MHz antenna from an ADS-B receiver is unsuitable for this. A simple quarter-wave ground plane for 137 MHz has a radiator of a good 50 centimeters in length and is easy to build yourself. A broadband scanner antenna for the aviation band works just as well – you can read more on antennas and reception in the VHF band in Receiving aviation radio with an SDR stick.
- Computer: dumpvdl2 runs on Linux, for example on a Raspberry Pi or an old PC. If dumpvdl2 reports lost samples on the Pi, the documentation advises, among other things, decoding fewer channels at once.
- Optionally a filter: Near strong FM broadcast transmitters, a filter against the broadcast band can reduce overload of the stick.
For the location, the same basic rules apply as for ADS-B: as high as possible, as clear a view as possible, short cables. VHF is somewhat more forgiving than 1090 MHz, but here too line of sight determines range. Tips are in Finding the best antenna location.
Two sticks, two worlds
An SDR stick only ever covers one frequency range. If you want your ADS-B receiver to keep running, you need a second stick and a second antenna for VDL2. On a Raspberry Pi, both decoders can run in parallel as long as processing power and USB power supply are sufficient.
Installing and starting dumpvdl2
dumpvdl2 is an open-source decoder and protocol analyzer for VDL Mode 2, developed by Tomasz Lemiech and released under the GPL-3.0. It decodes several channels at once and breaks the messages down into the individual protocol layers.
1. Install dependencies
Among other things, you need a C compiler, cmake, pkg-config, git and glib2. For RTL-SDR sticks, librtlsdr is added. Optional libraries such as SQLite or ZeroMQ unlock additional features.
2. Build libacars
dumpvdl2 uses the libacars library by the same developer to decode ACARS content such as CPDLC, ADS-C and MIAM. It is built and installed beforehand with cmake.
3. Compile dumpvdl2
Clone the source code from GitHub, run cmake and make in a build directory, install. If optional dependencies are missing, cmake simply builds without those features.
4. Determine the frequency correction
Cheap sticks drift in frequency. The documentation recommends measuring the ppm value for a few minutes with rtl_test -p and using it as the starting value for the correction.
5. Start the first session
Specify stick, gain, correction and frequencies – and watch the first frames come in.
A typical start with an RTL-SDR stick looks like this – here with all four common channels:
dumpvdl2 --rtlsdr 0 --gain 40 --correction 42 136725000 136775000 136875000 136975000
The 42 here stands for your stick’s ppm value and is only an example. In the header of every decoded message, dumpvdl2 shows the measured frequency offset. If it is persistently far from zero, you adjust the correction.
If you prefer to work with containers: the sdr-enthusiasts project offers a Docker image for dumpvdl2 in which you set frequencies, gain and a feeder ID via environment variables. How this ecosystem works in general is shown in Feeding several networks at once with Docker/Ultrafeeder.
Setting gain and signal quality correctly
With VDL2, less is often more. The dumpvdl2 documentation gives about 40 dB as a starting value for RTL-SDR sticks, about 75 dB for Mirics sticks, and expressly advises against turning the gain fully up. The goal is a signal about 15 dB above the noise. Too much gain lifts the noise along with it and makes the stick overload on strong transmitters.
A pragmatic approach:
- Start with 40 dB and let dumpvdl2 run for a while.
- Watch the signal and noise levels in the message headers.
- Change the gain in small steps and compare over at least half an hour how many messages per channel come in.
- SDRplay receivers usually cope well with automatic gain control, according to the documentation.
If you want to optimize seriously, send dumpvdl2’s statistics via StatsD to an external collector and analyze them graphically – similar to ADS-B with the tools from Measuring reception performance.
Spotted a rare bird in the datalink?
With Planetrack’s sighting alerts, you follow registrations, types, airlines and special liveries and get notified on approach or landing. Planetrack is launching soon – join the waitlist and get early access.
Output: text, JSON and network
dumpvdl2 can do much more than write text to the terminal. That matters as soon as you want to process the data further.
- Formats: readable text, JSON for your own analysis, a single-line ACARS format for Planeplotter and a binary format for raw frames.
- Destinations: files with hourly or daily rotation, UDP and ZeroMQ. For reliable transmission over the network, the documentation recommends ZeroMQ because UDP doesn’t guarantee delivery.
- Enrichment: With a ground station list, you map station addresses to an airport and location. From a Basestation SQLite database, dumpvdl2 adds aircraft data such as registration and type.
- Filters: With a message filter, you hide uplinks from the ground or empty ACARS messages, for example.
- Identifier: With a station ID, you tag the JSON output when you merge data from several receivers.
It gets convenient with ACARS Hub from the sdr-enthusiasts project. The web interface collects the output of external decoders, stores it in a database, offers search and alert terms and can overlay ADS-B targets on a map. The project page names dumpvdl2 as the preferred VDL2 decoder there. Besides VDL2, ACARS Hub also accepts classic ACARS, HFDL from shortwave and satellite datalinks – an introduction to shortwave is offered by Receiving HFDL.
What the data reveals
Now it gets exciting: what is actually in the messages? dumpvdl2 breaks every frame down into its layers. Roughly, three levels can be distinguished.
The link layer (AVLC)
Every VDL2 frame carries a source and a destination address. For aircraft, that is the ICAO 24-bit address – the same hex code you know from ADS-B. That lets you assign every message unambiguously to an aircraft, even if there is no registration in the content. What is behind this address is explained in ICAO 24-bit address (hex code). Ground stations have addresses of their own, which you resolve with a station list. In addition come management frames (XID), with which aircraft set up connections to ground stations and switch from one station to the next.
ACARS over VDL2
Most of the traffic consists of ACARS messages transported over VDL2. They usually contain the registration and often the flight number, plus a label that identifies the message type. Typical content:
- OOOI reports: Out (left the parking position), Off (took off), On (landed), In (at the parking position) – the timestamps from which airlines derive block and flight times.
- Weather and operations: weather requests, loading information, fuel and performance data.
- Technical messages: maintenance and engine data, often cryptically encoded.
- Free text: messages between crew and operations center, for example to flight dispatchers.
Via libacars, dumpvdl2 additionally decodes embedded applications: FANS-1/A CPDLC and ADS-C, MIAM for larger data transfers and media advisory messages, which reveal which datalinks (VDL2, HF, satcom, VHF ACARS) are currently available.
ATN and CPDLC
The third level is the Aeronautical Telecommunication Network (ATN). In Europe, the air traffic control CPDLC services run over VDL2: controllers send clearances, frequency changes or direct instructions as text messages to the cockpit, and the crew confirms at the push of a button. Maastricht Upper Area Control has operated ATN CPDLC since 2003, and the Eurocontrol Link 2000+ program brought the service to many more flight information regions. dumpvdl2 decodes the protocols required for this, from X.25 via CLNP to ATN B1 CPDLC. What CPDLC means in operation is shown in CPDLC explained; articles of their own cover the role of Eurocontrol and of DFS.
What spotters get out of it
For plane spotters, VDL2 is above all a supplement to ADS-B. A few use cases from practice:
- Confirming registrations: ACARS messages carry the registration in plain text. If your photo is blurry or the registration was hidden, a match via time and hex code helps – more in Identifying an unreadable registration.
- Completing sightings: OOOI times and flight numbers help you fill in your notes afterward, similar to matching with ADS-B logs.
- Aircraft without position data: Not every aircraft shows up completely on public maps. A datalink contact at least shows you that a particular registration was active within range of your receiver.
- Understanding operations: If you read along for a while, you get a feel for how much communication is behind each rotation – from the weather request to the arrival report.
For finding a specific aircraft, ADS-B remains the tool of choice; Tracking an aircraft by registration or hex code shows how.
VDL2 is worthwhile if …
- you already receive ADS-B and want more background
- a second SDR stick and a VHF antenna are available
- you like diving into protocols and data formats
Only partly sensible if …
- your location is low-lying with hardly any view outward
- you only want to look up registrations occasionally
- your Raspberry Pi is already heavily loaded
Rather not if …
- you are looking for positions on a map – that is what ADS-B is for
- you want to share the content publicly without knowing the legal situation
- you don’t feel like command line and Linux
Legal: reading along is not passing on
Datalink messages are addressed to airlines and air traffic control, not the general public. Many countries, including Germany, have rules for radio content not intended for you – especially regarding passing on and publishing. So don’t share any content, screenshots or logs before you have checked the legal situation for your country. Listening to aviation radio: the legal situation and Is receiving and sharing ADS-B data allowed? offer a starting point. This article is not legal advice.
What to keep in mind
- Always include 136.975 MHz. Without the Common Signalling Channel, you miss a large part of the traffic.
- Check the frequency correction. A wrong ppm value quickly costs many messages with digital modes.
- Don’t maximize gain. 40 dB on the RTL-SDR is a good start, not the maximum.
- Choose the right antenna. A 1090 MHz antenna receives poorly in the VHF band. A simple ground plane for 137 MHz brings considerably more.
- Tell uplinks and downlinks apart. Ground stations often transmit more strongly than aircraft at a great distance. If you mostly see uplinks, your location may be unfavorable for air traffic.
- Read first, then share. Don’t publish anything without knowing the legal situation.
Ready for your first VDL2 session?
- I have an SDR stick that isn’t already tied up for ADS-B.
- I have an antenna for the aviation band around 137 MHz.
- libacars and dumpvdl2 are installed.
- I know my stick’s ppm value.
- I run 136.975 MHz and the additional channels at the same time.
- I know what I may and may not do with the data.
From the receiver to the fence
On Planetrack’s spot map, find suitable spots with directions and best light, check weather, wind and runways at the airport and share your photos with the community. Planetrack is launching soon – join the waitlist and get early access.
Conclusion
VDL Mode 2 opens up the part of aviation that ADS-B doesn’t show: the digital communication between aircraft, airline and air traffic control. With a second SDR stick, a simple VHF antenna and dumpvdl2, you receive the common channels around 136.975 MHz simultaneously. The messages are often cryptic but deliver hex codes, registrations, flight numbers and operating times – valuable building blocks for confirming sightings and understanding flight operations better. If you want to take the next step, add classic ACARS and HFDL to the setup.
Quick summary
For VDL2, you need a stick of your own, an antenna for the 137 MHz band and dumpvdl2. Run 136.975 MHz plus the additional channels 136.725, 136.775 and 136.875 MHz at the same time, start with about 40 dB gain on the RTL-SDR and correct the frequency offset. Use the data for learning and for filling in your sightings – and share content only once you know the legal situation.
Summary
- VDL Mode 2 is a digital VHF datalink between aircraft and ground stations in the band just below 137 MHz.
- With dumpvdl2, an RTL-SDR stick and an aviation band antenna, you receive several VDL2 channels simultaneously and get the content as text, JSON or over the network.
- The content ranges from weather and operational messages and position reports to clearances via CPDLC. A lot of it is cryptic, some of it very useful for spotters.
- Received content is not intended for the public. If you want to publish or pass it on, you should check the legal situation in your own country first.
Frequently asked questions
What is VDL Mode 2?
VDL Mode 2 (VHF Data Link Mode 2, VDL2 for short) is a digital datalink between aircraft and ground stations in the VHF aviation band. It uses D8PSK modulation in 25 kHz channels and reaches a raw data rate of 31.5 kbit/s – considerably more than the 2.4 kbit/s of classic VHF ACARS. ACARS messages run over VDL2, and in Europe so do CPDLC messages between controllers and the cockpit.
On which frequencies does VDL Mode 2 transmit?
The most important channel is 136.975 MHz, the Common Signalling Channel. Where this channel doesn’t have enough capacity, further channels in the range from 136.700 MHz are added, typically 136.725, 136.775 and 136.875 MHz. The best way to find out which of them are active in your region is to run them all at once and compare the statistics.
What hardware do I need for dumpvdl2?
An RTL-SDR stick is enough to get started. dumpvdl2 also supports Mirics sticks, SDRplay receivers and, via SoapySDR, other devices, provided they can handle a sample rate of 2.1 million samples per second. You also need an antenna for the aviation band around 137 MHz and a computer, such as a Raspberry Pi or a Linux PC.
Can I also receive VDL2 with my ADS-B stick?
Technically yes, but not at the same time. An SDR stick can only cover one frequency range at a time. For ADS-B on 1090 MHz and VDL2 around 137 MHz, you need two sticks in parallel – and ideally two antennas, because an antenna tuned to 1090 MHz is unsuitable for the VHF band.
What is the difference between VDL2 and ACARS?
ACARS is a messaging system, VDL2 a transmission path. Classic ACARS runs analog-modulated on VHF frequencies of its own. Over VDL2, ACARS messages are transmitted digitally and faster. In addition, VDL2 carries protocols of the Aeronautical Telecommunication Network (ATN), such as CPDLC. dumpvdl2 decodes both.
Which gain setting is right?
For RTL-SDR sticks, the dumpvdl2 documentation gives about 40 dB as a starting value. The goal is a signal about 15 dB above the noise. Maximum gain is rarely sensible because it also increases noise and overload from strong transmitters.
May I receive and publish VDL2 messages?
Receiving is one matter, publishing another. Datalink messages are not addressed to the general public; in Germany and other countries, rules apply to radio content not intended for you. Before you pass on, share or show content on social media, you should check the legal situation. Our articles on the legal situation for aviation radio and ADS-B data provide an overview.
Read more in ADS-B, MLAT & receivers
- Build your own 1090 MHz antenna: spider, collinear and ground plane
- Finding the best antenna location: height, line of sight, cable and loss
- Receiving and sharing ADS-B data: what is allowed in Germany, Austria and Switzerland?
- Running an ADS-B receiver outdoors: enclosure, cooling, surge protection and power
- Build your own ADS-B receiver: Raspberry Pi, stick and antenna
- What feeders get in return: free subscriptions from FR24, FlightAware, AirNav Radar and Plane Finder
You might also like
Receiving ACARS messages with an SDR: acarsdec and ACARS Hub
Besides ADS-B, airliners also send short text messages over ACARS. With an SDR stick, an airband antenna, acarsdec and ACARS Hub, you can make this datalink visible – as long as you keep the legal situation in mind.
ATC radioACARS explained: receiving and decoding airline data link
ACARS is the text messaging service between cockpit and airline. Here you learn how the system came about, how a message is structured, which paths it travels and what you need to know about receiving and decoding.
ATC radioCPDLC explained: how controllers and cockpits communicate by data link
CPDLC replaces parts of voice radio with text messages between controller and cockpit. Here you learn how logon, clearances and replies work, which systems exist and what it means for you as a spotter and radio listener.



