Création d'un récepteur ADS-B avec un Raspberry PI et un dongle TNT USB

© Copyright 2015, Christophe Wolfhugel
Dernière mise à jour : 13 avril 2015


Introduction

Les sites de suivi des trajectoires des avions en temps réel (ou presque) sont de plus en plus utilisés. Ces sites collectent les données fournies non seulement par l'aviation civile, mais également par des stations au sol déployées par eux même en des lieux intéressants. En plus de cela, il est possible à tout amateur qui le souhaite de contribuer en installation, pour un coût de quelques dizaines d'Euros, sa propre station de réception capable de décoder les signaux ADS-B envoyés par certains avions et de les envoyer vers deux des sites les plus connus pour le suivi des avions.

Cet article décrit brièvement comment, pour moins de 80 €, j'ai pu installer ma propre station ADS-B transportable avec un Raspberry PI 2 et un adapteur USB pour la télévision numérique terrestre (TNT / DBV-T). Cette petite installation est représentée ici:

Les données ainsi collectées sont envoyées en temps réel vers les collecteurs des sites suivants :

Ces deux sites fournissent également le logiciel nécessaire ainsi que de bons conseils pour la préparation de votre installation. Le lecteur pressé pourra directement consulter les sites suivants (en anglais) qui m'ont aidé à mettre en œuvre mon installation:

