Winlink on Linux: Setting Up Pat, ARDOP, and RMS Trimode Across Distros
Winlink on Linux: Setting Up Pat, ARDOP, and RMS Trimode
While much of the amateur radio emergency communication and messaging ecosystem historically revolves around Windows software like Winlink Express, the Linux community has built an exceptional, lightweight, and robust alternative stack.
By pairing Pat - a modern, multiplatform Go-based Winlink client with soundcard modems like ARDOP or Dire Wolf, you can build a bulletproof Winlink station running entirely on Debian, Ubuntu, or Arch Linux.
1. The Core Stack: Pat and Soundcard Modems
To run Winlink on Linux without relying on Windows virtual machines or Wine, your station relies on two primary components:
- Pat (The Client): A feature-rich Winlink client written in Go. It operates via a local web interface (accessed through your web browser) or a command-line interface, managing your messages, outbox, and RMS gateway connections.
- The Modem (ARDOP / VARA / Dire Wolf): Software soundcard TNCs that handle the audio tones sent to and from your transceiver (such as your Yaesu FTDX10 or mobile rig).
2. Installation Across Distributions
On Debian / Ubuntu
Debian and Ubuntu stable repositories often carry older package versions, but Pat and its dependencies can be easily installed via Go or pre-compiled binaries:
sudo apt update
sudo apt install golang git portaudio19-dev
You can then install Pat directly via Go:
go install github.com/la5nta/pat@latest
On Arch Linux
Arch users enjoy up-to-date packages directly from the Arch User Repository (AUR):
yay -S pat-winlink ardopc
3. Common Distro Pitfalls and Troubleshooting
A. Serial Port Permissions (“Permission Denied”)
When connecting your rig’s CAT control or a hardware USB-to-serial adapter for PTT, Linux kernel security restricts direct access to /dev/ttyUSB0 or /dev/ttyACM0 by default.
- The Fix on Debian / Ubuntu: Add your user to the
dialoutgroup, then log out and back in:sudo usermod -aG dialout $USER - The Fix on Arch Linux: Arch uses the
uucpgroup instead ofdialoutfor serial devices:sudo usermod -aG uucp $USER
B. Configuring Pat as a Systemd Background Service
If you are running Pat on a dedicated shack computer or a headless server node, you want Pat running continuously in the background. You can create a native systemd user service (~/.config/systemd/user/pat.service):
[Unit]
Description=Pat Winlink Client Daemon
After=network.target
[Service]
ExecStart=/home/YOUR_USERNAME/go/bin/pat http
Restart=always
[Install]
WantedBy=default.target
Enable and start the service with:
systemctl --user enable --now pat.service
You can now access your full Winlink dashboard locally or via your local network at http://localhost:8080.
Conclusion
Running Winlink on Linux gives you total control over your station’s architecture, removing unnecessary bloatware and opening up seamless integration with your shack’s logging and automation workflows.