goDMRLink

A Private DMR Linking Server

goDMRLink - DMR Linking Server

A DMR linking server written in Go that allows multiple MMDVM hotspots to create a private peer-to-peer DMR network.

Features

  • Multi-user bridging: Multiple hotspots can connect simultaneously
  • Talkgroup routing:
    • TG 9990: Parrot (echo back your transmission)
    • All other TGs: Bridged to all connected users
  • Simple setup: No complex configuration needed
  • Homebrew/MMDVM protocol: Works with Pi-Star and other MMDVM-based systems
  • Accepts any hotspot password
  • Handles authentication, keepalives, and DMR frame routing

How It Works

  1. Multiple users connect their MMDVM hotspots to your server
  2. When someone transmits on any talkgroup (except 9990):
    • The server receives the DMR frames
    • Forwards them to all other connected hotspots
    • Everyone hears the transmission on that talkgroup
  3. TG 9990 is special - it's a parrot that echoes your own transmission back

Use Case

Perfect for creating a private DMR network for:

  • Family/friends group
  • Club repeater linking
  • Emergency communications
  • Private testing network
  • Learning DMR networking

No BrandMeister or DMR+ account needed! Just run this server and give the address to your friends.

Build

go build -o godmrlink

Run

./godmrlink

The server will start listening on 0.0.0.0:62031.

Pi-Star Configuration

Each user configures their Pi-Star hotspot:

  1. In Pi-Star, go to Configuration
  2. Set DMR Master to "DMR Network"
  3. Configure:
    • Address: [Server IP address]
    • Port: 62031
    • Password: (any password works)
  4. Save and apply

Usage

Testing the Parrot (TG 9990)

  1. Make a private call to 9990
  2. Transmit your message
  3. After ~1 second, you'll hear your voice played back

Talking to Other Users (Any Other TG)

  1. Multiple users connect to the server
  2. All users set their radio to the same talkgroup (e.g., TG 1, TG 2, etc.)
  3. When anyone transmits, everyone else on that TG hears it
  4. Works with both group and private calls

Server Info

When running, you'll see:

  • Connection status for each hotspot
  • Active transmissions and stream info
  • Talkgroup bridging activity

Example:

2026/02/04 00:31:16 Starting goDMRLink DMR Parrot on port 62031
2026/02/04 00:31:16 Parrot TalkGroup: 9990
2026/02/04 00:31:16 Server started successfully
2026/02/04 00:32:09 LOGIN from 192.168.1.121:35273 (ID: 2784702208)
2026/02/04 00:32:09 Client 2784702208 authenticated
2026/02/04 00:35:12 Bridge: New stream 12345 from 3144613 to TG 1
2026/02/04 00:35:12 Bridge: Forwarded TG 1 from 3144613 to 2 clients

Protocol Details

Implements the Homebrew/MMDVM protocol:

  • RPTL - Login request
  • RPTACK - Authentication challenge/response
  • RPTK - Key exchange with password hash
  • RPTP/MSTPONG - Keepalive packets
  • RPTC - Configuration packets
  • DMRD - DMR data frames with full LC modification