OP25 Boatbod multi_rx.py config.json file

n9tjx

Newbie
Premium Subscriber
Joined
Jul 23, 2006
Messages
4
OP25 is very configurable and I think that for me this is adding some confusion. I am attempting to configure a P25 simulcast system which includes some TMDA talk groups. The site I am trying to configure has 12 frequencies with 3 of them configured as control channels. The split for the frequencies is 5.75, so I have 3 SDR's plugged in.

I am trying to create the config.json file and have learned a lot, but am still missing a few things. I am hoping one of you will help me grasp the configuration of OP25 so I can finish getting it configured. My thought is to start with local audio coming out of the raspberry pi speaker jack. Once I figure that out I would like to try to stream different streams from the same system. Below is my config.json. Please let me know where I am making mistakes. I calculated the frequencies for the SDR based on a 2MHZ from top and bottom and the difference in the middle. If there is a better way to do this let me know.

{
"channels": [
{
"name": "Will_Grundy",
"device": "SDR0",
"trunking_sysname": "Starcom_WillGrundy_Site",
"demod_type": "cqpsk",
"cqpsk_tracking": true,
"tracking_threshold": 120,
"tracking_limit": 2400,
"tracking_feedback": 0.75,
"destination": "udp://127.0.0.1:56120",
"excess_bw": 0.2,
"filter_type": "rc",
"frequency": 773331250,
"if_rate": 24000,
"plot": "symbol",
"symbol_rate": 4800,
"blacklist": "",
"whitelist": ""

}
],
"devices": [
{
"args": "rtl=0",
"frequency": 772.831300,
"gains": "lna:39",
"gain_mode": false,
"name": "SDR0",
"offset": 0,
"ppm": 0.0,
"rate": 1000000,
"usable_bw_pct": 0.85,
"tunable": true
},
{
"args": "rtl=1",
"frequency": 772.45630,
"gains": "lna:39",
"name": "SDR1",
"offset": 0,
"ppm": 0.0,
"rate": 1000000,
"usable_bw_pct": 0.85,
"tunable": true
},

{
"args": "rtl=2",
"frequency": 770.081300,
"gains": "lna:39",
"name": "SDR2",
"offset": 0,

"ppm": 0.0,
"rate": 1000000,
"usable_bw_pct": 0.85,
"tunable": true
}
],
"trunking": {
"module": "tk_p25.py",
"chans": [
{
"nac": "0x14d",
"sysname": "Starcom_WillGrundy_Site",
"control_channel_list": "773.33125,77483125,77090625",
"whitelist": "",
"tgid_tags_file": "Grundy.tsv",
"crypt_behavior": 2
}
]
},
"audio": {
"module": "sockaudio.py",
"instances": [
{
"instance_name": "audio0",
"device_name": "default",
"udp_port": 23456,
"audio_gain": 1.0,
"number_channels": 1
}
]
},
"terminal": {
"module": "terminal.py",
"terminal_type": "curses",
"#terminal_type": "http:127.0.0.1:8081",
"terminal_timeout": 5.0,
"default_channel": "Will_Grundy",
"curses_plot_interval": 0.2,
"http_plot_interval": 1.0,
"http_plot_directory": "../www/images",
"tuning_step_large": 1200,
"tuning_step_small": 100
}
}



Terminal.PNG

Why does the top line have 773.331250/803.33125? I did not enter the 800 frequency. Is this something it is reading from the control channel data stream?

DataScope.PNG


symbol Plot.PNG
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,393
Location
Talbot Co, MD
How many simultaneous conversations are you trying to monitor? Basically you'll only need that many dongles because op25 will re-tune the receiver to the active voice frequency based on defined tgid priority and system activity.

In the trunking section you just need to define the list of control channels and the software takes care of things from there.

When you reach the point of wanting to monitor multiple streams, set up each channel with it's own whitelist and sdr device, then the traffic will automatically be segregated.
 

n9tjx

Newbie
Premium Subscriber
Joined
Jul 23, 2006
Messages
4
Thanks for the quick response. I was able to get it working for one stream coming out of the headphones jack. I used a whitelist to limit the amount of TG to listen to. I do have a couple of questions after getting things working.

1. I noticed that I am missing some of the traffic. There were times that OP 25 would miss entire parts of a call or conversation and would have no current activity. There were also times of slight distortion (packet loss?) What do I look for in logs to see if there is errors in the stream, and what fine tuning can I do? I also understand it will not be perfect and sound\act like a $2000+ Motorola radio :).

2. I notice that the priority is added at the trunk level and not at the channel level. Is it possible to have different priorities per channel or stream?

3. Is it better to add the talk group ID for the entire system, or just the TGID for what you want to listen too?

4. Does this line in the terminal section "#terminal_type": "http:127.0.0.1:8080", allow you to see what is happening on a web portal?

Thanks again for all of your hard work in this project.
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,393
Location
Talbot Co, MD
Thanks for the quick response. I was able to get it working for one stream coming out of the headphones jack. I used a whitelist to limit the amount of TG to listen to. I do have a couple of questions after getting things working.

1. I noticed that I am missing some of the traffic. There were times that OP 25 would miss entire parts of a call or conversation and would have no current activity. There were also times of slight distortion (packet loss?) What do I look for in logs to see if there is errors in the stream, and what fine tuning can I do? I also understand it will not be perfect and sound\act like a $2000+ Motorola radio :).

2. I notice that the priority is added at the trunk level and not at the channel level. Is it possible to have different priorities per channel or stream?

3. Is it better to add the talk group ID for the entire system, or just the TGID for what you want to listen too?

4. Does this line in the terminal section "#terminal_type": "http:127.0.0.1:8080", allow you to see what is happening on a web portal?

Thanks again for all of your hard work in this project.
1. A good starting point is to look at the various plots of the received signal, particularly the raw mixer (#5), datascope (#4) and constellation (#2). With a well-tuned strong signal, the mixer should be centered horizontally, the datascope centered vertically and the constellation should be 4 tight clusters. As noise degrades the signal, the constellation clusters will become larger and you'll start noticing other disturbances. If the tuning is grossly off, you'll see the raw mixer and datascope deviate from their centered positions. Plots can be dynamically activated/deactivated by tapping the number keys 1-6 from the curses terminal.

2. You are correct that priority is defined at the trunking system level and it's not presently possible to override it at the channel (stream) level.

3. There is no appreciable penalty other than memory usage for defining all the tgids known to a system. That said, there is no advantage for defining the ones you aren't interested in unless you want them to have a priority other than the default of 3.

4. Yes, but you have to take a few things into consideration;
- There can be only one active terminal type. If you activate the web terminal you must comment out the curses terminal.
- The terminal is insecure, so you would be wise not to expose it to the internet without securing via SSH tunnel or similar.
- The IP address 127.0.0.1 is only visible from that one local machine. If you want to be visible across a local network, use the proper ip address of the machine. e.g. http:192.168.1.7:8080
 
Top