Technique SDR 6

Technique SDR 6

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.

traffic aérien
traffic aérien

traffic aérien
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

traffic aérien
Commande view1090-mutability –help

traffic aérien
Commande view1090-mutability –metric

Multilatération / Raspberry Pi OS

traffic aérien

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

traffic aérien
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.

traffic aérien
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.

traffic aérien
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.

traffic aérien
Trajet d’un avion militaire repĂ©rĂ© grĂące Ă  ses signaux Mode-S

Équipement envoyĂ© par RadarVirtuel

traffic aérien
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.

traffic aĂ©rien       traffic aĂ©rien
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.

traffic aérien
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

traffic aérien
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Ă©.

traffic aérien
Interface locale radarvirtuel avec clĂ© FlightAware et LNA (non) alimentĂ©. Peu d’avions sont visibles

traffic aérien
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.

traffic aérien
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.

traffic aĂ©rien          traffic aĂ©rien
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.

traffic aérien
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.

traffic aérien
Configuration du feeder adsbexchange.com

traffic aérien

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.

traffic aérien
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/

traffic aérien
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Ă©.

traffic aérien
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.

traffic aérien
Vol MLAT sur l’interface web locale adsbexchange

traffic aérien
Vol Mode-S sur l’interface web locale adsbexchange

traffic aérien
SĂ©lection des vols militaires avec adsbexchange

traffic aérien
Vol militaire AlphaJet RIC61sur l’interface web locale adsbexchange

traffic aérien
Vol militaire AlphaJet RIC61sur le serveur adsbexchange

Petit comparatif de couverture aérienne sans prétention

traffic aérien
traffic aérien

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.

traffic aérien
traffic aérien
Couverture aĂ©rienne sur l’Europe. En haut, Ă  gauche : Radarvirtuel. En haut, Ă  droite : PlaneFinder. En bas, Ă  gauche Adsbexchange. En bas, Ă  droite FlightRadar24.

traffic aérien
traffic aérien
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.

traffic aérien
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 :

traffic aérien
Configuration finale pour un accĂšs Ă  distance

traffic aérien
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.

par François F-80543 | F-80543

Auteur / autrice

  • Aujourd'hui retraitĂ©, j'ai passĂ© ma prime jeunesse Ă  Lourdes (Ă©cole Saint-Joseph). Ensuite c'est Paris (Saint-Thomas d'Aquin puis le lycĂ©e Jacquard). CotĂ© travail, 20 ans chez Thomson DFH/Alcatel Telspace, 20 ans chez McAfee.