How to make your own "unofficial" Master server!


Cort N0MJS <n0mjs@...>
 


RCM: True

Only if you’re actually doing something with the RCM data, otherwise you’re generating unnecessary traffic that does nothing

XNL_CALL: True

NEVER TRUE – setting this true can actually break things

XNL_MASTER: True

NEVER TRUE – setting this true can actually break things

DATA_CALL: True

NOT SET TRUE when you’re using it for voice-only applications, such as confbridge.py, IPSC_Bridge, etc.



From the comments in the sample configuration file:


# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.

# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.

# DATA_CALL:        Process data calls. True if you want to process data calls








On Apr 27, 2018, at 10:59 AM, Jamie R. Cid <jay@...> wrote:

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!

Cort Buffington
785-865-7206


Jamie R. Cid <jay@...>
 

Updated. Thank You.


From: Cort N0MJS <n0mjs@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:11 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!


RCM: True

Only if you’re actually doing something with the RCM data, otherwise you’re generating unnecessary traffic that does nothing

XNL_CALL: True

NEVER TRUE – setting this true can actually break things

XNL_MASTER: True

NEVER TRUE – setting this true can actually break things

DATA_CALL: True

NOT SET TRUE when you’re using it for voice-only applications, such as confbridge.py, IPSC_Bridge, etc.



From the comments in the sample configuration file:


# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.

# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.

# DATA_CALL:        Process data calls. True if you want to process data calls








On Apr 27, 2018, at 10:59 AM, Jamie R. Cid <jay@...> wrote:

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!

Cort Buffington
785-865-7206


Jamie R. Cid <jay@...>
 

Would "DATA_CALL" false block GPS/ARS traffic?


From: Cort N0MJS <n0mjs@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:11 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!


RCM: True

Only if you’re actually doing something with the RCM data, otherwise you’re generating unnecessary traffic that does nothing

XNL_CALL: True

NEVER TRUE – setting this true can actually break things

XNL_MASTER: True

NEVER TRUE – setting this true can actually break things

DATA_CALL: True

NOT SET TRUE when you’re using it for voice-only applications, such as confbridge.py, IPSC_Bridge, etc.



From the comments in the sample configuration file:


# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.

# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.

# DATA_CALL:        Process data calls. True if you want to process data calls








On Apr 27, 2018, at 10:59 AM, Jamie R. Cid <jay@...> wrote:

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!

Cort Buffington
785-865-7206


Corey Dean N3FE <n3fe@...>
 

One thing I do not see...  first you need to connect I bm using a 6 digit Repeater id.  Bm does NOT swap the time slots on you.  If you are using a Repeater id for the connection and we give you sysop rights you will be able to control things from the control panel.  If you haven’t done that then your system will think you are a hot spot and screw up your time slots and I don’t remember seeing a request to give you sysop rights to your Repeater id.

Corey n3fe


On Apr 27, 2018, at 11:59 AM, Jamie R. Cid <jay@...> wrote:

[Edited Message Follows]

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Kudos to the developers for making such great apps!!!

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!


Jamie R. Cid <jay@...>
 

Hi Corey,

I was unaware that was even an option as do most. I think It would be great to add that to my post so people know and I can adjust my configs.

Can you write me a small howto on requesting that?


From: Corey Dean N3FE <n3fe@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:28 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!

One thing I do not see...  first you need to connect I bm using a 6 digit Repeater id.  Bm does NOT swap the time slots on you.  If you are using a Repeater id for the connection and we give you sysop rights you will be able to control things from the control panel.  If you haven’t done that then your system will think you are a hot spot and screw up your time slots and I don’t remember seeing a request to give you sysop rights to your Repeater id.

Corey n3fe


On Apr 27, 2018, at 11:59 AM, Jamie R. Cid <jay@...> wrote:

[Edited Message Follows]

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Kudos to the developers for making such great apps!!!

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!


Steve N4IRS
 

Make sure your selfcare account is active
Send a e-mail to dmr-admins@...
Include your call sign
The repeater DMR ID
What master are you connected to
The fact that you are requesting sysop access to your repeater.

On 4/27/2018 12:52 PM, Jamie R. Cid wrote:
Hi Corey,

I was unaware that was even an option as do most. I think It would be great to add that to my post so people know and I can adjust my configs.

