OP25 frequency problems help needed

Status
Not open for further replies.
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
I have been semi successful setting up and running op25 on pi and an ubuntu laptop . My latest problem that I just cant figure out is that in my trunk.tsv file I have entered the frequency of 139.245 which is a near by CC that works well. I never seem to get my TGID list .tsv file to work right, so for now have resorted to using a simplified command line as follows:

./rx.py --args 'rtl' --gains 'lna:49' -f 139.245e6 -t -q 0 -S 1000000 -D cqpsk -2 -V -U 2> stderr.2

For a while it seemed to work really well but after messing with so many things, re-installs, other problems - etc (not to mention being a NOOB - lol) it now has a problem every time I fresh install, set it up and run it (using above command line in the proper directory chain) -the TGIDs show nothing and no audio is present. Looking at the bottom line of the program when it starts running (erroneously) it is clear that I am not on the selected frequency of the control channel as per trunk tsv file or my command line mentioned already. The wrong frequency appears as 000.139 mhz

The make-do solution I have been using is to hit 'F' and then manually change the wrong frequency of 000.139 to what it should be (139.245). After that everything kicks in like it should - the TGIDs numbers increase and good steady, reliable audio is started immediately. I guess its alright the way it is, but I hope to make a simple headless autoboot Pi OP25 and that manual entry of the frequency isn't going to be much fun every time I turn it on to listen.

I cant for the life of me figure out why it is behaving this way. Perhaps I am just missing something. Anybody else encounter this problem and manage to fix it? Any help would be appreciate. Thanks.

Kevin.
 

rmd415

Newbie
Joined
Oct 8, 2021
Messages
1
It looks like -T trunk.tsv is missing from your command line. You need this option so it can read the control channel frequency from the trunk.tsv file and set it up accordingly. Hope this helps!
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
922
Location
NE Wisconsin
Assuming that your system is the Provincial Public Safety Telecommunications Network, then the control channel specified in your rx.py command line may be incorrect according to the RRDB. However, it's not uncommon for some P25 systems to periodically rotate the primary and alternate control channel frequencies and is the reason that you should be using trunk.tsv populated with the primary and all alternate control channel frequencies for your site within the P25 system.

It sounds from your post that perhaps something may be incorrectly formatted with your TGID list.tsv that is causing rx.py to abort execution when adding the -T trunk.tsv to your rx.py command line. I would suggest that you review trunk.tsv to be sure you've listed the primary and alternate control channel frequencies and initially omit the tag file "list.tsv" until you have op25 up and running.

Another factor is knowing the correct NAC for your local site and populating this into your trunk.tsv file. If you are unsure of this, then you can
substitute 0x0 for the NAC if using the boatbod repo of op25. Once op25 starts it will display the NAC being broadcast on the control channel that will serve to provide you with the correct value to specify in your trunk.tsv file.

Keep in mind that the user specified fields in trunk.tsv are separated by at <TAB> and not spaces, and that each field has to be enclosed in quotation marks, even if you aren't placing any data into them such as in the case of the whitelist or blacklist fields.

Feel free to post your config files here for additional assistance or you may PM me to arrange for some remote help with those configs that can be accomplished via telephone or desktop screen sharing.

Bill
 
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
Assuming that your system is the Provincial Public Safety Telecommunications Network, then the control channel specified in your rx.py command line may be incorrect according to the RRDB. However, it's not uncommon for some P25 systems to periodically rotate the primary and alternate control channel frequencies and is the reason that you should be using trunk.tsv populated with the primary and all alternate control channel frequencies for your site within the P25 system.

It sounds from your post that perhaps something may be incorrectly formatted with your TGID list.tsv that is causing rx.py to abort execution when adding the -T trunk.tsv to your rx.py command line. I would suggest that you review trunk.tsv to be sure you've listed the primary and alternate control channel frequencies and initially omit the tag file "list.tsv" until you have op25 up and running.

Another factor is knowing the correct NAC for your local site and populating this into your trunk.tsv file. If you are unsure of this, then you can
substitute 0x0 for the NAC if using the boatbod repo of op25. Once op25 starts it will display the NAC being broadcast on the control channel that will serve to provide you with the correct value to specify in your trunk.tsv file.

