Skip to content

Instantly share code, notes, and snippets.

@darksidelemm
Last active April 19, 2025 02:20
Show Gist options
  • Save darksidelemm/99796842d38dcc5b66bcbc8203b05cd8 to your computer and use it in GitHub Desktop.
Save darksidelemm/99796842d38dcc5b66bcbc8203b05cd8 to your computer and use it in GitHub Desktop.
Decoding HF APRS with KA9Q-Radio

Mark VK5QI 2025-04-19

This assumes you have a functioning wsprdaemon setup, using ka9q-radio and RX888 receiver.

Install Direwolf

We can just get direwolf from the Ubuntu package repositories:

sudo apt-get install direwolf

ka9q-radio Configuration

We need to add a new set of channels into ka9q-radio's configuration. In Australia, the following HF APRS frequencies are in use:

  • 30m: 10147.6 kHz USB
  • 40m: 7045.2 kHz USB
  • 20m: 14103 kHz USB

Add the following block into /etc/radio/[email protected]

[HFAPRS]
disable = no
data = hfaprs-pcm.local
mode = usb
freq = "7m045200 10m147600 14m103000"

The frequencies listed need to be the 'dial' frequencies for the HF APRS frequencies you wish to receive.

Direwolf Configuration Files

Need to create one file per band being received, e.g. hfaprs30.conf hfaprs40.conf, ...

Configuration file contents:

# Audio Input via stdin
ADEVICE - null
ACHANNELS 1
CHANNEL 0

# Replace callsign and SSID with your own
MYCALL YOURCALL-3

# Modem Settings
# Defauls to expecting tones at 1600/1800 Hz, but allows for +/- 3x 30 Hz offsets
MODEM 300 1600:1800 7@30 /4

# APRS-IS Server Details
IGSERVER aunz.aprs2.net

# APRS-IS Login details. 
# Use your callsign without SSID, and get a passcode from https://apps.magicbug.co.uk/passcode/
IGLOGIN YOURCALL 12345

# Beacon Packet to send into APRS-IS every 40 min by default
# You will need to update the lat, long, and comment field

PBEACON sendto=IG delay=0:30 every=40:00 symbol="igate" overlay=R lat=34^43.25S long=138^41.57E comment="KA9Q-Radio + Direwolf 30m APRS iGate"

# Filter traffic arriving from APRS-IS to limit network bandwidth
IGFILTER m/50

Startup Script

e.g. hfaprs30.sh

#!/bin/bash

PCM=hfaprs-pcm.local
FREQ=10147600
DCONFIG=/home/wsprdaemon/hfaprs/hfaprs30.conf

pcmrecord --ssrc $FREQ --catmode --raw $PCM | direwolf -n 1 -r 12000 -D 1 -t 0 -a 300 -c $DCONFIG -

Systemd Service File:

e.g. hfaprs30.service

# Systemd unit to decode HF APRS
# Mark VK5QI

[Unit]
Description=hfaprs30
After=network-online.target
Requires=network-online.target

[Service]
Nice=10
User=wsprdaemon
Group=radio
Type=simple
StandardOutput=append:/var/log/hfaprs30.log
StandardError=inherit
UMask = 002
ExecStart=/home/wsprdaemon/hfaprs/hfaprs30.sh
Restart=always
RestartSec=5
TimeoutStopSec=10

[Install]
WantedBy=multi-user.target
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment