GopherTrunk: A New Pure-Go Trunked Radio Scanner Supporting P25, DMR, TETRA, NXDN and More

Thank you to Matt Cheramie, who wrote in to let us know about his new software called GopherTrunk, a new RTL-SDR compatible radio scanner that follows digital trunked-radio voice calls and decodes them into audio. Gopher Trunk runs on a pool of RTL-SDR dongles and ships as a single ~10 MB static binary for Linux, macOS, and Windows. There are no C dependencies, so neither librtlsdr nor libusb are required at build or runtime, which makes deployment on a fresh machine or Raspberry Pi very straightforward.

On the protocol side, GopherTrunk handles control-channel decoding for P25 (Phase 1 and 2), DMR, TETRA, NXDN, Motorola Type II, EDACS, LTR, MPT 1327, dPMR, D-STAR, and YSF. The voice path is written in pure-Go and implements IMBE and AMBE+2 vocoders directly, removing the dependency on external DVSI or mbelib. The interface is terminal-based, but also includes a full browser-based operator console. There is also a configuration importer that parses RadioReference.com PDF exports and CSV bundles straight into the daemon config.

Matt notes that while the engine is running end-to-end, he is looking for SDR enthusiasts to test it against real-air captures to help refine the on-air FEC layers and vocoder audio levels. Prebuilt releases and the quick start guide are available at gophertrunk.org/downloads, and the full source is on GitHub. Feedback and bug reports are very welcome if you give it a try.

Gopher Trunk: A New Digital Trunking Scanner for RTL-SDR written in Pure-Go
GopherTrunk: A New Digital Trunking Scanner for RTL-SDR written in Pure-Go
Subscribe
Notify of
guest

3 Comments
lilpeen

This is AI coded slop. Everything about it is incredibly unintuitive and most things do not work. Nobody serious about radio hobbying should even think about touching this garbage. Prime example of something that could have been great if it was programmed by a human

Szarka

Anyone actually gotten this to work? I’ve tried 3 different versions and none will work. I can sometimes get a spectral display but that’s it. A 1300 line example config file seems a bit ridiculous. How about provide one that is the minimum required length just as a proof of concept that it can be made to work?

KC1WZQ

Note the “.claude” directory in the source code. Thats why 😭😭

AI can be good with some uses, and I don’t have a problem with AI-assisted programming, but when you start advertising a piece of software thats not only AI-assisted but also not working is where I draw the line.