
SixiÚme Partie : Découverte de la réception SDR sous Raspberry Pi OS
Trafic aérien (suite) - Introduction
Avec ce sixiĂšme article, et dans lâenvironnement Raspberry Pi, nous avons entrepris lâĂ©coute radio des donnĂ©es de vol ADS-B Ă©mises directement par les avions, et permettant de connaitre leurs positions exactes.
Alors que je pensais en avoir terminĂ©, pouvant ainsi passer aux autres communications aĂ©riennes, force mâa Ă©tĂ© de constater quâil nâen Ă©tait rien. Alors que jâĂ©crivais lâaddendum sur view1090, je recevais un paquet de lâĂ©quipe radarvirtuel avec lâune de leur station Ă installer. VoilĂ donc pourquoi ce sixiĂšme article nâest que la suite du prĂ©cĂ©dent.
Quoi décoder ?
Voici, mis Ă jour, le tableau prĂ©sentant un aperçu des dĂ©codages traitĂ©s dans cette sĂ©rie dâarticles. Les cases vierges dans la derniĂšre colonne signifient que la rĂ©ception sera traitĂ©e dans les mois qui viennent.
Rappel du principe de fonctionnement ADS-B (Source illustration : FlightRadar24)
- Lâavion rĂ©cupĂšre sa localisation Ă partir dâun rĂ©cepteur GPS,
- Le transpondeur ADS-B installĂ© sur lâavion transmet un signal Ă 1090 MHz contenant cette information de position ainsi que dâautres donnĂ©es (N° du vol et indicatif, altitude, vitesse, vitesse ascensionnelleâŠ),
- Le signal du transpondeur ADS-B est capté par les récepteurs au sol, équipés des logiciels de la famille dump1090,
- Ces récepteurs envoient les données reçues à Flightradar24 et/ou RadarVirtuel,
- Les donnĂ©es sâaffichent sur leur site respectif et en local.
Bande UHF (signaux GPS ADS-B) (suite)
Dump1090 / Raspberry Pi OS (suite)
View1090-mutability
Le programme dump1090 Ă©tant installĂ© pour travailler en continu avec envoi de donnĂ©es vers tel ou tel serveur distant, il nâest plus possible de visualiser « en direct » les Ă©coutes comme nous aimions (peut-ĂȘtre) le faire par le biais de lâoption --interactive.
Pour remĂ©dier Ă cela, un second programme existe. Il sâagit de view1090-mutability (ou view1090, ou view1090-fa selon le logiciel installĂ© prĂ©alablement). En y ajoutant lâoption --metric, nous pouvons mĂȘme obtenir les donnĂ©es dans le systĂšme mĂ©trique et non plus anglosaxon :
- view1090-mutability --metric
Commande view1090-mutability --help
Commande view1090-mutability --metric
Multilatération / Raspberry Pi OS
Certains avions, tel que ce QID51, voient leur trajet affichĂ© sur les sites collaboratifs avec lâindication MLAT (Multi-LATĂ©ration) ou Mode-S. Comme ils nâannoncent pas leur position (latitude et longitude), lâaffichage de leur trajectoire nĂ©cessite la mise en Ćuvre dâun calcul mathĂ©matique prenant en compte lâheure dâarrivĂ©e exacte du signal de transmission reçues par plusieurs rĂ©cepteurs situĂ©s au sol Ă des emplacements connus. MĂȘme sâil est diffĂ©rent, ce calcul sâapparente Ă un calcul de triangulation dĂ©nommĂ© multi-latĂ©ration. C'est ce que font, parmi dâautres les sites coopĂ©ratifs RadarVirtuel ou Adsbexchange. Pour cela les rĂ©cepteurs doivent ĂȘtre Ă©quipĂ©es dâun client MLAT. Ceux-ci ne recevant pas les signaux exactement au mĂȘme moment, le calcul nĂ©cessite, pour leurs rĂ©cepteurs, lâutilisation dâune rĂ©fĂ©rence de temps identique telle que celle obtenue par synchronisation NTP avec Chrony. Contrairement Ă la triangulation, il ne s'agit pas ici de mesurer des angles, mais des distances. (Capture : Suivi dâun avion militaire par multilatĂ©ration)
Pour installer ce client, jâai Ă nouveau fait appel Ă lâĂ©quipe de RadarVirtuel. Ils mâont alors guidĂ© dans la procĂ©dure suivante :
Récupération et installation du client MLAT :
- wget https://github.com/abcd567a/mlat-client-package/releases/download/v1/mlat-client_0.2.11_BUSTER_armhf.deb
- sudo dpkg -i mlat-client_0.2.11_BUSTER_armhf.deb
Edition et modification du fichier de configuration /etc/default/mlat-client. Voici ci-dessous une reprise de ce fichier, avec en rouge, les données modifiées :
pi@raspberrypi:~ $ cat /etc/default/mlat-client
# mlat-client configuration file
# This is a POSIX shell fragment.
# You can edit this file directly, or us
# "dpkg-reconfigure mlat-client"
# Start the client?
START_CLIENT="yes"
# System user to run as.
RUN_AS_USER="mlat"
# User to log into the server as
SERVER_USER="lfcz" [Le code de votre station tel que radarvirtuel vous lâa fourni.]
# Logfile to log to
LOGFILE="/var/log/mlat-client.log"
# Input receiver type (dump1090, beast, radarcape_12mhz, radarcape_gps, sbs)
INPUT_TYPE="dump1090"
# Input host:port to connect to for Beast-format messages
INPUT_HOSTPORT="localhost:30005"
# Multilateration server host:port to provide data to
SERVER_HOSTPORT="[IP server]:yyyyy [LâIP du serveur et son port dâĂ©coute fournis par radarvirtuel.]
# Latitude of the receiver, in decimal degrees
LAT="44.xxxxxx"
# Longitude of the receiver, in decimal degrees
LON="-1.xxxxxx"
# Altitude of the receiver, in metres
ALT="10"
# List of result connections/listeners to establish.
# This should be a space-separated list of values suitable for passing to
# the --results option (see mlat-client --help for syntax)
RESULTS="beast,connect,localhost:30004"
# Other arguments to pass to mlat-client
EXTRA_ARGS=""
Cette configuration entrainera le lancement du programme avec les options suivantes (commande systemctl status) :
/usr/bin/mlat-client --user [CODE STATION] --lat 44.07930 --lon -1.25850 --alt 25 --input-type dump1090 --input-connect localhost:30005 --server [IP SERVER:PORT] --results beast,connect,localhost:30004
Commande mlat-client -- help
Pour vĂ©rifier le bon fonctionnement du systĂšme, il ne vous reste plus quâĂ vous dĂ©placer dans le rĂ©pertoire /var/log pour vĂ©rifier le contenu du (des) fichier(s) mlat-client.log.
Extrait du répertoire /var/log
Cinq fichiers sont disponibles : lâun relatif au jour prĂ©sent, les quatre autres aux quatre prĂ©cĂ©dents. On y retrouve une indication des donnĂ©es Mode-S envoyĂ©es au serveur.
Extrait du fichier mlat-client.log
La capture dâĂ©cran suivante montre le trajet dâun tel avion au-dessus des Landes. Il sâagit sans doute dâun avion de l'ArmĂ©e de l'air française, en manĆuvre, ayant dĂ©collĂ© de la base aĂ©rienne 118 « Colonel Rozanoff » situĂ©e Ă Mont-de-Marsan.
Trajet dâun avion militaire repĂ©rĂ© grĂące Ă ses signaux Mode-S
Ăquipement envoyĂ© par RadarVirtuel
Envoi radarvirtuel
Ayant souhaitĂ© tester lâĂ©quipement standard radarvirtuel, je le reçois quelques jours plus tard, par la poste. Mon colis comprend :
- Une antenne verticale 1090MHz,
- Une base dâantenne rĂ©alisĂ©e Ă lâaide dâun tube PVC Tubifor de 25mm de diamĂštre,
- Un cĂąble dâantenne de 5m, avec prises SMA,
- Une carte Raspberry Pi 4b avec boitier radiateurs de refroidissement,
- Un récepteur USB SDR ADS-B Flightaware Pro Stick Plus,
- 2 cartes MicroSD prĂ©configurĂ©es. Lâune insĂ©rĂ©e dans la Pi, lâautre en secours,
- Une alimentation 220Volts AC vers 5,1Volt DC / 3 ampĂšres,
- Prolongateur USB et rallonge secteur.
Pour sa premiĂšre mise sous tension, la carte doit ĂȘtre reliĂ©e Ă votre box Internet Ă lâaide dâun cĂąble RJ45. Vous devrez ensuite, au travers du panneau dâadministration de cette box, noter lâadresse IP qui lui aura Ă©tĂ© attribuĂ©e.
    Â
