GopherTrunk v0.4.3 — social announcement drafts
One-click copy-paste blurbs for posting the v0.4.3 release. Each block below is a fenced code block so the rendered-markdown “copy” button grabs exactly what you’d paste.
Release: https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.4.3
Reddit — title
GopherTrunk v0.4.3 — Signal Lab wide-band survey (find + decode every carrier in one grab), a new `gophertrunk spectrum` CLI, server-side PSD/spectrogram (TensorFlow.js gone), and TETRA colour-code recovery under any π/4-DQPSK rotation
Reddit — body
**[GopherTrunk](https://gophertrunk.org) v0.4.3 is out** — pure-Go digital-trunking scanner for RTL-SDR / HackRF / Airspy / USRP. P25 (Phase 1+2), DMR (AMBE+2 voice), NXDN, Motorola Type II, EDACS, LTR, MPT 1327, dPMR, D-STAR, YSF, M17, plus APRS, POCSAG + FLEX paging, and AIS / DSC / ADS-B. No CGO, single static binary for Linux / macOS / Windows.
**What's new since v0.4.2:**
* **Signal Lab wide-band multi-carrier survey** (#677, #679) — one wide IQ grab, find every carrier, decode each, and recognize a DMR Tier III trunked system in a single shot (instead of auto-tuning to just the loudest carrier). Available as an offline `hunt -wideband` path, a `POST /api/v1/siglab/wideband` endpoint, and a matplotlib-style *Wideband* panel in the web console that marks each carrier by control/voice role.
* **Auto-identify off-centre, non-dominant control channels** (#678) — offline auto-tune now ranks every carrier in the band and prefers the one that actually *locks* over a louder neighbour, so a CC hiding under a stronger signal is found automatically (13/13 live P25 segments lock now, was 11/13). Plus a `-detect-carriers` flag that inventories a whole band from one recorded capture, no SDR needed.
* **New `gophertrunk spectrum` CLI** (#680) — the Python-free analog of `numpy.fft` + `matplotlib`: prints band RMS power, the Welch-averaged spectrum, and detected carriers as text / JSON / CSV.
* **Server-side PSD / spectrogram, TensorFlow.js dropped** (#680) — Signal Lab's Results-view PSD and spectrogram now compute in Go (`/api/v1/siglab/jobs/{id}/psd` + `/spectrogram`), so the heavy `@tensorflow/tfjs` browser dependency is gone and the bundle is smaller.
* **TETRA colour-code recovery under any π/4-DQPSK rotation** (#681, #648) — π/4-DQPSK rotates the whole demodulated stream by an unknown 0–3, and the BSCH colour-code correlator only matched rotation 0, so real-air downlinks never learned a colour code. It now correlates the sync training sequence under all four rotations. New differential-phase *rotation tracker* viz makes the rotation visible (#682).
* **Real-air decode validation** (#675, #676, #527) — live captures confirm DMR `BPTC(196,96) → RS(12,9) → Full LC` decode and P25 Phase 1 C4FM control-channel demod (13 captures, NAC 0x2C1, EVM 12.7%, zero CRC/trellis failures), closing two long-standing validation gaps.
**Downloads** (Linux / macOS / Windows, x64 + ARM64): https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.4.3
**Docs:** https://gophertrunk.org
Heads-up: the v0.x line is still flagged prerelease — actively developed, feedback / captures / bug reports very welcome.
Discord
**GopherTrunk v0.4.3 is out** — pure-Go trunking scanner for RTL-SDR / HackRF / Airspy / USRP. P25, DMR, NXDN, M17, analog trunked, APRS, POCSAG + FLEX paging, AIS / DSC / ADS-B. Single static binary, zero CGO.
**What's new since v0.4.2:**
- **Signal Lab wide-band survey** (#677, #679) — one wide IQ grab → find + decode every carrier → recognize a DMR Tier III system in one shot. Offline `hunt -wideband`, a `/api/v1/siglab/wideband` endpoint, and a *Wideband* web panel that marks carriers by control/voice role.
- **Auto-identify off-centre, non-dominant CCs** (#678) — auto-tune ranks every carrier and prefers the one that *locks* over a louder neighbour (13/13 live P25 segments lock now, was 11/13); `-detect-carriers` inventories a whole band from one capture with no SDR.
- **New `gophertrunk spectrum` CLI** (#680) — the Python-free `numpy.fft` + `matplotlib` analog: band RMS power, Welch spectrum, detected carriers as text/JSON/CSV.
- **Server-side PSD/spectrogram** (#680) — Results-view spectra now compute in Go → `@tensorflow/tfjs` dropped, smaller bundle.
- **TETRA colour-code under any π/4-DQPSK rotation** (#681, #648) — BSCH recovery now correlates the sync sequence under all four rotations, so real-air downlinks actually learn their colour code; new rotation-tracker viz (#682).
- **Real-air validation** (#675, #676) — live captures confirm DMR BPTC/RS Full-LC and P25 P1 C4FM control-channel decode on air.
Download: <https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.4.3>
Docs: <https://gophertrunk.org>