HOWTO: IPSC_Bridge & HB_Bridge – Part 2 – IPSC Gateway Setup

by

So I’m going reivew how we setup our IPSC Gateway in this post. Again I would call this a somewhat pre-mature document as I’ve only been playing with the software for about a few weeks. I’ll will do my best to update the documentation.

Setup – IPSC Gateway

Here is where the fun begins and you will loose most of your hair! It took me several tires to get this right. I had to ask lots of questions and provide examples but in the end it all worked out and we have a functional system. Hope this documentation will help. Below are somethings you will need.

  • LAN IP address of ipsc server (hope it’s static!!)
  • root cli access
  • tmux – optional (this makes life easier!!!)

Again this is an example of how we setup our system. This can be configured many MANY MANY ways and thats the beauty of hblink / dmrlink. So in this example we have setup our repaters as masters. We then setup the dmrlink (IPSC_Bridge.py) software to peer into the master repeaters to establish the IPSC connection. Then we configure the hblink software (HB_Bridge.py) to peer into the master routing gateway. (Covered later in documentation)

So let me pause here and tryin to explain. Yes we are using IPSC_Bridge but the core of the script is dmrlink. Yes we are also using HB_Bridge but it’s a core of the hblink scripts. This took me a LONG LONG LONG time to figure out what people in the forums were talking about and I thought I was going nuts and missing someting. If you remeber back in the software installation we installed the IPSC_Bridge a BRANCH of dmrlink. In other words it’s a dirivitive of dmrlink scripts refered to has the IPSC_Bridge VERSION of dmrlink. The same holds true for HB_Bridge, it was the HB_Bridge BRANCH of hblink that we installed. I hope this clears things up for you as I know once I figured this out it became more CLEAR what everyone was talking about. Also the configurations and scripts executed lined up and made much more sense. Guess that’s what I get for not being a programmer! LOL

Overview of setup

Here is an overview of what we will be setting up in this post. I’ve also included a flow of what this will look like for two of our repeaters. It can get confusing really quick so I tried to break everything up into sections.

  • REPEATER 1
    • REPEATER1 – IP Address 10.20.1.10, UDP port 50000
    • DMRLINK INSTANCE 1 – PEERS INTO MASTER REPEATER1 AT 10.20.1.10 ON UDP PORT 50000
    • IPSC_BRIDGE INSTANCE 1 – RX UDP PORT 31000, TX UDP PORT 32000
    • HB_BRIDGE INSTANCE 1 – RX UDP PORT 32000, TX UDP PORT 31000
    • HBLINK INSTANCE 1 – PEERS INTO CONF01 AT 10.100.1.11 ON UDP PORT 52000
  • REPEATER 2
    • REPEATER2 – IP Address 10.20.1.11, UDP port 50001
    • DMRLINK INSTANCE 2 – PEERS INTO MASTER REPEATER1 AT 10.20.1.11 ON UDP PORT 50001
    • IPSC_BRIDGE INSTANCE 2 – RX UDP PORT 31001, TX UDP PORT 32001
    • HB_BRIDGE INSTANCE 2 – RX UDP PORT 32001, TX UDP PORT 31001
    • HBLINK INSTANCE 2 – PEERS INTO CONF01 AT 10.100.1.11 ON UDP PORT 52001

Repeater <-> Software flow

REPEATER1/IPSC <-> IPSC Gateway <-> Routing Gateway
REPEATER2/IPSC <-> IPSC Gateway <-> Routing Gateway

Instance 1 of IPSC_Brdidge.py (dmrlink) attaches to the master repeater at 10.20.1.10. In turn that traffic is bridged over to an instance of HB_Bridge.py (hblink) on the same server that then peers into our routing gateway (CONF01) running on a seperate server at 10.100.1.11. All audio routing is then done on the routing server. I will cover this in Part 3 of the blog posts.

Instance 2 of IPSC_Brdidge.py (dmrlink) attaches to the master repeater at 10.20.1.11. In turn that traffic is bridged over to an instance of HB_Bridge.py (hblink) on the same server that then peers into our master routing server (CONF01) running on a seperate server at 10.100.1.11. All audio routing is then done in the routing server. I will cover this in Part 3 of the blog posts.

