Home SDR $20 P25 Trunking Scanner (Part 4)

$20 P25 Trunking Scanner (Part 4)

by n8ur

With op25 successfully decoding the control channel, now you just need to set up the trunking configuration. To do this, you’ll probably need to set up three files:

1. trunk.tsv defines the sites to be monitored.

2. site_name.tsv provides a table of talkgroup numbers and names for that site.

3. Because you probably only want to listen to a subset of the talkgroups, you can optionally create a file called site_name_wl.tsv with a list, one talkgroup per line, of the talkgroups you want to hear.

Here’s what my trunk.csv file looks like for the Montgomery County, Ohio MARCS-IP system:


"Sysname" "Control Channel List" "Offset" "NAC" "Modulation" "TGID Tags File" "Whitelist" "Blacklist" "Center Frequency"
"Montgomery" "853.600" "0" "0x343" "CQPSK" "montgomery.tsv" "montgomery_wl.txt" ""

Note: (a) the first line needs to be included, and (b) each value is surrounded by quotes and separated by a tab character — NOT SPACES.

The Sysname value is an arbitrary one that you assign. The Control Channel List needs to include at least the primary controller (note no need for “e6” here) and can also include alternate control channels. Offset is the same value you would enter with the command line -q parameter.

Now, the NAC field really threw me. When I went to the Radio Reference Montgomery County Site Information page, it listed a System ID of 348, and a Site NAC value of 25A. Neither of those are correct for this field. I can’t find a web reference that ties 0x343 to the Montgomery county system. I got this number from my initial monitoring of the control channel before adding the trunking configuration. I strongly advise you to do the same, as this is what kept me from decoding until the light finally dawned.

The next field is Modulation. There are two choices: C4FM, widely used by non-Motorola systems, and CQPSK, which is derived from a Motorola standard called “LSM” — Linear Simulcast Modulation. This was another thing that threw me; the Radio Reference page indicated that the Montgomery County site uses C4FM. I only got things to work using CQPSK, though.

Next is the TGID Tags field. This optionally specifies a field that has human-friendly names to decode the talkgroup numbers. Here are a few lines of my tag file, which I call montgomery.tsv:


58232 Kettering Fire Dispatch
58238 Kettering Police Dispatch
58239 Kettering Police Ch B
58240 Kettering Police

Note again that the separator between talkgroup number and name must be a space.

Next are two optional fields, where talkgroups may be whitelisted or blacklisted. It only makes sense to use one of these two. I created a whitelist file called montgomery_wl.tsv that limits the talkgroups to a few I’m really interested in:


58014
58023
58024
58293
58294
58333
53334

I haven’t tested yet whether the whitelist file can include tab-separated talkgroup descriptions as well, or has to be just a list of numeric entries.

Now, use the same scope.py command line as before, but add “-T trunk.tsv” at the end. You should now be scanning and will hear audio traffic from the monitored talkgroups.

One final thing — the display in my recorded demo at Youtube looks slightly different as I changed the placement of the system, talkgroup, and frequency information on the display.

You may also like

4 comments

ScanCaster July 10, 2017 - 3:12 am

“Now, the NAC field really threw me. I can’t find a web reference that ties 0x343 to the Montgomery county system. I got this number from my initial monitoring of the control channel before adding the trunking configuration. I strongly advise you to do the same, as this is what kept me from decoding until the light finally dawned.”

So how do you “..monitoring of the control channel ..” to get the NAC?

Reply
n8ur August 4, 2017 - 9:27 pm

If you run scope.py (or rx.py, the new, much improved, command line version) with -f and *without* including the -T trunk.tsv option, the receiver should start decoding data, and one of the things it will list is the NAC.

Reply
n8ur September 19, 2017 - 1:51 am

Hi — sorry if I didn’t respond earlier. If you use the op25 version that’s in the “main” branch of the repository (the one with the GUI), just enter the control frequency as part of the command line. Don’t use the “-T” command to specify a trunk file. Look at the GUI tab that displays the console/terminal (I forget what it’s called) and it will display the NAC once it acquires the control channel.

Reply
scott May 18, 2020 - 5:48 pm

I only was able to get the whitelist and blacklist function to work correctly when listing just the talkgroups, when I had the descriptions included in the file they didn’t work.

Reply

Leave a Reply to scott Cancel Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.