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:
trunk.tsv defines the sites to be monitored.
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.
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
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
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.