Skip to content

ardopcf

HF data modem for Winlink and packet over poor paths

What it does

ardopcf is a soundcard modem for ARDOP, the Amateur Radio Digital Open Protocol: an ARQ data mode designed for HF, where it negotiates speed and bandwidth against changing conditions and retries what did not get through. It presents a TCP interface that Pat and other Winlink clients connect to, plus a web interface for watching what the modem is doing.

Why you would want it

It is the open path to Winlink over HF. Without an HF modem, Pat can reach a gateway by telnet or by packet on VHF and no further -- which is fine until the internet is the thing that failed and the nearest packet node is out of range. The alternative, VARA, is closed software that runs under Wine. ARDOP is neither, which is why the dispositions revive it rather than retiring it.

Before it will work

An HF transceiver with audio in and out and PTT, and a Winlink client such as Pat pointed at the modem's TCP port. A Winlink account for anything beyond testing.

How it installs

  • git (make) — https://github.com/pflarue/ardop at 1.0.4.1.3
  • build dependencies: build-essential, pkg-config, libasound2-dev
  • compiler flags: -Wno-int-conversion, -std=gnu17 — without these it does not build on a current toolchain
  • the project's build system has no install rule; the binaries listed below are copied into the prefix instead
  • Tested on Debian 13 on 2026-08-28, which is what PARITY-POLICY requires before a REVIVE. Without the flag the build fails at lib/rawhid/rawhid.c:361 with three -Wint-conversion errors -- not the error AHRL recorded, so its verdict was stale as well as inherited. With the flag, make exits 0 and ardopcf is produced. Upstream master fails identically, so this is a current defect rather than one a newer revision has fixed. One mechanism note, learned when the first real engine build on Parrot (2026-08-30) failed with the exact error the flag silences: upstream's Makefile assigns CFLAGS = (discarding the environment) but appends CPPFLAGS +=, so the flag only arrives via environment CPPFLAGS -- which the source backend now exports alongside CFLAGS/CXXFLAGS.

Binaries this produces:

  • ardopcf

Known problems

CM108 HID push-to-talk should be tested before you rely on it. The compiler flag this build needs silences a real int-to-pointer conversion in the CM108 code path: read(CM108Handle, ...) where CM108Handle is a hid_device *. That is wrong on Linux, it is wrong upstream today, and the flag restores the behaviour older compilers produced rather than correcting it. Serial-line and VOX keying do not go through that code and are unaffected. This is worth reporting upstream; it has not been reported from here. ARDOP is not VARA and does not interoperate with it -- a gateway offering only VARA cannot be reached with this. Getting audio levels right matters more than for a keyboard mode, because the modem measures the channel and adapts to it, so an overdriven signal makes it choose settings that then do not work. The web GUI and the host port listen on every interface. Started as ardopcf -G 8514 8515 ..., both 8514 and 8515 were bound to 0.0.0.0 (measured in a Debian 13 container, 2026-09-30), so anyone on the same network can open the GUI, whose drive-level slider and two-tone and ID buttons transmit by upstream's own description (read, not exercised). That is upstream's design -- it is how a phone shows the GUI of a headless Pi -- and a host firewall is the control on a shared network. Never give -G a negative port outside debugging: that is developer mode, which accepts arbitrary host commands from the browser.

Keeping it current

  • probe: github release (pflarue/ardop)
  • strategy: rebuild
  • Releases are infrequent -- 1.0.4.1.3 is from 2024-11-01 and the default branch's head is 2025-05-27 (read from the branch, not GitHub's updated_at -- D-032). A tag named 2.0.3.2.1 exists in the repository and does NOT point at an ardopcf source tree; do not pin it.

Where to get help with the software itself

Peter LaRue and contributors. MIT licensed -- verified by reading the LICENSE file at tag 1.0.4.1.3 on 2026-08-28, which names Rick Muething, John Wiseman and Peter LaRue and excludes the bundled libraries under lib/, each of which carries its own. GitHub issues at the URL above.

Source: catalog/packages/ardopcf.yaml