Monitoring a trunked radio system using an SDR
It is possible to monitor a trunked radio system using an SDR and a couple of open source programs.
I use trunk-recorder to record the trunked system. It is compatible with normal analog systems and P25 phase 1 & phase 2. It will record multiple calls simultaneously as well as the meta data that goes along with it. Trunk-recorder works with any SDR that is supported by GrOsmoSDR. All of the channels as well as the control channel need to fit within the bandwidth of your SDR, but you can use multiple SDRs if needed.
Trunk-recorder will give you a folder full of recordings and JSON files, which is not very convenient to listen to. There are several programs available to manage the recordings, but I find rdio-scanner the easiest to work with. It imports all of the recordings and the meta data and displays it on a web interface. It allows you to choose which talkgroups you want to listen to. You can also replay or skip calls and you can go back and listen to anything that was recorded previously. Since the interface is web based, you can listen to it on any device with a web browser, anywhere with internet access. Unlike a traditional scanner, you don't miss anything if there are multiple calls at the same time.
Since both programs run from the command line, they can be run on a headless computer. Depending on how many channels and how much bandwidth you are using, it can even be run on a Raspberry Pi.
The frequencies and talkgroups can usually be found on RadioReference. You can copy and paste the talkgroups into a spreadsheet and save it as CSV for trunk-recorder. You can use a simple python script to convert that CSV into JSON that can be used for Rdio-Scanner.
Since the configuration can be a bit complicated, here are my config files for an analog system. I am using an SDRplay RSP1A which has 8MHz of bandwidth. If I was using an RTL-SDR, I would need 2 of them to cover all of the channels.
Configuration Example
Trunk-recorder: config.json
Rdio-Scanner: config.json
Posted Jun 4, 2020, 11:23 PM UTC