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:
- MMDVMHost
- ircDDBGateway
- DMRGateway
- YSFClient (used as a gateway)
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).
- Overview
- Architecture
- Backend – Log Monitor & Database
- Installation & Dependencies
- Configuration
- Web Frontend
- System Setup & Maintenance
- Credits & License
🔗 Live Installation: digital.db0sl.de
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.conffile - Automatic generation of all gateway configuration files
- Fully passwordless, secure database access
- No frameworks, no Pi dependency – runs on any Debian system
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.
- 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
| Table | Description |
|---|---|
status |
Current status (mode, callsign, RF/NET, duration, BER) |
lastheard |
Every transmission with timestamp |
reflector |
Current reflector per mode |
- 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
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.
-
Edit the boot config
(Bookworm and newer:/boot/firmware/config.txt; older releases:/boot/config.txt)enable_uart=1 dtoverlay=pi3-disable-bt
-
Disable Bluetooth and reboot:
sudo systemctl disable --now bluetooth sudo reboot
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 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 OpenDVMNow run the five scripts (all with sudo) as follows:
👉 Important:
These scripts must be executed in this order.
-
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)
-
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
-
Install the YSF Gateway
- Run the script:
sudo ./install_ysf.sh
- Installs and configures the System Fusion Gateway
-
Install the D-Star Gateway
- Run the script:
sudo ./install_irc.sh
- Installs and configures the D-Star Gateway
-
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.
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
-
Copy the template:
cd configs sudo cp site.conf.sample site.conf -
Edit the file: Open
site.confin a text editor and enter your own data (e.g. callsign, DMR ID, frequencies, site location, Brandmeister credentials, etc.).sudo nano site.conf
-
Render the configuration:
sudo ./render-config
The program reads your
site.confand automatically fills all values into the following configuration files:/etc/MMDVMHost.ini
/etc/ircddbgateway
/etc/ysfgateway
/etc/dmrgatewayBefore any modification, a backup is automatically created:
file.bak-YYYYMMDD-HHMMSS -
Finalize: After rendering, the installation is complete.
You can still manually adjust the generated files if needed – but that’s usually not necessary. -
Reboot:
sudo reboot
After reboot, the system is fully operational.
The web frontend displays all operational data in real time.
Completely static – no PHP framework required, just a small api.php for JSON output.
- 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
- Pure Vanilla JavaScript
- CSS grid layout
- Updates every second via AJAX
- Works on any webserver (nginx, Apache, lighttpd)
- Database runs via Unix socket
- Installation scripts automatically create users and permissions
- 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.