Keep in mind that the user specified fields in trunk.tsv are separated by at <TAB> and not spaces, and that each field has to be enclosed in quotation marks, even if you aren't placing any data into them such as in the case of the whitelist or blacklist fields.

Feel free to post your config files here for additional assistance or you may PM me to arrange for some remote help with those configs that can be accomplished via telephone or desktop screen sharing.

Bill
Thanks Bill I thought everything was the way it was supposed to be but if you can provide me some remote help that would be great. This evening I will be at a class until about 8:00pm local time (Sasktoon) which would be 9:00 eastern. If another date and time is more convenient that would be just as good. thank you very much.

Kevin.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
First question:- which version of op25 are you running (osmocom or boatbod)?
Second question:- what do you see in stderr.2

You might want to consider increasing the log verbosity to at least "-v 1" so we can see voice updates. You can also drop the legacy "-t" parameter because it does nothing.
 
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
I am using boatboad - details as follows:

Path = cd /home/pi/op25/op25/gr-op25_repeater/apps
-----------------------------------------
command line = ../rx.py --args 'rtl' --gains 'lna:49' -f139.245 -t -q -1 -S 1000000 -D cqpsk -2 -V -U 2> stderr.2
-----------------------------------------
OP25 starts with the wrong frequency. dot is 4 decimal places left and results in no TGs or audio
--------------------------------------------------------------------
Frequency 0.000139(0)
-----------------------------------
This is when I hit F and enter 139.245 and it comes immediately to life every time.
--------------------------------------------------------------------------------------------------------------
stderr.2 as follows:

Using Python /usr/bin/python2
gr-osmosdr 0.1.4 (0.1.4) gnuradio 3.7.13.4
built-in source types: file osmosdr fcd rtl rtl_tcp uhd miri hackrf bladerf rfspace airspy airspyhf soapy redpitaya freesrp
Using device #0 Realtek RTL2838UHIDIR SN: 00000001
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
gain: name: LNA range: start 0 stop 0 step 0
setting gain lna to 49
supported sample rates 250000-2560000 step 24000
Exact sample rate is: 1000000.026491 Hz
[R82XX] PLL not locked!
Using two-stage decimator for speed=1000000, decim=10/4 if1=100000 if2=25000
op25_audio::eek:pen_socket(): enabled udp host(127.0.0.1), wireshark(23456), audio(23456)
p25_frame_assembler_impl: do_imbe[1], do_output[0], do_audio_output[1], do_phase2_tdma[1], do_nocrypt[1]
[R82XX] PLL not locked!
metadata update not enabled
using ALSA sound system
audio device: default
Listening on 127.0.0.1:23456
python version detected: 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0]
Allocating 15 zero-copy buffers
-----------------------------------------------------------------------------------------------------------------------------------------------

trunk.tsv
Sysname​
Control Channel List​
Offset​
NAC​
Modulation​
TGID Tags File​
Whitelist​
Blacklist​
Center Frequency​
sask​
139.245​
0x4e4​
c4fm​
saskatoon.tsv​

---------------------------------------------------------------------------------------------------------------------------------------

saskatoon.tsv is configured as instructed in OP25 for dummies tutorial (the best source out there!). Tabs and not spaces for separations

The lists I use consist of clear talk IDs and no encrypted are listed

-----------------------------------------------------------------------------------------------------------------------------


Thanks for looking and trying to help this old NOOB out!

Kevin.
-----------------------------------------------------------------------------
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
922
Location
NE Wisconsin
Kevin,

I am seeing some conflicting information in your posts. One being the use of the (-f 139.236e6) that would be the correct to manually enter the control channel frequency in the absence of using a trunk.tsv file. On your second post you dropped the e6 that would be incorrect. The second ambiguity is the PPM correction factor. In your original post it was (-q 0) and then (-q -1) in the follow up post. This value of course has to be set such as to put the SDR close enough to being on frequency to be able to decode the trunk signaling blocks on the control channel.

Please try editing your trunk.tsv file to make it read exactly like the text shown in the code segment below and then test it with following
rx.py command line substituting the correct know PPM correction factor (-q 0) or (-q -1).

