Recepción de mensajes ADS-B en Raspberry Pi

ADS-B (Automatic Dependent Surveillance Broadcast) es una tecnología de control en la que un avión determina su posición a través de la navegación por satélite y la emite periódicamente, lo que permite realizar su seguimiento.

En este artículo veremos como convertir una Raspberry Pi en un receptor de mensajes ADS-B y poder determinar y visualizar la posición de las aeronaves que sobrevuelan nuestra ubicación.

Lo primero que haremos será instalar nuestro dispositivo SDR, si todavía no lo hemos hecho, siguiendo los pasos descritos en “Instalación de dispositivos RTL-SDR en Raspberry Pi”.

Instalación de dump1090

Vamos a instalar la versión de dump1090 mantenida por FlightAware, ya que está actualizada y nos instala y levanta un servidor web en el que podemos ver las aeronaves sobre el mapa sin muchas complicaciones.

El primer paso es instalar el repositorio de FlightAware en nuestra Raspberry Pi dependiendo de la versión de Raspbian que tengamos. También podemos generar paquetes para otras distribuciones siguiendo los pasos descritos aquí.

Si no conocemos la versión de Raspbian, podemos consultarla ejecutando:

1
cat /etc/os-release | grep VERSION_CODENAME
  • Repositorio para Raspbian Buster:
    1
    wget https://flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.8.1_all.deb
    1
    sudo dpkg -i piaware-repository_3.8.1_all.deb
  • Repositorio para Raspbian Stretch:
    1
    wget https://flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_3.8.1~bpo9+1_all.deb
    1
    sudo dpkg -i piaware-repository_3.8.1~bpo9+1_all.deb
    Una vez instalado el repositorio correspondiente ejecutamos:
    1
    sudo apt update
    Ahora instalamos dump1090:
    1
    sudo apt install -y dump1090-fa
    Podemos ajustar las opciones de dump1090 en su archivo de configuración:
    1
    sudo nano /etc/default/dump1090-fa
    Editamos la siguiente línea con la ganancia y valor de PPM. Es aconsejable establecer un valor para la ganancia, ya que por defecto el nivel viene establecido en automático (-10) y no siempre proporciona buenos resultados.
    Si tenemos más de un dispositivo SDR conectado introducimos su número de serie en device-index.
1
RECEIVER_OPTIONS="--device-index 0 --gain -10 --ppm 0"

Reiniciamos el servicio para que se apliquen los cambios.

1
sudo service dump1090-fa restart

Por último, accedemos a nuestra Raspberry Pi desde cualquier navegador web:

1
http://IP_RASPBERRY:8080/

Esta interfaz web utiliza el puerto 8080 por defecto. Si queremos cambiarlo editamos el archivo de configuración de Lighttpd:

1
sudo nano /etc/lighttpd/conf-enabled/89-dump1090-fa.conf

Editamos la siguiente línea y modificamos el puerto 8080 por el que queramos utilizar:

