SFLRadioJunkie
Member
- Joined
- Sep 15, 2010
- Messages
- 41
Whoa... How deep does this rabbit hole go?!?
Well, I've got that working as well...
Basically all one has to do is structure the rx.py arguments properly and that's all folks!
What I did was create a variant of the op25.sh (op251, 252, 253, etc..) to suit each channel need and then I run them in separate shells.
The command with args looks like this for me..
Code:./rx.py --nocrypt --args "rtl=2" --gains 'lna:36' -S 960000 -X -q -0 -v 1 -2 -V -U -w -W 127.0.0.1 -u 23476 -g 0.8 -T trunk5.tsv -l http:0.0.0.0:8085 2> stderr.2
Important the you change the rtl, -u [port] and -l host port values it would seem.. Now I've got the best of both worlds!!
I do have another question as it pertains to audio though.. Is there a way to assign a name to the audio channel that is created? Currently, each new audio channel has "ALSA Playback" assigned to it, making it confusing which one is which..
I was looking within the rx.py script and I can see where the audio structuring takes place but it is not clear to me how the name property is set. I'm assuming this is because the name property is not set here?
Any guidance would be greatly appreciated.
So then maybe I should focus on running multi_rx.py which I know I can get to work but I need to focus my attention on manual tuning.. I am not sure that I completely understand how to properly tune these receivers... Maybe you can point me in the right direction? Also, they seem to be tuned fine for a while and then one or two will lose signal.. It's easy enough to get them back in line but you can see how this isn't good..While you certainly can run multiple instances of rx.py, running one instance of multi_rx.py is easier to manage from a single terminal and does have some cpu utilization benefits if the channels are all derived from a single P25 system. That said, the boatbod multi_rx does not presently support the autotune mechanism found in rx.py. It might not be so hard to add, but I've also not seen it make a particularly significant improvement when running with TXCO dongles.
What is the best way to disable it in a config file?I've just pushed an update to multi_rx that adds the automatic tuning for CQPSK demod types. Right now it's not going to show the freq error value in the terminal but it does seem to work pretty well on my test systems. Tracking appears to maintain the freq error estimate less than 10hz. Update interval is once per second, so it can take 10+ seconds to fully stabilize.
You can see per-channel tracking in action if you enable -v 11 logging and search for "tracking" in the stderr.2 log, or alternatively watch the datascope plot re-center itself as you make tweaks to manual fine tuning.
In each of the channels set "cqpsk_tracking" : falseWhat is the best way to disable it in a config file?
Thank you!In each of the channels set "cqpsk_tracking" : false
Using Python /usr/bin/python2
Traceback (most recent call last):
File "./multi_rx.py", line 1040, in <module>
rx = rx_main()
File "./multi_rx.py", line 1004, in __init__
config = json.loads(open(options.config_file).read())
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
{
"channels": [
{
"name": "SERAM Public Safety",
"device": "sdr0",
"trunking_sysname": "SERAM",
"meta_stream_name": "metastream_0",
"demod_type": "cqpsk",
"cqpsk_tracking": true,
"tracking_threshold": 30,
"tracking_feedback": 0.85,
"destination": "udp://127.0.0.1:23456",
"excess_bw": 0.2,
"filter_type": "rc",
"frequency": 770506250,
"if_rate": 24000,
"plot": "",
"symbol_rate": 4800,
"enable_analog": "off",
"blacklist": "",
"whitelist": "seram.wlist"
},
],
"devices": [
{
"args": "rtl=0",
"gains": "LNA:248",
"gain_mode": false,
"name": "sdr0",
"offset": 0,
"ppm": 0.0,
"rate": 2400000,
"usable_bw_pct": 0.85,
"tunable": true
},
],
"trunking": {
"module": "tk_p25.py",
"chans": [
{
"nac": "0xcf1",
"sysname": "SERAM",
"control_channel_list": "770.50625",
"whitelist": "50001, 50002, 50003, 50004, 50005",
"blacklist": "",
"tgid_tags_file": "montreal.tsv",
"rid_tags_file": "rid-mtl.tsv",
"tdma_cc": false,
"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:8080",
"curses_plot_interval": 0.1,
"http_plot_interval": 1.0,
"http_plot_directory": "../www/images",
"tuning_step_large": 1200,
"tuning_step_small": 100
}
}
Using Python /usr/bin/python2
Traceback (most recent call last):
File "./multi_rx.py", line 1040, in <module>
rx = rx_main()
File "./multi_rx.py", line 1004, in __init__
config = json.loads(open(options.config_file).read())
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
It means your .json file is improperly formatted.I just removed it as you told me but am still getting the error...
It says "No JSON object could be decoded". I wonder what means.Code:Using Python /usr/bin/python2 Traceback (most recent call last): File "./multi_rx.py", line 1040, in <module> rx = rx_main() File "./multi_rx.py", line 1004, in __init__ config = json.loads(open(options.config_file).read()) File "/usr/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode raise ValueError("No JSON object could be decoded") ValueError: No JSON object could be decoded
Try changing the terminal type fromThe other issue I'm having is that I'm not able to connect to the web interface from another device:
With rx.py I was able to view OP25's web interface (running on a RPi 3B+) on a laptop by just typing the Pi's ip adress and :8080 on a web browser.
Is there a way to have access to that when running multi_rx.py?
I tried looking into terminal.py but didn't find anything that could help me do that.
"#terminal_type": "http:127.0.0.1:8080",
"#terminal_type": "http:0.0.0.0:8080",
You're welcome!It worked. Thanks!
Try changing the terminal type fromCode:"#terminal_type": "http:127.0.0.1:8080",
toCode:"#terminal_type": "http:0.0.0.0:8080",
...