Can you write me a small howto on requesting that?


From: Corey Dean N3FE <n3fe@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:28 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!

One thing I do not see...  first you need to connect I bm using a 6 digit Repeater id.  Bm does NOT swap the time slots on you.  If you are using a Repeater id for the connection and we give you sysop rights you will be able to control things from the control panel.  If you haven’t done that then your system will think you are a hot spot and screw up your time slots and I don’t remember seeing a request to give you sysop rights to your Repeater id.

Corey n3fe


On Apr 27, 2018, at 11:59 AM, Jamie R. Cid <jay@...> wrote:

[Edited Message Follows]

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Kudos to the developers for making such great apps!!!

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!


Cort N0MJS <n0mjs@...>
 

DMRlink doesn’t currently process data calls. Enabling it in the config means you signal to other IPSC devices in the system that you’re capable of processing them. They’re not going anywhere anyway.

On Apr 27, 2018, at 11:23 AM, Jamie R. Cid <jay@...> wrote:

Would "DATA_CALL" false block GPS/ARS traffic?


From: Cort N0MJS <n0mjs@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:11 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!


RCM: True

Only if you’re actually doing something with the RCM data, otherwise you’re generating unnecessary traffic that does nothing

XNL_CALL: True

NEVER TRUE – setting this true can actually break things

XNL_MASTER: True

NEVER TRUE – setting this true can actually break things

DATA_CALL: True

NOT SET TRUE when you’re using it for voice-only applications, such as confbridge.py, IPSC_Bridge, etc.



From the comments in the sample configuration file:


# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.

# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.

# DATA_CALL:        Process data calls. True if you want to process data calls








On Apr 27, 2018, at 10:59 AM, Jamie R. Cid <jay@...> wrote:

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!

Cort Buffington
785-865-7206


--
Cort Buffington
H: +1-785-813-1501
M: +1-785-865-7206






Jamie R. Cid <jay@...>
 

Ok, Thanks.


From: Cort N0MJS <n0mjs@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 2:02 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!

DMRlink doesn’t currently process data calls. Enabling it in the config means you signal to other IPSC devices in the system that you’re capable of processing them. They’re not going anywhere anyway.

On Apr 27, 2018, at 11:23 AM, Jamie R. Cid <jay@...> wrote:

Would "DATA_CALL" false block GPS/ARS traffic?


From: Cort N0MJS <n0mjs@...>
To: <main@DVSwitch.groups.io>
Sent: 4/27/2018 12:11 PM
Subject: Re: [DVSwitch] How to make your own "unofficial" Master server!


RCM: True

Only if you’re actually doing something with the RCM data, otherwise you’re generating unnecessary traffic that does nothing

XNL_CALL: True

NEVER TRUE – setting this true can actually break things

XNL_MASTER: True

NEVER TRUE – setting this true can actually break things

DATA_CALL: True

NOT SET TRUE when you’re using it for voice-only applications, such as confbridge.py, IPSC_Bridge, etc.



From the comments in the sample configuration file:


# RCM:              Repeater Call Monitoring - don't unable unless you plan to
#                   actually use it, this creates extra network traffic.

# XNL_CALL:         Can cause problems if not set to False, DMRlink does not
#                   process XCMP/XNL calls.
# XNL_MASTER:       Obviously, should also be False, see XNL_CALL.

# DATA_CALL:        Process data calls. True if you want to process data calls








On Apr 27, 2018, at 10:59 AM, Jamie R. Cid <jay@...> wrote:

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **

Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) For this all to work you need to login to BM and statically forward any TG's you want to your repeater. You must do this for TS1 and TS2 as Brandmeister alternates TS's in their system based on traffic of some sort. What we will do is create a rule for any traffic coming into the system on TS1 or 2 and say TAC310 to redirect to the officially documented TS of 1 and transmit that on your repeater. I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
TG_310 = 310,310,1 (This is our TAC310 rule to redirect TS1 and TS2 from BM to TS1 on our repeater.

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: True
CON_APP: True
XNL_CALL: True
XNL_MASTER: True
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &


I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;)
Good luck!!

Cort Buffington
785-865-7206


--
Cort Buffington
H: +1-785-813-1501
M: +1-785-865-7206






JJ Cummings
 

