Comunicación directa con la API de FlexRadio
Hace unos días comencé a investigar cómo establecer una comunicación más profunda y eficiente con las radios FlexRadio. La automatización del sistema de antenas que tenemos en ED1B hace necesaria una integración directa con la frecuencia sintonizada en la radio. La integración de la informática y algunas soluciones de IoT/IIoT en la radio es cosa del presente, no podemos ni debemos obviarlas.
Depender de N1MM (o cualquier otro software de log): poco flexible
En un primer momento, construí una capa de abstracción basada en los mensajes UDP que envía N1MM Logger+ como parte del flujo de datos en un entorno multioperador de concurso. Sin embargo, esto nos obligaba a depender de un software externo, limitando nuestras posibilidades de automatización e integración con otros sistemas.
Node-RED: la primera alternativa
Con la incorporación de FlexRadio se abrió la oportunidad que buscaba. Recordé que en anteriores intentos de automatización había visto paneles en Node-RED que se comunicaban con distintos equipos, entre ellos, FlexRadio.
La transición fue rápida: instalación limpia de Node-RED, instalación del paquete node-red-contrib-flexradio, un poco de pruebas… y todo funcionaba razonablemente bien.
Sin embargo, aparecieron dos problemas:
-
Mi nulo conocimiento de JavaScript, lo que limitaba mi capacidad para resolver ciertos bugs o necesidades que surgían con el paquete.
-
Node-RED resultaba excesivamente complejo para una tarea que debía ser sencilla y eficiente. Ser eficiente no es opcional.
Estos factores —junto con los amigables «empujones» de Jonathan (EA1HET) cada vez que hablábamos del tema— me llevaron a buscar una comunicación más directa con el FlexRadio
La API de FlexRadio: poderosa pero poco documentada
Las radios de FlexRadio cuentan con una API de control muy potente. Pero la documentación no me fue lo suficientemente clara, algún video en YouTube que lo explica de forma bastante aproximada.
La documentación oficial es limitada y la arquitectura de comunicación, compleja. Aquí algunos enlaces útiles (aunque algo escuetos):
-
📄 Documentación parcial de la API de FlexRadio: FlexRadio SmartSDR Wiki (GitHub)
-
📘 Especificaciones del protocolo VITA 49 (VRT): VITA 49.0 Standard (VITA.org)
Arquitectura general de la comunicación

-
Control por Telnet
Se establece un socket Telnet con la radio (puerto TCP 4992 por defecto). A través de este canal, podemos suscribirnos a medidores específicos, obtener en tiempo real la frecuencia, información sobre clientes conectados, receptores activos, y más.
Además, se indica a la radio en qué puerto UDP debe enviarnos los datos de los medidores a los que nos hemos suscrito. -
Recepción por UDP
Nos ponemos a la escucha en el puerto UDP que definimos anteriormente. A partir de este momento, comenzamos a recibir tramas. -
Decodificación del protocolo VITA 49
Los datos vienen encapsulados en el protocolo VITA 49 (también conocido como VRT), diseñado para comunicaciones ligeras y eficientes. Necesitamos interpretar estos paquetes para extraer el payload. -
Extracción y separación de medidores
Si hay varios medidores activos, se separan sus datos dentro del payload. En este punto ya tenemos el dato crudo. -
Procesamiento de los datos
Dependiendo del tipo de magnitud, el dato crudo debe escalarse para obtener el valor real:-
dB, dBm, dBFS, SWR
dato_real = dato_crudo / 128.0 -
Voltios (V), Amperios (A)
dato_real = dato_crudo / 256.0 -
Temperatura (°C, °F)
dato_real = dato_crudo / 64.0 -
Otros casos
dato_real = dato_crudo
-
-
(Opcional) Publicación por MQTT
En mi caso, los datos se publican en un servidor MQTT, que actúa como el corazón del sistema de automatización en ED1B. Pero aquí, cada uno puede adaptar el sistema a sus necesidades o entorno.
Para finalizar
Comunicarte directamente con la API de FlexRadio puede parecer complejo al principio, pero ofrece un control detallado y una eficiencia que difícilmente se logra con soluciones intermedias (como el CAT). Aunque la documentación es escasa, el protocolo es consistente y una vez entendido, permite desarrollar soluciones muy robustas.
¿Estás pensando en integrar tu FlexRadio en un sistema automatizado? Vale la pena el esfuerzo.
Te dejo el repositorio de la solución lista para funcionar en Docker.
Repositorio PyFlex
Agradecimientos:
Jonathan/EA1HET: que nos hemos pasado un domingo muy divertido intentando rebuscar en el método correcto para comunicar con la radio.
Annalise/NH6Z: quien confirmo el método correcto de comunicar y me aclaró sobre el procesado de la información una vez obtenida del VITA49 y el escalado correcto de la información obtenida.
73 y buenos DX!


con tiempo y conocimientos se pueden hacer verdaderas barbaridades con la API del Flex.
Es mas, estoy seguro que alguien con buenos conocimientos de Javascript, podria desarrollar una APK «seria» para manejo desde Android sin excesiva complicación…
Tenemos que exprimir esta ventaja de la API que no existe en cualquier otra radio.
Yo me pongo YA con el NODE-RED.
Suerte Fabian !
Genial Luis, me alegra haber encendido esa llama de curiosidad. Puedes aprovechar el código en el repositorio, fácilmente explotable en cualquier PC que tengas en casa. No dudes en decirme si necesitas cualquier cosa.
Saludos.
Siempre abriendo caminos para experimentar. Lo aplicare a mi estación, con un flex 6300.
Para usarlo en remoto utilizo el Maestro. Saludos.
Gracias Manolo por tu comentario. Me pareció interesante de compartir, cada vez se pone mas difícil la experimentación con los equipos por lo que interactuar con los equipos es una via de exploración. A tu disposición si necesitas cualquier cosa.