73 and welcome to the shack
Amateur radio software on Linux, without the yak‑shaving.
hamstack installs your radio programs, writes their configuration, finds your radio's USB devices and runs it all as services you can start, stop and watch. Winlink on HF or packet, digital modes, APRS, GPS. One static binary.
INSTALL (Linux, no root, checksum-verified)
curl -fsSL https://raw.githubusercontent.com/ATCUSA/hamstack/main/scripts/install.sh | shOR BUILD IT (Go 1.27+)
go install github.com/ATCUSA/hamstack/cmd/hamstack@latestThen run hamstack: it offers a guided setup. No radio yet? Pick the dummy radio and try everything.
$ hamstack Welcome to hamstack. Nothing is set up yet. Run the guided setup now? [Y/n] y == 2. Radio 1) dummy No radio (testing) 3) ic7300 Icom IC-7300 s) Search every radio hamlib supports $ hamstack status rigs: hf, pkt station: club (N0CLUB) rigctld@hf active (running) mercury@hf active (running) direwolf@pkt no radio plug it in, then start it pat active (running) $ hamstack doctor [ok ] radio supported by hamlib [warn] serial port permission fix: hamstack groups fix
What it does
The fiddly parts of a radio setup, handled once and handled the same way every time.
Guided setup
Say what you want. hamstack asks a few questions, installs what is missing, writes the configuration, starts it and checks it. Every command is shown first.
Several radios at once
Each rig gets its own ports and services: HF on one radio, packet on another, a dummy rig to practise on.
Sites
Save home, the EOC and the club as named setups and switch with one command. It can tell which site's radios are plugged in.
Found by USB identity
Replug a radio or use another port and the services find it again. No more ttyUSB0 roulette.
Programs and updates
A catalog with dependencies and suggestions, version checks against upstream, and source builds for when your distribution lags.
Packet, with or without a kernel
Watch and call through Direwolf with no root. Or set up the Linux AX.25 stack (kissattach, axcall, axlisten) where your kernel still has it.
GPS
gpsd as a service, and your Maidenhead grid square read straight from a fix.
Doctor
Checks that everything is ready and says exactly how to fix what is not: permissions, drivers, ports, old hamlib.
Network view
Every port the stack uses, and who on your network can reach it. Open ports without a password are flagged.
Programs it can install and keep up to date
Each one installs the same way, is checked against its upstream release, and can be built from source when your distribution's package is old. Requirements are added with the reason; suggestions are only offered; programs that conflict refuse to install together.
- PatWinlink client
- Mercuryopen HF modem (VARA-compatible)
- ardopcfARDOP HF modem
- Direwolfsoundcard packet TNC, VHF/UHF
- hamlibrig control (rigctld)
- FLRig · fldigi · flmsg · flampthe fl suite
- WSJT-X ImprovedFT8, FT4, WSPR and more
- JS8Callkeyboard messaging on HF
- XastirAPRS client with maps
- gpsd · ax25-toolsGPS daemon, kernel AX.25 tools
Debian, Ubuntu, Fedora and Arch, and their relatives. Everything builds from upstream source on all three families.
How it works
hamstack does not run radio software itself. It plans, shows, and hands over.
- PlanYour choices live in one small config file. From it hamstack generates each program's configuration and a set of systemd user units.
- ShowInstalling packages,
sudosteps and source builds are listed and confirmed before they run.--dry-runshows the plan only. - RunServices find the radio's serial port and sound card when they start, by USB identity, then hand over to the real program.
Careful by design, honest about its limits
- Your Winlink password is never read or stored. It stays in Pat's own config.
- Open ports are flagged. Mercury's web UI and Direwolf's AGW and KISS ports listen on every interface with no password;
hamstack networksays so. - Source builds say what they run. Downloads use HTTPS, and when a project publishes no checksum, hamstack tells you before it starts.
- Text from the air is cleaned before it reaches your terminal.
- It never transmits by itself. Operating within your licence is on you.
Where to post
Everything lives on GitHub. Please keep callsigns, grid squares and emails out of public posts if you would rather not share them: N0CALL and FN31pr are fine stand-ins.
Found a bug
Something broke, or did the wrong thing. Include `hamstack version` and `hamstack doctor`.
Tried it on real hardware
Worked or not, this is the report we want most. Radios, Digirig, GPS receivers.
Suggest a feature, program or radio
A concrete thing hamstack should do, install or support.
Ask a question
How do I..., show-and-tell, half-formed ideas. Discussions, not issues.
Report a security problem
Privately please, with a GitHub security advisory.
Contribute
Profiles, programs, docs and code. The guide covers the checks and the rules.