OP25 OP25 - Thanks, and for those struggling - stick at it

kylep

Member
Joined
Oct 13, 2007
Messages
5
Mostly just wanted to share a thanks and success story on OP25 (boatbod).
Over the past month I've moved from initial setup and trial, to now having a pretty rocksolid multi receiver setup. Will include a little bit of what I have setup, and some of the challenges I found but managed to overcome by searching through various posts and tutorials.

My setup:
- I'm in Australia, Victoria to be a little more specific.
- Our main public service radio system is P25 trunked and split across a 165MHz component and a 420MHz component. Some users operate on only 1 of those, and some operate on both, through a combination of patches, and separate channel selection. So it can be a challenging one to scan to a satisfactory level unless you have multiple scanners running
- So, I'm not running 2 receivers
- Pi4 - mainly headless
- multi-rx
- icecast
- web interface
- So the 2 receivers go to the 1 web interface and I use the buttons on that to change viewing between the 2 sites
- I have icecast streaming to 2 separate addresses. When using a computer to listen, I can open up both streams, while on phone I pick which one I want at the time
This enables me to use VLC and browsers on my main computer or phone or ipad depending on what I'm doing, and with a VPN to home I can easily access wherever I am.

The 'Journey'
- I started out using a single receiver, rx.py. Intially with local audio, and then very quickly moved to icecast. This was mostly quite straightforward and I had good results coming through except for when I was starting to test a few things. I recall having a couple of challenges with icecast early on and managed to iron those out after some searching and correcting some updates.
- I experimented with tracking different sites, and particularly trying some more distant sites to receive traffic I don't normally receive at home. I found that OP25 was best left to work on a site with more certain coverage, as it's a little cumbersome the way it drops out and then works to change to the next CC. I may return to that at some point, or even add another receiver for that task
- After getting good results with this, I considered running 2 instances of rx.py, but decided to jump in to multi instead. Well, that was a whole new set of banging head on desk as I figured out what was the same and what operated differently, and how it all worked together.
- Only a little bit of banging head, and I had managed to get the 2 receivers working and the 2 icecast streams working (I've probably found the icecast side the more challenging)
- the last piece of the puzzle that I've just solved is getting everything to work on autostart so it can get up and running remotely without input. I probably need to figure a way to make sure I can boot it if we have a power loss, but at least from power on, it does everything needed to start listening remotely again. I've done service enables before but had a few issues, and then the last hurdle was having to update the user path to the apps directory (d;oh!)
- The one unesolved challenge is whether I can get RID/alias to display in metadata to VLC like I could with rx.py. I attempted the same syntax in the config json for multi_rx and it did not like me.

I've found the pi/linux route so much easier to get good trunking and audio than the troubles I had in the past with unitrunker and DSD, particularly once systems in our area went to digital. And OP25 is a nice easy to execute solution. For those who are struggling with it, I recommend working through it and just taking your time. Sure beats the money spent on a single Uniden scanner!
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,356
Location
Talbot Co, MD
Good write up, thanks!

Thoughts:
- The rx.py control channel hunting logic is indeed a bit clunky, but I'm trying to kill off the old rx.py so I don't want to invest a whole lot of time and thought on that app. If there are better ways to hunt the control channels in multi_rx.py I'm open to suggestions. Right now you give it a list in the "trunking" section and it cycles through those until it finds something. The list is also supplemented by the backup control channel declared in P25 status broadcasts.
- RID alias display in metadata should work roughly equivalently in rx.py and multi_rx.py because they share common icemeta.py code. The main difference is going to be the identification and logging of RID in the trunking code, which is different between the two apps. Fundamentally though, if you can see the RID / RID Tag in the terminal, you should be able to get it into metadata.
 

kylep

Member
Joined
Oct 13, 2007
Messages
5
Thanks boatbod
- some of the control channel clunkiness I describe would be mixed between rx and multi experience. However 1 thing I remember is that when I had 2 sites' CC in the file and the 0 NAC set, it would struggle with making both the CC change and updating the NAC - at this point I was wathching the tail terminal and could see it make the change to the second CC, but then error with an unexpected NAC. (If it wasn't exactly this behaviour, it was close). I didn't go deep into looking into this and just took it as a limitation with the combination of CC list and NAC changes, perhaps being expected behaviour. The other part is that it seemed to be a slow rate of change between CCs, and so more likely to miss a desired transmission than gain something more interesting. As I say, it kind of makes sense to me and as this is a fixed location setup, I'm ok with just dialling into a reliable site that carries most traffic I'm interested in. Now I'm setup, I could always get some more cheap SDRs to dabble with different sites.
-- if looking into something, it may be worth checking that multi can handle multiple CCs with different NACs. If I find some time, I can try testing this and see if my recollection is correct or if I can get it to work.
- RID alias. I recall that I tried simply inserting the same RID tags used in meta.json into the multi json config and it errored in some way. There may be a minor syntax change that I need to make? EDIT. I've added the RID line back into my multi config file and it doesn't seem to have errored. Though I'm yet to see a RID show in my VLC player (in instances wehere it is showing in the browser)
 

kylep

Member
Joined
Oct 13, 2007
Messages
5
OK, I've had some further experimentation with the Meta challenge.
After editing icemeta.py I'm sarting to get the RID and RTAG come through into VLC. I often don't see a RID in the browser terminal, or I'll see it briefly before it goes away. For it to show in VLC it seems to need a 'steady' read on browser terminal to make it through to VLC, but I'll take that for now. I suspect it may be due to the many patches on this network
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,356
Location
Talbot Co, MD
OK, I've had some further experimentation with the Meta challenge.
After editing icemeta.py I'm sarting to get the RID and RTAG come through into VLC. I often don't see a RID in the browser terminal, or I'll see it briefly before it goes away. For it to show in VLC it seems to need a 'steady' read on browser terminal to make it through to VLC, but I'll take that for now. I suspect it may be due to the many patches on this network
The appearance of the RID in the terminal is kinda timing sensitive as the terminal itself is on a polling loop (1Hz updates). It would be more responsive if it was push-driven, but that brings it's own challenges and cpu impact!

For rx.py, NAC=0 is a special case to allow roaming in a mobile environment. It's not really intended to be scanner-like in it's abilities to rapidly flip between different systems.
multi_rx.py does handle NAC=0, and it also handles multiple control channels with different NACs (each requiring it's own trunking instance), but it does not support roaming.
 
Top