OP25 OP25 Command line help.

Status
Not open for further replies.

AB5ID

Member
Joined
Aug 6, 2007
Messages
802
Location
Lee's Summit, MO (Kansas City)
I currently have OP25 working with a couple of P25 phase 1 sites in my area. A brand new P25 phase 2 site just went active a few days ago.
What command line can I use to listen to all activity on the new system without creating a TSV file, but still follow trunking? The control channel is 860.78750 and I'm using a standard dongle Nooelec TCXO.
Thanks!
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
Assuming that you're using an RTL SDR with op25....
Substitute lna gain and ppm values shown in the following examples with those you're currently using to monitor the Phase-I sites.

(Local Audio) ./rx.py --args 'rtl' --gains 'lna:49' -f 860.7875e6 -t -q 0 -S 1000000 -D cqpsk -2 -V -U 2> stderr.2
//// OR ///
(UDP Audio)
./rx.py --args 'rtl' --gains 'lna:49' -f 860.7875e6 -t -q 0 -S 1000000 -D cqpsk -2 -V -w 2> stderr.2

Once rx.py (op25) starts on your terminal, you'll observe normal NAC, WACN, SYSID information across the top of the screen.
Now, tap the "t" (lower case) key to start following trunk traffic on the system. OP25 now tracks all trunk traffic without
the need for the use of a trunk.tsv file, and without knowing the NAC of the new system.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
You're welcome!

BTW

If you set logging verbose level to 5 (-v 5) on your rx.py command line, then op25 will add some very useful information regarding trunking activity on the system that you're monitoring. After a period of time you can then run op25_stats.sh to read the stderr.2 logfile that will
sift through all of the log data and output several text files as to the TGID's used on the system along with usage and frequency data.

Note that op25_stats.sh expects a tag file to be input as a parameter along with the logfile. You can initially use one of the example tag files distributed with op25, or you may want to create your own dummy tag file.

Example: tag.tsv would consist of a single line, "9999<TAB>Unknown TGID" without the quotes and no spaces. Just a single TAB character
to separate the TGID (Decimal) with the Tag (text).

You execute the script like this: ./op25_stats.sh stderr.2 tag.tsv and the script reads in your logfile (stderr.2) along with the dummy (tag.tsv)
tag file and generates several useful reports on system activity that can be useful when building a tsv file to run this system. etc.

Bill
 

DRL-XM43

Member
Joined
Jun 23, 2015
Messages
842
Location
Durham Region
This is an aside. I have Op25 working perfectly for P25 and DMR.

When I saw the command line

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

I thought I would try it as a "try any P25 trunk" solution i.e. hit the (f) key enter a frequency and it would monitor that frequency.

The command line works fine for me except it ignores an entered frequency and stays or flips back to the frequency on the command line.

Is there a way to have it change to an entered frequency using (f).

Thank you.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
This is an aside. I have Op25 working perfectly for P25 and DMR.

When I saw the command line

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

I thought I would try it as a "try any P25 trunk" solution i.e. hit the (f) key enter a frequency and it would monitor that frequency.

The command line works fine for me except it ignores an entered frequency and stays or flips back to the frequency on the command line.

Is there a way to have it change to an entered frequency using (f).

Thank you.

The manual frequency entry does work, at least on my instances of boatbod. Just tap the (f) key and enter the frequency without the (e6) suffix as you'd normally do on the rx.py command line. Note: If you normally run op25 unattended as a service, then first stop the service before
attempting to manually input your rx.py command line. IE: sudo systemctl stop op25-rx.service. When you're ready to resume unattended operation, exit any manually initiated sessions and submit sudo systemctl start op25-rx.service before logging out.

Bill
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
Newbie question, can I monitor a Phase 1 and Phase 2 system concurrently with the same RTL dongle?

I'm currently using OP25 to monitor two Phase 1 systems.

Not concurrently, but you can scan any combination of Phase-I and Phase-II systems specified in your trunk.tsv file. The scanning process alternates approximately every five seconds of system inactivity from one system to the next. However, this is not an effective way to monitor multiple systems.

A better approach is to run multiple instances of op25, each with it's own RTL dongle and system specific configuration. This subject has been discussed here in previous posts and should be easy to search for those threads.

Bill
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
The manual frequency entry does work, at least on my instances of boatbod. Just tap the (f) key and enter the frequency without the (e6) suffix as you'd normally do on the rx.py command line. Note: If you normally run op25 unattended as a service, then first stop the service before
attempting to manually input your rx.py command line. IE: sudo systemctl stop op25-rx.service. When you're ready to resume unattended operation, exit any manually initiated sessions and submit sudo systemctl start op25-rx.service before logging out.

Bill

This is an update to my previous response... I have both the Osmocom (Max) and Boatbod versions of op25 installed and both behave the same
in terminal mode when entering (f) xxx.xxxx to change frequencies and do not revert to the frequency entered on the rx.py command line.
However, if you start rx.py with -T trunk.tsv, then op25 will read the list of control channel frequencies and will attempt to switch and test each frequency entry until it can detect or synchronize with the control channel.

Starting rx.py with (-t) will start op25 with the frequency specified on the command line and will also respond to user input from the curses terminal.

Bill
 

AB5ID

