Guía paso a paso
Descarga, instalación y configuración de la rama TETRALOGIC para SVXLink
Guía completa para instalar SVXLink con soporte TETRA (rama tetra-contrib) en una Raspberry Pi, configurar TetraLogic, el ReflectorLogic, el audio y dejar el sistema funcionando como servicio en el arranque.
SVXLink es un software de código abierto para repetidores y enlaces de radio que, gracias a la rama tetra-contrib (mantenida por DL1HRC y basada en el trabajo de F5UII, adaptada por F1IWQ), añade la lógica TetraLogic: una interfaz que dialoga por el puerto PEI con terminales TETRA (MTM800, MTM5200, MTM5400, MTM5500) para llevar el tráfico de voz a la red, a EchoLink y a un Reflector TETRA.
https://github.com/dl1hrc/svxlink (rama tetra-contrib)
En esta guía repasamos el proceso completo: desde la instalación del sistema base en la Raspberry Pi y la compilación de SVXLink con soporte TETRA, hasta la configuración de TetraLogic, el Reflector, el audio, los eventos por GPIO, el arranque automático y el uso de la consola de comandos DTMF.

Esquema de interfaz: la Raspberry Pi (con SVXLink y tetra_contrib) se conecta por TxD/RxD al núcleo SvxLinkV4, que a su vez dialoga con el terminal TETRA mediante PEI a 3,3V (MTM800/MTM5200) o mediante PEI por RS232 con PTT cableado (MTM5400/MTM5500).
⚠️ Atención: en las versiones más modernas de firmware, los MTM5400 y MTM5500 ya no requieren el PTT cableado: pueden activar la transmisión directamente por el interfaz PEI, igual que los MTM800 y MTM5200. El requisito de PTT por cable indicado en el esquema corresponde a versiones de firmware más antiguas.
Parte 1 · Primera instalación del software
Prepara la Raspberry Pi
Puedes usar la versión de 32 o 64 bits de Raspbian. Nosotros vamos a usar una Raspeberry Pi 5 version 2GB
Instala compiladores y librerías
Esta instalación solo es necesaria una vez:
$ sudo apt-get -yq install gcc g++ make cmake git mc doxygen gpiod alsa-utils opus-tools groff tcl-dev libgcrypt20-dev libgsm1-dev libsigc++-3.0-dev libspeex-dev libasound2-dev libpopt-dev libssl-dev libopus-dev libjsoncpp-dev libgpiod-dev libcurl4-openssl-dev qt6-base-dev libsigc++-2.0-dev libsigc++-3.0-dev gpiod minicom espeak socat
Crea el usuario svxlink
Crea un usuario dedicado y añádelo al grupo daemon y cámbiate a él:
$ sudo useradd -m -d /home/svxlink -p $(openssl passwd -1 "TuContraseñaSegura") svxlink
$ sudo usermod -a -G daemon svxlink
$ sudo usermod -a -G dialout svxlink
$ sudo usermod -a -G audio svxlink
$ sudo usermod -a -G gpio svxlink
$ su - svxlink
Clonar la rama tetra-contrib
Ve al directorio /home/svxlink y clona la rama tetra-contrib del repositorio, que incluye la lógica TetraLogic para hablar con el terminal TETRA a través del interfaz PEI:
$ cd /home/svxlink
$ git clone -b tetra-contrib https://github.com/dl1hrc/svxlink
Esto crea el directorio svxlink.
Marca la ruta como segura para git (sin esto, no podrás actualizar más adelante):
$ git config --global --add safe.directory /home/svxlink/svxlink
$ cd svxlink
Instala pjproject
Vuelve a /home/svxlink, descarga pjproject, descomprímelo y compílalo:
$ cd ..
$ wget https://github.com/pjsip/pjproject/archive/refs/tags/2.17.1.tar.gz
$ mv 2.12.1.tar.gz pjProject-2.17.1.tar.gz
$ tar -zxvf pjProject-2.17.1.tar.gz
$ cd pjproject-2.17.1
$ ./configure --disable-video --disable-libwebrtc
$ make dep
$ make
$ sudo make install
$ cd /home/svxlink/svxlink
Parcheo de ficheros svxlink
El software tiene many bugs, los cuales he solucionado incluido el modulo de información meteorológica para aplicarlos bajate el fichero svxlink_patches.zip:
$ cd /home/svxlink
$ unzip svxlink_patches.zip -d patches_dir
$ bash patches_dir/apply_patches.sh
Si quieres parchearlos manualmente:
$ cd /home/svxlink
$ patch -p1 -d svxlink < patches_dir/TetraLogic_h.patch
$ patch -p1 -d svxlink < patches_dir/TetraLogic_cpp.patch
$ patch -p1 -d svxlink < patches_dir/Module_h.patch
$ patch -p1 -d svxlink < patches_dir/ReflectorLogic_cpp.patch
$ patch -p1 -d svxlink < patches_dir/ModuleMetarInfo_cpp.patch
Compila el código fuente
Con los parámetros de la línea cmake, SVXLink se instalará en /usr/bin. La compilación tarda unos 5 minutos. Envía la línea de cmake completa, sin dividirla:
$ cd src
$ mkdir build
$ cd build
$ sudo cmake -DUSE_QT=OFF -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc -DLOCAL_STATE_DIR=/var -DCMAKE_BUILD_TYPE=Release -DWITH_CONTRIB_TETRA_LOGIC=ON -DCMAKE_CXX_FLAGS="-fpermissive" ..
$ sudo make -j$(nproc) 2>&1
$ sudo make doc
$ sudo ldconfig
$ sudo make install
⚠️ Importante: el parámetro -DUSE_QT=OFF evita compilar Qtel, el cliente de EchoLink. La compilación creará los archivos de configuración en /etc/svxlink; si ya existen, no se sobrescribirán. El archivo tetralogic.conf se ubica en /etc/svxlink/svxlink.d.
Parte 2 · Instalación de las voces en español
Descarga e instala las voces (WAV 16k)
Para dar voz al repetidor en Español instala los archivos de sonido en formato WAV 16k desde el repositorio de EA5GVK en GitHub:
$ cd /home/svxlink
$ git clone https://github.com/ea5gvk/es_ES
$ cd es_ES
$ ls
El directorio es_ES contendrá varios comprimidos con las versiones a distintas velocidades, descomprimiremos el que queramos. Renombrar a es_ES, que es el nombre que deberás indicar como idioma por defecto en svxlink.conf:
$ sudo mv es_ES /usr/share/svxlink/sounds/es_ES
Cambiar en /usr/share/svxlink/events.tcl donde aparezca la linea de la configuracion del lenguajes configuraremos español quedando asi set lang "es_ES"
$ sudo nano /usr/share/svxlink/events.tcl
Parte 3 · Instalación de la tarjeta de sonido USB y FTDI para uso de PEI
Hemos elegido una R1-2023 por su inmejorable calidad de audio y un FT232RL FTDI Chip,USB
(mi MTM5400 lleva expansion head con puerto COM)
Antes de empezar deberemos leer la documentación técnica tanto de la R1-2023 como de la radio correspondiente donde tengamos intención de usarla, adjunto dejo la documentación de MTM800 como la de MTM5400:
Lo que realmente nos interesa de esos manuales son la configuración de pines:
MTM5400
MTM800
Conectividad PEI Data – 3.3V FTDI Cable solo para MTM800/ MTM5200
Conectividad PEI Data – 5V FTDI Cable solo para MTM5400/ MTM5500
Conectividad audio 6 pin to 26 conversion board solo para MTM800/ MTM5200
Conectividad audio 6 pin to 26 conversion board solo para MTM5400/ MTM5500
⚠️ Atención: si queremos usar GPIO para hacer uso del PTT debemos cortar el circuito de la placa 6 to 26 conversion board que va al pin 17 y soldar un cable directamente al pin 17, se puede saber midiendo con el polimetro.
Con el circuito sin cortar y conectada la emisora debe de dar 5V en el pin 17 si medimos corriente continuo con un polímetro.
Con el circuito cortado y la placa conectada debe de dar 0V en el pin 17 si medimos corriente continuo con un polímetro. EL puerto GPIO se encargara de mantener a 5V el puerto y de bajarlo a 0v when se produzca un PTT.
Para realiza un auto-arrancado de la emisora MTM5400/ MTM5500 realizar un puente entre el pin 25-26 de la placa conversion board
Comprueba que la tarjeta USB es reconocida y el FTDI
Conecta la tarjeta de sonido USB; su LED se encenderá. Debe estar configurados los Jumper en modo MOTO y modo ASL ON.Comprueba que el sistema la reconoce:
$ lsusb
Deberías ver algo similar a esto, donde la tarjeta de sonido aparece como un controlador CM108:
Bus 001 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Deteccion del puerto FTDI:
$ ls -la /dev/serial/by-id/
Deberías ver algo similar a esto, donde la tarjeta aparece como:
lrwxrwxrwx 1 root root 13 jun 11 20:30 usb-FTDI_FT232R_USB_UART_BG0349N8-if00-port0 -> ../../ttyUSB1
Identifica los canales de grabación y reproducción
Comprueba que la entrada de micrófono (canal de recepción/Rx) está presente. Localiza el número de tarjeta y el de dispositivo, ya que se usarán en la configuración de SVXLink:
$ arecord -l
$ **** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
Comprueba ahora el canal de salida de audio (altavoz). También aparecerá el dispositivo de reproducción integrado en la Raspberry Pi (bcm2835):
$ aplay -l
$ **** List of PLAYBACK Hardware Devices ****
card 0: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
Subdevices: 1/1
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
💡 Consejo: en el ejemplo anterior, la tarjeta USB es card 1, device 0. Ese mismo identificador se usará tanto para el canal Rx (entrada) como para el Tx (salida) en la configuración de audio de SVXLink, como se explica más adelante.
Parte 4 · Configuración de SVXLink
Toda la configuración (excepto la de los módulos) se encuentra en el archivo /etc/svxlink/svxlink.conf. El archivo original sin configurar está disponible en /home/pi/svxlink/src/svxlink/svxlink/svxlink.conf como referencia.
Configura TetraLogic en svxlink.conf
tetralogic.conf es el archivo de configuración de la parte TETRA desde octubre de 2022 y se ubica en /etc/svxlink/svxlink.d. TetraLogic es la lógica usada por la rama tetra-contrib de SVXLink.
Por defecto, TetraLogic usa el enlace /dev/ttyUSB0 a 115200 baudios para conectar con el terminal MTM. Si vas a usar el UART interno de la Raspberry Pi, debes cambiarlo:
- En una Pi 3, cambia
/dev/ttyUSB0por/dev/ttyS0. - En una Pi 2, usa
/dev/ttyAMA0. - Cambia la velocidad a 9600 baudios, que es la velocidad por defecto del interfaz PEI en el codeplug o cambia la velocidad del codeplug.
Al arrancar, TetraLogic configura la estación TETRA en modo DMO mediante el comando AT+CTOM=1, usa el enlace PEI para leer el squelch (COS) y enviar el PTT, y también recupera el GPS para enviar la posición a APRS (si la radio no tiene módulo GPS, verás un error en ese comando AT concreto cuando DEBUG esté a 3).
Hay dos formas de gestionar squelch/PTT según la lógica usada: TetraLogic, que usa squelch y PTT vía software por el interfaz PEI, o de forma tradicional vía hardware con SimplexLogic o RepeaterLogic, que usan squelch y PTT por GPIO (en este caso la señal SQ debe tomarse del MTM800).
El modo de operación se define con TETRA_MODE en TetraLogic.conf, que se usa como punto de entrada para interpretar el archivo /etc/svxlink/pei-init.json:
TETRA_MODE=TMO # Activa el modo TMO (AT+CTOM=0)
TETRA_MODE=DMO-RPT # Activa el modo repetidor DMO (AT+CTOM=6)
TETRA_MODE=DMO-MS # Activa el modo DMO directo (AT+CTOM=1)
TETRA_MODE=GATEWAY # Activa el modo Gateway (AT+CTOM=5)
⚠️ Importante: para usar el MTM800/MTM5x00 en DMO directo, configura DMO-MS. Para usar el MTM5x00 como repetidor DMO, configura DMO-RPT; en ese caso debes usar el PTT por cable, ya que de otro modo el tráfico procedente de la red no se transmitirá por aire. En la versiones recientes de firmware ya no es necesario
Edita la sección [GLOBAL] y las lógicas en svxlink.conf
Esta es la configuración de la rama TETRA dentro de svxlink.conf Se deben cambiar los valores en rojo:
[GLOBAL]
LOGIC_CORE_PATH=/usr/lib/aarch64-linux-gnu/svxlink
LOGICS=TetraLogic,ReflectorLogic
CFG_DIR=svxlink.d
#TIMESTAMP_FORMAT="%c"
TIMESTAMP_FORMAT="%d.%m.%Y %H:%M:%S"
CARD_SAMPLE_RATE=48000
#SignalinkCard_Channels=1
#rimlite#CARD_CHANELS=0
CARD_CHANNELS=2 #Change this to CARD_CHANNELS=2 if using R1 2020 soundcard
LOCATION_INFO=LocationInfo
LINKS=LinkToDMOTetra
DEBUG=4
BUSY_LOCKOUT=YES
[LinkToR4]
CONNECT_LOGICS=RepeaterLogic:94:SK3AB,SimplexLogic:92:SK3CD
#DEFAULT_ACTIVE=1
TIMEOUT=300
#ACTIVATE_ON_ACTIVITY=RepeaterLogic
[LinkToDMOTetra]
#CONNECT_LOGICS=TetraLogic:66:DL262,ReflectorLogic:67:Net
CONNECT_LOGICS=TetraLogic:9:Link1,ReflectorLogic:8:Link2
DEFAULT_ACTIVE=1
TIMEOUT=30
ACTIVATE_ON_ACTIVITY=TetraLogic
[LocationInfo]
APRS_SERVER_LIST=euro.aprs2.net:14580
LAT_POSITION=XX.XX.XXN
LON_POSITION=XX.XX.XXW
CALLSIGN=ER-EAXXXX
FREQUENCY=430.575
TX_POWER=10
ANTENNA_GAIN=8
ANTENNA_HEIGHT=35m
ANTENNA_DIR=-1
PATH=WIDE1-1
BEACON_INTERVAL=15
COMMENT=430.575MHz T000 R21k TETRA GATEWAY
Configura el archivo tetralogic.conf
Edita la sección [TetraLogic] con los parámetros propios de tu estación, ISSI, GSSI, MCC/MNC, la ruta del dispositivo FTDI y las rutas de los scripts de eventos Se deben cambiar los valores en rojo:
[TetraLogic]
TYPE=Tetra
RX=Rx1
TX=Tx1
DTM_CTRL_PTY=/tmp/dtmf_svx
#DTMF_CTRL_PTY=/tmp/svxlink_dtmf
MODULES=ModuleHelp,ModuleParrot,ModuleMetarInfo
CALLSIGN=EAXXX-R
DEFAULT_LANG=es_ES
BAUD=115200
PORT=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_BG0349N8-if00-port0
#PORT=/tmp/pei_proxy
ISSI=9999
GSSI=1
MNC=16383
MCC=901
TETRA_MODE=DMO-RPT
PEI_INIT_FILE=/etc/svxlink/pei-init.json
TIME_FORMAT=24
SHORT_IDENT_INTERVAL=60
LONG_IDENT_INTERVAL=120
MUTE_RX_ON_TX=0
MUTE_TX_ON_RX=0
IDENT_ONLY_AFTER_TX=4
EVENT_HANDLER=/usr/share/svxlink/events.tcl
RGR_SOUND_DELAY=3000
#RGR_SOUND_ALWAYS=0
MACROS=Macros
FX_GAIN_NORMAL=-3
FX_GAIN_LOW=-12
APRSPATH=APRS,qAR,EAXXXX-11:
#ACTIVATE_MODULE_ON_LONG_CMD=4:EchoLink
#QSO_RECORDER=8:QsoRecorder
#ONLINE_CMD=998877
#STATE_PTY=/var/run/svxlink/state
#DTMF_CTRL_PTY=/dev/shm/simplex_dtmf_ctrl
#CTCSS_TO_TG=77.0:999,123.0:9990,146.2:9992
#PROXIMITY_WARNING=3.1
#TIME_BETWEEN_SDS=3600
#INFO_SDS=Welcome new user
#TETRA_USERS=Tetra_Users
TETRA_USER_INFOFILE=/etc/svxlink/tetra_users.json
TETRA_STATUS=Tetra_Status
#SDS_ON_USERACTIVITY=SdsOnUserActivity
#SDS_TO_OTHERS_ON_ACTIVITY=DMO_ON,DMO_OFF,PROXIMITY
SDS_TO_COMMAND=SdsToCommand
END_CMD=ATH
#SHARE_USERINFO=0
##DAPNET_CALLSIGN=eaXXX
##DAPNET_SERVER=db0dbn.ig-funk-siebengebirge.de
##DAPNET_PORT=43434
##DAPNET_KEY=No9mLoiJtHfW6BFoQ37z
##DAPNET_RIC2ISSI=Ric2ISSI
##DAPNET_RUBRIC_REGISTRATION=RicRegistration
##DAPNET_USERNAME=eaXXX
##DAPNET_PASSWORD=h5hsq5Sp896ctNru1rTZb
##DAPNET_WEBHOST=www.hampager.de
##DAPNET_WEBPORT=8080
##DAPNET_WEBPATH=/calls
##DAPNET_TXGROUP="all","ea-all"
DTMF_CTRL_PTY=/tmp/svxlink_dtmf
DEBUG=4
[Ric2ISSI]
# RIC=ISSI
0145007=2145007
0145007=1030299
[RicRegistration]
# RIC=Rubric1,Rubric2,Rubric54 (in decimal)
0145007=1080,1081,1061
#1234=1080,1081,1061
[Tetra_Status]
# status=message
61004=Parrot:
61005=Parrot:#
61010=MetarInfo:1#
61011=EchoLink:9999#
61012=EchoLink:#
61013=EchoLink:352223#
61014=EchoLink:661795#
[SdsOnUserActivity]
0=Hello user you have powered on
1=Hello user you have powered off
2=Hello user you want to declare the state of emergency?
3=Hello user Push-to-talk condition is detected
4=Hello user Status
5=Hello user TXI=on
[SdsToCommand]
61000=9*
33009=919
33391=9191
33040=91204
33080=91208
33081=912080
33140=91214
33141=912140
33142=91214091
33143=912148
33144=9121462
33145=9121490
33146=9121477
33147=9121428
33148=9121464
33149=9121472
33150=91214316
33151=91730444
33152=91214480
33220=91222
33260=91226
33280=91228
33320=91232
33350=91235
33620=91262
36050=91505
33680=91268
33629=912629
40990=919990
40991=12#
40992=2145007#
40993=2140041#
40994=2141102#
40995=2142028#
40996=21420281#
40997=2142404#
40998=2142422#
40999=2142530#
41000=21425301#
41001=21425302#
41002=2143036#
41003=21430361#
41004=2143091#
41005=21430911#
41006=21430912#
41007=2144228#
41008=21442281#
41009=21450071#
41010=2145031#
41011=21450311#
41012=2145285#
41013=21452851#
41014=21452852#
41015=21452853#
41016=21452854#
41017=2145353#
41018=21453531#
41019=21453532#
41020=2145885#
41021=2147076#
41022=2147542#
41023=21475421#
41024=21475422#
41025=2147669#
41026=2148015#
41027=21480151#
41028=21480152#
41029=11#
Configura el ReflectorLogic
Asegúrate de usar ReflectorV2 en el parámetro TYPE:
[ReflectorLogic]
TYPE=ReflectorV2
#HOSTS=127.0.0.1
#HOST_PORT=5302
HOSTS=tetra-ea.duckdns.org
HOST_PORT=5300
#HOST_PRIO=100
#HOST_PRIO_INC=1
#HOST_WEIGHT=10
CALLSIGN="EAxxx-R"
AUTH_KEY="xxxx-xxx"
JITTER_BUFFER_DELAY=300
DEFAULT_TG=9
MONITOR_TGS=9,91,214,2140,2148,21428,21462,21464,21472,21477
TG_SELECT_TIMEOUT=180
ANNOUNCE_REMOTE_MIN_INTERVAL=300
EVENT_HANDLER=/usr/share/svxlink/events.tcl
NODE_INFO_FILE=/etc/svxlink/node_info.json
MUTE_FIRST_TX_LOC=0
MUTE_FIRST_TX_REM=0
#TMP_MONITOR_TIMEOUT=3600
UDP_HEARTBEAT_INTERVAL=5
QSY_PENDING_TIMEOUT=15
#VERBOSE=1
OPUS_ENC_COMPLEXITY=10
OPUS_ENC_BITRATE=300000
OPUS_ENC_VBR=1
RECONNECT_SECONDS=5
CERT_DOWNLOAD_CA_BUNDLE=1
DEBUG=4
DEFAULT_TG — el nodo seleccionará este TG en tráfico entrante local si no hay otro TG seleccionado. Por defecto: 0 (sin TG).
MONITOR_TGS — lista separada por comas de TGs que el nodo monitorizará cuando no haya ningún TG seleccionado. Puedes marcar TGs con prioridad más alta añadiendo uno o más signos «+»; cuantos más signos, mayor prioridad. Ejemplo: MONITOR_TGS=112++,240,2403+,2403123.
TG_SELECT_TIMEOUT — número de segundos tras los cuales un TG seleccionado se deselecciona automáticamente y el nodo vuelve al TG 0. Por defecto: 30 segundos.
ANNOUNCE_REMOTE_MIN_INTERVAL — intervalo mínimo en segundos entre anuncios del mismo TG para activaciones remotas.
NODE_INFO_FILE — archivo de configuración usado para enviar información de este cliente al servidor reflector (estructura JSON libre, basada en node_info.json como plantilla). También permite ajustar los parámetros del códec de audio, por ejemplo bajar OPUS_ENC_COMPLEXITY por debajo de 9 para aliviar la carga de CPU del codificador Opus.
MUTE_FIRST_TX_LOC — silencia la primera transmisión tras seleccionar un TG por actividad local. Se recomienda mantenerlo activado (por defecto) para evitar aperturas breves cuando alguien solo hace una prueba de PTT, y para permitir enviar comandos DTMF sin molestar al resto de la red.
MUTE_FIRST_TX_REM — silencia la primera transmisión tras seleccionar un TG por actividad remota, para permitir a los usuarios locales introducir comandos DTMF sin interrumpir un QSO activo. No está activado por defecto porque no es intuitivo: si un usuario local quiere responder a una llamada, primero debe hacer un PTT breve para «abrir» el nodo.
TMP_MONITOR_TIMEOUT — segundos tras los cuales caduca un monitor de TG temporal añadido manualmente. Pon 0 para desactivar esta función. Por defecto: 3600 (una hora).
HOST, CALLSING, AUTH_KEY — se tiene que pedir usuario y password al dueño del reflector en este caso a EA5GVK)
Revisa Echolink.conf (opcional)
Comprueba que la variable MUTE_LOGIC_LINKING está a 0 (si está a 0, EchoLink transmite hacia el gateway; si no, no lo hace):
$ [ModuleEchoLink]
NAME=EchoLink
ID=2
# Timeout de desconexión si no hay actividad
#TIMEOUT=60
MUTE_LOGIC_LINKING=0
Configura el dispositivo de audio
Como se identificó antes (tarjeta 1, dispositivo 0), así debe quedar el canal de recepción (Rx) en el archivo de configuración:
[Rx1]
TYPE=Local
#RX_ID=?
# Nombre permanente ALSA — no cambia aunque varíe el número de card al arrancar
AUDIO_DEV=alsa:plughw:Device
# AUDIO_CHANNEL=0: canal de captura (audio RX desde MTM5400 hacia red)
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
#SQL_DET=INTERNAL
SQL_DET=TETRA_SQL
SQL_START_DELAY=150
SQL_DELAY=500
SQL_HANGTIME=3000
#SQL_EXTENDED_HANGTIME=1000
#SQL_EXTENDED_HANGTIME_THRESH=15
SQL_TIMEOUT=180
#VOX_FILTER_DEPTH=20
#VOX_THRESH=1000
#CTCSS_MODE=2
#CTCSS_FQ=136.5
#CTCSS_SNR_OFFSET=0
#CTCSS_OPEN_THRESH=15
#CTCSS_CLOSE_THRESH=9
#CTCSS_BPF_LOW=60
#CTCSS_BPF_HIGH=270
SERIAL_PORT=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
SERIAL_PIN=DSR
SERIAL_SET_PINS=DTR
#EVDEV_DEVNAME=/dev/input/by-id/usb-SYNIC_SYNIC_Wireless_Audio-event-if03
#EVDEV_OPEN=1,163,1
#EVDEV_CLOSE=1,163,0
#GPIO_PATH=/sys/class/gpio
#GPIO_SQL_PIN=gpio18
#PTY_PATH=/tmp/rx1_sql
#HID_DEVICE=/dev/hidraw0
#HID_SQL_PIN=!VOL_DN
#SIGLEV_DET=TONE
#SIGLEV_SLOPE=1
#SIGLEV_OFFSET=0
#SIGLEV_BOGUS_THRESH=120
#TONE_SIGLEV_MAP=100,84,60,50,37,32,28,23,19,8
#SQL_SIGLEV_OPEN_THRESH=30
#SQL_SIGLEV_CLOSE_THRESH=10
#DEEMPHASIS=0
#SQL_TAIL_ELIM=50
PREAMP=3
PEAK_METER=0
#DTMF_DEC_TYPE=INTERNAL
#DTMF_MUTING=1
#DTMF_HANGTIME=40
#DTMF_SERIAL=/dev/ttyS0
#DTMF_PTY=/tmp/rx1_dtmf
#DTMF_MAX_FWD_TWIST=8
#DTMF_MAX_REV_TWIST=4
#1750_MUTING=1
#SEL5_DEC_TYPE=INTERNAL
#SEL5_TYPE=ZVEI1
#FQ=433475000
#MODULATION=FM
#WBRX=WbRx1
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=6
#IB_AFSK_ENABLE=0
Y para el canal de transmisión (Tx), el canal de salida (altavoz) es también la tarjeta 1, dispositivo 0:
[Tx1]
TYPE=Local
TX_ID=T
# Nombre permanente ALSA — no cambia aunque varíe el número de card al arrancar
AUDIO_DEV=alsa:plughw:Device
AUDIO_CHANNEL=0
#AUDIO_DEV_KEEP_OPEN=0
LIMITER_THRESH=-6
#PTT_TYPE=NONE
#PTT_TYPE=SerialPin
#PTT_PORT=/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
#PTT_PIN=RTS
PTT_TYPE=GPIO
GPIO_PATH=/sys/class/gpio
PTT_PIN=!gpio591
#PTT_PORT=/dev/ttyS0
#PTT_PIN=gpio19
#HID_DEVICE=/dev/hidraw0
#HID_PTT_PIN=GPIO3
#SERIAL_SET_PINS=DTR!RTS
#GPIO_PATH=/sys/class/gpio
PTT_HANGTIME=3000
#PTT_HANGTIME=150
TIMEOUT=180
# TX_DELAY=500: valor reducido, TetraLogic ya gestiona el timing de ATD1
# El RGR_SOUND_DELAY en TetraLogic.conf controla el retardo post-RX
TX_DELAY=500
#CTCSS_FQ=136.5
#CTCSS_LEVEL=9
#PREEMPHASIS=0
#DTMF_TONE_LENGTH=100
#DTMF_TONE_SPACING=50
#DTMF_DIGIT_PWR=-15
MASTER_GAIN=3
#OB_AFSK_ENABLE=0
#OB_AFSK_VOICE_GAIN=-6
#OB_AFSK_LEVEL=-12
#OB_AFSK_TX_DELAY=100
#IB_AFSK_ENABLE=0
#IB_AFSK_LEVEL=-6
#IB_AFSK_TX_DELAY=100
Parte 5 · Eventos TETRA y control por GPIO
Copia TetraLogic.tcl si falta
Si el archivo TetraLogic.tcl no está presente en /usr/share/svxlink/event.d, cópialo desde el código fuente:
$ cp /home/pi/svxlink/src/svxlink/svxlink/TetraLogic.tcl /usr/share/svxlink/event.d/
Exporta eventos al GPIO (opcional)
Es posible volcar el estado de ciertos eventos al interfaz GPIO usando sintaxis TCL. El ejemplo siguiente exporta la señal de squelch (venga del GPIO o del interfaz PEI) en el archivo /usr/share/svxlink/events.d/TetraLogic.tcl:
# Se ejecuta cada vez que el squelch se abre o se cierra
proc squelch_open {rx_id is_open} {
Logic::squelch_open $rx_id $is_open;
puts "Le squelch change: $is_open";
if {$is_open==0} { exec echo 0 >/sys/class/gpio/gpio591/value; }
if {$is_open==1} { exec echo 1 >/sys/class/gpio/gpio591/value; }
}
⚠️ Importante: en versiones recientes de Raspbian, el rango de numeración de los pines GPIO se ha desplazado en +569. Por ejemplo, para usar GPIO22 hay que referirse a él como GPIO591 (569+22). El ejemplo anterior escribe un 1 (3,3V)/(5v) en GPIO22 (591) cuando el squelch esta cerrado.
Activa el interfaz PEI en el codeplug
Los parámetros de este interfaz se configuran en el CPS, en Data_services → AT commands; comprueba las 3 opciones: ETSI group format, ETSI AT SDS/Status format y Extended ETSI addressing. Según la versión de firmware o de radio, estos parámetros pueden no estar disponibles; en ese caso ya vienen activados internamente y no hay nada que hacer.
En modo LAB: cp_ergo_block / ergo_data / ro / rui_parameters / limited_access_services. Cambia el valor 7 (pei) de 0 a 1 para activar el interfaz PEI.
Inicia el terminal con:
$ minicom -b 9600 -o -D /dev/ttyS0
Para salir de minicom, pulsa CTRL-A seguido de Q.
Configura el GPIO clásico (cableado)
Con el interfaz PEI de TETRA no necesitas usar GPIO (salvo en modo repetidor DMO, para el PTT).
Se debe de crear este fichero en nano /home/svxlink/gpio-ptt-init.sh :
#!/bin/bash
# Pi5: pinctrl-rp1 base=569, GPIO22=591
GPIO=591
echo $GPIO > /sys/class/gpio/export 2>/dev/null || true
sleep 1
echo out > /sys/class/gpio/gpio${GPIO}/direction
echo 1 > /sys/class/gpio/gpio${GPIO}/value
echo "GPIO591 listo — PTT en RX"
exit 0
Damos permisos de ejecución al script anteiror:
$ chmod +x /home/svxlink/gpio-ptt-init.sh
El estado de las entradas/salidas GPIO se puede comprobar con la instrucción:
$ paste <(ls -d /sys/class/gpio/gpiochip*) <(cat /sys/class/gpio/gpiochip*/base) <(cat /sys/class/gpio/gpiochip*/ngpio); gpioinfo
⚠️ Restricción: con dispositivos MTM5x00, si se usa el modo repetidor DMO, no es posible usar el interfaz PEI para activar el transmisor: un tráfico procedente de la red no será retransmitido por el MTM5x00 por aire. Debes usar el PTT cableado vía GPIO22 y modificar la sección Tx en consecuencia. En los Frimwares modernos ya se puede y esto no es necesario
Parte 6 · Script de liberación del UART
Crea el script serial_write-CR.py
Para que TetraLogic se comunique correctamente con el interfaz PEI la primera vez que se enciende, hay que enviar un retorno de carro (CR) a la estación para vaciar su buffer. Esta macro debe ejecutarse antes de arrancar SVXLink. Crea el archivo serial_write-CR.py en /home/svxlink:
#!/usr/bin/env python3
import serial
import time
try:
ser = serial.Serial(
port='/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_BG0349N8-if00-port0', # Puerto serie de tu adaptador TTL-USB
baudrate=115200, # Velocidad del PEI configurada en la radio
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
# En Python 3 es obligatorio enviar la 'r' como un objeto de bytes (b'
')
ser.write(b'
')
time.sleep(0.5) # Una pequeña pausa de seguridad para el buffer
ser.close()
print("[PEI] Buffer liberado correctamente enviando CR (\r).")
except Exception as e:
print(f"[ERROR PEI] No se pudo liberar el puerto: {e}")
Dar permisos de ejecución al script:
$ chmod +x serial_write-CR.py
💡 Consejo: este script debe lanzarse cada vez que arranca la Raspberry Pi, así que lo añadiremos a un systemctl. Lógicamente, la estación MTM debe estar encendida cuando la Pi arranca:
Parte 7 · Ejecutar SVXLink para pruebas (opcional)
Libera el buffer del MTM y da permisos a la clave
Before de lanzar SVXLink, libera el buffer del MTM con el script anterior:
$ ./serial_write-CR.py
Da permisos al archivo de clave (xxxx es el indicativo principal definido en CALLSIGN= dentro de SimplexLogic, RepeaterLogic o ReflectorLogic, el que realmente uses):
$ sudo chmod ugo+rwx /var/lib/svxlink/pki/xxxx.key
Arranca SVXLink manualmente
Inicia SVXLink con el siguiente comando:
$ svxlink
El LED de la tarjeta de sonido USB debería parparnear si está equipada. En el arranque es posible obtener algunos errores del PEI. Según la variable MUTE_FIRST_TX_LOC, la primera pulsación de PTT selecciona el TG (descrito en TetraLogic); la segunda pulsación de PTT inicia el locutor que lleva el audio al TG en la red.
Con TetraLogic y DEBUG=3 deberías ver una salida similar a esta (resumida):
$ SvxLink v1.7.99.24 Copyright (C) 2003-2020 Tobias Blomberg / SM0SVX
$ Using configuration file: /etc/svxlink/svxlink.conf
$ --- Using sample rate 48000Hz
$ Starting logic: ReflectorLogic
$ ReflectorLogic: Connecting to rlf-87.dyndns.org:5387
$ Starting logic: TetraLogic
$ Loading RX: RxTetra
$ Loading TX: TxTetra
$ TetraLogic: Event handler script successfully loaded.
$ Creating tetra specific Sql ok
$ To PEI:AT+CTOM=1
$ Activating link ALLlinkTetra
$ ReflectorLogic: Connection established to 82.64.55.4:5387
$ ReflectorLogic: Authentication OK
$ ReflectorLogic: Connected nodes: (19)-F8KHC, (87)-F1ZJA, (59)-F1IWQ
$ ReflectorLogic: Using audio codec "OPUS"
$ From PEI:+CTOM: 1
$ +++ New Tetra mode: 1 - DMO
$ From PEI:OK
$ Connected to APRS server 217.160.179.143 on port 14580
$ To PEI:AT+CTSDC=0,0,0,1,1,0,1,1,0,0
$ From PEI:OK
$ To PEI:AT+CNUMF?
$ From PEI:+CNUMF: 0,9010000102089144
$ TetraLogic: The squelch is OPEN
$ RxTetra: The squelch is OPEN (5.89658)
$ ReflectorLogic: Selecting TG #20887 -- selección de TG en el 1er PTT
$ TetraLogic: The squelch is CLOSED
$ RxTetra: The squelch is CLOSED (5.89336)
$ TetraLogic: The squelch is OPEN
$ ReflectorLogic: Talker start on TG #20887: (59)-F1IWQ -- 2º PTT
$ TetraLogic: The squelch is CLOSED
$ ReflectorLogic: Talker stop on TG #20887: (59)-F1IWQ
$ APRS,qAR,F1IWQ-10:Transmission ended
💡 Consejo: los mensajes +CME ERROR: 35 al inicio suelen corresponder a errores de sintaxis en comandos AT que el propio TetraLogic envía durante la inicialización y no impiden el funcionamiento. Un +CME ERROR: 3 en el comando relativo al GPS es normal si tu MTM no tiene módulo GPS instalado.
Parte 8 · Arranque de SVXLink en el inicio del sistema
Crea el servicio svxlink.service
Hay que crear un servicio que arranque SVXLink una vez la red y la tarjeta de sonido estén disponibles, y que lo lance 60 segundos después del arranque. En el directorio /etc/systemd/system/ crea el archivo svxlink.service:
# This file is part of SvxLink -- a voice services system for ham radio
#
# Copyright (C) 2003-2019 Tobias Blomberg / SM0SVX
#
# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
[Unit]
Description=SvxLink repeater control software
Documentation=man:svxlink(1)
After=network.target remote-fs.target syslog.target time.target gpiod.service
[Service]
# --- Variables de entorno (antes en /etc/default/svxlink) ---
Environment=RUNASUSER=svxlink
Environment=CFGFILE=/etc/svxlink/svxlink.conf
Environment=LOGFILE=/var/log/svxlink/svxlink.log
Environment=PIDFILE=/run/svxlink.pid
Environment=OPTIONS=
# --- Tareas previas al arranque de SvxLink ---
ExecStartPre=-/bin/mkdir -p /var/log/svxlink
ExecStartPre=-/bin/touch ${LOGFILE}
ExecStartPre=-/bin/chown ${RUNASUSER} /var/log/svxlink
ExecStartPre=-/bin/chown ${RUNASUSER} ${LOGFILE}
# Liberar puerto PEI de la Motorola MTM
ExecStartPre=/usr/bin/python3 /home/svxlink/serial_write-CR.py
# Inicializar GPIO591 (GPIO22 Pi5) en HIGH — PTT OFF antes de arrancar svxlink
ExecStartPre=/home/svxlink/gpio-ptt-init.sh
# ---> RETARDO DE 60 SEGUNDOS ANTES DEL ARRANQUE <---
ExecStartPre=/bin/sleep 60
# --- Arranque del servicio ---
ExecStart=/usr/bin/svxlink --logfile=${LOGFILE} --config=${CFGFILE} --pidfile=${PIDFILE} --runasuser=${RUNASUSER}
ExecReload=/bin/kill -s HUP $MAINPID
PIDFile=${PIDFILE}
Restart=on-failure
# ---> RETARDO DE 60 SEGUNDOS EN CASO DE CAÍDA O RESTART <---
RestartSec=60
TimeoutStartSec=120
TimeoutStopSec=10
LimitCORE=infinity
WorkingDirectory=/etc/svxlink
[Install]
WantedBy=multi-user.target
Activa y arranca el servicio
Recarga los nuevos servicios en el sistema:
$ sudo systemctl daemon-reload
Arranca el servicio y actívalo para cada reinicio:
$ sudo systemctl start svxlink.service
$ sudo systemctl enable svxlink.service
Comprueba que los servicios han arrancado correctamente (pulsa Ctrl+C para salir de la vista):
$ sudo systemctl status svxlink.service
El log de SVXLink se encuentra en /var/log/svxlink/svxlink.log. Para detener SVXLink:
$ sudo systemctl stop svxlink.service
⚠️ Importante: El servicio queda activo de forma permanente: en cada arranque de la Pi, SVXLink se iniciará automáticamente una vez la red esté disponible y haya transcurrido ese tiempo.
Parte 9 · Puertos de red e IPv6 (opcional)
Abre los puertos del router
Según los servicios que uses, abre en tu router los siguientes puertos:
# EchoLink
$ 5198-5199/udp
$ 5200/tcp
# Reflector TETRA Leipzig
$ 5300/tcp
💡 Consejo sobre redes solo IPv6: cada vez más proveedores de internet ya no ofrecen direcciones IPv4, solo IPv6.
Parte 10 · Ajustes de ALSAmixer
Ajusta los niveles de audio con alsamixer
Inicia alsamixer:
$ alsamixer
Pulsa F5 para mostrar todos los controles:
- Speaker (altavoz) — ajusta el audio que llega de la red hacia la radio.
- Capture (captura) — ajusta el audio que va de la radio hacia la red.
- Mic (micrófono) — no tiene efecto en esta configuración.
Comprueba que el control de Auto Gain Control esté silenciado (aparecerá «MM»); para silenciarlo, sitúate sobre el control y pulsa la tecla m.
Mi configuración de audio es justo la que se muestra con la tarjeta R1-2023 y despúes de hacer varias pruebas es la que mejor calidad de sonido me devuelve.
Parte 11 · Menú gráfico, comandos DTMF y consola
Usa el menú gráfico de SVXLink
En el entorno gráfico de Raspbian, el menú SvxLink ofrece accesos directos útiles:
- Edit SvxLink.conf — abre un editor para modificar el archivo de configuración
svxlink.conf. - Edit Echolink.conf — abre un editor para modificar el archivo de configuración
EchoLink.conf. - Voir SvxLink fonctionner (ver SvxLink funcionando) — muestra una ventana con las últimas 40 líneas del log de SVXLink.
- SvxLink.log — abre un editor para consultar el archivo de log
svxlink.log.
Comandos DTMF disponibles
Estos comandos se introducen por DTMF desde una estación que sí pueda generarlos (recuerda: los comandos DTMF no son posibles desde una estación TETRA):
$ * Presentación del repetidor
# Desconexión
$ 0# Activación del módulo de ayuda (Help)
$ 1# Activación del módulo Parrot
$ 2# Activación del módulo ECHOLINK
$ 5# Activación del módulo MetarInfo (previsión meteorológica)
$ 01# Lista de estaciones meteorológicas disponibles
Parte 12 · Consola de SVXLink
La consola permite activar las macros de la sección [Macros] de svxlink.conf. Existen varias formas de simular comandos DTMF en SVXLink.
Usando un socket
Lanza SVXLink de modo que pueda controlarse remotamente desde un cliente:
$ nc -lk puerto | sudo svxlink
Y desde el cliente, envía el comando con:
$ echo -n "comando" | nc direccion_ip puerto
Donde direccion_ip es 127.0.0.1 si el cliente está en la misma red que el servidor, puerto es el número de puerto de comunicación, y comando es la instrucción a enviar a SVXLink (por ejemplo, *0#).
Simulador DTMF por archivo (PTY)
En la sección [TetraLogic], define la ruta de intercambio de comandos DTMF:
$ DTMF_CTRL_PTY=/tmp/dtmf
Y desde una ventana de consola, envía el comando deseado:
$ sudo echo "comando" >/tmp/dtmf
💡 Consejo final: guarda copia de tus archivos svxlink.conf, tetralogic.conf y pei-init.json antes de cada actualización con maj.sh, ya que una recompilación no sobrescribe configuraciones existentes, pero conviene tener siempre un respaldo a mano antes de tocar el sistema en producción.
Automatizaciones y Mantenimiento del Sistema
Para garantizar la estabilidad operativa del nodo a largo plazo, es fundamental automatizar dos tareas críticas: la actualización de la base de datos de indicativos/usuarios TETRA y la correcta rotación de los archivos de registro para que no saturen el almacenamiento de la tarjeta SD.
Sincronización Automática de Usuarios TETRA
La lógica TetraLogic utiliza un archivo local JSON para mapear las ISSI con sus respectivos indicativos de radioaficionado. Para mantener esta base de datos al día con el servidor central, utilizaremos un script de automatización en Bash.
Crea el script de actualización en el directorio personal de SvxLink:
#!/bin/bash
# Define las variables
URL="http://hblinkspain.duckdns.org/tetra_users.json"
DEST_DIR="/etc/svxlink/"
FILE_NAME="tetra_users.json"
TEMP_FILE="/tmp/${FILE_NAME}.tmp"
# Verifica si el directorio de destino existe, si no, lo crea.
if [ ! -d "$DEST_DIR" ]; then
echo "El directorio $DEST_DIR no existe. Creándolo..."
sudo mkdir -p "$DEST_DIR"
fi
echo "Iniciando proceso de actualización..."
# 1. Comprueba conexión con el servidor
echo "Comprobando conexión con ${URL}..."
if wget -q --spider "$URL"; then
echo "Conexión establecida correctamente."
else
echo "Error: No se puede conectar con ${URL}. El servidor no responde o no existe."
exit 1
fi
# 2. Descarga el archivo a ubicación temporal
echo "Descargando el archivo a ubicación temporal..."
sudo wget -O "$TEMP_FILE" "$URL"
# 3. Verifica si la descarga fue exitosa y si el archivo NO está vacío
if [ $? -eq 0 ] && [ -s "$TEMP_FILE" ]; then
echo "Descarga exitosa y validación de archivo correcta (no está vacío)."
# Backup del archivo existente si existe
if [ -f "${DEST_DIR}${FILE_NAME}" ]; then
echo "Copia de seguridad del archivo existente..."
sudo cp "${DEST_DIR}${FILE_NAME}" "${DEST_DIR}${FILE_NAME}.copia"
fi
# Mueve el archivo temporal a la ubicación final
echo "Actualizando el archivo principal..."
sudo mv "$TEMP_FILE" "${DEST_DIR}${FILE_NAME}"
# Asegura permisos correctos
sudo chmod 644 "${DEST_DIR}${FILE_NAME}"
echo "¡Actualización completada con éxito!"
else
echo "Error: La descarga falló o el archivo descargado está vacío."
echo "Se mantiene el archivo anterior sin cambios."
rm -f "$TEMP_FILE"
exit 1
fi
Para que el sistema pueda ejecutar la tarea, es obligatorio asignarle permisos de ejecución mediante la consola de comandos:
$ chmod +x /home/svxlink/update_tetra_users.sh
$ ./home/svxlink/update_tetra_users.sh
Tip Profesional: Puedes programar este script en el cron de tu sistema (ejecutando sudo crontab -e) para que se ejecute de forma automática todas las madrugadas, por ejemplo a las 04:00 AM, añadiendo la línea:
0 4 * * * /home/svxlink/update_tetra_users.sh >/dev/null 2>&1
Mantenimiento y Rotación de Logs (Logrotate)
Dado que SvxLink registra una cantidad notable de eventos, tramas de comandos AT del puerto PEI y tráficos de red, el archivo de registro puede crecer indefinidamente. Para prevenir el colapso del almacenamiento de la Raspberry Pi, configuramos una directiva de rotación periódica.
Crea o edita el archivo de configuración del demonio logrotate:
/var/log/svxlink/svxlink.log {
# Rotar diariamente
daily
# Guardar 30 días de histórico
rotate 30
# Comprimir logs rotados con gzip
compress
# No comprimir el más reciente (el que acaba de rotar),
# por si svxlink aún tiene el descriptor abierto
delaycompress
# No fallar si el fichero no existe
missingok
# No rotar si el fichero está vacío
notifempty
# Crear nuevo fichero vacío tras rotar con los propietarios correctos
create 0640 svxlink svxlink
# Señalar a svxlink que reabra el fichero de log tras la rotación
postrotate
/bin/kill -HUP $(cat /run/svxlink.pid 2>/dev/null) 2>/dev/null || true
endscript
}
Esta configuración realiza una compresión inteligente en .gz de los registros antiguos en el ciclo diario, asegurando que el proceso maestro de SvxLink mantenga la consistencia de escritura de manera ininterrumpida enviando una señal de ciclo de vida limpia (SIGHUP) tras el reemplazo.
Programación de la radio de la pasarela (Gateway)
Para programar la radio de pasarela MTM800e/ MTM5400, deberás conectar conectar el cable correspondiente tu ordenador portátil o PC que ejecutar el software Motorola Tetra CPS.
A continuación, dentro de Tetra CPS, Para leer la configuración de tu radio, simplemente haz clic derecho sobre ella y elige Read Radio.
Programación Básica
A continuación se detallan los parámetros básicos necesarios para poner en marcha tu radio de pasarela:
| Sección | Parámetro (Setting) | Valor | Notas |
|---|---|---|---|
| Subscriber Unit Parameters | Radio ISSI | 9999 | Esta ISSI se utiliza exclusivamente para la radio de la pasarela. No programes esta ISSI en ninguna otra radio. |
| Feature Flags | Direct Mode (DMO) | Marcado (Ticked) | Habilita el modo DMO. |
| DMO Parameters > DMO Address Extension | MCC | 901 | Código de país móvil. |
| DMO Parameters > DMO Address Extension | MNC | 16383 | Código de red móvil. |
| DMO Parameters > DMO MNI Partnership List | Country Code | 901 | Código de país. |
| DMO Parameters > DMO MNI Partnership List | Network Code | 16383 | Código de red. |
| TalkGroups > DMO > DMO Folders List | Name | DMO | Nombre visible en pantalla para la carpeta DMO. |
| TalkGroups > DMO > DMO Folders List | Status | Marcado (Ticked) | Habilitado. |
| TalkGroups > DMO > DMO Folders List | Transmission Timeout timer, sec | 300 | Temporizador de tiempo límite de transmisión (segundos). |
| TalkGroups > DMO > DMO Folders List | Transmission Timeout warning timer, sec | 280 | Temporizador de aviso de tiempo límite de transmisión (segundos). |
| TalkGroups > DMO > DMO Folders List | Number of talkgroups in range | 1 | Este es el número de canales que se mostrarán dentro de la carpeta. |
| TalkGroups > DMO > DMO Folders List | Receive Only | No marcado | Permite transmitir además de recibir. |
| TalkGroups > DMO > DMO talkgroup List | Name | TETRA GATEWAY | Este es el nombre del canal que aparecerá en la pantalla. |
| TalkGroups > DMO > DMO talkgroup List | ID | 1 | Identificador del grupo de conversación. |
| TalkGroups > DMO > DMO talkgroup List | Status | Programado (Programmed) | Estado del grupo. |
| TalkGroups > DMO > DMO talkgroup List | DMO Folders List | DMO | La carpeta que has creado anteriormente. |
| TalkGroups > DMO > DMO talkgroup List | Communication Type | Direct | Tipo de comunicación directa. |
| TalkGroups > DMO > DMO talkgroup List | Gateway Selection | None | Ninguna selección de pasarela externa. |
| TalkGroups > DMO > DMO talkgroup List | Gateway Address | [En blanco] | Este campo debe quedar vacío. |
| TalkGroups > DMO > DMO talkgroup List | Frequency Channel | 439.250 | Esta es la frecuencia en la que tu radio transmitirá y recibirá. Asegúrate de usar una frecuencia dentro de tu banda autorizada según tu licencia.Si no puedes introducir una frecuencia superior a 430, consulta la nota que aparece más abajo. |
| TalkGroups > DMO > DMO talkgroup List | Receive Call to DMO Partnership Networks | User Defined | Definido por el usuario. |
| TalkGroups > DMO > DMO talkgroup List | Network MCC | 901 | MCC de red. |
| TalkGroups > DMO > DMO talkgroup List | Network MNC | 16383 | MNC de red. |
| TalkGroups > DMO > DMO talkgroup List | TMO Mapping | [En blanco] | Mapeo TMO en blanco. |
| TalkGroups > DMO > DMO talkgroup List | Key Group | NO_KG | Grupo de claves de cifrado. |
| TalkGroups > DMO > DMO talkgroup List | Incoming Call security Class | Security Class 1 | Clase de seguridad para llamadas entrantes. |
| TalkGroups > DMO > DMO talkgroup List | Outgoing Call security class | Security Class 1 | Clase de seguridad para llamadas salientes. |
Una vez que estés listo, escribe los cambios en la radio, y enciende la radio se encienda con normalidad.
⚠️ Nota: Incrementar el rango de frecuencia
Es posible expandir la frecuencia de transmisión/recepción de tu MTM800e/MTM5400. Realiza esto bajo tu propio riesgo:
Dentro de Tetra CPS en Lab mode > Decimal (D) > cp_net_block > net_data > DMO_range.
Cambia las frecuencias mínima y máxima según tus necesidades. Ten en cuenta que la radio comienza a perder sensibilidad a partir de 5 MHz por encima y por debajo del rango de fábrica. He logrado extender con éxito radios Motorola tanto portátiles como móviles en +/- 10 MHz sin experimentar efectos adversos.
💡 Nota: Cambiar el nivel de potencia
También puedes utilizar el modo Lab para modificar el nivel de potencia de la radio desde 3 vatios hasta 400 milivatios, lo cual puede ser de gran utilidad para realizar pruebas.
Dentro de Tetra CPS en Lab mode > Decimal (D) > cp_hwconst_block > hwconst_data > 65 > tx_pwr_class_4l.
Establece este valor en 1 para fijar la potencia en 400 milivatios, o en 0 para fijar la potencia en 3 vatios.