A simple DMR bridge that connects two DMR servers and links talkgroups together.
- Connects to two DMR servers simultaneously as a repeater client
- Bridges all voice traffic between networks
- Automatic reconnection on connection loss
- SHA-256 password authentication
Create a config.toml file with the following format:
[network_a]
address = "dmr-a.example.net:62031"
password = "pass123"
talkgroup = 9001
[network_b]
address = "dmr-b.example.net:62031"
password = "pass456"
talkgroup = 9002Each network only forwards traffic from its configured talkgroup to the other network's talkgroup, preventing loopback.
Important: You must configure static talkgroups on each DMR network for the bridge's repeater IDs:
- On Network A: Add static TG 9001 subscription for repeater ID 10485761 (0x00A00001)
- On Network B: Add static TG 9002 subscription for repeater ID 11534337 (0x00B00001)
Without static talkgroup configuration on the server side, the bridge will not receive traffic.
go mod download
go build -o opendmr_bridge./opendmr_bridge config.tomlThe bridge:
- Connects to both DMR servers as a repeater
- Authenticates using the provided passwords
- Monitors traffic on each configured talkgroup
- Forwards traffic FROM one talkgroup TO the other (rewriting destination TG)
- Prevents loopback by only forwarding traffic destined to each network's own TG
With the config above:
- Traffic to TG 9001 on network_a is forwarded to TG 9002 on network_b
- Traffic to TG 9002 on network_b is forwarded to TG 9001 on network_a
- Each network ignores the TG it's forwarding to, preventing loops