Re: How to make your own "unofficial" Master server!


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!!

Join main@DVSwitch.groups.io to automatically receive all group messages.