1
$SERVER["socket"] == ":8080" {

Por último reiniciamos el servicio para que se apliquen los cambios:

1
sudo service lighttpd restart

Enviar datos a FlightAware

FlightAware es una compañía con sede en Houston (TX, Estados Unidos) que ofrece servicios de software y datos para aviación. Esta compañía ofrece información de seguimiento de aeronaves de forma gratuita desde su página web y sus aplicaciones para móviles. Es actualmente la mayor plataforma de seguimiento de vuelos.

Podemos reenviar los datos de seguimiento a FlightAware desde nuestra Raspberry Pi. Estos serán utilizados para el seguimiento a nivel global y a cambio recibiremos una suscripción Enterprise.

Los pasos para enviar los datos son los siguientes:

  1. Lo primero será registrarnos en FlightAware:

https://es.flightaware.com/account/join

  1. Instalamos piaware. Este software será el encargado de establecer la comunicación con el servidor de FlightAware para enviar los datos y recibir ajustes.
    1
    sudo apt install -y piaware
  2. Podemos ajustar piaware para que se actualice de forma automática y para que podamos actualizarlo desde la interfaz web de FlightAware.
    Si queremos que se actualice automático ejecutamos:
    1
    sudo piaware-config allow-auto-updates yes
    Si queremos que se pueda hacer de forma manual vía web ejecutamos:
    1
    sudo piaware-config allow-manual-updates yes
  3. Reiniciamos el servicio para que se apliquen los ajustes.
    1
    sudo service piaware restart
  4. Accedemos a la siguiente dirección para vincular nuestra Raspberry Pi con la cuenta que acabamos de crear. Si accedemos desde la misma dirección IP que tiene la Raspberry Pi, la detectará de forma automática.

https://flightaware.com/adsb/piaware/claim

  1. Vamos a nuestro panel de control y abrimos las opciones de configuración.
  1. Por último, introducimos nuestros datos de latitud, longitud y altitud para poder usar el seguimiento con MLAT y reiniciamos el servicio desde la propia web pulsando el botón Send.

Enviar datos a AirNav RadarBox

RadarBox es una compañía con sede en Tampa (FL, Estados Unidos) que ofrece servicios de información de vuelos. Podemos compartir los datos que recibimos en nuestra Raspberry Pi con RadarBox y a cambio obtendremos una suscripción Business.

Las pasos que seguiremos son los siguientes:

  1. Instalamos rbfeeder. Será el programa que envíe los datos al servidor.

    1
    sudo bash -c "$(wget -O - http://apt.rb24.com/inst_rbfeeder.sh)"

    Cuando pregunte si queremos instalar dump978-rb le decimos que no.

  2. Instalamos el cliente de MLAT. La siguiente versión es para Raspbian. Si necesitamos paquete para otra versión, podemos generarlo siguiendo los pasos descritos aquí.

    1
    wget https://sdr-es.com/2020/05/03/seguimiento-aviones-raspberry-pi/mlat-client_0.2.11_armhf.deb
    1
    sudo dpkg -i mlat-client_0.2.11_armhf.deb
  3. Nos registramos en RadarBox.

https://www.radarbox.com/register

  1. Una vez registrados necesitamos vincular nuestro receptor con RadarBox. Para ello usaremos la clave que nos genera rbfeeder la primera vez que se conecta al servidor. Consultamos la clave con el comando:
    1
    sudo rbfeeder --showkey --no-start
  2. Accedemos a esta dirección, introducimos nuestra clave en Sharing Key y pulsamos en CLAIM!.

https://www.radarbox.com/raspberry-pi/claim

  1. Por último introducimos nuestras coordenadas cuando nos lo pida.

Enviar datos a ADS-B Exchange

ADS-B Exchange es un servicio colaborativo de datos de seguimiento y es la mayor fuente de datos de vuelos sin filtrar. En este caso no obtendremos beneficios como suscripciones, ya que este servicio ofrece todos los datos de forma gratuita para fines no comerciales.

Para enviar nuestros datos a ADS-B Exchange tendremos que ejecutar un script de instalación que realizará el proceso de forma sencilla. Para ello ejecutamos el siguiente comando:

1
sudo bash -c "$(wget -nv -O - https://raw.githubusercontent.com/adsbxchange/adsb-exchange/master/install.sh)"

Se iniciará un asistente instalación en el que debemos indicar un nombre para nuestro feeder y nuestra posición para los cálculos de MLAT.

Una vez finalice el asistente, ya estaremos conectados y enviando datos a ADS-B Exchange. Para conocer el estado del servicio tenemos los siguientes enlaces:

Opcionalmente, podemos instalar la herramienta proporcionada por ADS-B Exchange para ver online los datos que estamos enviando desde nuestro receptor en tiempo real. Para instalarla basta con ejecutar el siguiente comando:

1
sudo bash -c "$(wget -nv -O - https://raw.githubusercontent.com/adsbxchange/adsbexchange-stats/master/stats.sh)"

Una vez instalada, ejecutamos el siguiente comando para obtener nuestra URL personalizada en la que consultar los datos:

1
adsbexchange-showurl

Obtendremos una URL que debemos copiar e introducir en el navegador web. Una vez accedemos, tendremos dos enlaces que nos llevarán a una página con los datos de las aeronaves que estamos recibiendo en nuestra estación y a un visor con el mapa en tiempo real. Podemos consultar el funcionamiento de las distintas opciones del visor en este enlace.

Enviar datos a Flightradar24

Flightradar24 es una compañía europea con sede en Estocolmo (Suecia) que ofrece servicios de información de vuelos. Compartiendo nuestros datos con Flightradar24 obtendremos una suscripción Business.

Lo primero sera registrarse en Flightradar24.

https://www.flightradar24.com/premium/signup

Para enviar los datos debemos descargar e instalar fr24feed. Para ello ejecutamos el siguiente comando y seguimos los pasos del asistente de instalación.

1
sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"
  1. Introducir el correo electrónico con el que nos hemos registrado.
    1
    Step 1.1 - Enter your email address (username@domain.tld)
  2. Si tenemos ya una clave previa la introducimos. En caso contrario lo dejamos en blanco.
    1
    2
    3
    4
    5
    Step 1.2 - If you used to feed FR24 with ADS-B data before, enter your sharing key.
    If you don't remember your sharing key, you can find it in your account on the website under "My data sharing".
    https://www.flightradar24.com/account/data-sharing

    Otherwise leave this field empty and continue.
  3. Introducimos yes para activar MLAT.
    1
    Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes
  4. Introducimos nuestras coordenadas y altitud.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

    Step 3.A - Enter antenna's latitude (DD.DDDD)

    Step 3.B - Enter antenna's longitude (DDD.DDDD)

    Step 3.C - Enter antenna's altitude above the sea level (in feet)

    Using latitude: 37.XXXX, longitude: -3.XXXX, altitude: 720ft above sea level

    Validating email/location information...OK

    The closest airport found is ICAO:LEGR IATA:GRX near Granada.

    Latitude: 37.188728
    Longitude: -3.777350
    Country: Spain

    Flightradar24 may, if needed, use your email address to contact you regarding your data feed.

    Would you like to continue using these settings?

    Enter your choice (yes/no)$:yes
  5. Introducimos yes para que usar la configuración automática y que utilice la instancia de dump1090 que ya tenemos instalada.
    1
    2
    3
    We have detected that you already have a dump1090 instance running. We can therefore automatically configure the FR24 feeder to use existing receiver configuration, or you can manually configure all the parameters.

    Would you like to use autoconfig (*yes*/no)$:yes
  6. Activamos el log si queremos. No es necesario.
    1
    2
    3
    4
    5
    Step 6 - Please select desired logfile mode:
    0 - Disabled
    1 - 48 hour, 24h rotation
    2 - 72 hour, 24h rotation
    Select logfile mode (0-2)$:0
  7. Por último, reiniciamos el servicio.
    1
    sudo systemctl restart fr24feed