Skip to main content

Install and Configure dumphfdl

dumphfdl is a multichannel HFDL decoder that receives ACARS messages, ADS-C position reports, and CPDLC communications from aircraft via High Frequency radio. HFDL provides coverage over oceans and remote areas where VHF signals don't reach.

Installation on Debian/Ubuntu​

Install dependencies​

sudo apt-get install build-essential cmake git pkg-config libglib2.0-dev libconfig++-dev libliquid-dev libfftw3-dev

For SoapySDR hardware support:

sudo apt-get install libsoapysdr-dev

For ZeroMQ output support:

sudo apt-get install libzmq3-dev

Install libacars (required)​

git clone https://github.com/szpajder/libacars.git
cd libacars
mkdir build && cd build
cmake ../
make
sudo make install
sudo ldconfig

Build dumphfdl​

git clone https://github.com/szpajder/dumphfdl.git
cd dumphfdl
mkdir build && cd build
cmake ../
make
sudo make install

Configuration​

Basic usage​

HFDL frequencies are specified in kHz:

dumphfdl --soapysdr driver=rtlsdr --sample-rate 250000 \
--output decoded:json:udp:address=feed.airframes.io,port=5556 \
--station-id MY-STATION-HFDL \
8927 8912 8894 8885 8834

Key command-line options​

OptionDescription
--soapysdr <driver>SoapySDR device string (e.g., driver=rtlsdr)
--sample-rate <rate>Sample rate in Hz (required)
--gain <dB>Tuner gain in dB
--gain-elements <spec>Per-stage gain (e.g., IFGR=54,RFGR=0)
--freq-correction <ppm>Frequency correction in PPM
--centerfreq <freq>Center frequency in Hz (auto-calculated if omitted)
--station-id <id>Station identifier for output
--output <spec>Output configuration (same syntax as dumpvdl2)

Output configuration​

dumphfdl uses the same output syntax as dumpvdl2:

--output <what>:<format>:<transport>:<parameters>

Examples:

  • decoded:json:udp:address=feed.airframes.io,port=5556 — Feed to Airframes
  • decoded:text:file:path=/var/log/hfdl.log,rotate=hourly — Log to file
  • decoded:json:zmq:mode=server,endpoint=tcp://0.0.0.0:45556 — ZeroMQ output

Feeding to Airframes​

dumphfdl --soapysdr driver=rtlsdr --sample-rate 250000 --gain 42 \
--output decoded:json:udp:address=feed.airframes.io,port=5556 \
--station-id MY-STATION-HFDL \
8927 8912 8894 8885 8834

HFDL Ground Stations and Frequencies​

HFDL uses a global network of ground stations, each operating on multiple HF frequencies. Active frequencies change throughout the day based on ionospheric propagation conditions. Generally, lower frequencies work better at night and higher frequencies during the day.

Frequency selection tips​

  • Use hfdl.observer to see which ground stations and frequencies are currently active in real-time
  • Focus on ground stations within your reception range (HFDL signals travel far, but closer stations are stronger)
  • A bandwidth of 250 kHz can cover approximately 5–8 channels on a single ground station
  • Multiple SDRs can monitor multiple ground stations simultaneously

Example frequency sets​

North Atlantic / Shannon (ground station near you in eastern North America or western Europe):

8942 8957 8927 8912 8885

North Pacific (western North America):

8927 8912 8894 8885 8834
tip

The hfdl.observer website and the HFDLObserver software can automatically retrieve and update active frequency lists, which is helpful since HFDL ground stations change their active frequencies regularly.

Running as a Service​

sudo tee /etc/systemd/system/dumphfdl.service << 'EOF'
[Unit]
Description=dumphfdl HFDL decoder
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/dumphfdl --soapysdr driver=rtlsdr --sample-rate 250000 --gain 42 --output decoded:json:udp:address=feed.airframes.io,port=5556 --station-id MY-STATION-HFDL 8927 8912 8894 8885 8834
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable dumphfdl
sudo systemctl start dumphfdl

Verifying Your Feed​

Visit the Airframes stations page and search for your station ID. HFDL message volume depends heavily on time of day, propagation conditions, and how many aircraft are using the ground station you're monitoring.