How to Set Up a Winlink Client on a Raspberry Pi

Winlink is an essential tool in emergency and portable amateur radio communications. It allows you to send and receive emails over RF using various modes like VHF, UHF, and HF. In this guide, I’ll walk you through setting up a Winlink client on a Raspberry Pi, turning your Pi into a lightweight and powerful messaging hub.

Whether you’re preparing for EmComm scenarios or operating in remote areas, this setup gives you email access without the internet.


🧰 What You’ll Need

  • Raspberry Pi 3, 4, or Zero 2 W (running Raspberry Pi OS or Debian-based Linux)
  • Internet access for installation
  • Your amateur radio license
  • A soundcard interface (e.g., Signalink, Digirig, or USB soundcard)
  • A transceiver (VHF/UHF or HF)
  • A Winlink account (free to register on first connect)

Optional but useful:

  • USB GPS (for mobile use)
  • Touchscreen or headless SSH setup

🖥️ Step 1: Install Dependencies

First, update your Pi:

sudo apt update && sudo apt upgrade -y

Install required packages:

sudo apt install build-essential git cmake libhamlib-dev libwxgtk3.0-gtk3-dev libconfig++-dev libfftw3-dev libpulse-dev libusb-1.0-0-dev libudev-dev libasound2-dev

pat is a cross-platform Winlink client written in Go, ideal for headless or GUI-less systems like the Raspberry Pi.

Install Go (if not installed):

sudo apt install golang-go

Clone and build pat:

cd ~
git clone https://github.com/la5nta/pat.git
cd pat
go build
sudo cp pat /usr/local/bin/

Verify:

pat version

⚙️ Step 3: Configure pat

Create config directory:

mkdir -p ~/.config/pat
nano ~/.config/pat/config.json

Paste and edit this basic configuration:

{
  "mycall": "9M2PJU",
  "secure_login_password": "your_winlink_password",
  "locator": "OJ03pa",
  "listen": ["http"],
  "http_addr": "0.0.0.0:8080"
}

Replace 9M2PJU with your callsign, and set your password. The locator can be your Maidenhead grid square.


🔌 Step 4: Connect Radio & Sound Interface

Connect your USB soundcard interface to the Pi and your transceiver. Make sure audio in/out is working (check with arecord and aplay).

Optional: Configure audio devices in ~/.asoundrc or set defaults with alsamixer.


📶 Step 5: Install ardop or ax25 Modem

Install ARDOP (for VHF/UHF or HF soundcard modes)

Clone and build:

cd ~
git clone https://github.com/la5nta/ardop.git
cd ardop
go build
sudo cp ardop /usr/local/bin/

🌐 Step 6: Launch pat Web Interface

Run the client:

pat http

On your browser, navigate to:

http://<raspberrypi-ip>:8080

You’ll see the Winlink pat interface. You can compose messages, connect to gateways, and send emails over RF.


📤 Step 7: Send and Receive Messages

To send a message:

  1. Click Compose
  2. Enter recipient (e.g., yourname@winlink.org)
  3. Choose Winlink CMS Relay for direct messages or Packet/ARDOP for RF
  4. Click Send

To send via RF (Packet or ARDOP), you’ll need to set up modems and gateway frequencies. Example (packet mode):

pat connect ax25 KLSAR-10

Or ARDOP:

pat connect ardop K4CJX

🛠️ Tips and Tricks

  • Use tmux or screen to keep pat running in the background
  • Install ax25-tools if using hardware TNC
  • Use direwolf for software packet TNC (AX.25 mode)
  • Set up a cronjob to auto-launch on boot

🔒 Security Note

The web interface doesn’t use SSL by default. If you’re exposing this over a network, consider using SSH tunneling or a reverse proxy with HTTPS.


📡 Final Thoughts

With just a Raspberry Pi and some ham radio gear, you now have a fully functional Winlink station capable of handling email over RF. This setup is portable, reliable, and an excellent asset for both casual and emergency use.

Post Comment

You May Have Missed