Iridium: Empfang und Dekodierung von Satellitenkonstellationssignalen zu Hause

Hallo Habr.

Im vorigen Teil haben wir den Empfang von Signalen von Inmarsat-Satelliten untersucht. Als nächstes betrachten wir ein ebenso interessantes System - das Iridium-Satellitenkommunikationssystem, das jeder auch zu Hause empfangen kann.


Iridium-Netzabdeckung, Wikipedia-Foto

Für diejenigen, die daran interessiert sind, wie das funktioniert, weiter unter dem Schnitt.

Hinweis : Die folgenden Daten enthalten keine Geheimnisse. Die im Artikel beschriebenen Decoder sind seit mehr als einem Jahr auf Github. Frequenzen und Signale stehen auch jedem zur Verfügung, der bereit ist, 35 US-Dollar für die Antenne auszugeben und sie in das Fenster zu stellen. Das Iridium-Kommunikationssystem ist jedoch funktionsfähig, sodass einige Daten aus rechtlichen Gründen nicht zur Verfügung stehen. Dieses Material ist ausschließlich zum Bekanntmachen, Veröffentlichen oder Speichern von empfangenen Nachrichten bestimmt. Nach den Gesetzen bestimmter Länder ist dies möglicherweise nicht gestattet.

Eisen


Hier gibt es nichts Neues, alles wurde in einem vorherigen Artikel beschrieben . Ich habe die Active L-Band 1525-1637 Patch-Antenne verwendet, die für 35 US-Dollar erhältlich ist, und den SDRPlay-Empfänger, der durch den RTL SDR V3 ersetzt werden kann, der ebenfalls etwa 35 US-Dollar kostet. Somit kostet alles weniger als 100 US-Dollar, was durchaus erschwinglich ist.

Das ganze Set für den Empfang sieht so aus (Streichholzschachteln für die Waage):



Öffnen Sie als nächstes das Fenster (Glas dämpft die Funkwellen dieser Reichweite), richten Sie die Antenne in den Himmel, und Sie können ein Signal empfangen. Es ist wichtig, nicht zu vergessen, dass das Bias-T-Stück in den Empfängereinstellungen enthalten ist Die Antenne ist aktiv und funktioniert nicht ohne Strom. Wenn alles richtig gemacht wurde, sollten wir bei einer Frequenz von ca. 1,6 GHz folgendes Bild sehen:



Übrigens, wenn Sie das Spektrum genauer betrachten, können Sie die Steigung der Linien aufgrund des Doppler-Effekts deutlich sehen - die Satelliten bewegen sich in der Umlaufbahn und die Frequenz ändert sich.



Es ist interessant, zwei ziemlich grundlegende Unterschiede zwischen Iridium und Inmarsat festzustellen.

Erstens verwendet Inmarsat geostationäre Satelliten, die in einer geostationären Umlaufbahn mit einer Höhe von 35786 km im Weltraum fliegen. Im Gegensatz dazu verfolgt Iridium einen anderen Ansatz: Mehr als 60 Satelliten fliegen in niedrigen Umlaufbahnen (871 km) und bedecken das gesamte Territorium der Erde (Foto auf KDPV). Dies ermöglicht die Verwendung kompakterer und ungerichteter Antennen, und ein solches System funktioniert besser in den nördlichen Gebieten, in denen der Empfang von geostationären Satelliten begrenzt ist. Die Anzahl der Iridium-Satelliten wurde übrigens so berechnet, dass der Teilnehmer jederzeit mehrere am Himmel sichtbare Satelliten nutzen kann.



Und zweitens verwendet Iridium ein grundlegend anderes Datenübertragungsschema - anstelle von konstanten Datenverbindungen mit einer konstanten Frequenz werden kurze Burst-Pakete verwendet, die auf dem Bild zu sehen sind.

Hiermit beenden wir den „theoretischen“ Teil. Wenn alles funktioniert, ist es Zeit, mit der Software fortzufahren.

Software


