Skip to content

dj0abr/OpenDVM

Repository files navigation

🇬🇧 English | 🇩🇪 Deutsch

🛰️ OpenDVM MultiMode Repeater/Station for Debian/Linux

This project builds upon the Digital Voice (DV) modules by G4KLX, which are combined into a complete solution like Pi-Star.
However, Pi-Star is designed exclusively for the Raspberry Pi.

👉 The goal of this project is to create a fully functional, platform-independent multimode DV solution that runs on any Debian-based system – highly reliable on real PCs or servers (PC, virtual machines, Raspberry, Odroid, Orange Pi and many more).

The current version supports D-Star, DMR and YSF (C4FM) on MMDVM Boards (USB Boards or HATs).

It uses the following G4KLX repositories:

The entire installation is automated through five shell scripts that correctly set up all components.

Additionally, the project includes a logfile parser that reads all operational data from MMDVM, YSF, and DMR logs and writes them into a MariaDB database.
These data serve as the backend for a modern web dashboard that displays the repeater or hotspot status in real time.

This project was originally developed for the MMDVM Repeater Builder board used in the DB0SL multimode repeater. It also runs with common MMDVM Raspberry Pi HATs. For other specialized hardware or use cases, adjust the configuration files as needed (see the [Modem] section in MMDVMHost.ini).


📖 Table of Contents

  1. Overview
  2. Architecture
  3. Backend – Log Monitor & Database
  4. Installation & Dependencies
  5. Configuration
  6. Web Frontend
  7. System Setup & Maintenance
  8. Credits & License

Systemübersicht Systemübersicht

🔗 Live Installation: digital.db0sl.de

🔍 Overview

Main features:

  • Real-time monitoring of MMDVMHost, YSFGateway, and DMRGateway logs
  • Automatic storage of detected events in MariaDB
  • Graphical presentation via a modern web frontend
  • Central configuration through a unified site.conf file
  • Automatic generation of all gateway configuration files
  • Fully passwordless, secure database access
  • No frameworks, no Pi dependency – runs on any Debian system

⚙️ Architecture

Systemübersicht


🧠 Backend – Log Monitor & Database

The main program continuously monitors the following log files:

  • /var/log/mmdvm/MMDVM-YYYY-MM-DD.log
  • /var/log/mmdvm/YSFGateway-YYYY-MM-DD.log
  • /var/log/mmdvm/DMRGateway-YYYY-MM-DD.log

New entries are immediately detected, parsed, and written into the database.

Captured Information

  • TX activities and callsigns for D-Star, DMR, and System Fusion
  • Duration and BER of each transmission
  • Current mode of operation
  • Reflector status for D-Star, Fusion, and DMR
  • Automatic detection of log rotation and truncation
  • Reconnects automatically after database errors

Database Tables

Table Description
status Current status (mode, callsign, RF/NET, duration, BER)
lastheard Every transmission with timestamp
reflector Current reflector per mode

Special Features

  • Detection of interrupted transmissions (heuristic timing)
  • Callsign validation (min. 3 characters, at least 1 digit)
  • D-Star does not store DG-ID, Fusion does
  • “Watchdog expired” messages are treated as EOT
  • DMR master names (e.g., BM_2621_Germany) are recognized automatically

🍓 Raspberry Pi 3/4/5 + MMDVM HAT (headless Raspberry Pi OS)

Serial Interface

The following does NOT apply to USB-MMDVM boards.

On a Pi 3/4 or 5, the onboard Bluetooth uses the primary PL011 UART by default. To free the GPIO UART for the MMDVM HAT, disable Bluetooth and enable the UART.

  1. Edit the boot config
    (Bookworm and newer: /boot/firmware/config.txt; older releases: /boot/config.txt)

    enable_uart=1
    dtoverlay=pi3-disable-bt
  2. Disable Bluetooth and reboot:

    sudo systemctl disable --now bluetooth
    sudo reboot

Duplex

There are two types of MMDVM HATs:

Simplex: usually identifiable by a single antenna
Duplex: identifiable by two antennas or repeater boards

The “Duplex” setting must match the hardware in use; otherwise, operation may only work in one direction.

🧰 Installation & Dependencies

Installation is fully automated through five shell scripts, which install all dependencies, programs, and configuration files.

