GopherTrunk v0.4.1 — social announcement drafts

One-click copy-paste blurbs for posting the v0.4.1 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.1


Reddit — title

GopherTrunk v0.4.1 — DMR voice no longer sounds like a tin can, USRP/SoapySDR wideband decodes at 6.25 MS/s, and the live survey stops calling DMR "AM"

Reddit — body

**[GopherTrunk](https://gophertrunk.org) v0.4.1 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.0:**

* **Metallic "tin can" DMR voice fixed** (#644) — the AMBE+2 decoder (DMR, and also P25 Phase 2 / NXDN / dPMR / TETRA) synthesized voiced harmonics fully phase-coherently, radiating the classic buzzy MBE impulse train that IMBE had already fixed but AMBE+2 never adopted. It now runs the same voiced-phase regeneration (TIA-102.BABA §6.3), DC-block, and error-rate adaptive smoothing IMBE does, so speech sounds natural instead of buzzy.
* **Empty DMR Tier III recordings fixed** (#644) — a real Tier III call could record a 0-byte `.raw` and a header-only WAV because the 2-slot router dropped every superframe until a CRC-valid embedded Link Control bound the phase. The router now degrades gracefully — after a short grace window with no LC it falls back to the active slot's phase so audio records.
* **USRP / SoapySDR wideband** (#550) — the `soapy_remote` driver now reads back the rate the device *actually* delivers (a USRP only does integer decimations of its master clock) and builds every down-converter and symbol clock from it, plus a new `master_clock_rate` knob to land an exact divisor. The polyphase channelizer also decodes cleanly at 6.25 / 5.0 MS/s, where a crude resampler fallback used to introduce a 1.7 % symbol-clock error and leave the control channel deaf.
* **Live survey classification** (#648) — in a DMR / TETRA-dense band the survey mislabeled nearly every carrier as analog AM / wide-FM. It now isolates each candidate from its neighbours before classifying, consults the discriminator's angle-modulation variance in the AM gate, and adds an opt-in `-survey-deep` arbiter that hands narrowband analog-classed carriers to the authoritative identify.
* **Live audio quality** (#653) — closes the remaining gap to recorded audio: a band-limited polyphase resampler kills aliasing when the browser falls back from 8 kHz, deeper buffering removes dropouts, and an optional real-time loudness AGC tracks the normalized recordings.
* **Fixes & polish** — Plots panels rest on the control channel instead of the DC-spike-buried SDR centre (#557); an out-of-the-box RTL-SDR defaults to tuner AGC so no-gain configs aren't ~17 dB deaf (#264); the config builder accepts decimal frequency / tone entry; and the DMR Tier III autoconfig learner + live-hunt details are now visible in the web console (#638).

**Downloads** (Linux / macOS / Windows, x64 + ARM64): https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.4.1

**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.1 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.0:**
- **DMR voice de-buzzed** (#644) — AMBE+2 (DMR, P25 Phase 2, NXDN, dPMR, TETRA) now runs IMBE's voiced-phase regeneration + DC-block + adaptive smoothing, so it stops sounding like a tin can.
- **Empty Tier III recordings fixed** (#644) — the 2-slot router falls back to the active slot's phase after a grace window, so a call records audio even when its embedded LC never decodes.
- **USRP / SoapySDR wideband** (#550) — actual-rate readback + `master_clock_rate` knob; polyphase decode now clean at 6.25 / 5.0 MS/s (was a 1.7 % symbol-clock error → deaf CC).
- **Live survey** (#648) — isolates dense carriers + fixes the AM/FM split so DMR/TETRA stop showing up as "am"; new opt-in `-survey-deep` arbiter.
- **Live audio** (#653) — band-limited resampling, deeper buffering, optional loudness AGC → parity with recorded audio.
- **Polish:** Plots default to the control channel (#557); RTL-SDR defaults to tuner AGC when no gain set (#264); decimal frequency/tone entry in the config builder; Tier III autoconfig + hunt details surfaced in the web console (#638).

Download: <https://github.com/MattCheramie/GopherTrunk/releases/tag/v0.4.1>
Docs: <https://gophertrunk.org>