Bei der Dekodierungssoftware gibt es eine "kleine" Komplexität - sie ist unter Linux geschrieben. Vielleicht gibt es eine geheime Möglichkeit, Gnu Radio-Projekte unter Windows zu kompilieren, aber ich bin bis auf eine große Anzahl von Fehlern noch nie gescheitert. Unter Linux ist alles einfach und funktioniert sofort, aber ich gehe davon aus, dass die meisten Leser immer noch Windows installiert haben. Wir gehen also den umgekehrten Weg - wir zeichnen die Signale in HDSDR auf und starten den Decoder für die Verarbeitung unter Ubuntu in Windows 10. Zum Glück bietet 10ka diese Funktion .

Schritt 1 Kompilieren von gr-Iridium

Zuerst müssen Sie Ubuntu in den App Store herunterladen und dort GNU Radio installieren.

Das Kompilieren des gr-Iridium- Decoders ist nicht besonders schwierig:

git clone https://github.com/muccc/gr-iridium.git cd gr-iridium mkdir build cd build cmake .. make sudo make install sudo ldconfig 

Der Prozess sieht ungefähr so ​​aus:



Der Decoder benötigt das Modul gr-osmosdr . Die Kompilierung erfolgt nach demselben Prinzip, mit nur einem Unterschied: Wir müssen die Empfänger deaktivieren, die in diesem Schritt nicht benötigt werden, da sonst Kompilierungsfehler auftreten.

 git clone git://git.osmocom.org/gr-osmosdr cd gr-osmosdr mkdir build cd build/ cmake .. -DENABLE_UHD=OFF -DENABLE_RTL=OFF -DENABLE_BLADERF=OFF -DENABLE_FCD=OFF -DENABLE_RFSPACE=OFF -DENABLE_REDPITAYA=OFF -DENABLE_HACKRF=OFF make sudo make install sudo ldconfig 

Es gibt eine lustige Falle. Läuft make, habe ich seltsame Fehler wie "c ++: error: / wd4251: Keine solche Datei oder Verzeichnis". Eine Google-Suche zeigt, dass diese Fehler mit der Windows-Version zusammenhängen, die beim Kompilieren unter Ubuntu nicht möglich ist. Vielleicht stellte sich heraus, dass nach dem Ausdruck eines detaillierten Protokolls mit dem Befehl "make -n" Windows-Laufwerke standardmäßig in Ubuntu eingebunden sind und cmake diese Dateien "aufgesammelt" hat:

 cd /home/dmitrii/Documents/gr-osmosdr-0.1.5/build/lib && /usr/bin/c++ -DBOOST_ALL_DYN_LINK -DHAVE_CONFIG_H=1 -DNOMINMAX -DUSE_SSE2 -Dgnuradio_osmosdr_EXPORTS -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/build/lib -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/include -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/lib -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/lib/file -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/lib/rtl_tcp -I/home/dmitrii/Documents/gr-osmosdr-0.1.5/lib/soapy -isystem "/mnt/c/Program Files/PothosSDR/include" -O3 -DNDEBUG -fPIC -Wall -Wextra -Wno-unused-parameter -Wsign-compare -fvisibility=hidden -fvisibility-inlines-hidden -msse2 /MP /wd4251 /wd4503 -o CMakeFiles/gnuradio-osmosdr.dir/source_impl.cc.o -c /home/dmitrii/Documents/gr-osmosdr-0.1.5/lib/source_impl.cc 

Natürlich ist der Quellcode nicht kompatibel und nichts kompiliert. Dies ist die Besonderheit, mit Ubuntu unter Windows zu arbeiten. Die Lösung ist einfach: Hängen Sie den Ordner aus ( sudo umount / mnt / c ), wiederholen Sie cmake und build und hängen Sie ihn dann wieder ein ( sudo mount -t drvfs C: / mnt / c ). Bereitgestellte Laufwerke sind nützlich, wenn wir aufgezeichnete Dateien in HDSDR verarbeiten.

Der letzte Schritt ist die Installation des Iridium-Toolkits :

 git clone https://github.com/muccc/iridium-toolkit.git 

