Protocol Decoders is a 12-part deep dive into how GopherTrunk turns a demodulated symbol stream into structured control-channel messages — the grants that the Trunking Engine acts on. Where SDR Internals gave the decoders one survey episode, this series walks each standard in turn: P25 Phase 1 and Phase 2, DMR Tier 2/3, NXDN, dPMR, TETRA, and the EDACS / LTR / MPT-1327 legacy family — framing, FEC, PDUs, opcodes, and the state machines that hold it together.
A single mystery runs through the whole series: an intercepted Motorola talker-alias field that decodes to garbage. We plant it in Part 1 and pay it off in Parts 10–11 with a clean-room cryptanalysis (issue #773) — the recovered substitution table, the affine keystream model, the ruled-out dead ends, and the honest verdict: not yet cracked. It’s the same emitter the Crypto Lab series calls Mercury.
Authorized use only. The alias-hunt posts are for security researchers, licensed operators, and educational/CTF use. GopherTrunk’s alias decode stays gated (
CipherVerified = false) and clean-room (Apache-2.0, no GPL source read) until a real alias decodes end-to-end.
Every post reads three ways: a TL;DR + cheat-sheet for skimmers, bold headers, tables, and diagrams for the medium read, and full prose with real code for the deep read.<ol class="post-list series-list"><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 1: Anatomy of a Control-Channel Decoder</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How every GopherTrunk control-channel decoder shares one shape — symbols to framing to FEC to PDU to opcode to bus event — behind a single pipeline interface and a protocol-keyed factory registry.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 2: P25 Phase 1 — NID, Sync & the FEC That Gates Lock</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">A field-level tour of P25 Phase 1’s physical layer in GopherTrunk — the 48-bit frame sync, the BCH-protected NID with its NAC and DUID, C4FM 4-level symbols, and the trellis plus Hamming FEC that decide whether a control channel locks.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 3: P25 Phase 1 TSBKs & Link Control</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk parses P25 Phase 1 Trunking Signaling Blocks — the CRC-checked 12-byte TSBK, its OSP opcode taxonomy, vendor Motorola extensions, TDULC and Link Control — and turns a grant PDU into the Grant the trunking engine records.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 4: P25 Phase 2 TDMA — The MAC Layer</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk decodes P25 Phase 2’s two-slot TDMA — the ISCH slot-type field, the 360 ms superframe, the MAC PDU layer, and the compressed source-less grant that forces a source-RID backfill downstream.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 5: DMR Tier 2/3 — Bursts, EMB & FLC</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk decodes DMR’s two-slot TDMA — the 132-dibit burst, the sync words closed under polarity flip, the slot-type Hamming code, embedded signalling and Full Link Control, and the reverse channel.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 6: NXDN & dPMR — The Narrowband FDMA Family</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk decodes NXDN and dPMR — the 6.25 kHz FDMA narrowband modes — their 80 ms frames, LICH and CAC signalling, CSBK trunking blocks, and convolutional FEC, and how they contrast with the TDMA modes.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 7: TETRA — π/4-DQPSK, Channel Coding & the Sub-Target-Rate Fix</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk decodes TETRA — π/4-DQPSK framing, the type-1 to type-5 channel-coding chain, CMCE grant PDUs, and the recent fix that interpolates a narrowband capture up to the 144 kHz channel rate so the receiver locks.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 8: The Legacy Family — EDACS, LTR & MPT-1327</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk follows the pre-digital trunking systems — EDACS 9600-baud CCWs, LTR’s central-control-free per-repeater status words, and MPT-1327 FFSK codewords — and why they decode nothing like a modern digital control channel.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 9: Conventional, Wideband & the Symbol Scope</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk decodes what isn’t a trunked control channel — fixed-frequency conventional scanning with tone squelch, wideband multi-carrier Phase 2, DMR LCN band-plan learning, and the symbol-scope diagnostic.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 10: The Alias Hunt I — Framing the Unsolved Cipher</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">The Motorola P25 talker-alias field carries an encrypted display name. Part 1 of the capstone frames it correctly — the SUID header, the critical strip-the-CRC lesson, the verified per-byte decode model, and the recovered 256-entry LUT.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 11: The Alias Hunt II — The Keystream, Dead Ends & Ethics</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">The clean-room cryptanalysis of the Motorola P25 talker-alias cipher — the per-character affine keystream, every ruled-out hypothesis, the low-byte observability floor that keeps it uncracked, and the ethics that gate it all.</p></li><li class="post-card"> <h2 class="post-card__title">Protocol Decoders, Part 12: Testing Decoders Without Radios</h2> <p class="post-card__meta"> Deep dives </p><p class="post-card__desc">How GopherTrunk tests every protocol decoder with no SDR and no live system — synthesized control channels modulated through the real TX chain, a decoder registry, golden fixtures, and the regression discipline that makes ‘verified’ mean something.</p></li></ol><p class="blog-feed-link"> See all deep dives or subscribe via RSS. </p>