P25 End to End is a 14-part deep dive into the GopherTrunk P25 stack — the protocol GopherTrunk locks more often than any other, followed from a raw 4800-symbol-per-second C4FM carrier all the way to recorded, named, multi-site-tracked voice. Where Protocol Decoders surveyed P25 across three episodes, this series walks every layer at full depth: frame sync and the NID, TSBKs and the trellis, Multi-Block Trunking (the PDU that used to be dropped as noise), channel identifiers and band plans, the CQPSK/LSM linear path, Phase 2 TDMA, IMBE voice, encryption signalling and policy, sites and roaming, and the wideband engine that watches a whole system at once.
The running thread is that P25 in GopherTrunk is a family of twin paths — Phase 1 and Phase 2, C4FM and CQPSK, single-channel and wideband, live and replay — and every twin pair is a place where a fix can land on one side and silently miss the other, the lesson the Two Pipelines postmortem taught the hard way. The series ends honestly: Part 12 is about the weak-signal gap in the Phase 1 C4FM voice path and the capture contributions that would close it.
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.
New here? Start with the Digital Trunking module for how a trunked system is laid out, then come back for the P25 specifics.<p class="post-list__empty">No posts in this series yet — check back soon.</p><p class="blog-feed-link"> See all deep dives or subscribe via RSS. </p>