
Dump1090 est un simple décodeur Mode S pour les périphériques RTLSDR.
Dump 1090 est un décodeur Mode S spécialement conçu pour les périphériques RTLSDR.
Les principales fonctionnalités sont :
Bien que j'ajoute ou corrige de temps en temps des choses dans mon fork, je vise un minimalisme de l'implémentation. Cependant, il existe un fork beaucoup plus complet disponible, développé par MalcolmRobb.
Tapez « make ».
Pour capturer le trafic directement depuis votre périphérique RTL et afficher le trafic capturé sur la sortie standard, exécutez simplement le programme sans aucune option :
./dump1090
Pour afficher uniquement les messages hexadécimaux :
./dump1090 --raw
Pour exécuter le programme en mode interactif :
./dump1090 --interactive
Pour exécuter le programme en mode interactif avec la prise en charge réseau et vous connecter avec votre navigateur à http://localhost:8080 afin de voir le trafic en direct :
./dump1090 --interactive --net
En mode interactif, il est possible d'obtenir une sortie moins dense en informations mais plus « style arcade », où l'écran est rafraîchi chaque seconde en affichant tous les aéronefs récemment vus avec quelques informations supplémentaires telles que l'altitude et le numéro de vol, extraites des paquets Mode S reçus.
Pour décoder des données depuis un fichier, utilisez :
./dump1090 --ifile /path/to/binfile
Le fichier binaire doit être créé avec rtl_sdr comme ceci (ou avec tout autre programme capable de générer des échantillons IQ non signés de 8 bits à un taux d'échantillonnage de 2Mhz).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
Dans l'exemple, rtl_sdr utilise un gain de 50 ; vous devriez simplement utiliser le gain le plus élevé disponible pour votre tuner. Cela n'est pas nécessaire lors de l'appel de Dump1090 lui-même, car il est capable de sélectionner automatiquement le gain le plus élevé pris en charge.
Il est possible de fournir des données au programme via l'entrée standard en utilisant l'option --ifile avec « - » comme argument.
Dump1090 peut être appelé avec d'autres options de ligne de commande pour définir un gain, une fréquence différents, etc. Pour une liste des options, utilisez :
./dump1090 --help
Tout ce qui n'est pas documenté ici devrait être évident, et pour la plupart des utilisateurs, l'appeler sans aucun argument est la meilleure chose à faire.
Par défaut, Dump1090 tente de corriger les erreurs de bits à l'aide du checksum CRC. Le programme utilise une table de syndromes précalculée pour identifier et corriger rapidement jusqu'à deux erreurs de bits dans les messages reçus.
Cela permet effectivement de corriger les erreurs et fonctionne de manière fiable selon mon expérience. Cependant, si vous recherchez des données très fiables, je suggère d'utiliser l'option de ligne de commande --no-fix afin de désactiver la correction d'erreurs.
D'après mon expérience limitée, Dump1090 a été capable de décoder un grand nombre de messages, même dans des conditions où j'ai rencontré des problèmes avec d'autres programmes. Cependant, aucun test formel n'a été effectué, je ne peux donc pas vraiment affirmer que ce programme est meilleur ou pire que des programmes similaires.
Si vous parvenez à capturer un trafic que Dump1090 n'arrive pas à décoder correctement, envoyez-moi un e-mail avec un lien de téléchargement. Je pourrai essayer d'améliorer la détection pendant mon temps libre (ce n'est qu'un projet de loisir).
Dump1090 peut décoder les messages de position au sol (Type Code 5-8), qui sont transmis par les aéronefs lorsqu'ils sont au sol (roulage, attente aux portes, etc.). Ces messages incluent la position de l'aéronef, sa vitesse au sol et sa trajectoire au sol.
Les positions au sol utilisent un encodage différent de celui des positions en vol : le format CPR (Compact Position Reporting) ne couvre que 90 degrés au lieu de 360 et nécessite une position de référence à moins de 45 milles marins pour un décodage sans ambiguïté.
Au lieu de vous demander de configurer la position de votre récepteur, Dump1090 calcule automatiquement une position de référence en faisant la moyenne de toutes les positions en vol décodées avec succès. Cela fonctionne car si vous pouvez recevoir le trafic au sol d'un aéroport, vous recevez presque certainement aussi le trafic en vol. La position moyenne des aéronefs en survol fournit une référence suffisamment proche (bien dans l'exigence des 45 NM) pour décoder les positions au sol.
Remarque : les positions au sol ne seront affichées qu'après le décodage réussi d'au moins une position en vol pour établir la référence. Les aéronefs au sol apparaîtront avec une altitude de 0 dans l'affichage interactif.
En activant la prise en charge réseau avec --net, Dump1090 commence à écouter les connexions des clients sur les ports 30002 et 30001 (vous pouvez modifier les deux ports si vous le souhaitez, voir la sortie de --help).
Les clients connectés reçoivent les données dès qu'elles arrivent du périphérique (ou du fichier si --ifile est utilisé), dans un format brut similaire à celui-ci :
*8D451E8B99019699C00B0A81F36E;
Chaque entrée est séparée par un simple saut de ligne (caractère LF, hex 0x0A).
Le port 30001 est le port d'entrée brut et peut être utilisé pour fournir à Dump1090 des données au même format que celui spécifié ci-dessus, avec des messages hexadécimaux commençant par * et se terminant par ;.
Ainsi, par exemple, s'il existe une autre instance distante de Dump1090 collectant des données, il est possible de combiner la sortie avec une instance locale de Dump1090 en faisant quelque chose comme ceci :
nc remote-dump1090.example.net 30002 | nc localhost 30001
Il est important de noter que ce qui est reçu via le port 30001 est également diffusé aux clients qui écoutent sur le port 30002.
En général, tout ce qui est reçu depuis le port 30001 est traité exactement comme le trafic normal des périphériques RTL ou du fichier lorsque --ifile est utilisé.
Il est possible d'utiliser Dump1090 simplement comme un hub en utilisant --ifile avec /dev/zero comme argument, comme dans l'exemple suivant :
./dump1090 --net-only
Ou, alternativement, pour voir ce qui se passe à l'écran :
./dump1090 --net-only --interactive
Vous pouvez ensuite l'alimenter à partir de différentes sources de données sur Internet.
Les clients connectés reçoivent des messages au format SBS1 (BaseStation), similaires à :