Member
Joined
Aug 6, 2007
Messages
802
Location
Lee's Summit, MO (Kansas City)
Here is a snapshot of my current Trunk.tsv file that I use to monitor two local sites.

81489

This is the command line I launch to monitor the sites:
./rx.py --args 'rtl' -N 'LNA:47' -S 2400000 -o 25000 -T trunk.tsv -V -U 2>stderr.2 --nocrypt

Could I add a third site (the new one) to my current Trunk.tsv file that is a Phase 2 system, if so, what do I need to put for modulation type in the Trunk.tsv field? I have the NAC from the new phase 2 site thanks to your help from a couple of days ago.

What changes if any would I need to make to my command line?

Thank you so much!

Not concurrently, but you can scan any combination of Phase-I and Phase-II systems specified in your trunk.tsv file. The scanning process alternates approximately every five seconds of system inactivity from one system to the next. However, this is not an effective way to monitor multiple systems.

A better approach is to run multiple instances of op25, each with it's own RTL dongle and system specific configuration. This subject has been discussed here in previous posts and should be easy to search for those threads.

Bill
 

DRL-XM43

Member
Joined
Jun 23, 2015
Messages
842
Location
Durham Region
This is an update to my previous response... I have both the Osmocom (Max) and Boatbod versions of op25 installed and both behave the same
in terminal mode when entering (f) xxx.xxxx to change frequencies and do not revert to the frequency entered on the rx.py command line.
However, if you start rx.py with -T trunk.tsv, then op25 will read the list of control channel frequencies and will attempt to switch and test each frequency entry until it can detect or synchronize with the control channel.

Starting rx.py with (-t) will start op25 with the frequency specified on the command line and will also respond to user input from the curses terminal.

Bill

I am using boatbod. I set a random frequency with no CC. Then I hit (f) and supply CC it responts and starts decoding (t) gives audio.

The problem I have is if I change to a different CC. The plot shows the radio tuning to it but the original info remains in the command box and it never starts decoding the new CC.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
Here is a snapshot of my current Trunk.tsv file that I use to monitor two local sites.

View attachment 81489

This is the command line I launch to monitor the sites:
./rx.py --args 'rtl' -N 'LNA:47' -S 2400000 -o 25000 -T trunk.tsv -V -U 2>stderr.2 --nocrypt

Could I add a third site (the new one) to my current Trunk.tsv file that is a Phase 2 system, if so, what do I need to put for modulation type in the Trunk.tsv field? I have the NAC from the new phase 2 site thanks to your help from a couple of days ago.

What changes if any would I need to make to my command line?

Thank you so much!

Absolutly.. Just add the Phase-II system just as you did for the existing Phase-I systems. This may seem a bit confusing, but the modulator type field in trunk.tsv is only used by logfile workers, a vehicle to decode multiple TG'S and capture the recovered audio to wav files for later playback. Otherwise, this field has no application in demodulating a given P25 system. However, if you were to use logfile workers, then
you'd populate C4FM in the Modulation field for Phase-I systems, and CQPSK for Phase-II systems.

The actual system demodulator is specified on the rx.py command line with the (-D) parameter. By default, op25 assumes CQPSK if you don't include the (-D) parameter. For Phase-I (C4FM), specify -D fsk4 on the rx.py command line. Some may argue, but it's generally doesn't seem to cause any issues using the fsk4 demodulator with Phase-I systems. But you must specify -D cqpsk to decode phase-II systems, and to decode Phase-I systems using Linear Simulcast Modulation (LSM). For your application, simply set -D cqpsk and you'll be good to go.

Bill
 
Last edited:

boatbod

Member
Joined
Mar 3, 2007
Messages
3,411
Location
Talbot Co, MD
I am using boatbod. I set a random frequency with no CC. Then I hit (f) and supply CC it responts and starts decoding (t) gives audio.

The problem I have is if I change to a different CC. The plot shows the radio tuning to it but the original info remains in the command box and it never starts decoding the new CC.
I've not tried this myself, but at a guess I'd say op25 is not clearing it's internal tables when you do the second "f" manual tune and as a result it still knows the previous control channel to tune to.
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,029
Location
NE Wisconsin
I tested one of my instances of boatbod op25 starting with a random frequency on the rx.py command line that isn't an active control channel.
Then I was able to duplicate this same behavior by inputting "f" the actual control channel frequency for my local system and op25 starts decoding TSBK's. Now when I input "f" with a value that's not an active control channel, then op25 reverts back to the previous entry.

I don't have another nearby system to try a different active control channel frequency, but it would be interesting to see if op25 would remain tuned to a new frequency, provided that such input is another active control channel.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,411
Location
Talbot Co, MD
I don't have another nearby system to try a different active control channel frequency, but it would be interesting to see if op25 would remain tuned to a new frequency, provided that such input is another active control channel.
I have my doubts that it would because it's not going to properly trigger the NAC=0 roaming logic.
 

DRL-XM43

Member
Joined
Jun 23, 2015
Messages
842
Location
Durham Region
I have my doubts that it would because it's not going to properly trigger the NAC=0 roaming logic.

Oh well. I was hoping to have a generic instance where I could just (f) from system to system. Not a big deal I have it working for all the systems I need, it was more as a curiosity than a need.
 
Status
Not open for further replies.
Top