2025-05-19 16:50:45 +03:00
2025-05-19 16:50:01 +03:00
2025-05-19 16:50:45 +03:00

0DMRMaster

Private DMR master server. Version 0.4.

Copyright ©2025 Alexander Mokrov, UR6LKW.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Overview

There is a few parts:

  1. An implementation of homebrew dmr protocol (which is used by brandmeister and hblink). Not yet complete, but sufficient for #2 and #3.
  2. Decoding UDP proxy
  3. Basic private dmr master server

Installation

  1. Check basic requirements:
    • Linux or Windows
    • Python 3.13+
  2. Clone/download the repo.
  3. Execute (linux example):
$ python -m venv venv
$ . venv/bin/activate
$ python -m pip install --upgrade pip
$ pip install -r requirements.txt

Configuration

Copy localmaster_EXAMPLE.py to localmaster.py and edit.

Run

$ . venv/bin/activate
$ python localmaster.py

Ctrl+C to break and stop.

The running server listens for 62031/udp as DMR service (may be changed with --port command line argument) and exposes http API/dashboard on 8000/tcp (may be changed with --web-port command line argument):

Roadmap

What is this for (general TODO)

  • Private dmr network (own registration, admintool, dashboard, voice apps, etc)
  • Other dmr networks bridge (configurable group/unit routing rules, ID replacements, etc)
  • Bridge/proxy with packet modification (substitute IDs, add TA, etc..)
  • Voice robots interface at packet level (parrot for group and unit cals, recording/playback as prewritten packets by events)
  • Encoding and decoding of AMBE (allows to build advanced voice services, like voice time, agenda, etc)
  • Voice call history dump (ambe files or decoded)

Features & TODO

  • ✔️ basic apps support
  • ✔️ parrot
  • ✔️ password check
  • ✔️ fastapi api
  • ✔️ web dashboard
  • ✔️ unit call routing
  • ✔️ allow single peer id check
  • ✔️ TA support (DMRA packet)
  • 🥕 routing entity (1 timeslot == 1 routing entity)
  • 🥕 only one call per ts for peer (per routing entity)
  • 🥕 apps unit call routing (routing entity for app)
  • 🥕 configuration
  • 🥕 users configuration (allowed id and passes per id)
  • 🥕 resolve id to callsigns
  • 🥕 routing 2: group subscriptions
  • 🥕 data calls (messages)
  • 🥕 dmr internal burst structure decoding (to fix rf fields and get ambe)
  • 🥕 ambe decode/encode
  • 🥕 log voice calls as files
  • 🥕 TA support 2 (inside DMRD packets)
  • 🥕 registration
  • 🥕 update radiod list and resolve

Sources

S
Описание
Private DMR master server
Readme GPL-3.0
233 KiB
Languages
Python 92.1%
JavaScript 6.3%
HTML 1.6%