Et voici le résulat final en quelques photos (cliquez sur la photo pour l'agrandir) :

Vue d'ensemble
antenne intérieure, Raspberry PI 2, dongle USB
Vue de près
Raspberry PI 2 et dongle USB

Un excellent article, en français, sur le même sujet : http://www.fanjoe.be/?p=1288

Liste des courses

Afin de réaliser votre station de réception ADS-B « amateur » il vous faudra le matériel suivant :

Pour le dongle USB TNT, outre le circuit RTL-SDR vous devez aussi vous assurer qu'il soit capable de recevoir la fréquence 1090 Mhz qui est celle utilisée par les aéronefs pour émettre leur signal ADS-B. Pour ma part je n'ai pas vraiment innové et je me suis contenté d'acheter pour 23 € ce qui semble être le modèle photographié dans de nombreux articles et que vous pourrez trouver ici ainsi que chez d'autres fournisseurs, comme par exemple celui-ci.

Si vous décidez d'utiliser une autre antenne que celle fournie, un petit point de détail, le dongle USB propose un connecteur MCX, il vous faudra peut être un adaptateur. Je n'ai à ce jour pas essayé de connecter le dongle sur l'antenne de télévision collective, et de toutes façons je doute que celle-ci transporte la fréquence 1090 Mhz, mais je suis agréablement surpris de la portée de l'antenne intérieure : proche du sol, mon récepteur a une portée d'environ 25 miles nautiques (environ 46 km), mais cette couverture n'est pas sur un cercle de 360° . Couverture géographique

Installation des logiciels

L'installation des logiciels va dépendre de votre souhait d'envoyer les données à la fois à FlightAware et Flightradar24 ou pas. Pour ma part, j'envoie les données aux deux et l'installation s'est faite en mettant d'abord en œuvre le logiciel « pi-aware » et ensuite seulement « fr24feed ». L'ordre d'installation est important, car les deux programmes vont faire appel à « dump1090 » qui est le logiciel en charge de la gestion du récepteur ADS-B, et chaque éditeur dispose de sa propre version : dans mon installation, c'est « dump1090 » fourni par « pi-aware » qui sera utilisé par les deux clients.

Choix de la distribution Linux : mon Raspberry PI tourne la distribution Debian (« raspbian ») qui a été mise à jour en « sid », mais si vous utilisez encore « jessie », il n'y a pas de raisons que cela ne fonctionne pas. FlightAware propose sa propre distribution prête à l'emploi, basée due Raspbian : je ne l'ai pas essayée car j'utilise le Raspberry pour d'autres fonctions également.

Installation de « pi-aware » (FlightAware)

Recupérez les paquets Debian suivants :

Page d'origine: http://flightaware.com/adsb/piaware/install.

Installez ces paquets comme à l'habitude avec debian:

# dpkg -i dump1090_1.1-1_armhf.deb piaware_1.20-1_armhf.deb
Il vous faudra également installer les dépendances manquantes :
# apt-get -f install
Vient ensuite la phase de configuration, pour cela vous devez disposer d'un compte sur FlightAware, si ce n'est pas déjà le cas, enregistrez-vous car vous aurez besoin de l'identifiant et du mot de passe pour envoyer vos données ADS-B vers le collecteur. Pour la configuration :
# piaware-config -autoUpdate 0|1 -manualUpdate 0|1
# piaware-config -user votre-identifiant-flightaware -password
Pour ma part, j'ai mis autoUpdate et manualUpdate sur zéro, vu que je ne veux pas de mises à jour automatiques qui risqueraient de casser d'autres logiciels. Il me faudra donc régulièrement rechercher et appliquer les mises à jour. Enfin, dernière étape: redémarrer les services :
# service fadump1090.sh restart
# service piaware restart
Les processus suivants doivent tourner :
20566 ?        Sl     0:18 /usr/bin/dump1090 --quiet --net
20592 ?        Sl     0:00 /usr/bin/piaware -p /var/run/piaware.pid
Vous remarquerez que le programme dump1090 est gourmand en CPU : sur mon PI 2, environ 20% (mais le PI 2; est un quad-core, rappelez-vous).

Et si tout fonctionne correctement vous devrier trouver ceci dans /tmp/piaware.out :

04/13/2015 09:25:55 ****************************************************
04/13/2015 09:25:55 piaware version 1.20 is running, process ID 20592
04/13/2015 09:25:55 your system info is: Linux pi2.wolfhugel.eu 3.18.7-v7+ #755 SMP PREEMPT Thu Feb 12 17:20:48 GMT 2015 armv7l GNU/Linux
04/13/2015 09:25:55 connecting to FlightAware eyes.flightaware.com/1200
04/13/2015 09:25:55 FlightAware server SSL certificate validated
04/13/2015 09:25:55 encrypted session established with FlightAware
04/13/2015 09:25:55 autoUpdate is not configured in /etc/piaware or by piaware-config
04/13/2015 09:25:55 manualUpdate is not configured in /etc/piaware or by piaware-config
04/13/2015 09:25:56 ADS-B data program 'dump1090' is listening on port 30005, so far so good
04/13/2015 09:25:56 i see dump1090 serving on port 10001
04/13/2015 09:25:56 connecting to dump1090 on port 10001...
04/13/2015 09:25:56 piaware is connected to dump1090 on port 10001
04/13/2015 09:25:56 dump1090 is listening for connections on FA-style port 10001
04/13/2015 09:25:56 piaware received a message from the ADS-B source!
04/13/2015 09:25:56 logged in to FlightAware as user cwolfhugel
04/13/2015 09:26:26 piaware has successfully sent several msgs to FlightAware!
04/13/2015 09:26:26 9 msgs recv'd from dump1090; 7 msgs sent to FlightAware
04/13/2015 09:26:55 server is sending alive messages; we will expect them
04/13/2015 09:31:26 115 msgs recv'd from dump1090 (106 in last 5m); 113 msgs sent to FlightAware
04/13/2015 09:36:27 223 msgs recv'd from dump1090 (108 in last 5m); 221 msgs sent to FlightAware
Le programme piaware envoie ses données par le protocole TCP sur le port 1200 à eyes.flightaware.com comme le montre un lsof.

Installation de « fr24feed » (Flightradar24)

Il est nécessaire que le programme dump1090 installé précédemment tourne, afin de permettre à fr24feed de détecter sa présence et de se configurer de façon adéquate. Le paquet Debian est le suivant: fr24feed_1.0.12-3_armhf.deb et s'installe comme d'habitude :

# dpkg -i fr24feed_1.0.12-3_armhf.deb
La documentation est disponible uniquement sous la forme d'un fichier PDF : fr24feed-manual.pdf et elle décrit correctement la mise en service du logiciel qui se passe en quelques étapes fort simples.

Si ceci est la première utilisation du logiciel, vous devez recevoir une clé d'activation, pour cela utilisez:

# fr24feed --signup
Si vous n'avez pas de clé d'activation de votre « radar », laissez le champ vide et vous en recevrez une par courrier électronique. Si j'ai bien compris, cette clé identifie votre station et sa position. Cette phase d'activation est aussi celle qui détectera la présence d'un logiciel dump1090 déjà actif et qui l'utilisera.

Si vous disposez déjà d'une clé vous pouvez reconfigurer le logiciel :

# fr24feed --reconfigure --fr24key=votre-clé-en-héxadécimal
Et n'oubliez pas de démarrer ou redémarrer votre logiciel :
# service fr24feed restart
Le fichier de configuration s'appelle /etc/fr24feed.ini, et dans mon cas il contient (à peu près) ceci :
receiver="avr-tcp"
fr24key="ma-clé-en-héxadecimal"
host="127.0.0.1:30002"
bs="no"
raw="no"
logmode="2"
Le port 30002 est celui utilisé par dump1090 pour diffuser les informations collectées depuis les aéronefs.

Lorsque le programme fr24feed démarre et qu'il a été configuré pour enregistrer un journal, dans mon vas /var/log/fr24feed.log voici les messages auxquels il faut s'attendre si tout fonctionne correctement :

2015-04-13 09:17:08 | [main][i]FR24 Feeder/Decoder [0x02117000]
2015-04-13 09:17:08 | [main][i]Version: 1.0.12-3/generic
2015-04-13 09:17:08 | [main][i]Built on 20150209-1316 (r:master-0a6ad34.git/Linux/armv6l)
2015-04-13 09:17:08 | [main][i]Copyright 2008-2015 (c) Piotr Pawluczuk
2015-04-13 09:17:08 | [main][i]Flightradar24 AB(http://flightradar24.com)
2015-04-13 09:17:08 | [main][i]DNS mode: LIBC/PING
2015-04-13 09:17:08 | [httpd][i]Server started, listening on 0.0.0.0:8754
2015-04-13 09:17:08 | [main][i]Reader 0 started
2015-04-13 09:17:08 | [time][i]Synchronizing time via NTP
2015-04-13 09:17:08 | [master][i]Starting processing thread
2015-04-13 09:17:08 | [reader][i][0]Initializing reader
2015-04-13 09:17:08 | [reader][i][0]Connecting to Generic receiver via (avr-tcp://127.0.0.1:30002)
2015-04-13 09:17:08 | [reader][i][0]Connected to the receiver, authenticating
2015-04-13 09:17:08 | [reader][i][0]Authenticated, processing messages
2015-04-13 09:17:09 | [time][e]Failed to synchronize time
2015-04-13 09:17:09 | [main][w]Failed to synchronize time, waiting 5 seconds
2015-04-13 09:17:14 | [time][i]Synchronizing time via NTP
2015-04-13 09:17:16 | [time][e]Failed to synchronize time
2015-04-13 09:17:16 | [main][w]Failed to synchronize time, waiting 5 seconds
2015-04-13 09:17:19 | [time][i]Synchronizing time via NTP
2015-04-13 09:17:25 | [time][i]Time synchronized correctly, offset +3165.0049 seconds
2015-04-13 09:17:25 | [main][i]Feed Network client started
2015-04-13 09:17:25 | [feed][i]Downloading configuration
2015-04-13 09:17:25 | [feed][c]Interval: 5s
2015-04-13 09:17:25 | [feed][c]Latitude: 48.8300
2015-04-13 09:17:25 | [feed][c]Longitude: 2.2800
2015-04-13 09:17:25 | [feed][c]GND: YES
2015-04-13 09:17:25 | [feed][c]NonADSB: YES
2015-04-13 09:17:25 | [feed][c]Timestamps: optional
2015-04-13 09:17:25 | [feed][c]Max range AIR: 350.0nm
2015-04-13 09:17:25 | [feed][c]Max range GND: 100.0nm
2015-04-13 09:17:25 | [stats][i]Stats thread started
2015-04-13 09:17:25 | [feed][i]defined 1 server
2015-04-13 09:17:25 | [feed][n]LFPI3@83.140.21.66:8099/UDP
2015-04-13 09:17:25 | [feed][n]connecting
2015-04-13 09:17:26 | [feed][n]connected
2015-04-13 09:17:26 | [feed][n]switching to UDP
2015-04-13 09:17:26 | [feed][n]working
2015-04-13 09:17:27 | [feed][i]sent 1 AC in 1 packet
2015-04-13 09:17:32 | [feed][i]sent 2 AC in 1 packet
2015-04-13 09:17:37 | [feed][i]sent 2 AC in 1 packet
2015-04-13 09:17:43 | [feed][i]sent 1 AC in 1 packet
2015-04-13 09:17:49 | [feed][i]sent 2 AC in 1 packet
2015-04-13 09:17:55 | [feed][i]sent 2 AC in 1 packet
Les envois se dont ici en utilisant UDP vers le port 8099 et à destination d'une adresse IP sans reverse dans les DNS.

Serveur Web local

Le programme dump1090 fourni par FlightAware dispose d'une interface Web sur le port 8080 qui vous permet de jeter un oeil aux aéronefs que vous suivez actuellement, comme le montre cette copie d'écran :