First, download this repository from GitHub:

cd /opt
sudo git clone https://github.com/dj0abr/OpenDVM.git
cd OpenDVM

Now run the five scripts (all with sudo) as follows:

Installation Order

👉 Important:
These scripts must be executed in this order.

  1. Install the serial port

    • If you’re using a Raspberry Pi with an MMDVM HAT, review the chapter “Raspberry Pi 3/4/5 + MMDVM HAT (headless Raspberry Pi OS)” before continuing.
    • Run the script:
    sudo ./install_serial.sh
    • Detects your serial device (USB, onboard UART, etc.), lets you pick the correct one
    • re-run this script to switch to a different device (e.g. a new hardware)
  2. Install the MMDVM Host

    • Run the script:
    sudo ./install_mm.sh
    • Installs all system dependencies
    • Prepares directories (e.g., /var/log/mmdvm)
    • Sets up the MariaDB database
    • Compiles and installs the C++ backend
    • Installs the central DV interface MMDVMHost
  3. Install the YSF Gateway

    • Run the script:
    sudo ./install_ysf.sh
    • Installs and configures the System Fusion Gateway
  4. Install the D-Star Gateway

    • Run the script:
    sudo ./install_irc.sh
    • Installs and configures the D-Star Gateway
  5. Install the DMR Gateway

    • Run the script:
    sudo ./install_dmr.sh
    • Installs and configures the DMR Gateway

After completion, default configuration files are automatically copied to /etc.
They must then be adjusted to match your setup – see Configuration.


🧾 Configuration

All site and system parameters for the G4KLX modules are stored in the following configuration files:

/etc/MMDVMHost.ini
/etc/ircddbgateway
/etc/ysfgateway
/etc/dmrgateway

Sample versions of these files are included in this package (with a .sample extension) and must be customized to match your station or repeater setup.

To simplify this process, the most important parameters have been extracted into the site.conf file. This file contains all site-specific settings such as callsign, frequencies, coordinates, and network parameters.

Using the provided rendering script, the information from site.conf is automatically written into the corresponding sections of the G4KLX configuration files. If you require special adjustments or advanced settings, you can still edit the configuration files directly.

A template for site.conf can be found at:

configs/site.conf.sample

Steps

  1. Copy the template:

    cd configs
    sudo cp site.conf.sample site.conf
  2. Edit the file: Open site.conf in a text editor and enter your own data (e.g. callsign, DMR ID, frequencies, site location, Brandmeister credentials, etc.).

    sudo nano site.conf
  3. Render the configuration:

    sudo ./render-config

    The program reads your site.conf and automatically fills all values into the following configuration files:

    /etc/MMDVMHost.ini
    /etc/ircddbgateway
    /etc/ysfgateway
    /etc/dmrgateway

    Before any modification, a backup is automatically created:

    file.bak-YYYYMMDD-HHMMSS

  4. Finalize: After rendering, the installation is complete.
    You can still manually adjust the generated files if needed – but that’s usually not necessary.

  5. Reboot:

    sudo reboot

    After reboot, the system is fully operational.


🌐 Web Frontend

The web frontend displays all operational data in real time.
Completely static – no PHP framework required, just a small api.php for JSON output.

Features

  • Live status: mode, callsign, duration, BER, RF/NET
  • Colored status tiles and country flags
  • Reflector status for D-Star, DMR, Fusion
  • “Last Heard” list with callsign, timestamp, duration
  • Activity chart (48h, RF/NET separated)
  • Bar statistics and 30-day heatmap
  • Responsive dark UI
  • Only external library: Chart.js

Technology

  • Pure Vanilla JavaScript
  • CSS grid layout
  • Updates every second via AJAX
  • Works on any webserver (nginx, Apache, lighttpd)

🧱 System Setup & Maintenance

  • Database runs via Unix socket
  • Installation scripts automatically create users and permissions

🎯 Credits & License

  • Jonathan Naylor G4KLX, for his outstanding DV implementations that form the foundation of this project
  • This software is licensed under GPL v2 and is primarily intended for amateur radio and educational use. This project includes components from G4KLX licensed under GPL v2. Therefore, the combined work remains under GPL v2.

About

OpenDVM is a modern alternative for pi-star running on any debian system (PC, Raspi, Odroid...)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published