You’re really going to have to think about your project goals and make a decision. I have run systems with confbridge.py running on one side and bridge.py on the other… There are a LOT of things that can get you in trouble. You’ll have to remember, you’re essentially running two separate multi-system “networks” that are cross-connected to each other.
If at all possible, I’d recommend handling all of your call routing in bridge.py and translating the Motorolas into home-brew. Why this way and not the other? I’ve sunset development on DMRlink – mostly because I don’t even have a Motorola repeater anymore and I need at least 2 to really do any development work with it. Time is another reason. But I also see home-brew protocol and MMDVM as the future of digital ham radio… for me at least, and since I’m not getting paid for this, I’ll be following the beat of my own drum :)
Because you’re so Motorola heavy, you should consider running the call routing in confbridge.py on the IPSC side and bring your MMDVMs in as the afterthought. Just remember that there will be no new development on DMRlink unless someone else does it. It is what it is.
For the KS-DMR network, when someone shows up with a Motorola repeater, we deploy an IPSC_Bridge.py and HB_bridge.py combo for each one. The idea is simply convert the Motorola to speak home-brew as fast and as close to the source as possible. Often times this is a small single board computer – usually with “Pi” in the name somewhere – right with the repeater itself. Other times, for folks who want to be a part of it it just can’t handle (or just don’t want to) running those services we provide them on our infrastructure.
0x49 DE N0MJS
Thank you for your timely and detailed response. With the links Steve sent, I think I am ready to have a go at it again. That said, I note in your response below that use of TGID and some repeater grouping would be desireable which is the other benefit that has drawn me to your work. Would I still use the confbridge.py or bridge.py after setting up IPSC? Would best practice be to remove my current installs of DMRlink and HBlink3 before installing the suggested branch versions?
Why not just connect the XPR8300s to the IPSC system with the SLR5700s? By the way, the “master” is inconsequential. The only purpose it serves is bootstrapping a new peer in the IPSC mesh – it doesn’t really matter who plays that role. When systems are meshed, they all operate as “peers” for the purpose of passing traffic. Master is only unique for link establishment. As for the hotspots, there’s no need to use bridge.py either.
My recommendation is to connect all Motorola repeaters in the same IPSC mesh (system, network – whatever you want to call it), and then use IPSC_Bridge.py and HB_Bridge.py to connect a single Homebrew server (master) over to the Motorolas. BTW: On the home-brew side, “master” does have significant meaning since the repeaters to not form a mesh like IPSC. All traffic has to traverse a central server, which just happens to be (unfortunately, because it really clouds the issue) a “master”.
IPSC_Bridge.py and HB_Bridge.py are found in the specific branches of DMRlink and HBlink (the original Python2 version) named for those programs. You’ll have to clone and switch the branch, or just clone the branch you want directly. Please don’t be temped to just use the versions of confbridge.py etc. with the “Bridge” branches. They’re based on quite old versions that are missing a lot of updates to other programs, but they are EXTREMELY stable and do the job they need to for protocol bridging quite well.
If you are struggling with how branches and stuff work with GitHub, the Internet us FULL of how-tos and tutorials on the topic.
I’m advising this setup because it appears you’re heavily invested in Motorola IPSC networking already, and the solution I’ve offered provides the most continuity for what you’re used to and already doing with the SLR5700s. There’s no need to run confbridge.py or bridge.py unless unless you’re wanting to segregated traffic between parts of your system – that is to say, have a TGID available on a group of repeaters not available on another group, etc.
If you reach the point where you have too many machines in a single IPSC mesh and you’re using too much bandwidth (n-1 stream count and all) you could look into proxy.py in DMRlink, which will transparently break up your IPSC mesh into smaller sub-groups.
0x49 DE N0MJS
- Currently I have an SLR5700 functioning as a master hosting six Motorola DMR repeaters. These all live on a public Internet address.
- I have two Moto XPR8300’s that I want to peer to DMRlink and bridge to the current SLR5700 Master. Ultimately, I wish to transition the six repeaters from the 5700 so they are all on DMR link.
- I am currently working with one MMDVM hotspot on the HBlink3 side of things with the goal of bridging the two sides together, something I can’t do with the SLR5700. Once working, hotspots will likely grow to about 15 or 20 devices.
- Down the road the total number of Moto repeaters will grow to about 15.
- This will be operated on a private network supported by ARDEN mesh networking operating in the 10.x.x.x domain and will have a gateway to the broader Internet via an AMPR.or 44.x.x.x address for hotspot connections when members travel.
- The system will be migrated to a Debian 9 Blade server once ready for production deployment. I am currently building on a Vultr Debian VM for test and learning purposes.
I need to understand what you’re attempting to do. Please fill in the gaps for me?
You have a number of Motorola repeaters and MMDVM devices. You’re trying to make them all talk together on a private network. You do not have any “upstream” connections to the “big networks” or laterals to other independent networks?
Is that right? The use case changes best practice. Also, which “side” has more devices – the Motorola repeaters or the MMDVM devices? Today? Expected in the future?
First, my apology as I am still new to the groups here and finding my way through these tools. DVSwitch is clearly a powerful set of programs and bridges that I am certain will do exactly what I am trying to accomplish Once I better understand the relationships between them and some of the pieces that make those links work. I am currently running:
Bridge.py and have also tried bridge_all.py
Following are my files:
Again, I sincerely appreciate any guidance possible and suspect I am missing something that will be blatantly obvious once pointed out.