Please make it stop, just publish this to a blog post or something... the desire to assist is admirable but the exploding inbox is painful.

On Fri, Apr 27, 2018 at 9:59 AM, Jamie R. Cid <jay@...> wrote:

[Edited Message Follows]

Hello All,

I figured I would post this since people have asked for it. If this is violating anything please feel free to remove it.

Kudos to the developers for making such great apps!!!

Ok,

** This guide assumes you have IPSC_Bridge, HB_Bridge and all the other necessities installed. **
** This guide assumes you are using an XPR Repeater in MASTER mode. **
** This guide assumes you have requested and been given "Sysop Rights" from BM on your account. And have logged in and configured your TS's. **


Can you connect the XPR repeater directly to BM in client mode?? SURE! But what fun is that!? ;)

So what I was looking to do was create a kinda of master server to link all my sites and motorola repeaters together basically and give me a little more control of my systems. What I ended up building is a MASTER IPSC Server which listens for IPSC connections from raspberry pi's at the remote repeater sites and forwards them to BM. The raspberry pi is used because I didn't want the Motorola repeaters in CLIENT mode rather MASTER mode so I can still use my Motorola diagnostic tools and TRBONet software to connect to the repeater. (When the repeater is in client mode it wont accept any connections from diagnostic tools). Here's the thing to remember which I had to figure out, HB_Bridge and IPSC_Bridge BOTH run background programs that do the work so it really looks like (BM <---> hblink <---> HB_Bridge <---> UDP Sockets <--->  IPSC_Bridge <---> dmrlink <---> IPSC_Bridge <---> dmrlink <---> XPR Repeater). Something more like that *kinda. Still trying to dial that in exactly but I'm focused on the configs still :) I did have this all installed on a single RPI3B But was having audio trans-coding issues so I moved it to a master Server/Rpi setup since that's what I really wanted anyway ;)

Here's a basic layout:
Master Server:
BM <---> HB_Bridge (BM Peer) <---> IPSC_Bridge (Master)

Raspberry Pi:
IPSC_Bridge (Peer) <---> ConfBridge (Peer) <---> XPR Repeater (Master)

Well lets get on to what you really want... And remember just because this all works for me don't mean it for everyone or officially approved by anyone ;) I hold no responsibility for anything other than my own setup!

First thing you need to do!: (This project will not work properly until this is completed. This is to allow you to set static talk groups.)


Make sure your BM selfcare account is active
Send a e-mail to dmr-admins AT repeater.net
Include your call sign
The repeater DMR ID
What master are you connected to
The fact that you are requesting sysop access to your repeater.


Server Side:
dmrlink.cfg:

[IPSCBRIDGE]
# IPSC Virtual Master Server
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: False
CON_APP: True
XNL_CALL: False
XNL_MASTER: False
DATA_CALL: False
VOICE_CALL: True
MASTER_PEER: True
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309

IPSC_Bridge.cfg:

[DEFAULTS]
debug = True                                    # Debug output for each VOICE frame
outToFile = False                               # Write each AMBE frame to a file called ambe.bin
outToUDP = True                                 # Send each AMBE frame to the _sock object (turn on/off IPSC_Bridge operation)

gateway = 127.0.0.1                             # IP address of Partner Application (HB_Bridge, Analog_Bridge)
fromGatewayPort = 31010                         # Port IPSC_Bridge is listening on for data  IPSC_Bridge <--- Partner
toGatewayPort = 31013                           # Port used to send data to Partner IPSC_Bridge ---> Partner

gatewayDmrId = 12345                            # Deprecated no longer used. Required for now.

# remoteControlPort = 31002                     # Deprecated, no longer used. Will be removed IGNORE!
tgFilter = 1,3,9                              # Deprecated, no longer used. Will be removed IGNORE!
# txTg = 9                                      # Deprecated, no longer used. Will be removed IGNORE!
# txTs = 2


hblink.cfg:

[BRANDMEISTER]
MODE: CLIENT
ENABLED: True
EXPORT_AMBE: False
IP:
PORT: 54000
MASTER_IP: IP OF YOUR FRIENDLY BM SERVER
MASTER_PORT: 62031
PASSPHRASE: passw0rd
CALLSIGN: YOURCALL
RADIO_ID: 123456
RX_FREQ: 000000000
TX_FREQ: 000000000
TX_POWER: 45
COLORCODE: 1
SLOTS: 2
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 75
LOCATION: Somewhere, USA
DESCRIPTION: DMR Repeater
URL: http://www.google.com
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 0
OPTIONS:

