ACARS DRAMA LIVE

ACARS Drama

@acarsdrama

Want more?

Become a Jumpseat member, support ACARS Drama, and unlock message search, station stats, aircraft lookup, archive sweeps, deeper ACARS insights, and REST API access.

Join Jumpseat
FEEDER GUIDES
Back to Feed the drama Step By Step: Feeding ACARS Drama with ADSB.im Ask in the Discord
Setting up a Docker feeder DOCKER SETUP

This is the standard Docker feeder build: two SDRs, a stack of containers that decode ACARS and VDLM2, and an acars_router configured to send the decoded output to ACARS Drama. It also runs a local copy of ACARS Hub so you can browse your own captured traffic.

What you will need

  • A Linux host with Docker and Docker Compose installed.
  • Two RTL-SDR dongles — one for ACARS, one for VDLM2. One dongle works if you only want to run a single protocol.
  • A VHF air-band antenna, mounted as high and clear as practical.
  • rtl_eeprom, from the RTL-SDR library, for flashing serial numbers.

How it fits together

Antenna SDRs acarsdec dumpvdl2 acars_router acarshub (local UI, port 8080) feedthe.acarsdrama.com

Every container image comes from the SDR Enthusiasts project, which does the heavy lifting. acarsdec and dumpvdl2 decode signal from an assigned SDR, acars_router collects their output and fans it out, and acarshub gives you a searchable local record of what your antenna heard.

Step 1 — Flash a serial number to each SDR

RTL-SDR dongles almost always ship with the serial number 00000000, which makes it impossible for the containers to tell them apart. Insert one device at a time, so you know which one you are writing to, and run:

$ rtl_eeprom -s 00000001

Confirm the write when prompted, then replug the device for the change to take effect. Repeat for the second dongle with a different serial. Make a note of which serial is which — you will assign one to ACARS and one to VDLM2 in the next step.

Step 2 — Create docker-compose.yml

The configuration below is the common two-SDR setup, and is also kept in the sample-config repository. The acars_router service is already pointed at ACARS Drama, so there is nothing extra to wire up.

# Two SDR setup capturing ACARS and VDLM2, with a local ACARS Hub,
# routed to ACARS Drama by acars_router.

version: "3.8"

volumes:
  acarshub_run:

services:
  acarsdec:
    image: ghcr.io/sdr-enthusiasts/docker-acarsdec:latest
    tty: true
    container_name: acarsdec
    restart: always
    devices:
      - /dev/bus/usb:/dev/bus/usb
    environment:
      - FEED_ID=BLAH-KDFW-ACARS   # make this unique, include your nearest airport ICAO
      - TZ=Etc/UTC
      - SERIAL=00000000           # serial of the SDR assigned to ACARS
      - FREQUENCIES=130.025       # semicolon separated to scan multiple, e.g. 129.350;129.525
      - SERVER=acars_router
      - SERVER_PORT=5550
    tmpfs:
      - /run:exec,size=64M
      - /var/log

  dumpvdl2:
    image: ghcr.io/sdr-enthusiasts/docker-dumpvdl2:latest
    tty: true
    container_name: dumpvdl2
    restart: always
    devices:
      - /dev/bus/usb:/dev/bus/usb
    environment:
      - FEED_ID=BLAH-KDFW-VDL2    # make this unique, include your nearest airport ICAO
      - TZ=Etc/UTC
      - SERIAL=00000001           # serial of the SDR assigned to VDLM2
      - FREQUENCIES=136.975       # e.g. 136.650;136.975;136.800;136.100;136.675
      - ZMQ_MODE=server
      - ZMQ_ENDPOINT=tcp://0.0.0.0:45555
    tmpfs:
      - /run:exec,size=64M
      - /var/log

  acarshub:
    image: ghcr.io/sdr-enthusiasts/docker-acarshub:latest
    tty: true
    container_name: acarshub
    hostname: acarshub
    restart: always
    ports:
      - 8080:80
      - 15550:15550
      - 15555:15555
    environment:
      - TZ=Etc/UTC
      - ADSB_LAT=${FEEDER_LAT}
      - ADSB_LON=${FEEDER_LONG}
      - ENABLE_ADSB=false
      - ENABLE_ACARS=external
      - ENABLE_VDLM=external
    volumes:
      - acarshub_run:/run/acars
    tmpfs:
      - /run:exec,size=64M
      - /var/log

  acars_router:
    image: ghcr.io/sdr-enthusiasts/acars_router:latest
    tty: true
    container_name: acars_router
    restart: always
    environment:
      - TZ=Etc/UTC
      - AR_SEND_UDP_ACARS=acarshub:5550;feedthe.acarsdrama.com:5550
      - AR_SEND_UDP_VDLM2=acarshub:5555;feedthe.acarsdrama.com:5555
      - AR_RECV_ZMQ_VDLM2=dumpvdl2:45555
    tmpfs:
      - /run:exec,size=64M
      - /var/log

Four things to change before you start it:

  • FEED_ID on both decoders. Make it unique and include the ICAO code of your nearest major airport. This is how we identify your traffic.
  • SERIAL on both decoders, to match the serials you flashed in step 1.
  • FREQUENCIES on both decoders. The right set depends on your location — see the ACARS and VDLM2 frequency references, or ask in the Discord what works locally.
  • FEEDER_LAT and FEEDER_LONG, either as environment variables or by replacing them with your coordinates.

The AR_SEND_UDP_* lines are the part that matters for feeding. Each takes a semicolon separated list of destinations, so the router delivers to your local hub and to ACARS Drama at the same time. If you already feed another aggregator, add it to the same list rather than running a second decoder.

Step 3 — Bring it up and check it

docker compose up -d

Browse to port 8080 on the container host for the ACARS Hub UI. Messages should start appearing within a few minutes if your antenna is picking up traffic.

The ACARS Hub web interface showing recently received messages

The hub also reports message counts per feed and per frequency, which makes it the main tool for tuning your frequency lists.

Step 4 — Tell us you are feeding

Email feeders [at] acarsdrama [dot] com with your feed ID and approximate location, and we will confirm your data is arriving. Sky Drama Farmers get complimentary Jumpseat membership once the feed is confirmed.

If anything is not working, the ACARS Drama Club Discord is the best place to ask.


Got a feed running? Email feeders [at] acarsdrama [dot] com with your Feed ID and approximate location and we’ll confirm we can see you in the data — Sky Drama Farmers get complimentary Jumpseat membership.