Attirail du geek, partie 10: la framboise volante
Encore une combinaison de mes hobbies 'geek':
- informatique (beaucoup)
- électronique (un peu)
- aviation (un peu)
Le but: suivre les avions (position, vitesse) via télémétrie et radio pour moins de 100 EUR et sans installer un radar à la maison!
Comment: via un micro-computer de 50 EUR, une radio programmable (en anglais "Software Defined Radio" -- SDR), une petite antenne (idéalement de 68,5 mm de long), et des logiciels en open source.
Les avions ont pour la plupart un transpondeur en mode-S qui transmet sur 1090 MHz leur code transpondeur sur 24 bits (4 chiffres de 0 à 7 donc 4 chiffres exprimés sur 3 bits) et leur altitude que tout le monde peut recevoir via une bonne antenne en vue directe (donc sans obstacles entre l'antenne et l'avion). Les avions commerciaux (compagnies aériennes notamment) ont en plus un système ADS-B out qui transmet sur la même fréquence leurs positions. Rien n'est chiffré, donc, tout le monde peut décoder les messages.
Le matériel
Un simple micro-computer de type Raspberry Pi 3 B+: format carte de crédit, avec 1 GByte de mémoire vive, sans clavier ni écran mais avec Wi-Fi, un port Ethernet, 4 portes USB et une porte HDMI. Le tout alimenté par micro-USB comme tous les appareils nomades. Le mémoire de masse est une micro-carte flash; ce qui permet d'initialiser facilement le système de fichier via Linux, Mac OS, ou Windows.
Ajoutons-y un petit boîtier en plastique et un chargeur micro-USB et cela devient un vrai ordi!
Rester à ajouter une clé USB bleue pour la radio SDR (40 EUR) et connecter la petite antenne à la clé USB et le tour est joué au niveau matériel.
Notes sur l'antenne
Dans un premier temps, 1090 MHz cela correspond à une longueur d'onde dans l'air de 275 mm (il faut diviser la vitesse
de la lumière par la fréquence), ça je comprends. Puis, c'est la partie qui m'a toujours un peu échappée lors de mes études d'ingénieurs... qui dit que l'antenne doit exactement faire le quart de la longueur d'onde, dans ce cas-ci 68,5 mm hélas celle que j'ai reçue fait 80 mm donc le rendement ne sera pas exceptionnel... en plus, je l'ai placée collée à l'intérieur sur une vitre et pas sur un mat extérieur. Quelques jours après, je place cette antenne à l'extérieur (de l'autre côté de la vitre) et je suis ébahi: la portée passe de 40 nm (+/- 70 km) à plus de 150 nm (+/- 270 km) et donc le nombre d'avions reçus passe de 10 en pointe à plus de 20 au minimum !
Le logiciel
Tout ordinateur doit avoir son système opératoire (OS) ainsi que ses applications. Dans mon cas:
- Système opératoire: Raspberry Pi OS, une variante de Linux Debian pour le processeur ARM qui équipe le micro-ordinateur
- Applications: le pilote de la radio et diverses applications analysant la sortie de la radio pour envoyer à plusieurs sites d'agrégation ('feeder' en anglais) de ces données (car nous sommes des milliers à faire ce 'truc') par exemple pour https://flightaware.com
Pour l'OS, il suffit de télécharger une image brute depuis le site de Raspberry, de la copier sur la micro-flash, et d'insérer la micro-flash dans le Raspberry Pi. L'absence d'écran et de clavier (sauf si connexion par les ports USB et HDMI évidemment) complique un peu les choses (le mot de passe par défaut est 'raspberry' que j'ai évidemment immédiatement changé!).
Le pilote de la radio
- antirez (version de départ plus maintenue en dehors d'un patch mineur en février 2020)
- MalcomRobb sur base d'antirez (aucune mise à jour depuis octobre 2014)
- mutability sur base de MalcomRobb (aucune mise à jour depuis 2019)
- flightaware sur base de mutability (encore mis à jour en octobre 2020, avec une belle interface web et surtout le support d'IPv6)
Comme il ne peut y avoir qu'un seul pilote pour la radio, autant installer la dernière version via la commande Linux 'apt-get install dump1090-fa' (après avoir mis à jour les sources apt voir le point 2 de ce lien). Ce qui est fait rapidement et inutile de redémarrer évidemment même si la doc dit le contraire!
Cela fonctionne immédiatement et une connexion sur la porte TCP 8080 genre http://[2001:db8::1]:8080/ (remplacer par l'adresse IPv6 voire IPv4 du Raspberry) et donne immédiatement une vue très sympa des avions dans le coin! Le coin dans le cas de ma simple antenne est tout de même plus de 100 km !
Les autres applications
Par la suite, il est possible d'installer d'autres applications qui vont partager les données sur les quelques avions que le système reçoit avec des sites d'agrégation de ces milliers de systèmes. En général, il y a une incentive qui donne un contrat 'gold' ou 'business' gratuitement sur ces sites; donc, parfois un grand historique ou un accès à une interface de programmation (API). Pour avoir ces bénéfices, il faut évidemment créer sur chaque site un compte et lier son Raspberry à ce compte (soit via l'adresse IP soit via un code à copier/coller).
Voici la liste des applications que j'ai installées et qui fonctionnent donc toutes en même temps (charge CPU très très légère un Raspberry PI Zero devrait suffire):
- OpenSky Network: tendance open source, uniquement ADS-B (donc uniquement les vols commerciaux), donne accès à une API, installation pour les geeks et qui date... Voir mes statistiques.
- FlightRadar24: site commercial qui donne accès à un compte 'gold', installation simple via un script à télécharger mais que j'ai effectué manuellement étape par étape via des commandes apt. Donne droit à un accès 'business'. Voir mes statistiques.
- FlightAware: autre site commercial qui donne accès à un compte entreprise, installation simple via un package à installer. Donne droit à un accès 'enterprise user'. Voir mes statistiques.
- RadarBox: autre site commercial (que je ne connaissais pas), installation décrite par des images ! impossible de copier coller: voici donc le script d'installation. Donne droit à un accès 'feeder / Business' (y compris un API token). Voir mes statistiques.
- ADSBExchange: site commercial 'bon marché', installation via un script. Voir la vue de mon système.
- PlaneFinder: site commercial, installation via un package (il faut alors choisir le mode 'beast' lors de la configuration). Donne droit à un abonnement gratuit. Voir les statistiques.