Build an ACARS and VDL2 Aircraft Message Decoder with Raspberry Pi and RTL-SDR
An ADS-B receiver tells you where aircraft are; an ACARS/VDL2 receiver tells you what they're actually saying — text messages between aircraft and airline operations covering everything from gate assignments and weather requests to maintenance reports and out-of-range position updates. It's a genuinely different data feed from position tracking, decoded from a completely different set of frequencies, and it pairs naturally with an existing ADS-B setup since both run happily on the same low-cost RTL-SDR hardware. This build turns a spare Raspberry Pi and a second RTL-SDR dongle into a dedicated ACARS and VDL2 message decoder with a local web dashboard, and optionally feeds the decoded messages to community aggregators the same way a flight tracker feeds ADS-B data.
ACARS and VDL2: What's Actually Being Decoded
ACARS (Aircraft Communications Addressing and Reporting System) is a narrowband digital data link aircraft have used for decades to exchange short text messages with airline operations centers over VHF — think of it as a slow, aviation-specific precursor to modern data messaging. VDL2 (VHF Data Link Mode 2) is a newer, faster digital mode carrying similar traffic plus some ADS-C and CPDLC (controller-pilot data link) content on a dedicated frequency. Both are unencrypted and legal to receive in most jurisdictions under the same general allowances that cover receiving ADS-B and other public aeronautical broadcasts — this build is receive-only and transmits nothing.
Difficulty, Time, and Requirements
This is a beginner-to-intermediate software-focused build — no soldering or fabrication required unless you're also building a dedicated antenna. Budget an afternoon for software setup if you're reusing an existing Raspberry Pi and RTL-SDR, or a full day if building the antenna from scratch alongside it. A Raspberry Pi 4 or 5 is recommended if this Pi is also running other services (like an existing ADS-B feeder); a Pi Zero 2 W is workable as a dedicated single-purpose decoder given ACARS/VDL2 decoding's modest CPU requirements compared to something like ADS-B's higher message rate.
Parts List
- RTL-SDR dongle (RTL2832U + R820T2 tuner, the standard budget SDR chipset)
- Raspberry Pi (4, 5, or Zero 2 W depending on whether this is dedicated or shared with other services)
- MicroSD card, 32GB or larger, high-endurance rated for continuous logging
- VHF discone or ground-plane antenna covering 118-137 MHz
- Coaxial feedline (RG-58 or better for short runs, LMR-400 for longer outdoor runs)
- SMA to the RTL-SDR's antenna connector adapter, matching your chosen antenna's connector
- Weatherproof enclosure or mast mount if installing the antenna outdoors
- USB extension cable to keep the RTL-SDR's own heat away from the Pi and reduce self-generated RF noise near the tuner
- 5V power supply appropriately rated for your chosen Pi model
- Ferrite chokes for the USB and antenna cables (reduces common electrical noise reaching the receiver)
Tools Required
A computer to flash the microSD card, basic Linux command-line familiarity, and a crimping tool or soldering iron only if building a custom antenna feedline rather than buying pre-terminated cable.
Software Setup
- Flash Raspberry Pi OS Lite to the microSD card and complete a headless first boot with SSH enabled — this site's headless Pi setup guide covers the standard process in detail.
- Install RTL-SDR drivers and blacklist the kernel's default DVB-T driver, which otherwise claims the dongle before your decoding software can use it — the same first step needed for any RTL-SDR project on a fresh Pi image, including this site's ADS-B and NOAA satellite receiver guides.
- Install acarsdec (for ACARS) and/or dumpvdl2 (for VDL2) — both are open-source, actively maintained decoders built specifically for RTL-SDR-based reception, packaged for easy build from source on Raspberry Pi OS or available as pre-built binaries depending on your distribution.
- Configure the decoder with your region's active ACARS/VDL2 frequencies. Frequency assignments vary by region and are published by hobbyist aviation communities — common US ACARS frequencies cluster around 130-137 MHz, with VDL2 commonly on 136.975 MHz in most regions, but always confirm current assignments for your area rather than assuming these carry over exactly.
- Install a web dashboard such as acarshub, which combines ACARS and VDL2 decoding with a browser-based live message feed, searchable history, and a built-in database that annotates messages with flight and airline information where available.
- Set the decoder and dashboard to start on boot via systemd services, so the station comes back online automatically after a power interruption without manual intervention — the same reliability pattern used for any always-on Pi service on this site, including the ADS-B and Pi-hole setup guides.
Antenna Considerations
ACARS and VDL2 both live in the VHF aviation band (roughly 118-137 MHz), which is a meaningfully different antenna design target than the 1090 MHz used by ADS-B — a discone or ground-plane antenna cut for VHF aviation frequencies will outperform a generic "wideband" antenna bundled with a cheap RTL-SDR kit, and outdoor placement with a clear view of the sky matters even more here than for ADS-B, since VHF signals are more sensitive to obstruction from buildings and terrain. A simple homemade ground-plane antenna (a length of coax with radial elements cut to a quarter-wavelength at your target frequency) is a legitimate and cheap starting point before investing in a commercial discone.
Reading What You've Decoded
Message TypeWhat It Tells You OOOI reports (Out, Off, On, In)Automated timestamps for pushback, takeoff, landing, and gate arrival — the backbone of airline operational tracking Position reportsPeriodic lat/long updates, particularly valuable over oceans and remote areas with no ADS-B or radar coverage Weather requests/uplinksCrew requests for current weather at destination or alternate airports, and the uplinked responses Maintenance/fault reportsAutomated aircraft system messages sent to maintenance operations, sometimes visible in the raw decoded traffic depending on airline configuration Free text messagesCrew-to-dispatch text communication, gate/ground handling coordinationContributing to Community Aggregators
Several community-run aggregators (airframes.io among others) accept ACARS/VDL2 feeds from home stations similarly to how flightaware and adsbexchange accept ADS-B feeds, building a crowd-sourced picture of message traffic well beyond any single receiver's range. Feeding is optional and configured separately from local decoding — check the current submission requirements and feeder software for whichever aggregator you choose, since these details change over time and each project maintains its own onboarding documentation.
Troubleshooting Common Issues
- No messages decoding at all: Confirm the RTL-SDR is actually detected (rtl_test should report the device) and that no other process — including a conflicting ADS-B decoder also trying to claim the same dongle — is holding the device open. Running ACARS/VDL2 and ADS-B decoding simultaneously requires two separate RTL-SDR dongles, one per frequency range.
- Sparse message reception: Antenna placement is almost always the limiting factor before software configuration — an indoor antenna near a window will hear a fraction of the traffic an outdoor, elevated antenna with a clear sky view will catch.
- Frequent dropouts or garbled messages: Check for nearby noise sources (switching power supplies, unshielded USB 3.0 ports on some Pi models are a documented RTL-SDR noise source) and add the USB extension cable and ferrite chokes from the parts list if not already installed.
An ACARS/VDL2 station is a natural next step for anyone who's already built an ADS-B feeder and wants a genuinely different slice of the same airspace — instead of watching dots move on a map, you're reading the actual operational chatter behind those flights. It runs happily alongside an existing Pi-based ADS-B setup on separate hardware, and the decoded message history builds into a surprisingly interesting log of what's actually happening in the sky overhead.