Running GopherTrunk on Linux
Key takeaways This is the payoff. Three moves get you there: install the dependencies, grant your user access to the USB SDR, and run GopherTrunk as a systemd service so it stays alive across reboots. Everything the whole path taught you — the shell, permissions, processes, SSH, and services — now goes to work getting GopherTrunk running on a Linux box or a Raspberry Pi and keeping it there.
You’ve done the groundwork. Now you point it all at one real job: a running scanner. This lesson is the map, not a line-by-line install — for the exact commands and flags, we send you to the GopherTrunk pages, because those stay current and made-up flags don’t.
The plan
The shape of the job is the same on any machine. You install the prerequisites, get GopherTrunk onto the box, plug in the SDR and grant access to it, run it to confirm it decodes, and finally make it a service so it comes back on its own. You can do every step over SSH on a headless Pi — no monitor, no keyboard, just a terminal on your laptop talking to a board by the antenna.
Install prerequisites
GopherTrunk needs a few supporting libraries and tools present on the system.
Install them with your distribution’s
package manager — on Raspberry Pi OS
(and Debian/Ubuntu) that’s apt:
sudo apt update
sudo apt install <the packages listed on the setup page>
The setup page names exactly what to install for your platform. The point of this step is simply that supporting software is installed the ordinary Linux way, not hunted down by hand.
Get GopherTrunk
Two routes, both familiar by now:
-
Download the binary. Grab the prebuilt release for your platform from the downloads page, then make it runnable with
chmod +x:chmod +x ./gophertrunk -
Build from source. Clone the repository and compile it, if you’d rather track the latest code or your platform has no prebuilt binary.
Either way, the getting-started page has the exact steps — follow those rather than guessing at version numbers or paths.
Plug in the SDR & USB permissions
Your SDR is a USB device. When you plug it in, Linux exposes it as a device
node under /dev, and — this trips up almost everyone — a normal user usually
can’t open it yet. The kernel guards raw USB devices, so out of the box only
root has access.
The clean fix is not to run the scanner as root. Instead, grant your own user access the standard way: add yourself to the group that owns the device, or install a udev rule that hands the dongle to your user when it’s plugged in. This is exactly the permissions and sudo / root thinking from earlier in the path — give the least privilege that gets the job done. After adding the rule or group, unplug and replug the SDR so the new access takes effect. The hardware page lists supported SDRs and any device-specific notes.
Run it
With the dongle accessible, run GopherTrunk straight from the shell and watch what it prints:
./gophertrunk <options from the getting-started page>
Read its output the way you’d read any long-running program’s — is it finding the
control channel, is it decoding, are there errors scrolling past? This is a
foreground process for now; Ctrl-C stops it.
Watching the live logs is how you’ll confirm it’s healthy — see
monitoring & logs. On a Pi you’re
typically doing all of this over SSH, so the
output is streaming to your laptop from the board across the room.
Keep it running — a systemd service
Running it by hand is fine for a first test, but a real scanner should start at boot and restart itself if it ever dies. That’s a job for systemd. Write a small unit file describing how to launch GopherTrunk — here’s the generic shape:
[Unit]
Description=GopherTrunk scanner
After=network.target
[Service]
ExecStart=/path/to/gophertrunk <your options>
Restart=on-failure
User=youruser
[Install]
WantedBy=multi-user.target
Drop that in the system’s unit directory, then enable and start it:
sudo systemctl enable --now gophertrunk.service
enable wires it to start at boot; --now starts it immediately. Check that it
came up cleanly, and read its logs, with:
systemctl status gophertrunk.service
journalctl -u gophertrunk.service -f
Treat the unit above as a sketch — fill in the real binary path and options from the getting-started page.
Watch its health
A scanner that runs for months needs the occasional glance, and everything you
need is on the box already. Keep an eye on disk space if GopherTrunk is
writing recordings — a full disk stops a lot of things ungracefully. Watch
CPU on a small Pi, since decoding is real work and a struggling board shows
up as dropped or garbled audio. And when a decode misbehaves, the
logs are the first place to look —
journalctl for the service, plus GopherTrunk’s own output, usually tell you
whether it’s a signal problem or a software one.
Where to go next
You can now run and maintain a real, always-on Linux service — which is most of what running a home server or an embedded project comes down to. A Raspberry Pi sitting at the base of the antenna is a classic GopherTrunk setup: small, quiet, low-power, and reachable over SSH from anywhere in the house. If that’s your plan, the hardware side is worth a read — start with Raspberry Pi & family.
Quick check: You want GopherTrunk to come back automatically after a reboot. What do you set up?
Recap
- Install prerequisites with the package manager (
apton Raspberry Pi OS). - Get GopherTrunk — download the binary and
chmod +xit, or build from source; follow the getting-started page for the exact steps. - Grant USB access to your user with a group or udev rule — don’t run the scanner as root.
- Run it from the shell first and watch the logs to confirm it decodes.
- Make it a systemd service,
enableit, and checkjournalctl— now it survives reboots and restarts on failure. - Watch its health — disk space, CPU on a small Pi, and the logs.
Next up: keep the glossary handy — and if you’re setting up a Pi by the antenna, the Intro to Hardware path covers the board itself.