miércoles, 26 de agosto de 2020

Escuchando susurros en LU7DID. decode_FT8


Pocos modos han tomado tan por sorpresa y en forma tan vehemente la actividad radial como el coloquialmente denominado "FT8", acrónimo artístico de un nombre mas extenso "Franke-Taylor 8 Frequency Shift Keying". Desde el punto de vista de teoría de comunicaciones el FSK no es novedad, tampoco los modos de modulación de tipo n-FSK (n tonos). ¿Cual es la novedad entonces?. La novedad consisten no tanto en la modulación en si misma como en el protocolo para usarla. ¿Que se emite? ¿En que orden? ¿A que velocidad? ¿Con que diseño de modulación en términos de separación y simbolos? Todo eso hay que definirlo por mas que los "1" y "0" terminen codificandose con un método de modulación FSK, en el gran esquema de las cosas eso último es "facil". Medios de modulación abundan en manos de los aficionados, hay esquemas que llevan décadas de presentados y atraen a nadie. Incluso esquemas muy promisorios, que en papel lucen muy potentes, y tienen poco uso. ¿Que es lo que produce lo uno o lo otro?.
Solo puedo esbozar una opinión, luego de observar algunos hechos, que seguramente será incompleta y que puede o no tener aceptación. Para mi es un combo que incluye excelencia técnica, con facilidad de uso, con resultados prácticos, con infraestructura, con coyuntura de propagación y con suerte.
Empecemos por la excelencia técnica. Como apunté antes el uso de FSK como medio de modulación es tan viejo como la radio misma, aunque solo con el vuelco desde comunicaciones de tipo analógicos a digitales en, digamos, los últimos 30 años se hizo masivo. Prácticamente todas las transmisiones digitales se hacen con alguna variante de FSK (o su prima hermana PSK), nuestro mundo tal como lo conocemos hoy "late" al compás de una música usando PSK. O sea que no hay novedad técnica en su uso. Ahora bien, la comunicación usando modulación PSK se deteriora con la relación señal-ruido algo mas graciosamente que los esquemas basados en modulación de amplitud (SSB, DSB, etc) pero finalmente requieren que la señal esté "por arriba" del piso de ruido para un ancho de banda dado, al final el ruido siempre gana la batalla inyectando desorden y caos en la armonía inteligente de la información que está siendo transmitida. Eso se soluciona, tradicionalmente, aceptando que ocasionalmente algo de la información será destruida por el ruido y generando los mensajes con algo de redundancia, de acuerdo a los parámetros de diseño puede ser para saber si todo un "pedazo" de la información está corrupto y hay que desecharlo pidiendo al otro extremo que lo envíe de vuelta o, en casos mas sofisticados, pudiendo incluso corregir algunos "bits" de información destruida por los mismos bits enviados en forma redundante (algoritmos de corrección). Pero al final, si la relación señal a ruido se deteriora lo suficiente, muy pocos pedazos de información pasan o no alcanzan los bits de corrección para arreglarlo, o las dos cosas. El ruido siempre gana al final del día. Estrategias para abordar esta cuestión hay muchas. La mas obvia e inmediata es aumentar la potencia lo que tiene limites prácticos puestos por la tecnología, la legislación e incluso la preferencia de los operadores. La segunda estrategia es, dado que el ruido es "blanco" y a mas ancho de banda mas energía tiene, reducir el ancho de banda de la señal. Una señal de AM tiene el doble de ancho de banda que una de SSB, a igual información. SSB siguen siendo casi 3 KHz de ancho de banda muy ineficientemente poblados por la voz humana. El modo de voz digital (Digital Voice DV) codifica digitalmente la voz en forma mucho mas eficiente en ocupar aproximadamente 1 KHz, mucho mejor aunque el modo no termina de prender, quizás no tuvo tiempo para despegar o quizás hay varios "codecs" la pieza de software que digitaliza que no son completamente compatibles y ninguno se hizo dominante. Una forma de bajar el ancho de banda, y según lo que pronostica la teoría de la información, es bajar la velocidad a la que se la transmite. La voz hablada transmite información a una tasa de muchas decenas de "bits-por-segundo" equivalentes, podemos aceptar hacerlo a menos y tendremos modos digitales como RTTY (45.5 bauds) o PSK31 (31 bps) que son mas resistentes al ruido, pero mas lentos. Nada parecía superar a la reina de los modos, la telegrafía. Con un ancho de banda teórico de algunas decenas de Hz y práctica de 100 Hz o menos permite comunicaciones relativamente lentas (25 a 30 ppm) pero que requieren menos potencia o que a igual potencia son mas resilientes en malas condiciones. Como telegrafista de cierta experiencia puedo sin dar muchos flancos a la crítica afirmar que las supuestas ventajas del CW devienen solo de su equilibrio entre velocidad (ancho de banda) e información transmitida, todo el resto es cháchara. El CW es bueno porque es lindo, es agradable y es rendidor; no hay que buscarle muchas mas explicaciones técnico-culturales, en general rebuscadas y erroneas. El CW fue desde siempre la frontera minima para poder comunicar en un circuito dado en condiciones dadas, y por cierto que muchas veces la única posible para una potencia dada. No es casual que quienes lo utilizan en condiciones de emergencia, baja potencia o precariedad de antenas lo consideren insustituible; todo estrictamente verdad, nada realmente mágico. ¿Que podemos hacer en realidad en CW? Los comunicados en CW son usualmente muy cortos, sobre todo en condiciones de concurso, DX o pileup. Dejemos de lado el martilleo que a puro gusto hay veces que hacemos con buenas condiciones de propagación a puro deleite "hablando" de distintos temas en las particulares abreviaturas que se usan en CW. Tomemos el caso de un concurso, estamos hablando de entre 4 y 6 contactos por minuto donde se intercambia la señal distintiva y el nivel de señal, quizás con un saludo final como al pasar (mas para cerrar el contacto y habilitar al siguiente que de amables). Esa es la comunicación máxima que damos por válida. Tomemos un caso menos extremo, un contacto normal pero rápido... ¿cuanto tarda? ... ¿un minuto? .. ¿dos?. O sea que aceptamos como contactos válidos aquellos en los que intercambiamos muy poca información y aceptamos invertir un minuto o dos para hacer un contacto. Si juntamos ambas cosas necesitamos menos velocidad de transmisión de información que en el CW. Y eso ya vimos que permite menos ancho de banda, y al tener menos ancho de banda permite o usar menos potencia para igual relación señal-ruido o tener mas margen de relación señal-ruido con igual potencia. Un modo mas eficiente en resumen. Y eso, exactamente eso, es lo que hacen los "modos digitales de baja señal", familia de modos de modulación que incluyen al WSPR o al FT8 entre muchos otros. En ellos el esquema es repetitivo. Un mensaje muy estructurado y conocido de antemano en su formato, se codifica con un algoritmo matemático que asegure redundancia de bits y corrección de errores. El mismo, una vez codificado, se envía "lentamente" por un canal usando modulación FSK. Para agregar menos incertidumbre se agrega un marco de sincronización de tiempo muy estricto, del orden de 1 segundo o menos, que ayuda a que mediante artilugios matemáticas pueda incluso mejorarse las chances de decodificar una señal del otro extremo. ¿Cuando mas lentamente? Bueno, WSPR se toma dos minutos por cambio. Un QSO compuesto de llamada, respuesta, señales, señales, adiós y adiós (5 a 6 cambios) puede durar 12 minutos, demasiado. Por eso el WSPR se usa como monitor de señales, uno escucha la señal al cabo de 2 minutos o no la escucha, si la escucha la reporta y si no la escucha no. FT8 usa un esquema similar, pero menos robusto, lo que permite que cada cambio dure solo 15 segundos. Entonces un contacto entero durará un minuto y fracción, similar a lo que dura un contacto similar en CW sin el frénesi de un pileup o un concurso. El llamado, la respuesta, el intercambio de señales y el adiós está codificado, no es cualquier mensaje, hay pocos datos variables (licencia, ubicación y nivel de señal) pero todo el resto está pre-definido y es rígido. Hay otros modos de comunicación, como JS8CALL, que usan el protocolo de FT8 pero para transmitir cualquier mensaje; siguen siendo muy robustos al ruido, mas que CW incluso, pero menos que FT8. ¿Que significa en números todo ésto? Una señal de SSB se acepta que debe estar para una buena legibilidad una unidad S por encima del ruido en un momento dado, es decir +6 dB. Para hacer las comparaciones entre modos uno sabe que puede reducir el ancho de banda a medida que usa modos que necesitan menos, pero para tener una comparación uniforme se utiliza como referencia la relación señal-ruido con la que el modo puede operar tomando un ancho de banda correspondiente a un canal de fonía. En tal sentido los modos digitales como RTTY o PSK31 puede operar entre 0 dB y -5 dB; CW en teoría unos -5 dB (lo que hizo ilusionar a muchos que el PSK31 podía reemplazar al CW solo que sin aprender Morse. Sin embargo el CW a oido permite al entrar a jugar la formidable combinación oido-cerebro operando como filtro el operar a -10 dB, incluso mas. FT8 puede operar a -20 dB y WSPR a -30 dB. La diferencia son abismales casi 26 dB con fonía y 10 dB con CW. Puedo hacer con 1W en FT8 lo que hago con 10W en CW y casi 500W en fonía, es abismal. Es una forma novedosa de apelar a tecnología que se conoce desde hace mucho, usada muy creativamente y con el auxilio de matemáticas muy avanzadas disponibles en abundancia con los computadores modernos.
Abordemos uno de los aspectos mas espinosos, quizás, y es la facilidad de uso. Es obvio que tecnológicamente FT8 es muy sofisticado, pero la complejidad está encapsulada en el programa que lo implementa y completamente invisible al operador. El operador configura unos pocos parámetros en su programa, define en que banda trabajar y rápidamente se le pueblan las ventanas de un montón de estaciones llamando CQ o teniendo contactos con otras. Un doble-click en cualquiera de las que llaman y el QSO puede completarse automáticamente, sin otra interacción. Suena a cazar patos, con dinamita y con los pobres patos atados a una estaca en la tierra. Demasiado facil, ¿no?. Y eso es cierto visto desde ese punto de vista. "¡Eso no es radio!" reclaman muchos. "¡Es demasiado facil, no implica ningún esfuerzo!" confirman otros. Todo eso es cierto, claro, solo que captura una parte del contexto. También es facil prender un amplificador de 1 KW y comunicar con el vecino de la otra cuadra, con el cual realmente no tenemos mucho para actualizarnos porque comunicamos ayer, y el esfuerzo no es mucho mayor, Solo que es un click en FT8 y varios clicks (en el PTT) en banda lateral. Podría estirar la metáfora indefinidamente sobre lo que es "facil" o lo que es "dificil" en radio. Ciertamente es radio, si usa RF y sale por una antena tengo que tener licencia, equipos y antenas; y cualquiera que los haya puesto en funcionamiento sabe que no se consiguen solos. Después en función el mérito, el esfuerzo y el estudio se comunicará en condiciones muy precarias o muy fáciles, depende de como se divierta mas el operador. Efectivamente con un click en FT8 inicio la secuencia del contacto, y el mismo es trivial si al corresponsal lo recibo a -5 dB, algo de esfuerzo si lo recibo a -10 dB, bastante esfuerzo a -15 dB y me tengo que pelar el alma para contactarlo a -20 dB. Supuesto que sea el único que quiera hacerlo, porque si hay muchos otros va a ser incluso mas dificil (pileup). Y recordemos que toda la actividad mundial de FT8 ocurre en solo 2 KHz de cada banda, es un guiso de gente..... Entonces, dá la casualidad, que las estaciones interesantes (los DX) muy a menudo entran a -20 dB y dan mucho mas trabajo que un "click-click", realmente hay que estudiar la propagación, levantarse temprano, encontrar banda y ventanita de algunos minutos para el contacto, insistir, buscar el hueco entre llamados de la competencia y finalmente, hacer el contacto. El esfuerzo, luego de haber hecho muchos QSO, no es significativamente mas facil que hacer contactos de pileup en CW con manipulador automático o teclado. Es mas facil de usar, pero solo marginalmente y en determinados contextos. En otros no es muy diferente.
Resultados prácticos y coyuntura de propagación van muy de la mano. Estamos en el mínimo del ciclo de manchas solares, por momentos parecía otro mínimo de Maunder (ausencia total de manchas solares) y eso hace que las bandas altas estén muertas la mayor parte del tiempo, excepto quizás a nivel regional. Bandas intermedias como 30,20 y 17 metros tienen aperturas pero mas breves y con mas ruido. Las bandas bajas, 40 metros para arriba, tienen su época de gloria. El ruido baja, la absorción en capas atmosféricas menores (layer D fundamentalmente) se reduce y las distancias se incrementan. Pero las aperturas son por el camino obscuro, en altas horas de la noche y breves. Históricamente los minimos solares representaron un mínimo de actividad de radioaficionados, por lo menos en bandas de HF y no tanto en bandas como VHF o UHF que no son afectadas excepto en raras ocasiones por los mínimos. Y siempre se pudo pilotear los mínimos con potencia hasta cierto punto. Pero usar FT8 es como tener un amplificador de 500 W con un dipolo, o una antena direccional con 100W en fonía. Y entonces cuando las condiciones están "cerradas" aún así se puede comunicar. Entonces muchas estaciones que antes no tenían chances de tener actividad ahora la tienen, incluso actividades de DX, incluso por tiempos prolongados. No es casualidad que mas del 90% del tráfico reportado por los sitios automáticos (clusters, RBN, pskreporter por ejemplo) sean correspondientes a FT8.
Y eso nos lleva a uno de los aspectos restantes, la infraestructura. ¿Que se necesita para hacer FT8? Podríamos decir que una estación normal, mas una antena normal, mas una computadora normal. Nada que ya no esté en la mayoría de las estaciones. No se necesita, en la enorme mayoría de las estaciones nada mas que lo que ya tienen, en realidad pueden hacer "mas" con lo que ya tienen, y ese es un gran atractivo. Pero al mismo tiempo se puede hacer mas en condiciones mas precarias. Si tengo un equipo QRP, con el que alimento una antena long wire a baja altura en condiciones precarias (portátiles por gusto o de emergencia por necesidad), incluso con limitaciones de energía; podría en esas condiciones tener una expectativa de contactar como si tuviera una estación de -10 dB de desventaja, es decir como una estación convencional de 500 mW. Cualquiera que haya jugado con QRPp sabe que con esas potencias se puede contactar, y muchas veces buenos contactos, sobre todo con una buena antena. Y en FT8 equivalen quizás a 50W en fonía sobre una buena antena, por lo que realmente rinde, rinde mucho aún en condiciones muy precarias. Otros proyectos reportados en éste blog muestran el enorme potencial técnico y de uso de contar con solo 100 mW de potencia (¡!) en modos digitales de baja potencia. La "poca" infraestructura necesaria es un enorme atractivo.
Lo que nos lleva al último punto, suerte. ¿Que tiene que ver la suerte con un modo de comunicación, de radioaficionados encima?. Mucho, creo. Tuvimos suerte que un premio Nobel de fìsica fuera radioaficionado (Joe Taylor), que fuera además un radio astrónomo y que se entrenara por años en entender la dinámica de las señales del espacio intergaláctico profundo para estudiar fenómenos desconocidos, descubriendo el fenómeno Pulsar en el camino. Y que se cruzó con otro genio, Steve Franke (K9AN), especialista en protocolos de comunicaciones, para que juntos alumbraran el programa WSJT-X en un espeso uso de la matemática de alto vuelo necesaria para implementar diferentes modos de baja señal (incluso, varios no mencionados en ésta entrada). Si un aficionado tuviera que aprender esa matemática para hacer FT-8 su popularidad sería órdenes de magnitud menor; nada es secreto, cualquier buen ingeniero con su formación completa y un postgrado en procesamiento digital de señales no tendría dificultad en entenderlo e implementarlo, esa sería la audiencia, supuesto que le interese además ser radioaficionado. Suerte. He esbozado éstos conceptos, mi opinión en definitiva, parcialmente en varios ámbitos cuando algunos atacan el modo, y por transitiva a mi juicio tontamente adjetivando a quienes lo usan. Con mucha frecuencia observo que lo hacen telegrafistas, no se si será algún tema de índole gremial o que, pero siendo telegrafista yo mismo me siento capacitado para exponer argumentos sin que facilmente se pueda argumentar que mi "odio" hacia el CW es lo que realmente me impulsa.

decode_FT8

Pero ¿a que viene toda ésta introducción? ¿donde aparece algo llamado "decode_FT8" en ella?
Este programa es un experimento, uno exitoso debo agregar, de desplegar una prueba de concepto.
Usando la plataforma "PixiePi" o "OrangeThunder" pude mostrar en sendas entradas anteriores como distintos experimentos me llevaron a construir un hardware original para modos digitales de baja señal, WSPR y FT8 entre ellos. Pero en ambos casos usaba el programa WSJT-X. Lucia un poco mas dificil que cazar patos atados con dinamita, pero quizás solo un poco. Asi que me pregunté que debería hacer para extender el microcódigo que ya había escrito para implementar los transceptores (en su costado embebido) para que, además, pudiera recibir y transmitir en FT8 sin usar el programa WSJT-X. Eso es una buena prueba (para mi mismo, y por diversión, por cierto) que no solo usaba el modo, sino que lo entendía en forma profunda. Escribir la parte transmisora es trivial, realmente, hace años que uso mi baliza WSPR con esa tecnología, la que no difiere mucho de transmitir en FT8, solo detalles en como de codifica el mensaje y como se controla su longitud. También la máquina de estados finitos para implementarlo es un poco mas complejo en FT8 al tener varios "cambios" comparado con WSPR el cual solo emite. Pero no se puede hacer algo híbrido entre mi programa transmitiendo y WSJT-X recibiendo, porque el programa está diseñado para no poder ser ejecutado automáticamente (una decisión editorial de Steve y Joe para que no se construyan, facilmente al menos, robots con el ). El programa que recibe debe poder controlar también la recepción.
Obviamente la descripción matemática que hay en el sitio del WSJT-X es un sobrevuelo, y la que hay en la documentación también. Es necesario ir a al código para entender la matemática involucrada. Y el código para sorpresa de nadie considerando que fue escrito por un astrónomo está codificado en ... Fortran 90. Ese lenguaje fue uno de los primeros que se usó en computadoras, lenguaje por excelencia en los primeros tiempos de la computación científica y usando el cual se desarrollaron cientos de millones de lineas de código con algoritmos, funciones, fórmulas y procedimientos matemáticos de todo tipo. Desde entonces, y por los últimos 50 años, quienquiera aborde un problema técnico espeso en términos matemáticos es muy probable que enfrente escribir un volumen muy considerable de lineas de código desde cero o use librerías existentes escritas en ... Fortran 90 alguno de sus antecesores tan atrás como Fortran IV o tan recientes como Fortran 2008. Las mismas se usan hoy con y desde cualquier lenguaje, termina siendo inmaterial desde que lenguaje se llama a una función, en sus entrañas mismas se ejecuta en muy veloz código de máquina compilado cuyo archivo fuente reside en alguna parte en ... Fortran IV. Estamos hablando de un lenguaje inventado 20 años antes que el primer experimento usando lenguaje C.... 50 años atrás....
Pero mas alla de las fórmulas matemáticas no hay razón para escribir el resto del programa en Fortran 90, pero si para entenderlo. ¿Como hago para saber Fortran 90?. Bueno, historia larga, pero su versión corta es que fue el primer lenguaje que aprendí cuando empecé a estudiar Ingeniería a mediados de la década del 70, y fue mi sustento como programador durante varios años en una empresa que usaba una computadora que se programaba con el. Uno no se olvida de ciertas cosas, ciertamente no del primer programa en el que alguna vez programó. Asi que, si, pude seguir las rutinas en Fortran 90 del WSJT-X con cierto nostálgico deleite. Una vez entendido era solo cuestión de ver como encaptular las librerías de Fortran 90 involucradas o traducirlas a C. No hacía falta, Karlis Goba (YL3JG) ya lo hizo en su paquete ft8_lib. Alli están todas las manipulaciones necesarias para decodificar FT8. Solo hay que tomar la señal de audio, procesarla digitalmente con algún filtrado, llamar las funciones en el orden necesario, definir los límites y sensibilidades del sistema, manejar los errores y decodificar las señales. Suena simple. No lo es.
Pero luego de un considerable masajeo, en particular en manejar las condiciones de error y las sensibilidades del sistema, finalmente empezaron a aparecer los "frames" decodificados de FT8. El receptor (transceptor en realidad) implementado de ésta forma permite hacer contactos en FT8 completamente sin WSJT-X. Sin embargo, es claro que su "sensibilidad" es menor que la de WSJT-X, escucha menos estaciones, en particular no escucha las mas débiles (¡!). ¿Porque? Rápidamente empezó a ser claro porque. El algoritmo revisa toda la banda pasante (2 KHz) buscando señales "candidatas", las que pueden ser señales reales de una estación emitiendo en FT8 o espurias de distinto tipo o picos de ruido simplemente. Integrando durante los 15 segundos que dura el frame FT8 la persistencia de señales permite ir segregando las que son candidatas a ser válidas o ser ruido, y a su vez que tan sólidas son en términos de su nivel sobre el ruido. Ese análisis se cuenta con solo un par de segundos para hacerlo, desde que termina el ciclo de emisión de todas las señales y que comienza el próximo, en un par de segundos hay que revisar una veintena de señales candidatas (o más) a lo largo de casi 15 segundos de emisión. Para asegurar algo esas señales se enlistan ordenadas de "mas probable a menos probable" usando un indicador de calidad que se deriva del procesamiento digital de las señales para hacer ese ordenamiento. Para las señales candidatas resta todavía hacer la demodulación del frame, tarea matemáticamente intensa por su parte. Como resultado, cuanta mas potencia de procesamiento se dispone mas chances hay de procesar señales mas profundo en la lista. Y las señales cuanto mas débiles mas profundas en la lista se encuentran. Por lo tanto, potencia de procesamiento implica sensibilidad de radio. Relación impensada para la mayoría, pero muy familiar para los radio astrónomos.
En términos prácticos resulta un calce perfecto, disponer de mas potencia de procesamiento implica escuchar señales mas débiles. Pero con 100 mW de potencia es limitada la posible clientela de posibles candidatos que nos puedan escuchar, estaremos por nuestra parte lejos del tope en sus listas de decodificación. Por lo tanto hay un equilibrio muy bueno entre lo que el algoritmo escucha y lo que el transceptor puede comunicar con solo 100 mW.
Con orgullo agrego a mis comentarios favorables al FT8 "soy un telegrafista y he escrito mis propios programas para FT8", nadie puede argumentar sólidamente que rechazo el CW ni que me atrae lo facil del FT8.

1 comentario: