Linux runs most of the important amateur software natively, and it is what nearly every embedded and remote station runs. FreeBSD covers a smaller but real subset through its ports tree.
Distributions and ready-made images
- Any mainstream distribution works; Debian and Ubuntu have the largest packaged selection.
- Raspberry Pi OS — the standard for a portable digital-modes box, an
- DragonOS — Ubuntu preloaded with SDR and signal-analysis tools.
- HamPi and Build-a-Pi — Raspberry Pi images with the ham stack already installed.
APRS igate, a remote receiver or an AllStar node.
Logging
- CQRLOG — the mature Linux general logger (MySQL/MariaDB backed, LoTW, cluster).
- Klog — Qt, cross-platform, straightforward.
- TLF — terminal contest logger for CW, SSB and digital, in the N1MM tradition.
- Xlog, HAMRS — lighter alternatives.
Digital modes
- WSJT-X, JTDX, fldigi, JS8Call, QSSTV — all packaged in most distributions.
- Pat — the Go-based Winlink client; pairs with
- Direwolf — the software TNC. It replaces a hardware TNC for packet, APRS and igates, and it
ARDOP, Direwolf packet, or VARA under Wine.
is the reason a $40 Pi can run a full APRS station.
Programming and control
- CHIRP — packaged, or run from a Python virtual environment for the newest builds.
- Hamlib / rigctld — native home of the project; nearly everything speaks to it.
- Grig, flrig — graphical rig control front ends.
SDR
- GQRX, SDR++, SDRangel, CubicSDR, welle.io (DAB).
- GNU Radio and gr-satellites — the reference toolkit for building your own receivers.
- rtl_433, dump1090, multimon-ng — decoding utilities worth knowing.
FreeBSD and OpenBSD
The ports tree carries hamlib, fldigi, wsjtx, gnuradio, gqrx, direwolf, xlog and chirp; audio goes through OSS rather than ALSA/PulseAudio, so set dev.pcm defaults and use the device names your program expects. It is a good fit for a headless igate or remote receiver, and a poor one if you need a specific GUI title that only ships as a Debian package.
Practical notes
- Serial permissions. Add yourself to the
dialoutgroup (uucpon BSD) or every program will - Audio. PipeWire and PulseAudio both work; pick the radio's USB codec explicitly in each
- Time. Install
chronyand confirm it is actually syncing before blaming decodes. On a Pi - Flatpak builds of WSJT-X are sandboxed — grant device and audio access or use the distribution
report "cannot open /dev/ttyUSB0".
program rather than "default", and set 48 kHz.
without a network, add a GPS or an RTC module.
package.