Lâadresse IP de la carte Raspberry Pi et son accĂšs au travers de Putty
Cette carte nâa pas dâinterface graphique (telle que Pixel desktop). VNC nâest donc pas en place. Elle est nĂ©anmoins accessible sous SSH, au travers des logiciels Putty et WinSCP . Le nom dâutilisateur est root, le mot de passe vous sera fourni avec lâenvoi.
Premier accĂšs sur la carte avec Putty
Avant de mettre en place le Wi-Fi, il y a lieu de modifier le pays Ă associer Ă notre future connexion sans fil. AprĂšs lancement de raspi-config (et approbation pour lâutilisateur pi inexistant) il faut faire les choix suivants :
5 Localisation Options
L4 WLAN Country
Choisir la France et confirmer votre choix lorsquâapparait une nouvelle fenĂȘtre (le curseur Ă©tant sur OK, tapez ENTER). On ajustera ensuite le fuseau horaire :
5 Localisation Options
L2 Timezone
AprÚs avoir confirmé par OK le choix Europe, sélectionnez Paris, confirmez par OK et rebootez la machine.
LâĂ©tape suivante consiste - comme nous lâavons montrĂ© prĂ©cĂ©demment. - Ă modifier les fichiers /etc/wpa_supplicant/wpa_supplicant.conf et /etc/dhcpcd.conf afin dâactiver la connexion Wi-Fi.
Si nous possédez un LNA, il faudra aussi mettre en place le logiciel rtl_biast pour son alimentation :
- cd /home/py
- sudo apt-get update
- sudo apt-get install git cmake build-essential libusb-1.0-0-dev
- git clone https://github.com/rtlsdrblog/rtl_biast
- cd rtl_biast
- mkdir build
- cd build
- cmake .. -DDETACH_KERNEL_DRIVER=ON
- make
La commande suivante permet ensuite de vĂ©rifier si lâinstallation sâest bien dĂ©roulĂ©e (donc lâabsence de message dâerreur) :
-
- sudo service dump1090-mutability stop && cd /home/py/rtl_biast/build/src && ./rtl_biast -d 001090 -b 1 && sudo service dump1090-mutability start
NOTA : Au tout premier lancement du visionneur (http://[IP FIXE DE LA PI]/dump1090/gmap.html), il faut rĂ©initialiser lâaperçu afin de repositionner correctement notre station sur la carte. Sans cela â dans mon cas -  elle se retrouvait Ă Rennes, lieu de configuration de la Pi reçue.
Ceci fait, il ne reste plus quâĂ modifier le fichier /etc/init.d/dump1090-mutability en y ajoutant les lignes de commande dĂ©jĂ citĂ©es dans le prĂ©cĂ©dent paragraphe.
LancĂ© depuis un PC connectĂ© au rĂ©seau local, un accĂšs sur le visionneur, suivi dâune rĂ©initialisation (choix RĂ©initialiser), nous confirme le bon fonctionnement de lâensemble. Au fil des minutes, la carte montrant la couverture dâĂ©coute de notre antenne se dessine Ă lâĂ©cran.
Mais, curieusement, je ne constate aucune amĂ©lioration de couverture dâĂ©coute avec ou sans LNA alimentĂ©. AprĂšs vĂ©rification au multimĂštre numĂ©rique, il sâavĂšre que les clĂ©s FlightAware ne laissent pas passer le +5 Volt DC. Un simple Ă©change standard avec ma clĂ© RTL-SDR V3 me confirme que le problĂšme vient bien de la clĂ©.
Interface locale radarvirtuel avec clĂ© FlightAware et LNA (non) alimentĂ©. Peu dâavions sont visibles
Interface locale radarvirtuel avec clé RTL-SDR V3 et LNA (bien) alimenté. De nombreux avions sont visibles
Notons pour finir le contenu du fichier /etc/rc.local qui lance :
- le feeder (sh),
- la synchronisation de l'horloge systĂšme avec un serveur NTP.
Comme ces programmes effectuent une boucle infinie sans rendre la main au script, ils doivent ĂȘtre lancĂ©s en tĂąche de fond. Câest Ă ce titre quâest ajoutĂ© un & aprĂšs chaque commande.
Quant Ă lâopĂ©rateur &&, il permet lâenchainement de 2 commandes ; la seconde ne sâexĂ©cutant quâaprĂšs rĂ©ussite de la premiĂšre.
Fichier rc.local dâune station radarvirtuel
Le systĂšme Ă©tant maintenant fonctionnel il ne reste plus quâĂ le mettre en boite et Ă le fixer sur un mur extĂ©rieur, non loin de lâantenne et Ă portĂ©e du Wi-Fi. Le module 220Volts AC vers 5,1Volt DC est Ă lâintĂ©rieur de la maison, Un cĂąble de quelques mĂštres amĂšne le courant continu au boitier. Pour cette installation, jâai remis la clĂ© dâorigine Flightaware Pro Stick Plus car la longueur de cĂąble entre celle-ci et lâantenne ne nĂ©cessite plus lâutilisation du LNA.
       Â
Installation en fixe du matériel radarvirtuel
Partage simultané sur adsbexchange.com
MalgrĂ© un fonctionnement parfait en lien avec radarvirtuel, je me retrouve déçu par lâaffichage des trajets aĂ©riens repĂ©rĂ©s en mode S (MLAT). Plusieurs avions de tourisme survolant mon QRA restent souvent invisibles sur la carte https://alpha.radarvirtuel.com/, alors quâils apparaissent clairement sur celle proposĂ©e par le site https://globe.adsbexchange.com/ (jâai constatĂ© plus tard que lâinverse Ă©tait Ă©galement vrai !!). De plus, un systĂšme de filtres Ă©tendu permet dâaisĂ©ment de les isoler.
Carte adsbexchange.com aprĂšs filtrage sur le mode MLAT
Ayant contactĂ© Ă ce sujet les administrateurs du site radarvirtuel, ceux-ci mâindiquent que cette partielle invisibilitĂ© sâexplique par le manque de stations dâĂ©coute dans ma rĂ©gion. AVIS AUX AMATEURS : il en faudrait 2 ou 3 de plus, autour de mon QRA, dans un rayon de 30Km.
AprĂšs avoir fait une sauvegarde de ma carte SD, je tente donc dâinstaller (sous root) un second feeder me permettant dâenvoyer, en simultanĂ©, mes informations sur les 2 sites, et selon la procĂ©dure dĂ©crite ici : https://www.adsbexchange.com/how-to-feed/ :
- wget -O /home/py/axfeed.sh https://adsbexchange.com/feed.sh
- sudo bash /home/py/axfeed.sh
AprĂšs lancement du script, une fenĂȘtre de configuration sâouvre avec une suite de questions permettant la configuration du feeder :
- Un intitulé pour votre station,
- Sa latitude,
- Sa longitude,
- Son altitude.
Configuration du feeder adsbexchange.com
Lâinstallation se poursuit ensuite avec toute une sĂ©rie dâinstructions, et par Ă©tape selon une chronologie numĂ©rotĂ©es de 1 Ă 100. Il ne faut pas sâinquiĂ©ter si lâĂ©cran se fige quelques minutes. Lorsque lâinstallation se termine nâomettez pas de noter les liens http ainsi que la commande permettant lâinstallation de lâinterface web.
Fin de processus dâinstallation
Et comme indiquĂ©, il faut ensuite bien attendre 5 minutes avant de recevoir confirmation du bon fonctionnement de lâensemble sur https://www.adsbexchange.com/myip/
Confirmation dâune bonne installation
La commande systemctl status permet de visualiser les nouveaux services crĂ©Ă©s, avec lâensemble des options nĂ©cessaires :
- /bin/bash /usr/local/share/adsbexchange/adsbexchange-mlat.sh
- /usr/local/share/adsbexchange/venv/bin/python3 /usr/local/share/adsbexchange/venv/bin/mlat-client --input-type dump1090 --no-udp --input-connect 127.0.0.1:30005 --server feed.adsbexchange.com:31090 --user StJulien --lat 44.0793036 --lon -1.2585172 --alt 10m --results beast,connect,localhost:30104 --results basestati
- /bin/bash /usr/local/share/adsbexchange/adsbexchange-feed.sh
- /usr/local/share/adsbexchange/feed-adsbx --net --net-only --debug=n --quiet --write-json /run/adsbexchange-feed --net-beast-reduce-interval 0.5 --net-connector feed.adsbexchange.com,30004,beast_reduce_out,feed.adsbexchange.com,64004 --net-heartbeat 60 --net-ro-size 1280 --net-ro-interval 0.2 --net-ro-port 0 --net-sbs-port 0 --net-bi-port 30154 --net-bo-port 0 --net-ri-port 0 --write-json-every 1 --net-connector 127.0.0.1,30005,beast_in --lat 44.0793036 --lon -1.2585172 --db-file none
La visite de lâURL : https://map.adsbexchange.com/mlat-map/ confirme le bon fonctionnement en Ă©changes MLAT, avec, en vert les liens de bonne qualitĂ©.
Visualisation des liens dâĂ©changes MLAT
Il ne reste plus maintenant quâĂ installer lâinterface web locale :
- sudo bash /usr/local/share/adsbexchange/git/install-or-update-interface.sh
Ă lâissue de lâexĂ©cution du script, il est possible de visualiser les donnĂ©es rĂ©coltĂ©es par notre station Ă lâadresse : http://192.168.1.162/adsbx/. Lâavantage de cette page est la mise Ă disposition des filtres permettant dâisoler les avions selon le mode de transmission des donnĂ©es : ADS-B, MLAT et/ou Mode-S (les modes TIS-B et UAT / ADS-R Ă©tant valides aux USA sur la frĂ©quence de 978 MHz) et sâils sont militaires, ou non (les choix PIA (Privacy ICAO Address) et LADD (Limited Aircraft Data Displayed) concernent des vols « confidentiels » qui sont difficilement identifiables par des rĂ©cepteurs peu coĂ»teux et disponibles dans le commerce.
Vol MLAT sur lâinterface web locale adsbexchange
Vol Mode-S sur lâinterface web locale adsbexchange
SĂ©lection des vols militaires avec adsbexchange
Vol militaire AlphaJet RIC61sur lâinterface web locale adsbexchange
Vol militaire AlphaJet RIC61sur le serveur adsbexchange
Petit comparatif de couverture aérienne sans prétention
Couverture aérienne mondiale. En haut, à gauche : Radarvirtuel avec environ 3000 avions visibles pour 600 radars dans le monde. En haut, à droite : PlaneFinder. En bas, à gauche Adsbexchange avec environ 9000 avions visibles pour 6000 radars dans le monde. En bas, à droite FlightRadar24 avec environ 12000 avions. Notez la présence de quelques ballons au-dessus des Etats-Unis.
Couverture aĂ©rienne sur lâEurope. En haut, Ă gauche : Radarvirtuel. En haut, Ă droite : PlaneFinder. En bas, Ă gauche Adsbexchange. En bas, Ă droite FlightRadar24.
La couverture MLAT et Mode-S semble plus efficace sur radarvirtuel et adsbexchange. Ces deux sites affichent plus de vols militaires que leurs concurrents. Selon leur couverture, certaines portions de trajets ne sont visibles que sur lâune des deux cartes. LĂ©ger avantage Ă adsbexchange qui, avec tar1090, propose des jeux de filtres pour mieux les visualiser.
Pour conclure, jâai un petit faible pour adsbexchange. Mais radarvirtuel Ă©tant français, je pense que notre rĂŽle est de le faire connaitre et de tout faire pour le nombre de leurs feeders augmente, en France, bien sĂ»r, mais aussi aux 4 coins du monde.
Configuration définitive
Au moment de conclure mes articles sur lâenvironnement Raspberry Pi, jâĂ©tais sur le point de rejoindre la rĂ©gion parisienne pour me retrouver Ă 700 kilomĂštres de mon boitier radarvirtuel/adsbexchange maintenant positionnĂ©, Ă demeure, sur le mur extĂ©rieur de ma rĂ©sidence secondaire.
Alors quâil mâĂ©tait possible, en local, de lâatteindre depuis mon PC avec Putty, cette solution allait, bien entendue, devenir inapplicable. Et souhaitant garder le contact, il nâĂ©tait pas envisageable dâutiliser un ensemble VNCServer/VNCViewer puisque ma carte Pi ne possĂ©dait pas dâenvironnement graphique.
AprĂšs une brĂšve recherche Internet, jâai appris que Putty existait aussi dans le monde Raspbian. Je dĂ©cidais donc de lâinstaller sur ma (seconde) Raspberry Pi ; celle accueillant Gqrx et lâensemble des logiciel dĂ©diĂ©s Ă la traque des ballons sondes :
- sudo apt-get update
- sudo apt-get upgrade
- sudo apt-get install putty
Suite Ă cela, lâappel de putty dans ma fenĂȘtre Terminal faisait apparaitre son interface habituelle.
Putty sous Raspbian OS
Et malgrĂ© le message dâerreur rĂ©pĂ©tĂ© 3 fois :
(putty:31964): Gtk-CRITICAL **: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar
⊠tout a fonctionné correctement. Je pouvais partir tranquille.
Voici donc ma configuration finale :
Configuration finale pour un accĂšs Ă distance
Exemple : Depuis la rĂ©gion parisienne, je me connecte Ă Raspi 1 Ă lâaide de VNC. Depuis cette carte, je lance lâinterface visuelle locale ([MON_IP]/dump1090/gmap.html). Toujours depuis cette carte, je lance PuTTY pour me connecter en SSH Ă Raspi 2. Sur Raspi 2, je lance view1090-mutability.