Mostrando entradas con la etiqueta ec5zy. Mostrar todas las entradas
Mostrando entradas con la etiqueta ec5zy. Mostrar todas las entradas

domingo, 11 de octubre de 2026

MMDVM CON EQUIPOS DIFERENTES A MOTOROLA GM340

Alternativas diferentes a GM340/360 para montaje es MMDVM

Actualmente, los Motorola GM340/360/380, son altamente confiables y populares equipos para repetidores MMDVM, pero escasean. Estos dispositivos tienen más de 20 años, presentan fallas y el mercado de segunda mano se reduce, lo que eleva sus precios. ¿Qué podría ser más lógico entonces, que equipos utilizar de producción actual? Los transceptores Motorola DM1400/DM2400 son económicos y robustos, poseen excelentes características de radiofrecuencia y ya se utilizan ampliamente en diversas aplicaciones de repetidores analógicos.


llevamos varios años utilizando estos dispositivos para su repetidor FM analógico en VHF y UHF. Cualquiera que utilice este repetidor y haya escuchado la señal con un segundo dispositivo puede haber notado un ligero retardo audible en el audio.


Esto no se debe a la ruta de la señal a través de una computadora con tarjeta de sonido, sino al procesamiento de la señal dentro de los propios dispositivos. Lo que muchos desconocen es que la nueva generación de radios bidireccionales de Motorola funciona según el principio SDR; incluso la transmisión analógica FM se procesa completamente de forma digital. Esto da como resultado excelentes características de RF y AF, pero también este retardo.


Como es de imaginar, este retardo supone un problema para DMR con su método TDMA. Sin embargo, el desarrollador de MMDVMHost lo previó e introdujo el parámetro DMRDelay. Al aumentarlo un nivel, se compensa un retardo de 1/24 ms.


Experimentalmente, se determinó rápidamente un valor; el repetidor de prueba configurado con una Raspberry Pi 4, un módem MMDVM  y dos DM1400 funcionó a la perfección el primer dia, al día siguiente la sincronización volvió a fallar y tuve que determinar el retardo una vez más, lo que dio como resultado valores significativamente diferentes.


Tras un proceso de eliminación, se descubrió que los DM1400 presentaban un comportamiento diferente en tiempo de ejecución tras cada encendido. Al parecer, el software no es completamente determinista, lo cual no es crítico para el funcionamiento normal de FM, pero sí resulta fatal para TDMA.


Mi primera medida fue eliminar todo lo innecesario de la configuración del dispositivo. Además, desactivé todas las señales de audio, pitidos y efectos sonoros, ya que también podían afectar la ruta de audio. Asimismo, eliminé todos los temporizadores y funciones similares.


Con estas medidas logré reducir significativamente la variación en el tiempo de propagación de la señal; la estructura ahora se mantiene dentro de los límites de tolerancia, por lo que definitivamente es viable.


Para mí, DMRDelay=110 es el valor correcto. Además, se deben configurar TXInvert=1 y RXInvert=1, ya que, al parecer, los dispositivos invierten las señales en la interfaz de audio.


Así es como obtengo estos valores en la salida de depuración del módem MMDVM:


Log: DMRSlotRX: voice terminator found slot/pos/centre/threshold 2 450 -86 443


El valor clave aquí es "pos", que corresponde al valor deseado de 450. Debería alcanzarse un rango de entre 430 y 470. Este valor indica la posición temporal de la trama DMR dentro de la ventana de sincronización.


Supongo que el valor de 110 es un valor específico para mi equipo. Es probable que se necesite un valor diferente según la configuración y el firmware del dispositivo. La única forma de determinarlo es comprobar el valor de cada repetidor instalado y ajustarlo si es necesario.


Al configurar los equipos, tenga en cuenta lo siguiente:


El transmisor debe programarse para un ancho de banda de 20 kHz, ya que es la única forma de lograr la desviación necesaria. La opción "Énfasis de voz" debe configurarse en "ninguno" porque se requiere una respuesta de frecuencia lineal. A 12,5 kHz, la señal alcanzará el limitador y permanecerá muy por debajo de la desviación estándar de DMR, lo que significa que las señales no se decodificarían. He configurado "Analog Accessory Mic Gain" en 16 dB, pero esto puede variar según la placa MMDVM. El ajuste fino se realiza mediante el potenciómetro de la placa del módem. Configure "Debounce Duration" en 0 ms para garantizar una respuesta instantánea del transmisor.