./rx.py --args 'rtl' --gains 'lna:49' -q 0 -S 1000000 -T trunk.tsv -V -U -v 5 2>stderr.2

Code:
"Sysname"    "Control Channel List"    "Offset"    "NAC"    "Modulation"    "TGID Tags File"    "Whitelist"    "Blacklist"    "Center Frequency"
"Saskatoon"    "139.245"    "0"    "0x0"    "C4FM"    ""    ""    ""    "0"

I will be available to assist by phone beginning Friday evening after approximately 6:00 PM CST. Send me PM with your email address and I will respond with my email and telephone number.

Bill
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
A couple of important points:-

i. Boatbod version of rx.py will auto-start trunking without the need for a trunk.tsv if you use the -f option to point it at a valid P25 control channel. The caveat is that the -f option takes either integer frequency value in Hz or exponential form whereas the trunk.tsv file takes a floating point value in Mhz. I suspect the genesis of your incorrect frequency problem is inconsistency with how you are using the -f option.
e.g. "-f 139245000" or "-f 139.245e6"

ii. If you wish to utilize tgid text tags, tgid priority, or blacklist/whitelist you'll need to get trunk.tsv working. As noted by Bill earlier, the fields in the file are delimited by a single <TAB> character. If the file cannot be parsed by op25 it will usually cause rx.py to blow up with an error in the log as it exits.

iii. Modulation can usually be left default (no need for -D parameter) which means DQPSK unless you find that does not work reliably on a Phase 1 system. At that point you can try "-D fsk4" to switch over tom C4FM. The modulation parameter in trunk.tsv is not used under normal circumstances.
 
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
Firstly Bill, yes I do see the slight inconsistencies in some of the information I provided. The differing q values is because I have a few different dongles. They look the same but one is always 0, stays that way and is great, the others minor adjustments are required. But the main thing was the absence of e6 at the end of the frequency in the command line. Something I failed to recognize from many many adjustments to command line as I am learning. Somewhere along the line the e6 got dropped and caused the "000." issue and the need to do F and manual input the proper frequency each time. That in and of its self totally solved the first problem of this thread - the frequency not appearing the way it should with 000.139 instead of 139.245. So I can cross that problem off the list thanks to your observation.

Secondly - thanks Boatbod for the explanation of the explanation of why the above is so and also how it relates to the trunk.tsv file.

Where I am in Saskatoon by auto-start trunking without the need for a trunk.tsv, using the -f option in my command line to point it at a valid P25 control channel will be adequate, because some of the control channels are less silent due to higher volume of encrypted police voice traffic. and sometimes these secondary CC's are the way to go. Still I have not had any success setting up the in my case saskatoon.tsv file. I enter all info from RR into the appropriate fields and edit them so they appear just as they should according to the tutorials I have seen on this. As noted by Bill earlier, the fields in the file are delimited by a single <TAB> character. My trunk.tsv file was working reasonably well until I tried some of the recommended changes and then things went scewby. I am confused about a couple things:

I added quotation marks to everything as Bills example suggested. I am not sure if that is the proper syntax or not because it didn't do anything. I also changed modulation from C4FM to fsk4 and even tried CQPSK to see what would happen both in trunk.tsv and command line. DQPSK I assume was a typo error? I even tried that lol. I do want to keep working on getting the trunk.txv to play nice with saskatoon.tsv, both shown below:
---------------------------------------------------------------------------
saskatoon.tsv

31 Police Public Works Interop
61 Provincial Fire Interop
109 Emergency Law Tac Police
127 CITY 2
129 City Emergency Interop
131 Intercom Interop
303 Light and Power
363 PW Yards 1 Public Works Yards 1
365 PW Yards 2 Public Works Yards 2
367 PW Yards 3 Public Works Yards 3
371 Project 1 Public Works
507 Garbage Trucks Public Works
2101 Saskatoon Fire Dispatch
2103 Fire 1 Tac
2105 Fire-Tac
2107 Fire 3
2109 Fire 4
2111 Fire 5
2115 PDFDInterop
2117 CITY 1 Interop Interop
2123 Martensville FD
2125 Warman FD
2127 Dalmeny FD
2129 Osler FD
2305 Parking 1
2307 Parking 2
2309 SFF OPS 2
2311 SFF OPS 1
2313 City Hall Sec
2315 CityHall Sec Alt
--------------------------------------------------------------------------------
From trunk.tsv, these are the things I input in the appropriate columns, tried both with quotes and without.

saskatoon 139.245 0x4e4 c4fm saskatoon.tsv


So in the interest of simplicity as you can see the TGIDS, minus police which are encrypted and most of the less interesting things such as transit and most of city maintenance, etc the list is almost a waste of time for this small system, hence the reason to continue with auto an auto start type of setup not using trunk.tsv at all??

The aim of this is to make a compact as possible - headless or very minimal display to be portable and as durable as possible. Upon power up (or pluging in a battery pack to pi) it just boots into OP25 running and as they say "Bobs your uncle - lol". I may use a small 3.5" HDMI display to simply monitor if it is still operating or not. I was initially hoping to utilize an "arduino style" LCD diplay with buttons for a simple reference to check that it is operating, hoping the on board buttons could be used by assigning them B(blacklist) and S(skip) to try to avoid encrypted stuff silencing stuff that I otherwise would miss. I have been told it can be done, it has never been done and it can not be done. Nobody seems to know and I certainly don't. I have given that idea up for now.

On a separate note but related and I know it has been covered in other posts here but in different context, what about an auto start P25 phase 2 command line using f- option? Is it possible? And if it is what would need to be changed from how I have this set up?

I do want to get in touch with you Bill to see if you can get this trunk stuff squared away. As stated above I think auto star would be adequate for what I am trying to accomplish with this project, however I would like to accomplish full functionality of OP25 if for no other reason just to say I did it. I am such a NOOB I don't even know for sure how to PM you Bill - perhaps you could do that and I will respond.

Sorry for the length of this writing!!

Thanks fellas. Most appreciated.

Kevin.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
922
Location
NE Wisconsin
Kevin,
.
OP25 should definitely be run with a trunk.tsv in control as this provides automatic switching of control channels should the system primary fail or if the system Is setup to rotate the primary and secondary control channels. This also provides you a vehicle to “Whitelist” or “Blacklist” specific talk groups to tailor your desired scanning interests.

The modulation type in trunk.tsv does not apply to normal use with rx.py, but instead, it is used only when a special type of scanning called “Logfile_Workers” Is setup. By default, rx.py will assume -d cqpsk if the (-d ) parameter has otherwise been omitted from the command line. The CQPSK demodulator is normally associated with Phase-1 Simulcast and Phase-2 systems. However, it’s not at all necessary to specify the
(-d fsk4) parameter for scanning C4FM phase-1 P25 systems. In fact, I run all of my instances of op25 with the cqpsk demodulator.

Regarding headless operation, and auto start, op25 can easily be run as a service. You’ll find a preconstructed op25-rx.service file in the /apps folder with an excellent explanation of how to implement this function spelled out in Note-7 of README-rpi3-liquidsoap that's found in the ~/op25 folder. Additional topics in this readme include operation and implementation of Liquidsoap and Icecast for use with op25.

Bill
 

maus92

Member
Premium Subscriber
Joined
Jun 23, 2004
Messages
8,042
Location
The OP
I think you have your cch frequency set incorrectly. The NAC and the tgids that you are using correspond to an 800 MHz system:


The 139.245 you are using is one of the control channels for site 19 of what looks to be a Harris or EFJohnson system:

 
Last edited:
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
Kevin,
.
OP25 should definitely be run with a trunk.tsv in control as this provides automatic switching of control channels should the system primary fail or if the system Is setup to rotate the primary and secondary control channels. This also provides you a vehicle to “Whitelist” or “Blacklist” specific talk groups to tailor your desired scanning interests.

The modulation type in trunk.tsv does not apply to normal use with rx.py, but instead, it is used only when a special type of scanning called “Logfile_Workers” Is setup. By default, rx.py will assume -d cqpsk if the (-d ) parameter has otherwise been omitted from the command line. The CQPSK demodulator is normally associated with Phase-1 Simulcast and Phase-2 systems. However, it’s not at all necessary to specify the
(-d fsk4) parameter for scanning C4FM phase-1 P25 systems. In fact, I run all of my instances of op25 with the cqpsk demodulator.