[DEFAULTS]
gateway = 127.0.0.1                             # IP address of Partner Application (IPSC_Bridge, Analog_Bridge)
fromGatewayPort = 31013                         # Port HB_Bridge is listening on for data  (HB_Bridge <--- Partner)
toGatewayPort = 31010                           # Port Partner is listening on for data  (HB_Bridge ---> Partner)

[RULES]
# Name = Old TG, New TG, New Slot
#TG_SE = 3174, 3174, 2
#TG_NA = 3,3,1
#TG_ATL = 8,8,1
#TG_WW = 1,1,1
#TG_CLUSTER = 2,2,2 (In theory your repeaters should already be clustered and TG2 shouldn't traverse out to BM with this setup. Haven't completely tested this yet. Anything with a # stays local to the system..

# List all your TG's at BM you want to access and filter. This is required per BM "When someone keys up on a static TG on the wrong TS it becomes a dynamic route and routes over both TS's".) You #will notice traffic for say TAC310 coming in on both TS's due to the way people use their hot-spot's and radios. If you don't filter then when traffic comes in on TS2 for TAC310 you wont hear it cause #your radio is programmed for TS1 ;)

TG_310 = 310,310,1
TG_311 = 311,311,1
TG_312 = 312,312,1

... etc...

/etc/rc.local

cd path to dmr link folder/dmrlink
/usr/bin/python IPSC_Bridge.py &

sleep 2

cd path to HBlink folder/HBlink-HB_Bridge
/usr/bin/python HB_Bridge.py &


Raspberry PI:
dmrlink.cfg

[XPR8300]
# XPR8300 Repeater
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 55000
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: False
CON_APP: True
XNL_CALL: False
XNL_MASTER: False
DATA_CALL: False
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: False
AUTH_KEY: 8675309
MASTER_IP: 10.1.100.10 (ip of your local lan repeater)
MASTER_PORT: 50000


[IPSCBRIDGE]
# Virtual IPSC Client Connection To Master IPSC Server.
ENABLED: True
RADIO_ID: 8675309
IP:
PORT: 51001
ALIVE_TIMER: 5
MAX_MISSED: 20
PEER_OPER: True
IPSC_MODE: DIGITAL
TS1_LINK: True
TS2_LINK: True
CSBK_CALL: False
RCM: False
CON_APP: True
XNL_CALL: False
XNL_MASTER: False
DATA_CALL: False
VOICE_CALL: True
MASTER_PEER: False
GROUP_HANGTIME: 0
AUTH_ENABLED: True
AUTH_KEY: 8675309
MASTER_IP: IP OF YOUR REMOTE MASTER IPSC SERVER YOU CREATED
MASTER_PORT: 51000

confbridge_rules.py:

TRUNKS = ['IPSCBRIDGE']

BRIDGES = {
    'TAC310': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [310,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 310, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC311': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [311,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 311, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC312': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [312,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 312, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC313': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [313,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 313, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC314': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [314,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 314, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC315': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [315,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 315, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC316': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [316,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 316, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
     'TAC317': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [317,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 317, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC318': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [318,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 318, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'TAC319': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [319,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 319, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'WORLDWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [91,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 91, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NORTHAMERICA': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [93,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 93, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'UPSTATENY': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [31361,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 31361, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'NATIONWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3100,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 1, 'TGID': 3100, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],
    'STATEWIDE': [
            {'SYSTEM': 'XPR8300', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'ON', 'ON': [3136,], 'OFF': [8080], 'RESET': []},
            {'SYSTEM': 'IPSCBRIDGE', 'TS': 2, 'TGID': 3136, 'ACTIVE': True, 'TIMEOUT': 10, 'TO_TYPE': 'NONE', 'ON': [], 'OFF': [], 'RESET': []}
        ],


/etc/rc.local

cd path to your dmr link
/usr/bin/python confbridge.py &



I think that's about it..... ;) (sorry for any typos or grammatically incorrect paragraphs ;) And remember, this is homebrew and a work in progress still..... ;)
Good luck!!