
Dump1090 ist ein einfacher Mode-S-Decoder für RTLSDR-Geräte.
Dump1090 ist ein Mode-S-Decoder, der speziell für RTLSDR-Geräte entwickelt wurde.
Die Hauptfunktionen sind:
Geben Sie „make“ ein.
Um Datenverkehr direkt von Ihrem RTL-Gerät zu erfassen und den erfassten Datenverkehr auf der Standardausgabe anzuzeigen, führen Sie das Programm einfach ohne Optionen aus:
./dump1090
Um nur hexadezimale Nachrichten auszugeben:
./dump1090 --raw
Um das Programm im interaktiven Modus auszuführen:
./dump1090 --interactive
Um das Programm im interaktiven Modus mit Netzwerkunterstützung auszuführen und sich mit Ihrem Browser mit http://localhost:8080 zu verbinden, um Live-Datenverkehr zu sehen:
./dump1090 --interactive --net
Im interaktiven Modus ist eine weniger informationsdichte, aber eher „Arcade-artige“ Ausgabe möglich, bei der der Bildschirm jede Sekunde aktualisiert wird und alle kürzlich gesehenen Flugzeuge mit einigen zusätzlichen Informationen wie Höhe und Flugnummer anzeigt, die aus den empfangenen Mode-S-Paketen extrahiert werden.
Um Daten aus einer Datei zu dekodieren, verwenden Sie:
./dump1090 --ifile /pfad/zu/binfile
Die Binärdatei sollte mit rtl_sdr wie folgt erstellt werden (oder mit einem anderen
Programm, das in der Lage ist, 8-Bit-unsigned-IQ-Samples mit 2 MHz Samplerate auszugeben).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
Im Beispiel wird bei rtl_sdr eine Verstärkung von 50 verwendet. Sie sollten einfach die höchste
Verstärkung verwenden, die für Ihren Tuner verfügbar ist. Dies ist beim Aufruf von Dump1090 selbst
nicht erforderlich, da es automatisch die höchste unterstützte Verstärkung auswählen kann.
Es ist möglich, das Programm über die Standardeingabe mit Daten zu füttern, indem die Option --ifile mit „-“ als Argument verwendet wird.
Dump1090 kann mit anderen Befehlszeilenoptionen aufgerufen werden, um eine andere Verstärkung, Frequenz usw. einzustellen. Eine Liste der Optionen erhalten Sie mit:
./dump1090 --help
Alles, was hier nicht dokumentiert ist, sollte offensichtlich sein, und für die meisten Benutzer ist es das Beste, das Programm ganz ohne Argumente aufzurufen.
Standardmäßig prüft Dump1090 Dekodierungsfehler mithilfe der 24-Bit-CRC-Prüfsumme, wo verfügbar. Nachrichten mit Fehlern werden verworfen.
Der Befehlszeilenschalter --fix aktiviert die Korrektur einzelner Bitfehler basierend auf der CRC-Prüfsumme. Technisch gesehen wird eine Tabelle mit vorbestimmten Prüfsummendifferenzen verwendet, die sich aus einzelnen Bitfehlern ergeben, um die falsche Bitposition zu ermitteln.
Dies kann tatsächlich Fehler korrigieren und funktioniert meiner Erfahrung nach zuverlässig. Wenn Sie jedoch an sehr zuverlässigen Daten interessiert sind, empfehle ich, den Befehlszeilenschalter --no-fix zu verwenden, um die Fehlerkorrektur zu deaktivieren.
Meiner begrenzten Erfahrung nach konnte Dump1090 eine große Anzahl von Nachrichten dekodieren, sogar unter Bedingungen, bei denen ich mit anderen Programmen Probleme hatte. Es wurden jedoch keine formellen Tests durchgeführt, daher kann ich nicht wirklich behaupten, dass dieses Programm besser oder schlechter als andere ähnliche Programme ist.
Wenn Sie Datenverkehr erfassen können, den Dump1090 nicht richtig dekodieren kann, senden Sie mir bitte eine E-Mail mit einem Download-Link. Ich werde versuchen, die Erkennung in meiner Freizeit zu verbessern (dies ist nur ein Hobbyprojekt).
Durch Aktivieren der Netzwerkunterstützung mit --net beginnt Dump1090, auf Clientverbindungen an den Ports 30002 und 30001 zu lauschen (Sie können beide Ports ändern, wenn Sie möchten, siehe Ausgabe von --help).
Verbundene Clients werden so schnell wie möglich mit Daten versorgt, sobald sie vom Gerät (oder aus einer Datei, wenn --ifile verwendet wird) im Rohformat eintreffen, ähnlich wie folgt:
*8D451E8B99019699C00B0A81F36E;
Jeder Eintrag wird durch einen einfachen Zeilenumbruch (LF-Zeichen, Hex 0x0A) getrennt.
Port 30001 ist der Roh-Eingabeport und kann verwendet werden, um Dump1090 mit
Daten im gleichen Format wie oben angegeben zu füttern, wobei Hex-Nachrichten mit
einem * beginnen und mit einem ; enden.
Wenn es also eine andere entfernte Dump1090-Instanz gibt, die Daten sammelt, ist es möglich, deren Ausgabe zu einer lokalen Dump1090-Instanz hinzuzufügen, etwa so:
nc remote-dump1090.example.net 30002 | nc localhost 30001
Es ist wichtig zu beachten, dass das, was über Port 30001 empfangen wird, auch an Clients gesendet wird, die an Port 30002 lauschen.
Im Allgemeinen wird alles, was von Port 30001 empfangen wird, genau wie der normale Datenverkehr von RTL-Geräten oder aus Dateien behandelt, wenn --ifile verwendet wird.
Es ist möglich, Dump1090 nur als Hub zu verwenden, indem --ifile mit /dev/zero als Argument verwendet wird, wie im folgenden Beispiel:
./dump1090 --net-only
Oder alternativ, um zu sehen, was auf dem Bildschirm passiert:
./dump1090 --net-only --interactive
Dann können Sie es aus verschiedenen Datenquellen aus dem Internet speisen.
Verbundene Clients werden mit Nachrichten im SBS1-Format (BaseStation) versorgt, ähnlich wie:
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0
Dies kann verwendet werden, um verschiedene Sharing-Sites mit Daten zu versorgen, ohne einen anderen Decoder zu benötigen.
Mode-S-Nachrichten werden auf der Frequenz 1090 MHz übertragen. Wenn Sie eine anständige Antenne haben, können Sie Signale von Flugzeugen empfangen, die ziemlich weit von Ihrem Standort entfernt sind, insbesondere wenn Sie sich im Freien und an einem Ort mit guter Sicht zum Himmel befinden.
Sie können leicht eine sehr billige Antenne bauen, indem Sie den Anweisungen unter
http://antirez.com/news/46
folgen.
Mit dieser einfachen Antenne konnte ich Signale von Flugzeugen in 200+ km Entfernung empfangen.
Wenn Sie an einer ernsthafteren Antenne interessiert sind, sehen Sie sich die folgenden Ressourcen an:
Mit --aggressive ist es möglich, den aggressiven Modus zu aktivieren, eine modifizierte Version der Mode-S-Paketerkennung und -Dekodierung. Der aggressive Modus verwendet normalerweise mehr CPU (insbesondere wenn viele Flugzeuge DF17-Pakete senden), kann aber ein paar weitere Nachrichten erkennen.
Der Algorithmus im aggressiven Modus ist auf folgende Weise modifiziert:
Die Verwendung des aggressiven Modus wird nur an Orten mit geringem Datenverkehr empfohlen, um die Chance zu haben, ein paar weitere Nachrichten zu erfassen.
Der Debug-Modus ist eine visuelle Hilfe zur Verbesserung des Erkennungsalgorithmus oder zum Verständnis, warum das Programm bei einer bestimmten Eingabe nicht funktioniert.
In diesem Modus werden Nachrichten in einer grafischen Darstellung im ASCII-Art-Stil angezeigt, wobei die einzelnen bei 2 MHz abgetasteten Betragsbalken dargestellt werden.
Ein Index zeigt die Sample-Nummer, wobei 0 das Sample ist, an dem der erste Mode-S-Peak gefunden wurde. Vor dem ersten Peak wird auch etwas zusätzliches Hintergrundrauschen hinzugefügt, um einen Kontext zu bieten.
Um den Debug-Modus zu aktivieren und zu prüfen, welche Paketkombinationen Sie
protokollieren können, verwenden Sie mode1090 --help, um eine Liste der verfügbaren Debug-Flags zu erhalten.
Der Debug-Modus enthält eine optionale JavaScript-Ausgabe, die zur Visualisierung von Paketen in einem Webbrowser verwendet wird. Sie können die Datei debug.html im Verzeichnis 'tools' verwenden, um die erzeugte Datei frames.js zu laden.
Der Code ist sehr gut dokumentiert und so geschrieben, dass er leicht verständlich ist. Für den fleißigen Programmierer mit einer Mode-S-Spezifikation zur Hand sollte es trivial sein zu verstehen, wie es funktioniert.
Die von mir verwendeten Algorithmen wurden im Grunde dadurch entwickelt, dass ich viele Nachrichten betrachtete, die mit einem Wegwerf-SDL-Programm angezeigt wurden, und versuchte, den Algorithmus basierend auf dem grafischen Erscheinungsbild der Nachrichten zu modellieren.
Wenn Sie ein RTLSDR-Gerät haben und sich zufällig in einem Gebiet befinden, in dem Flugzeuge über Ihrem Kopf fliegen, führen Sie einfach das Programm aus und prüfen Sie auf Signale.
Wenn Sie jedoch kein RTLSDR-Gerät haben oder wenn in Ihrer Gegend nur sehr wenige Flugzeuge unterwegs sind, können Sie die Beispieldatei ausprobieren, die mit der Dump1090-Distribution im Verzeichnis „testfiles“ verteilt wird.
Führen Sie es einfach so aus:
./dump1090 --ifile testfiles/modes1.bin
Es ist nur ein einfacher Filter, der rohe 8-Bit-IQ-Samples als Eingabe erhält und eine Datei ausgibt, bei der alle Teile der Datei fehlen, in denen I und Q für mehr als 32 Samples unter dem angegebenen liegen.
Verwenden Sie es so:
cat big.bin | ./dump1090 --snip 25 > small.bin
Ich habe es verwendet, um eine kleine Testdatei zu erstellen, die in der Quellcode-Distribution dieses Programms enthalten ist.
Dump1090 wurde in der Freizeit während Weihnachten 2012 geschrieben. Es ist ein Hobbyprojekt, daher kann ich mich nur in meiner Freizeit um Probleme kümmern und es verbessern. Sie sind jedoch ermutigt, Pull-Requests zu senden, um das Programm zu verbessern. Ein guter Ausgangspunkt kann die TODO-Liste sein, die in der Quellcode-Distribution enthalten ist.
Dump1090 wurde von Salvatore Sanfilippo [email protected] geschrieben und unter der BSD-Lizenz mit drei Klauseln veröffentlicht.