Por diversión, he estado usando AirSPy SDR (Software Defined Radio) para recibir y decodificar paquetes ADS-B, principalmente mensajes DF-11 y DF-17.
El código está escrito en C++ y funciona razonablemente bien. Realiza procesamiento/demodulación de IQ, extracción de paquetes, verificación de CRC, etc. Como salida, genera cadenas de mensajes con formato AVR que luego se sirven a través de una interfaz basada en Listen Socket/Socket. Luego uso Virtual Radar como cliente para decodificar y mostrar los datos.
Con respecto a los paquetes DF-17 y DF-11, actualmente solo estoy reenviando los que tienen una ID de interrogador de cero, los llamados "scutters no solicitados". es decir, paquetes completos que tienen un resto cero después de CRCing.
También recibo / decodifico muchos paquetes que tienen ID de interrogador distintas de cero.
¿Puedo usar esto para algo útil?
En otras palabras, ¿podría extraer información útil, posiciones, velocidades, etc.? Si es así, podría volver a escribirlos como mensajes DF-17 no solicitados y pasarlos a Virtual Radar.
Estoy investigando esto lo mejor que puedo, pero actualmente me estoy ahogando en especificaciones y documentación, ya que parece haber mucho de eso.
Disculpas si no he usado algo de la jerga, solo llevo una semana en mi proyecto.
Los mensajes con formato de enlace descendente 17 son, como usted sabe, mensajes ADS-B que no requieren interrogación. Como tal, la identificación del interrogador será cero.
Con frecuencia verá que, después de aplicar la comprobación de CRC, el resto de CRC es distinto de cero. Esto es causado por la corrupción del mensaje ADS-B entre el transmisor (ver nota) y el receptor. Esto se debe en parte a que las transmisiones de varias aeronaves no están sincronizadas, por lo que pueden superponerse y volverse difíciles de desenredar. Esta superposición se llama distorsión.
Dado que tiene información de IQ disponible, es posible que pueda descifrar mensajes superpuestos con cierto éxito. Además, puede intentar corregir errores utilizando el algoritmo CRC. Por lo general, se pueden corregir hasta dos bits maliciosos, más que eso se vuelve difícil.
Para mejorar el rendimiento de la corrección de errores de CRC, puede volver a utilizar la información del muestreo de IQ, otorgando a cada bit un valor de confianza basado en la forma de los datos de radio recibidos.
Si no puede corregir los bits de error (es decir, tiene un resto distinto de cero después de la corrección), debe considerar ese mensaje ADS-B como inútil.
Nota: hay un par de aviones que vuelan con transpondedores maliciosos que transmiten mensajes DF-17 basura con un resto distinto de cero. Se eliminarán gradualmente en los próximos dos años.
De acuerdo con lo que pude encontrar en el Anexo 10, se supone que los mensajes DF-17 siempre tienen cero ID de interrogador, por lo que si obtiene alguno de los que no pasan la verificación de paridad, deben haber sido distorsionados.
Por otro lado, los mensajes DF-11 a menudo se enviarán con una ID de interrogador distinta de cero. Como se especifica, la ID del interrogador después de eliminar el CRC siempre estará entre 0x000001 y 0x00005F; puede usar eso para retener cierta cantidad de distinción entre un mensaje ilegible y una respuesta de llamada general legítima.
Si esto es útil es un asunto diferente, ya que DF-11 básicamente no le dice nada, excepto que hay un avión con tal o cual dirección de 24 bits en algún lugar a la vista de su antena. Pero si también recibe señales espontáneas de posición de la misma aeronave, supongo que podría divertirse construyendo un mapa de dónde en su área de cobertura se pueden escuchar interrogaciones de instalaciones de radar particulares.
DeltaLima