4.9 KiB
Talker Alias (DMR)
El Talker Alias DMR (ETSI TS 102 361-2, 2016) transporta una etiqueta alfanumérica corta en el flujo de voz. En el protocolo Homebrew (HBP) aparece como paquetes UDP DMRA (15 bytes cada uno, hasta cuatro por transmisión).
No es lo mismo que los alias de IDs en subscriber_ids.json usados en logs y en el monitor. Talker Alias es señalización embebida para pantallas de radio (OLED, Hytera/MD380tools, etc.).
Ver también: Configuración.
Cómo lo gestiona ADN
Con la función activada en un sistema MASTER, el servidor puede:
| Modo | Comportamiento |
|---|---|
both (por defecto) |
Passthrough del TA del hotspot/radio origen si se recibieron los cuatro bloques DMRA; si no, inyección desde subscriber_ids + plantilla. |
passthrough |
Solo reenvía DMRA bufferizado. |
inject |
Siempre genera TA desde la plantilla y datos de alias. |
En el reenvío por bridge en cabecera de voz (VHEAD), el servidor envía cuatro paquetes DMRA a cada destino HBP (MASTER peers o PEER upstream) una vez por stream, y después reenvía DMRD como siempre.
MMDVMHost / DMRGateway (Pi-Star, WPSD): el MMDVMHost estándar no procesa DMRA UDP independiente en downlink; decodifica Talker Alias desde la LC embebida en voz DMRD (FLCO 4–7). Con TA activado, ADN inyecta el TA en la LC embebida de los bursts B–E (dtype 1–4) en el reenvío por bridge hacia destinos HBP, alternando LC de grupo y bloques TA durante todo el stream, además de los paquetes DMRA opcionales para clientes que los soporten.
En el mismo MASTER, cuando REPEAT copia voz de grupo a otros hotspots registrados, el servidor también envía esos cuatro DMRA en VHEAD (excluyendo el peer que transmite). Si el bridge apunta al mismo system, comparten la misma deduplicación por stream y el TA no se envía dos veces.
No soportado: tramos OpenBridge (no hay DMRA estándar en OBP/DMRE). El ADN legacy nunca implementó TA más allá de logs de depuración.
Configuración
Bajo GLOBAL (opcional override por sistema con las mismas claves):
GLOBAL:
TALKER_ALIAS: false
TALKER_ALIAS_MODE: both
TALKER_ALIAS_FORMAT: "{callsign} {fname}"
| Clave | Significado |
|---|---|
| TALKER_ALIAS | Interruptor maestro (false por defecto). |
| TALKER_ALIAS_MODE | both, passthrough o inject. Por defecto both si se omite. |
| TALKER_ALIAS_FORMAT | Plantilla tipo Python; campos: {callsign}, {fname}, {surname}, {id}. |
La longitud máxima es 29 caracteres (ETSI / MMDVMHost). Este límite está fijado en código y no es configurable, para evitar payloads incompatibles en radios y hotspots.
El JSON de suscriptores puede incluir fname, surname o un campo talker_alias por registro.
Formato HBP DMRA
| Offset | Campo |
|---|---|
| 0–3 | DMRA |
| 4–6 | ID DMR origen (3 bytes, big-endian) |
| 7 | Índice de bloque 0–3 |
| 8–14 | 7 bytes de payload |
La codificación usa formato UTF-8 (formato 2), igual que MMDVMHost DMRTA.cpp.
El TA embebido en voz DMRD alterna supertramas: un ciclo (bursts B–E) con la LC de grupo normal y el siguiente con un bloque TA (FLCO 4–7), repitiendo hasta el fin del stream.
Ajustes Pi-Star / MMDVM
Para que el TA llegue a la radio RF local:
| Ajuste | Recomendación |
|---|---|
| DMR DumpTAData | 1 (activado, valor por defecto en Pi-Star): escribe el Talker Alias embebido en el log MMDVM — necesario para que el dashboard de Pi-Star y herramientas basadas en log muestren TA; con 0 no aparece nada ahí. No bloquea el TA hacia RF. |
| DMR EmbeddedLCOnly | off (por defecto). Si está on, se desactiva el Talker Alias recibido de la red. |
El panel web de Pi-Star no muestra TA; use OLED de la radio, MD380tools o herramientas como pistar-lastqso.
Compatibilidad de radios: Hytera PD6/7/9 y firmware MD380tools suelen funcionar. Muchas Motorola no soportan TA; firmware antiguo puede dar problemas de audio con TA presente.
El proxy adn-monitor ya reenvía DMRA al master sin modificar.
Limitaciones y trabajo pendiente
| Tema | Estado |
|---|---|
| TA en destinos OpenBridge | No disponible (sin DMRA estándar en OBP). |
| Columna TA en vivo en el monitor | Trabajo aparte (el monitor usa alias de BD, no DMRA en vivo). |
RuntimeError no relacionado en iteración de bridges |
Fix en rama separada. |