Welcome to DVSwitch
Purpose
1) Allows “local” networking during an outage of the regional national/international network server.
2) Allows a local network operator to “blend” upstream feeds from different Networks (capital N on purpose). These Networks can’t get their act together and learn how to play nice with each other (everyone guilty as far as we are concerned). They may not like people doing this, but the solution is to grow up and work with each other, and not keep trying to force people to take sides.
3) Allows local segregation of localized traffic with more flexibility.
4) Allows experimentation with linking and how it’s done (part 97 specifies experimentation and advancement of the radio art are a core part of amateur radio).
Mission Statement/Position
WHEREAS the Networks continue to be largely islands and are not working together to create a unified network of Networks.
WHEREAS no firm reason has been given by any of the Networks why a *competent* local network operator cannot make this work effectively.
(US ONLY)
WHEREAS 47 CFR 97 (Amateur Radio Service) specifies that a core component of amateur radio is experimentation and advancement of the radio art [97.1(b)].
BE IT RESOLVED the core group of US amateur radio operators and experimenters organized around the DVSwitch project, and in the spirit of USA 47 CFR 97 and its intentions, support the *responsible* and *thoughtful* use of digital voice networking tools to create localized networks that will interconnect to the national/international Networks, and will support users of its tools in order to do this in the most effective and sustainable way possible.
Re: Trying to setup a basic 'Parrot', however hb_confbridge.py is not matching the RADIO_ID
Cort N0MJS <n0mjs@...>
Mathew, Good point. I did it that way to obfuscate the origin of the traffic to an upstream Network. Let's not just change it, but make it a configurable option to either masquerade or preserve the source ID. Sent from my iPhone
On Jul 13, 2017, at 8:01 PM, Matthew 2E0SIP <groups.io@...> wrote:
|
|
Re: Trying to setup a basic 'Parrot', however hb_confbridge.py is not matching the RADIO_ID
Matthew 2E0SIP
Hi Both,
Richard - Thanks for sending your diagram, it helps to see things 'visually'
Cort - Thanks for the heads up. Now that you've mentioned it, its obvious that MMDVM clients could connect straight to hb_confbridge. Doh! The code change adds about 5 lines, so not much is lost if it turns out to be unnecessary - although there may be a use case for my change.
We can pick this up when you get time - I'm in no huge rush.
Thanks again for your help,
Matthew
2E0SIP
|
|
Re: Trying to setup a basic 'Parrot', however hb_confbridge.py is not matching the RADIO_ID
Cort N0MJS <n0mjs@...>
Your configuration does not require running hblink.py at all. You only need parrot and hb_confbridge.py. I don’t have the time right now to write it all up, but as you’re modifying code and going to submit a PR based on not using the existing code correctly, I felt I should post something to stop you before you go to more unnecessary trouble. hb_confbridge.py calls and uses everything hblink.py does and is…. it *adds* functionality, to hblink.py, so there’s no need to run a copy of each.
-- Cort Buffington H: +1-785-813-1501 M: +1-785-865-7206
|
|
Re: Trying to setup a basic 'Parrot', however hb_confbridge.py is not matching the RADIO_ID
Matthew 2E0SIP
I switched to the HB_Bridge branch and it performed a little better, in that hb_confbridge was relaying the frames to the parrot, however the parrot was still ignoring them.
I did some digging and found this was due to the fact that hb_confbridge was relaying the frames with the Radio_ID of hblink, rather than that of the Parrots 'client', so they were dropped. I've resolved it by re-writing the RADIO_ID of the frame is being relayed to a master. I will submit a PR in due course, however I think I must be missing something as I'm surprised this hasn't picked up in the past. Is it unusual / unsupported for conf_bridge to bridge two Masters? Thanks Matthew 2E0SIP
|
|
Trying to setup a basic 'Parrot', however hb_confbridge.py is not matching the RADIO_ID
Matthew 2E0SIP
Hi all, hb_parrot (Master) - Provides Parrot Service hblink (Master) - Allows clients to connect to the service hb_confbridge (Client) - Conferences the two masters together, bridging audio from 'clients' to the Parrot ENABLED: True REPEAT: True EXPORT_AMBE: False IP: PORT: 54000 PASSPHRASE: passw0rd GROUP_HANGTIME: 5 hb_confbridge [PARROT] MODE: CLIENT ENABLED: True EXPORT_AMBE: False IP: 127.0.0.1 PORT: 54011 MASTER_IP: 127.0.0.1 MASTER_PORT: 54001 PASSPHRASE: passw0rd CALLSIGN: 2E0SIP RADIO_ID: 312001 RX_FREQ: 449000000 TX_FREQ: 444000000 TX_POWER: 25 COLORCODE: 1 SLOTS: 2 LATITUDE: 38.0000 LONGITUDE: -095.0000 HEIGHT: 75 LOCATION: Anywhere, USA DESCRIPTION: This is a cool repeater URL: www.w1abc.org SOFTWARE_ID: HBlink PACKAGE_ID: v0.1 GROUP_HANGTIME: 5 OPTIONS: [MASTER] MODE: CLIENT ENABLED: True EXPORT_AMBE: False IP: 127.0.0.1 PORT: 54010 MASTER_IP: 127.0.0.1 MASTER_PORT: 54000 PASSPHRASE: passw0rd CALLSIGN: 2E0SIP RADIO_ID: 312002 RX_FREQ: 449000000 TX_FREQ: 444000000 TX_POWER: 25 COLORCODE: 1 SLOTS: 2 LATITUDE: 38.0000 LONGITUDE: -095.0000 HEIGHT: 75 LOCATION: Anywhere, USA DESCRIPTION: This is a cool repeater URL: www.w1abc.org SOFTWARE_ID: HBlink PACKAGE_ID: v0.1 GROUP_HANGTIME: 5 OPTIONS:
|
|
Re: DMRlink <-> HBlink communication
Peter M0NWI
Mike,
Can I ask about the template file. Back in time chatting to Cort, we discussed DMRlink having a template based system so adding more repeater manufacturers would be a simpler task, identify the strings required for each type got the template, group voice etc, and hopefully the Ambe data will fit into another manufacturers frame type. The reason I ask is that I've gotten hold of a Hytera DMR repeater, and wondered if there might be some mileage in adding this to the types offered by DVSwitch? 73, Peter Sent from Outlook From: DVSwitch@groups.io <DVSwitch@groups.io> on behalf of Mike Zingman - N4IRR <mike.zingman@...>
Sent: 13 July 2017 18:55:29 To: DVSwitch@groups.io Subject: Re: [DVSwitch] DMRlink <-> HBlink communication The template file is a requirement for creating IPSC frames from the bridge.
|
|
Re: DMRlink <-> HBlink communication
Vance, W6SS
All appears to be working, THANK YOU very much for all your help. I have been looking for this functionality for a long time. It beats putting a repeater in your car when you travel.
-- Vance W6SS
|
|
Re: DMRlink <-> HBlink communication
IPSC_Bridge:
toggle quoted messageShow quoted text
-rw-r--r-- 1 root root 6543 Jul 13 13:05 dmrlink.cfg -rwxr-xr-x 1 root root 52232 Jul 13 10:02 dmrlink.py drwxr-xr-x 2 root root 4096 Jul 13 13:05 ipsc -rw-r--r-- 1 root root 581 Jul 13 10:02 IPSC_Bridge.cfg -rw-r--r-- 1 root root 14482 Jul 13 10:02 IPSC_Bridge.py -rw-r--r-- 1 root root 54622 Jul 13 10:02 template.bin HB_Bridge: -rw-r--r-- 1 root root 593 Jul 13 10:03 HB_Bridge.cfg -rw-r--r-- 1 root root 10874 Jul 13 10:03 HB_Bridge.py -rwxr-xr-x 1 root root 8414 Jul 13 10:03 hb_config.py -rwxr-xr-x 1 root root 1650 Jul 13 10:03 hb_const.py -rw-r--r-- 1 root root 3486 Jul 13 11:17 hblink.cfg -rwxr-xr-x 1 root root 29037 Jul 13 10:03 hblink.py -rwxr-xr-x 1 root root 3479 Jul 13 10:03 hb_log.py
On 7/13/2017 1:53 PM, w6ss@... wrote:
Do I need the template.py file? I can now transmit to the C-Bridge but not getting any audio.
|
|
Re: DMRlink <-> HBlink communication
The template file is a requirement for creating IPSC frames from the bridge.
|
|
Re: DMRlink <-> HBlink communication
Vance, W6SS
Do I need the template.py file? I can now transmit to the C-Bridge but not getting any audio.
Probably what I need is a listing of files for /opt/dmrlink/bridge and /opt/HBlink -- Vance W6SS
|
|
Re: DMRlink <-> HBlink communication
In the short term I will make this a fatal error. In the longer term, I will convert over to use the static values Cort was so kind to convert for me.
HB will not have the same problem since it does not use templates.
|
|
Re: DMRlink <-> HBlink communication
It goes in the same directory as IPSC_Bridge.py
toggle quoted messageShow quoted text
Mike called it (what a surprise) Without template.bin INFO 2017-07-13 13:17:33,862 DMRlink 'IPSC_Bridge.py' (c) 2015 N0MJS & the K0USY Group - SYSTEM STARTING... INFO 2017-07-13 13:17:33,863 Version 20170620 INFO 2017-07-13 13:17:33,864 ID ALIAS MAPPER: 'peer_ids.csv' is current, not downloaded INFO 2017-07-13 13:17:33,865 ID ALIAS MAPPER: 'subscriber_ids.csv' is current, not downloaded INFO 2017-07-13 13:17:33,932 ID ALIAS MAPPER: peer_ids dictionary is available INFO 2017-07-13 13:17:34,563 ID ALIAS MAPPER: subscriber_ids dictionary is available INFO 2017-07-13 13:17:34,564 (DMR-MARC) IPSC Instance Created: 311246, 0.0.0.0:50022 INFO 2017-07-13 13:17:34,566 section = DMR-MARC INFO 2017-07-13 13:17:34,567 Section DMR-MARC was not found, using DEFAULTS INFO 2017-07-13 13:17:34,568 gateway = 127.0.0.1 INFO 2017-07-13 13:17:34,568 toGatewayPort = 31003 INFO 2017-07-13 13:17:34,569 fromGatewayPort = 31000 INFO 2017-07-13 13:17:34,570 DMRLink IPSC Bridge ERROR 2017-07-13 13:17:34,572 Can not open template.bin file Unhandled Error Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 73, in callWithContext return context.call({ILogContext: newCtx}, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext return self.currentContext().callWithContext(ctx, func, *args, **kw) File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext return func(*args,**kw) File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 614, in _doReadOrWrite why = selectable.doRead() --- <exception caught here> --- File "/usr/lib/python2.7/dist-packages/twisted/internet/udp.py", line 246, in doRead self.protocol.datagramReceived(data, addr) File "/usr/local/lib/python2.7/dist-packages/dmr_utils/ambe_bridge.py", line 184, in datagramReceived self.func(_data, (_host, _port)) File "/usr/local/lib/python2.7/dist-packages/dmr_utils/ambe_bridge.py", line 261, in import_datagramReceived self.send_voice_header(_rx_slot) File "/usr/local/lib/python2.7/dist-packages/dmr_utils/ambe_bridge.py", line 526, in send_voice_header self.rewriteFrame(self._tempHead[i], _rx_slot.slot, _rx_slot.dst_id, _rx_slot.rf_src, _rx_slot.repeater_id) File "/usr/local/lib/python2.7/dist-packages/dmr_utils/ambe_bridge.py", line 562, in rewriteFrame _peerid = _frame[1:5] # int32 peer who is sending us a packet exceptions.TypeError: 'int' object has no attribute '__getitem__' With template.bin It works! Steve N4IRS
On 7/13/2017 1:16 PM, Corey Dean N3FE
wrote:
|
|
Re: DMRlink <-> HBlink communication
Corey Dean N3FE <n3fe@...>
It goes directly in the dmrlink folder.
On Thu, Jul 13, 2017 at 1:14 PM, <w6ss@...> wrote: I found template.bin, does it go in the /opt/dmrlink/bridge directory?
|
|
Re: DMRlink <-> HBlink communication
Vance, W6SS
I found template.bin, does it go in the /opt/dmrlink/bridge directory?
-- Vance W6SS
|
|
Re: DMRlink <-> HBlink communication
|
|
Re: DMRlink <-> HBlink communication
Vance, W6SS
I do not have template.bin, where do I find it?
-- Vance W6SS
|
|
Re: Beta testing of DummyRepeater for ASL
Coming to a screen near you
I have done some work on Analog_Bridge and DummyRepeater (AB and DR) that allow the passing of limited metadata between the two networks. On the AB side DMR IDs are looked up in the subscriberids.csv. The call sign is then transferred over to DR along with the talk group and slot. This information is placed in the DStar message field for the transmission so you can see the source call/tg and slot on your dstar radio. On the DR side, the call is passed over the bridge to AB where it is looked up in the subscriber_ids.csv file. If found, it is used as the source ID of the transmission for the DMR network. If the call is not found (no cc7 id) then the gateway call is used instead. I will make the changes available in the next day or so. Mike
|
|
Re: DMRlink <-> HBlink communication
Vance, W6SS
Than you, not having the rules files make it much easier. Will wait what to find out from your testing.
-- Vance W6SS
|
|
Re: DMRlink <-> HBlink communication
Just to make sure, you *do* have template.bin in the dmrlink directory, right?
Can you look back at the start of your log for any error message like: Can not open template.bin file Mike
|
|
Re: DMRlink <-> HBlink communication
Vance,
toggle quoted messageShow quoted text
I am chasing it now. Just to be clear: hb_routing_rules are not used by basic HB to IPSC. Just HB_Bridge and IPSC_Bridge It looks like this: MMDVM <---> HB_Bridge <---> IPSC_Bridge <---> C-bridge The only configuration files involved are: HB_Bridge.cfg hblink.cfg IPSC_Bridge.cfg dmrlink.cfg You start HB_Bridge with "python HB_Bridge.py" You start IPSC_Bridge with python IPSC_Bridge.py" I am retesting the configuration now. 73, Steve N4IRS
On 7/13/2017 12:34 PM, w6ss@...
wrote:
I am running HB_Bridge and IPSC_Bridge and have upgraded the dmr_utils. I have one TG routed both ways in hb_routing_rules.py and hb_routing_rules.py. HB_Bridge.cfg the TG has been added.
|
|