$20 P25 Trunking Scanner (Part 4)


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:


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.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>