El receptor funciona perfectamente con un ancho de banda de 12,5 kHz, lo que permite la selección de canales adyacentes. La opción "Énfasis de voz" debe configurarse como "ninguno", ya que se requiere una respuesta de frecuencia lineal. El "Tipo de audio RX" debe configurarse como "Silenciamiento plano".


Aquí está el diagrama de pines del conector de accesorios en la parte posterior:


3 PTT

5 Audio TX

7 Tierra

11 Audio RX


Siguiendo mis recomendaciones, debería ser posible configurar un repetidor MMDVM/DMR estable y que funcione de forma fiable utilizando equipos como Motorola DM1400 u otros modelos de esta familia.


Si tiene alguna sugerencia puede contactar conmigo via telegram @ec5zy

domingo, 23 de agosto de 2026

Install MMDVMHost and DMRGateway on Debian (Trixie)

 

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

viernes, 21 de agosto de 2026

Install mmdvmhost on Debian (Trixie)

 Instalación MMDVMHost en Debian 13: La Guía Sencilla que Estabas Buscando



1º Elejimos la distribucion mas comoda  para instalar, yo recomiendo distribuciones basadas en debian por su robustez. En mi caso elijo Raspberry Pi OS.  podemos descargar desde aquí la imagen. He elejido la opcion lite, (no nos hace falta la interfac grafica).
Con una aplicacion tipo win32 image write quemamos la imagen, por defecto no esta habilitado SSH por lo que os explico como habilitarlo facilmente.

Habilitar SSH: crearemos un archivo con el nombre "ssh"  este archivo no tendra extenion y su interior esta bacio, lo pegaremos en la particion "boot" o  "bootfs" este archivo desaparacera una vez inciemos el sistema.

Usuario y contraseña:  creamos un archivo llamado "userconf.txt" y en su interior  escribiremos el usuario y la contraseña (cifrada)  Lo pegaremos dentro de la carpeta "boot" o  "bootfs"

usuario: pi

contraseña: raspberry



Un hash de contraseña predeterminado para la contraseña raspberry tiene este aspecto:

pi:$6$c70VpvPsVNCG0YR5$l5vWWLsLko9Kj65gcQ8qvMkuOoRkEagI90qi3F/Y7rm8eNYZHW8CY6BOIKwMH7a3YYzZYL90zf304cAHLFaZE0


El siguiente paso seria poner la targeta en la Rasberry y encender para poden empezar a conectarnos via SSH con las credenciales "pi"  "raspberry". En mi caso uso PuTTY como cliente SSH.

Una vez dentro tendremos que instalar una serie de herramientas previas a la compilacion:

Actualizacion des sistema:

# sudo apt-get update && sudo apt-get upgrade -y


-Instalamos el Git:

 # sudo apt install git -y


-Instalar mmdvmhost y mmdvmcal 

# cd /opt

# sudo git clone https://github.com/g4klx/MMDVMHost.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 MMDVMHost en esa carpeta.


-Compilar MMDVMCal (opcional):

# cd /opt/MMDVMCal

 # sudo make


Nota: MMDVMCal generalmente se utiliza para el ajsute de dispositivos DMO´s.


-Modificar mmdvm.ini con nano


# cd /opt/MMDVMHost

  # sudo nano MMDVM.ini

configurar el  archivo con la informacion 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 para mekor comodidad)


Recomendación para alargar la vida de la microSD:


# Logging levels, 0=No logging

DisplayLevel=1

