dumphfdl: A Multichannel HFDL Decoder for SDR

Thank you to Tomasz Lemiech for writing in and sharing with us the release of his new software "dumphfdl". Tomasz is the author of dumpvdl2 and also maintains RTLSDR-Airband. Regarding dumphfdl Tomasz writes:

dumphfdl is a multichannel HFDL decoder for Linux. HFDL (High Frequency Data Link) is a protocol used for radio communications between aircraft and a network of ground stations using high frequency (HF) radio waves. Thanks to the ability of short waves to propagate over long distances, HFDL is particularly useful in remote areas (eg. over oceans or polar regions) where other ground-based communications services are out of range. While many aircraft carriers prefer satellite communications these days, HFDL is still operational and in use.

Available HFDL decoding applications typically run on Windows and take an audio signal on input. The signal has to be delivered to the decoder via a physical cable from an external shortwave receiver or via a virtual cable from an SDR. This makes these apps inherently single-channel. This shortcoming does not apply to dumphfdl which interfaces directly with the SDR, so no pipes or virtual audio cables are needed. The program can decode multiple HFDL channels simultaneously, up to available CPU power and SDR bandwidth (there is no fixed channel count limit).

dumphfdl uses SoapySDR library (https://github.com/pothosware/SoapySDR) to communicate with the radio. Any HF-capable receiver for which a SoapySDR driver exists, should work. I have tested it briefly with an RTL-SDR v3 dongle in direct sampling mode. While I had a bit of a success with it, HFDL signals are often quite weak, so a real HF radio (like SDRPlay RSP1A or Airspy HF+) gives much better results (more decoded messages).

The program may log decoded messages to a file or send them over the network for external processing and storage.

HFDL messages often contain diagnostic data accompanied with aircraft position information. The program may extract this data from decoded messages and provide a positional data feed for external plane tracking apps (eg. Virtual Radar Server). An example screenshot from VRS is attached - taken after about 2 hours of decoding eight HFDL channels spread across three HFDL subbands: 6.6, 8.9, and 10.0 MHz with two dumphfdl instances on two radios - RSP1A and Airspy HF+. Definitely a nice way to expand the coverage of a home ADS-B radar :-)

Refer to the README.md file in the project repository for more details. The program is still under development, so new features and further improvements might be expected in subsequent releases.

dumphfdl - decoded aircraft positions plotted on a map


  1. Tomasz Lemiech

    dumphfdl 1.2.0 released.


    – Noise floor and signal level estimates are now computed and printed in
    message headers.
    – Added –freq-as-squawk option which uses squawk field in the Basestation feed
    to convey HFDL channel frequency on which the position information has been
    – The program can now decode data from I/Q samples piped onto standard input.
    This allows interoperation with I/Q data sources like GNURadio or KiwiSDR.
    – Added `–read-buffer-size` option for setting input buffer size when decoding
    from an I/Q file or from standard input.
    – Slightly better sensitivity.



  2. Michael Jackson

    Great work and currently decoding using an AirspyHF+ but I was wondering what the soapysdr connection string would be for my rtl-sdr v3 dongle in direct sampling mode. I have reasonably good reception with my dongle on HF so I would be keen to test it out. Thank you, Michael, New Zealand.

    • Tomasz Lemiech

      Preferably a wideband antenna dedicated for short wave reception, like an active magnetic loop or a mini whip. Wire antennas for HF may also work, however they might require an external tuner to cover the entire band.

      The VRS screenshot in this post was taken from a setup that uses a Wellbrook loop.

Leave a Reply to Q Cancel reply

You may use the following HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>