Hamspot Commander

Hamspot Commander is a station console for amateur radio and scanner listening on Linux. One dark LCARS-style window drives Hamlib radios, GQRX and HackRF receivers. It scans channel lists, follows trunked systems (P25 and others) with talkgroup and radio-ID lists, and decodes digital voice through pipe files such as dsd-fme. REC records HackRF traffic as raw IQ and decodes it again on every playback.

Automation covers Hamlib rotators and amplifiers and an RF patch drawing of the station. The Rotator page has an optional world map centred on your location. Tools include a NanoVNA V2 screen with calibration and device scans, a Smith chart, RF and general calculators, a hex viewer, a logbook (a station diary, not a contest log), and station clocks and timers. A station-wide E-STOP stops transmitters, amplifiers and rotators.

Commander starts its own rigctld, gqrx, rotctld and ampctld. HackRF and GQRX rows are receive only. It is not a satellite tracker, but a radio can follow Gpredict.

Download the latest release. The current build is hamspot-commander-0.9.0-portable-linux-x86_64.zip. Unzip it and start hamspot-commander.sh. The user guide and source are on GitHub.

Videos

Tune page: seven-segment VFO A and VFO B on 145.000 and 146.000 MHz FM, band buttons and the 800/700/UHF band-plan rows
Tune: VFO display and band plan
Tune page following a control channel on 857.2 MHz, with the HackRF spectrum view (8 MHz span, LNA 40 dB, VGA 32 dB)
Tune: following a control channel

Rig control and receivers

Each radio row runs its own rigctld (any radio Hamlib can drive), a GQRX that Commander starts, or a HackRF read directly. The Tune page has the frequency readout, VFO keys, mode, band chips and a bandspread; the Plan page holds the band plan. Channels scans a channel file kept on your computer (not the radio's memory). Levels sets AF/RF gain, AGC, power, filter width and the rest where the radio reports them. Audio is wired through PipeWire, with RX and TX pipe files (small scripts) for decoders and microphone processing.

Trunking

Mark a system's control channels on Channels, give the radio a trunking pipe (P25 ships as commander-demod-p25.rxpipe), and tick Follow. The follower reads the control channel and tunes to voice grants for the talkgroups you monitor, holds a call through re-keys (voice hang 0.5 to 3 s), and lets emergency or Priority talkgroups take over if you allow it. A HackRF can follow wideband, decoding voice channels inside its capture window. Digital voice is decoded by dsd-fme. The TG tab is the talkgroup directory; the ID tab lists radio IDs heard on the control channel. Encrypted calls are skipped unless you hold a key you are entitled to; keys are kept in a separate file readable only by you.

Following a P25 control channel with the talkgroup list
Talkgroup list (earlier 0.8.5 build)

Recording (REC)

REC records HackRF talkgroup calls and channel traffic, either marked talkgroups and channels or all traffic. It stores the raw radio signal (IQ, about 460 MB an hour), not audio, and decodes it again each time you play it, so a better decoder later improves old recordings. A timeline shows one lane per talkgroup or channel with search, stars, protection, a storage cap and background archiving; commander-rec handles the same jobs from the command line and can render a recording to WAV. Encrypted traffic is never recorded. In 0.9.0 REC records HackRF rows only; Hamlib and GQRX audio is not recorded yet.

REC page: timeline of recorded calls per talkgroup lane, REC armed for all talkgroup traffic, 205 recordings in 32 lanes, disk use 0.46 of 20 GB
REC page: timeline of recorded calls per talkgroup lane

Satellites

Commander is not a satellite tracker itself. It works with Gpredict, which does the pass prediction and Doppler correction: Commander writes Gpredict device entries for its radios and rotators, and a radio row set to Gpredict follows Gpredict's tuning (Tune shows FOLLOWING GPREDICT). The Rotator page has AZ/EL readouts, presets, manual moves, rate tracking and an optional azimuthal world map centred on your location, so a great-circle heading reads straight off the rose.

Rotator page with the world map behind the compass rose
Rotator and world map

Transmit overview

Commander 0.9.0 can key a Hamlib-controlled transceiver: the MOX key on Tune keys the selected radio through Hamlib (PTT type and device are set per radio). Before keying, MOX checks the loaded band plan and refuses voice on CW or digital segments and digital on CW or voice segments; a refusal is shown on the page and nothing is keyed. TX pipe files can process the microphone audio, but a pipe never keys the radio. E-STOP unkeys the radio, refuses PTT and MOX, stops transmit pipes and rotators, puts amplifiers in standby and stops NanoVNA sweeps; separately, a NanoVNA scan of anything in the transmit path locks out transmit for the whole station.

What it does not transmit: HackRF and GQRX rows are receive only, and the HF Data page (FT8, FT4, WSPR, JS8 slot clock and presets) receives only and has no decoders yet, so there is no digital-mode transmit in this version. Amplifiers go to Operate only when you click. E-STOP is a software stop, not a substitute for a hardware one. You are responsible for operating within your licence and band privileges; the band plan check is a help, not a guarantee.

Meters, timers and HF Data

Meters shows the S-meter, ALC, SWR and power. Timers has station and world clocks, a 10-minute ID timer, a countdown and a stopwatch. HF Data has a UTC slot clock with a computer-clock check and dial presets placed against the band plan.

Meters page: ALC, SWR, power and S-meter dials, status lamps and a seven-segment system clock
Meters

Station automation and tools

Hamlib rotators and amplifiers run through rotctld and ampctld. The RF patch draws the station (radios, amplifiers, filters, tuners, antennas) and lists each path with warnings. Tools: a NanoVNA V2 screen with calibration and device scans, a Smith chart, RF and general calculators, a hex viewer and a logbook (a station diary, not a contest log). Everything for a station is kept in one station file.

NanoVNA V2 page sweeping 450 to 470 MHz, SWR trace with UHF band-plan presets
NanoVNA V2 sweep
NanoVNA calibration standards window
NanoVNA calibration (earlier build)
Smith chart tool
Smith chart (earlier 0.8.5 build)

Specs

ProgramHamspot Commander 0.9.0, Rust and egui
Platform64-bit Linux with a graphical desktop and PipeWire. The installer supports Ubuntu 26.04; the portable zip runs from a folder or USB stick.
GraphicsOpenGL. A Software rendering setting (or HAMSPOT_SOFTWARE_RENDER=1) runs without the GPU.
Needslibhamlib-utils, pipewire-bin; gqrx-sdr for GQRX, hackrf for HackRF; dsd-fme, sox, socat for digital voice.
RadiosAny radio Hamlib can drive; GQRX; HackRF read directly.
Test gearNanoVNA V2 (V2.2)
LicenseGPL-3.0-or-later. Map data: Natural Earth 1:110m, public domain.