FileLevel=0  ---> cuando modifiquemos el archivo d configuracion mmdvm.ini 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`


-iniciar MMDVM

 # sudo /opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini



¡¡Ya tenemos MMDVM funcionando!!


Nota: este proceso sirve para paquetes MMDVMHost con fecha 27 de enero de 2026 o anteriores. Posteriormente  se ha introducido varios cambios en MMDVMHost que a dia de hoy no estan consolidados, por lo que prefiero esta ultima fecha como aconsejable instalar a dia de hoy. Para intalacion de MMDVMHost posteriores hay que instalar MMDVMGateway como paquete adiccional, ese proceso no esta en este tutorial. Cuando sea mas estable realizare su procedimiento. Para cualquier duda o ayuda puede contactar conmigo por telegram: @ec5zy y estare encantado en ayudarle. 



miércoles, 19 de agosto de 2026

Auto start MMDVMHost in Debian (Trixie)

 Guía definitiva: Arranque automático y robusto de MMDVMHost en Debian

# Cómo programar el arranque automático de MMDVMHost en Debian (Systemd)


Si utilizas una instalación limpia de Linux (como Debian Trixie Core, Ubuntu Server o Raspberry Pi OS Lite) para tu nodo o repetidor digital, automatizar el arranque de **MMDVMHost** es fundamental. 


La forma más eficiente, moderna y segura de hacerlo es creando un servicio nativo en **systemd**. Esto garantizará que el programa inicie solo al encender el equipo, que espere a que haya internet y que se reinicie automáticamente si sufre alguna caída.


En esta guía veremos cómo configurarlo paso a paso, incluyendo un retardo de seguridad de 5 segundos para dar tiempo a que los puertos de hardware se estabilicen.


## Paso 1: Crear el archivo de servicio en Systemd

Vamos a crear el archivo de configuración que le dirá a Linux cómo y cuándo ejecutar el programa:

   sudo nano /etc/systemd/system/mmdvmhost.service


2. Pega el siguiente contenido. *(Asegúrate de cambiar tu usuario por la ubicación real de tu instalación)*:


[Unit]

Description=MMDVMHost Service

After=network.target


[Service]

Type=simple

User=root

WorkingDirectory=/opt/MMDVMHost

# Aquí añadimos el retraso de 5 segundos

ExecStartPre=/bin/sleep 5

ExecStart=/opt/MMDVMHost/MMDVMHost /opt/MMDVMHost/MMDVM.ini

Restart=on-failure

RestartSec=5


[Install]

WantedBy=multi-user.target


[Install]

WantedBy=multi-user.target


3. Guarda el archivo presionando `Ctrl + O`, luego `Enter`, y sal con `Ctrl + X`.



## Paso 2: Activar e iniciar el servicio

Ahora debemos indicar a Linux que lea la nueva configuración y active el arranque automático en cada inicio del sistema.


Ejecuta estos tres comandos en orden:

# 1. Recargar el sistema para que detecte el nuevo archivo

sudo systemctl daemon-reload


# 2. Habilitar el arranque automático al encender el equipo

sudo systemctl enable mmdvmhost.service


# 3. Iniciar el programa inmediatamente

sudo systemctl start mmdvmhost.service


## Paso 3: Comandos útiles de control

Una vez instalado, no necesitas volver a tocar el archivo de configuración. Puedes gestionar tu MMDVMHost con estos comandos rápidos desde cualquier ruta:


* **Ver el estado actual** (saber si está corriendo o dio error):

  sudo systemctl status mmdvmhost.service


* **Detener el programa**:

 sudo systemctl stop mmdvmhost.service


* **Reiniciar el programa**:

 sudo systemctl restart mmdvmhost.service


¡Y listo! Con esto tienes un nodo MMDVM totalmente autónomo, seguro y robusto en tu servidor Debian.

Nota: a partir de 10 de marzo del 2026 se renombro MMDVM.ini a MMDVMHost.ini hay que asegurase de los nombres de las rutas y  archivos a la hora de escribir  comandos.
Esto fué un ejemplo con un paquete estable de MMDVMHost. No suelo instalar paquetes que aun estan depurandose.

viernes, 22 de febrero de 2019

Configuration Motorola GM340 / GM360 MMDVM

Configuracion de equipos Motorola para uso com MMDVM validos  para DMO y repetidor.





Per Radio Micellaneous/ Global/ Rx Audio Flat Unsquelched (Audio sin filtrar)
Per Radio Micellaneous/ Global/ Rx Audio Ignition sense (Opcional para encendido después de perdida de corriente . Pin 10)


RF/Per Radio RF
Tx led disable
Rx led disable




Per radio GP I/O Lines
 3 = Data PTT - Low




ajust frec
ajust spacing 20khz.


Micellaneous
ticar "base station"




"configuration bytes 2" 04


Según el modelo, versión y firmware de los equipos puede que algunas funciones no se encuentren.

Esta entrada se ira actualizado hasta completar el último detalle de optimización.

Si tiene alguna duda puede contactar conmigo por telegram (@ec5zy)