Regarding headless operation, and auto start, op25 can easily be run as a service. You’ll find a preconstructed op25-rx.service file in the /apps folder with an excellent explanation of how to implement this function spelled out in Note-7 of README-rpi3-liquidsoap that's found in the ~/op25 folder. Additional topics in this readme include operation and implementation of Liquidsoap and Icecast for use with op25.

Bill
Hey Bill,

That auto start op25 rx--service file sounds really interesting. I am not at all familiar with Liquidsoap. I know just as little about icecast other then I am not authorized in my area to stream any of what I monitor on any program like that. No Broadcastify or live feeds allowed in Saskatoon . Others have got themselves in big trouble doing it. Not something I would want to try. I did a cursory read of READE-rpi3 and a few web searches for additional info for the beginner. It sounds difficult but something I think that might work well with lots of help. Any assistance or insights into this would be appreciated. By now you are probably realizing how NOOB I am to all of this. I appreciate your patience and understanding. Thanks. Kevin.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
922
Location
NE Wisconsin
Kevin,

There is no legal reason that I can think of that prevents you from setting up your own private audio stream on your home network. Liquidsoap interfaces nicely with op25 to process the audio into an MP3 that steam handled by an Icecast server making it possible to listen to op25 from
any connected device on your home network or across the internet provided that measures are taken to secure the feed in compliance with your
Provencial laws.

The offer stands to assist if you want to send me a PM to make initial offline contact.

Bill
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
On a separate note but related and I know it has been covered in other posts here but in different context, what about an auto start P25 phase 2 command line using f- option? Is it possible? And if it is what would need to be changed from how I have this set up?
Would this be for P25 Phase 2 voice with a Phase 1 control channel (the usual use-case) or a Phase 2 control channel?
In either instance you will need the "-2" command line option to enable AMBE voice decode.
In the case of a phase 2 control channel you would also need the "--tdma-cc" option, but don't set this unless you need it because it will not work for a regular fdma cc.
 
Joined
Dec 15, 2013
Messages
17
Location
Saskatoon SK
For now it would be to monitor a conventional non trunked radio(I suspect). I am trying in an unusual manner I think to determine if a frequency I am interested in is phase 2 or find out if it is encrypted or modulated some other way. It is a site where I used to work and used to be able to listen to in the clear before they updated from astro25 to APX6000 handhelds at least 8 years ago or so. I can hear digital noise on the TX frequency but want to determine if they can be heard or not. I am suspecting they are not encrypted because they did not get on board with the rest of the city when they went p25 p1 city wide (years before the switch to apx6000s), which I can listen to regularly except for police which are completely encrypted (and not that interested in). As I become more familiar with OP25 I wanted to see if that would work to determine if I should continue trying to hear the voice transmissions or stop trying if they are indeed encrypted. Perhaps it is some other motorola modulation, but I thought I would try monitoring using some type of p25 p2 configuration with OP25 if do-able.

Also Bill has been extremely helpful teaching me the finer points of OP25 from a NOOB level into a more operational level and we were talking about you a (completely complimentary) during a marathon configuration of my system we worked on late last night.

Any help appreciated.

Thanks and take care

Kevin.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
922
Location
NE Wisconsin
Kevin,

We haven't discussed it yet but there's another application is the op25 suite called multi_rx.py that is very capable of decoding P25 conventional and trunked systems in addition to DMR, Type-II SmartNet, and so on that would make an excellent tool to investigate the radio traffic that migrated over to the APX6000 handhelds.

Contact me offline and we'll work on setting up JSON file that's used to configure the multi_rx.py application.

Bill
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,339
Location
Talbot Co, MD
P25 Conventional is always FDMA encoded
P25 FDMA voice encoding can be from P25 Conventional or P25 Phase 1 Trunking.
P25 TDMA voice encoding can only be from P25 Phase 2 Trunking systems and is only decodable after monitoring control channel broadcasts to learn SYSID/WACN/NAC fields needed to reverse the frame scrambling.
 
Status
Not open for further replies.
Top