Instalación MMDVMHost y DMRGateway en Debian 13: La Guía Sencilla que Estabas Buscando
Este tutorial esta basado en Raspberry Pi OS Lite. En este caso se suprime la parte de hacer funcionar la imagen en la raspberry y la configuracion de SSH para acceder a la linea de comando.
-Actualizar primero todo el sistema antes de empezar:
# sudo apt-get update && sudo apt-get upgrade -y
-Instalamos el Git:
# sudo apt install git -y
-Instalamos librería nlohmann/json, para manejar archivos JSON en C++ y librería de desarrollo de Mosquito:
( obligatorio para instalar MMDVMHost versión 2026 con mqtt)
# sudo apt-get install nlohmann-json3-dev
# sudo apt-get install libmosquitto-dev -y
-Descargar MMDVMHost, DMRGateway y MMDVMCal
# cd /opt
# sudo git clone https://github.com/g4klx/MMDVMHost.git
# sudo git clone https://github.com/g4klx/DMRGateway.git
# sudo git clone https://github.com/g4klx/MMDVMCal.git (opcional)
-Compilar MMDVM:
# cd /opt/MMDVMHost
# sudo make
Nota: Si la compilación termina sin errores, verás un archivo ejecutable llamado MMDVM-Host en esa carpeta.
-Compilar DMRGateway:
# cd /opt/DMRGateway
# sudo make
Nota: Si la compilación termina sin errores, verás un archivo ejecutable llamado DMRGwateway en esa carpeta.
-Modificar mmdvm.ini con nano
# cd /opt/MMDVMHost
# sudo nano MMDVM-Host.ini
configurar el archivo con la información necesaria indicativo , id, password, puerto gpio o usb, etc.
(yo suelo tener una copia del mmdvm.ini y la restauro con WinSCP con el usuario root)
#En la parte de moden si utilizamos GPIO deberíamos poner ttyAMA0 pero la imagen de raspberry pi IOS, lo conoce con el nombre de serial0 por lo que tenemos que sustituir UARTPort=/dev/AMA0 por UARTPort=/dev/serial0
Recomendación para alargar la vida de la microSD:
# Logging levels, 0=No logging ( en la versión con mosquito creo que no esta esya opción)
DisplayLevel=1
FileLevel=0 ---> nos aseguramos que esta marcada a 0. ( En sistemas como pi-star, la mayoría ya vienen preparadas con un sistema llamado tmpfs o Log2Ram.
Esto significa que escriben los logs en la memoria RAM (que no se desgasta) y no directamente en la MicroSD)
Guarda el archivo presionando `Ctrl + O`, luego `Enter`, y sal con `Ctrl + X`
-Modificar DMRGateway.ini con nano
# cd /opt/DMRGateway
# sudo nano DMRGateway.ini
Guarda el archivo presionando `Ctrl + O`, luego `Enter`, y sal con `Ctrl + X`
-iniciar manualmente MMDVM
# sudo /opt/DMRGateway/DMRGateway /opt/DMRGateway/DMRGateway.ini
# sudo /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini
# sudo /opt/MMDVMHost/MMDVM-Host /opt/MMDVMHost/MMDVM-Host.ini (versión con mosquito 2026)
Ctrl+Z --> para salir de la pantalla.
Opening the MMDVM
Cannot open device - /dev/serial0
Este error significa que el programa MMDVMHost no puede comunicarse con tu módem a través del puerto serie de la Raspberry Pi. Ocurre porque el sistema operativo está usando ese puerto para su propia "consola de comandos" (bloqueándolo)
Desactivar la consola serie por defecto, la Raspberry Pi intenta usar el puerto serie para que te conectes a ella, lo que impide que el hotspot MMDVM lo use.
# sudo raspi-config
Navega hasta Interface Options (Opciones de interfaz)
Selecciona Serial Port (Puerto serie)
Cuando te pregunte si quieres que la consola de login esté accesible por serie, elige NO.
Cuando te pregunte si quieres habilitar el hardware del puerto serie, elige SÍ.
Selecciona Finish (Finalizar) y acepta Reiniciar la Raspberry Pi
Una vez hallamos iniciado manualmente los dos servicios y nos hallamos asegurado que el dispositivo esta funcionando correctamente, llega el ultimo paso que es automatizar el arranque de MMDVMHots y DMRGateway cada vez que se inicie la raspberry.
Arranque automatico:
-Crear el servicio para MMDVMHost
1º Creación del archivo de servicio:
# sudo nano /lib/systemd/system/mmdvmhost.service
(se abre una pantalla y pegamos el siguiente código marcado en rojo.)
Nota: a partir de 10 de marzo del 2026 se renombro MMDVMHost a MMDVM-Host y MMDVM.ini a MMDVM-Host.ini , hay que asegurase de los nombres de las rutas y archivos a la hora de escribir comandos.
[Unit]
Description=MMDVMHost Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/MMDVMHost
# Aquí añadimos el retraso de 1 segundos
ExecStartPre=/bin/sleep 1
ExecStart=/opt/MMDVMHost/MMDVM-Host /opt/MMDVMHost/MMDVM-Host.ini
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Guarda el archivo presionando `Ctrl + O`, luego `Enter`, y sal con `Ctrl + X`
-Crear el servicio para DMRGateway
Crea el archivo de servicio con este comando:
# sudo nano /etc/systemd/system/dmrgateway.service
(se abre una pantalla y pegamos el siguiente código marcado en rojo.)
[Unit]
Description=Servicio DMRGateway
After=network-online.target mmdvmhost.service
Wants=network-online.target mmdvmhost.service
[Service]
Type=simple
User=root
WorkingDir=/opt/DMRGateway/
ExecStart=/opt/DMRGateway/DMRGateway /opt/DMRGateway/DMRGateway.ini
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Guarda el archivo presionando `Ctrl + O`, luego `Enter`, y sal con `Ctrl + X`
Aquí te explico de forma muy sencilla qué hacen estas tres líneas:
ExecStartPre=/bin/sleep 3:
Establece un retarde de 3 segundos para que se ejecute el inicio después de 3 segundos una vez allá iniciado el sistema, esto es para que se ejecuta una vez el hardware este ya estabilizado después de arrancar.
After=network-online.target mmdvmhost.service:
Establece el orden de encendido. Le dice al sistema: "Espera a que internet esté bien conectado y a que el programa MMDVM-Host haya arrancado antes de abrir este servicio".
Wants=network-online.target mmdvmhost.service:
Define una necesidad opcional. Le dice al sistema que intente activar el internet y el programa mmdvmhost, pero si alguno falla, que intente arrancar el DMRGateway de todas formas.
Recargar el sistema para que reconozca los nuevos archivos:
# sudo systemctl daemon-reload
Habilitar el arranque automático al encender el equipo:
# sudo systemctl enable mmdvmhost.service
# sudo systemctl enable dmrgateway.service
Iniciar los programas en este momento sin necesidad de reiniciar:
# sudo systemctl start mmdvmhost.service
# sudo systemctl start dmrgateway.service
Comandos útiles para controlar los programas
A partir de ahora, ya no necesitas ejecutar los programas a mano. Puedes controlarlos con estos comandos:
Ver si están funcionando correctamente:
# sudo systemctl status mmdvmhost.service
# sudo systemctl status dmrgateway.service
Otros comandos utiles:
Ver carga CPU
# top
-Update MMDVM Host Software
# cd /opt/MMDVMHost
# sudo git pull
# sudo make
# sudo nano MMDVM-Host.ini
-Update DMRGateway:
# cd /opt/DMRGateway
# sudo git pull
# sudo make
# sudo nano DMRGateway.ini
-Comprovar temperatura rpi (opcional)
# vcgencmd measure_temp
-Copiamos el fichero MMDVM.ini al directorio /etc/ (opcional)
# cd /opt/MMDVMHost
# sudo cp MMDVM-Host.ini /etc/MMDVM-Host.ini
Nota: a partir de 10 de marzo del 2026 MMDVMHost junto con DMRGateway este es el único método de instalar MMDVM para trabajar con DMR, alternativamente puedes instalar una versión anterior para evitar usar DMRGateway, estas versiones anteriores funcionan perfectamente.
Como veras todos los Tg´s los recibes por 9, eso es normal...recibes por el TG 9 a través del DMRGateway porque el sistema utiliza reglas de reescritura (Rewrite Rules). Traduce el tráfico de los canales o reflectores de la red externa y lo enruta de manera local hacia tu equipo en el Slot y Talkgroup 9, que actúa como canal de audio local y de avisos del sistema. No me parece correcto forzar a DMR a utilizar Gateway, creo que se pierde la filosofía original del uso del sistema DMR y crea un problema añadido ya que hay que modificar todo el codeplug de los equipos.
Espero que te sea útil toda mi información.
Si tiene cualquier duda puede contactar conmigo por telegram: @ec5zy
No hay comentarios:
Publicar un comentario