REPEATER1/IPSC <-> IPSC_Bridge.py <-> HB_Bridge.py <-> bridge.py
<- Repeater- > | < - Runs On IPSC Gateway -> | <- Routing Gateway ->

REPEATER2/IPSC <-> IPSC_Bridge.py <-> HB_Bridge.py <-> bridge.py
<- Repeater- > | < - Runs On IPSC Gateway -> | <- Routing Gateway ->

So let’s dig into getting IPSC_Bridge configured.

Careful attention needs to exercised when mapped out your tx / rx UDP ports otherwise you’re going to go nuts! Each of repeaters connects to an indivugual IPSC_Bridge instance. This means that every instance of IPSC_Bridge will need it’s own set of tx / rx UDP ports. These ports CANNOT overlap with any other service running on the server otherwise the scripots will fail to start. (check for ports in use by running ‘netstat -na|more’) We chose to run indivigual instatances of IPSC_Bridge as it allows us to map different talkgroups to different repeates should we want to and also allows our Dynamic talkgroups to only tie up one repeater vs tying up all our repeaters. This can be all done with 1 instance of IPSC_Bridge / HB_Bridge if you want all your repaters to have all the same talkgroups. (this would be a true BRIDGE setup. Message me offline if you need help setting this up.)

Instance 1 – IPSC_Bridge Configuration

IPSC_Bridge Configuration (REPEATER1)
--- Summary
DMRLINK (repeater1.cfg) IPSC_Bridge (bridge_repeater1.cfg)
IP Address: <blank> gateway = 127.0.0.1
PORT: 50000 fromGatewayPort = 31000
MASTER_IP: 10.20.1.10 toGatewayPort = 32000
MASTER_PORT: 50000

--- dmrlink peer into repeater at hilltop - repeater1.cfg
[REPEATER1]
ENABLED: True
RADIO_ID: 123456789
IP:
PORT: 50004
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: False
XNL_MASTER: False
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
AUTH_ENABLED: True
AUTH_KEY:
MASTER_IP: 10.20.1.10
MASTER_PORT: 50000
GROUP_HANGTIME: 5

--- Bridge configuration to HB_Bridge - bridge_repeater1.cfg
[DEFAULTS]
gateway = 127.0.0.1
fromGatewayPort = 31000
toGatewayPort = 32000

Note: my configs live in /opt/dmrlink/conf for the dmrlink side of things.

You will launch IPSC_Bridge.py with a brdige config file like this ‘/opt/dmrlink/IPSC_Bridge.py -c /opt/dmrlink/conf/repeater1.cfg -b /opt/dmrlink/conf/bridge_repeater1.cfg’

Instance 1 – HB_Bridge Configuration

HB_Bridge Configuration (REPEATER1)

--- Summary
HBLINK (bridge_repeater1.cfg) HB_Bridge (repeater1.cfg)
gateway = 127.0.0.1 PORT: 51000
fromGatewayPort = 32000 MASTER_IP: 10.100.1.11
toGatewayPort = 31000 MASTER_PORT: 52000

--- Bridge configuration to IPSC_Bridge - bridge_repeater1.cfg
[DEFAULTS]
gateway = 127.0.0.1
fromGatewayPort = 32000
toGatewayPort = 31000

--- hblink peer into conf01 routing gateway - repeater1.cfg
[REPEATER1]
MODE: CLIENT
ENABLED: True
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 51000
MASTER_IP: 10.100.1.11
MASTER_PORT: 52000
PASSPHRASE: passw0rd
CALLSIGN: W1AW
RADIO_ID: 123456789
RX_FREQ: 440000000
TX_FREQ: 440000000
TX_POWER: 10
COLORCODE: 1
SLOTS: 3
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 10
LOCATION: Cloud City, USA
DESCRIPTION: HBlink repeater
URL: www.ke6yjc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:

Note: my configs live in /opt/hblink/conf for the hblink side of things.

You will launch HB_Bridge.py with a bridge config file like this ‘/opt/hblink/HB_Bridge.py -c /opt/hblink/conf/repeater1.cfg -b
/opt/hblink/conf/bridge_repeater1.cfg’

Instance 2 – IPSC_Bridge Configuration

IPSC_Bridge Configuration (REPEATER2)
DMRLINK (repeater2.cfg) IPSC_Bridge (bridge_repeater2.cfg)
IP Address: <blank> gateway = 127.0.0.1
PORT: 50000 fromGatewayPort = 31001
MASTER_IP: 10.20.1.11 toGatewayPort = 32001
MASTER_PORT: 50001

--- dmrlink peer into repeater at hilltop - repeater2.cfg
[REPEATER2]
ENABLED: True
RADIO_ID: 123456789
IP:
PORT: 50001
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: False
XNL_MASTER: False
DATA_CALL: True
VOICE_CALL: True
MASTER_PEER: False
AUTH_ENABLED: True
AUTH_KEY:
MASTER_IP: 10.20.1.11
MASTER_PORT: 50000
GROUP_HANGTIME: 5

--- Bridge configuration to HB_Bridge - bridge_repeater2.cfg
[DEFAULTS]
gateway = 127.0.0.1
fromGatewayPort = 31001
toGatewayPort = 32001

Note: my configs live in /opt/dmrlink/conf for the dmrlink side of things.

Instance 2 – HB_Bridge Configuration

You will launch IPSC_Bridge.py with a brdige config file like this ‘/opt/dmrlink/IPSC_Bridge.py -c /opt/dmrlink/conf/repeater2.cfg -b /opt/dmrlink/conf/bridge_repeater2.cfg’

HB_Bridge Configuration (REPEATER2)
HBLINK (bridge_repeater2.cfg) HB_Bridge (repeater2.cfg)
gateway = 127.0.0.1 PORT: 51000
fromGatewayPort = 32001 MASTER_IP: 10.100.1.11
toGatewayPort = 31001 MASTER_PORT: 52001

--- Bridge configuration to IPSC_Bridge - bridge_repeater2.cfg
[DEFAULTS]
gateway = 127.0.0.1
fromGatewayPort = 32001
toGatewayPort = 31001

--- hblink peer into conf01 routing gateway - repeater2.cfg
[REPEATER2]
MODE: CLIENT
ENABLED: True
LOOSE: False
EXPORT_AMBE: False
IP:
PORT: 51000
MASTER_IP: 10.100.1.11
MASTER_PORT: 52001
PASSPHRASE: passw0rd
CALLSIGN: W1AW
RADIO_ID: 123456789
RX_FREQ: 440000000
TX_FREQ: 440000000
TX_POWER: 10
COLORCODE: 1
SLOTS: 3
LATITUDE: 00.0000
LONGITUDE: -00.0000
HEIGHT: 10
LOCATION: Cloud City, USA
DESCRIPTION: HBlink repeater
URL: www.ke6yjc.org
SOFTWARE_ID: 20170620
PACKAGE_ID: MMDVM_HBlink
GROUP_HANGTIME: 5
OPTIONS:

Note: my configs live in /opt/hblink/conf for the hblink side of things.

You will launch HB_Bridge.py with a bridge config file like this ‘/opt/hblink/HB_Bridge.py -c /opt/hblink/conf/repeater2.cfg -b
/opt/hblink/conf/bridge_repeater2.cfg’

There you have it, this should get you up and running with two repeaters. Our goal was to take our IPSC traffic and convert it over to HBP (HomeBrew Protocol) and then route everything over to the Routing Gateway. Mission Accomplished I would say! Next we will work on setting up the rules to route traffic to your repeaters over on the routing gateway.


Sample Configuratoin Files –
https://www.dropbox.com/sh/o0na78m392jp1p3/AADhl8xuiu6ON6mMiRV6goC1a?dl=0

Leave a Reply

Your email address will not be published. Required fields are marked *