Jetzt ist alles fertig und wir können Iridium-Signale aufzeichnen und verarbeiten.

Schritt 2 Signalaufzeichnung

Hier ist alles ganz einfach - HDSDR öffnen, den Bereich mit mehr Signalen auswählen, eine IQ-Aufzeichnung erstellen. Die Signale in Iridium gehen nicht ständig, sondern in "Paketen", so dass Sie möglicherweise etwas warten müssen. Es gibt nur einen Nachteil: Ein großes Aufnahmevolumen von einer Minute mit einer Bandbreite von 2 MHz benötigt ungefähr 500 MB.

Ich wiederhole noch einmal, dass dies unter „normalem“ Linux nicht erforderlich ist und Sie gr-iridium sofort mit einem SDR-Empfänger ohne Zwischenaufzeichnung starten können, dies funktionierte jedoch nicht unter Windows - lsusb erkennt keine angeschlossenen Geräte.

Schritt 3 Bearbeitung

Wir beenden die Aufnahme in HDSDR, wechseln zu Ubuntu im Ordner / mnt / c / Users / XXX / Documents / HDSDR und geben den folgenden Befehl ein:

 iridium-extractor -c 1619XXXXXX -r 2000000 -f sc16 --offline HDSDR_20200112_110653Z_1619XXXkHz_RF.wav | grep "A:OK" 

Hier ist HDSDR_20200112_110653Z_1619XXXkkHz_RF.wav die aufgenommene Datei, 1619XXXXXX ist die zentrale Aufnahmefrequenz und 2000000 ist die Bandbreite der aufgenommenen WAV-Datei. Wenn alles richtig gemacht wurde, sollte so etwas erscheinen:



Wenn die Pakete nicht sichtbar sind, ist es sinnlos, weiter zu gehen. Sie müssen herausfinden, was der Fehler ist. Wenn die Datensätze sichtbar sind, wiederholen Sie den Befehl erneut, speichern Sie die Ergebnisse in einer Datei und verarbeiten Sie die Datei mit iridium-parser.py:

 iridium-extractor -c 1619XXXXXX -r 2000000 -f sc16 --offline HDSDR_20200112_110653Z_1619XXXkHz_RF.wav | grep "A:OK" > output.bits python iridium-parser.py output.bits > output.parsed 

Jetzt können wir die Informationen aus der gespeicherten Datei output.parsed extrahieren . Sie können von dort verschiedene Daten "abrufen", zum Beispiel Text- oder sogar Sprachnachrichten. Aus rechtlichen Gründen werde ich dies hier nicht tun, jeder kann die Beschreibung auf der Projektseite genauer lesen. Es gibt dort interessante Punkte, zum Beispiel in Iridium, nicht nur Text- oder Sprachdaten können übertragen werden, sondern auch GSM-Daten, d.h. Das Iridium-Terminal kann GSM-Kommunikationsdienste an Orten bereitstellen, an denen es keine übliche Abdeckung gibt - der Satellit und das Terminal funktionieren hier wahrscheinlich nur als Verlängerungskabel für Standard-GSM-Pakete.

Sie können beispielsweise demonstrieren, wie Sie die Koordinaten eines fliegenden Satelliten aus den aufgezeichneten Daten abrufen können:



Es ist einfach, die Koordinaten in Google Maps zu importieren und zu sehen, dass der Satellit während der Aufnahme irgendwo über Oslo geflogen ist (rote Linie):



Weitere Iridium Toolkit-Funktionen finden Sie auf der Github-Seite .

Fazit


Wie Sie sehen, ist der Vorgang des Empfangs von Satellitensignalen nicht so kompliziert, und aus der Sicht des Studiums von Kommunikationssystemen ist er sehr interessant.

Für diejenigen, die Iridium genauer studieren möchten, ein paar Videos (auf Englisch):



Ich hoffe das reicht für ein besseres Verständnis.

Wie immer alle erfolgreichen Experimente.

Source: https://habr.com/ru/post/de483604/


All Articles