Iridium: recevoir et décoder des signaux de constellation de satellites à domicile

Salut, Habr.

Dans la partie précédente, nous avons examiné la réception des signaux des satellites Inmarsat. Nous allons maintenant considérer un système tout aussi intéressant - le système de communication par satellite Iridium, que n'importe qui peut également recevoir des signaux à la maison.


Couverture du réseau Iridium, photo Wikipédia

Pour ceux qui sont intéressés par la façon dont cela fonctionne, continue sous la coupe.

Remarque : il n'y a rien de secret dans les données ci-dessous, les décodeurs décrits dans l'article sont sur github depuis plus d'un an. Les fréquences et les signaux sont également disponibles pour tous ceux qui souhaitent dépenser 35 $ pour l'antenne et la mettre dans la fenêtre. Néanmoins, le système de communication Iridium est opérationnel, donc certaines données ne sont pas présentées pour des raisons légales. Ce matériel est destiné uniquement à la connaissance, la publication ou le stockage des messages reçus peuvent ne pas être autorisés par les lois de certains pays.

Le fer


Il n'y a rien de nouveau ici, tout a été décrit dans un précédent article . J'ai utilisé l'antenne active L-Band 1525-1637 Patch Antenna, qui peut être achetée pour 35 $, et le récepteur SDRPlay, qui peut être remplacé par le RTL SDR V3, qui coûte également environ 35 $. Ainsi, tout coûtera moins de 100 $, ce qui est assez abordable.

L'ensemble de la réception ressemble à ceci (boîte d'allumettes pour l'échelle):



Ensuite, ouvrez la fenêtre (le verre amortit les ondes radio de cette portée), dirigez l'antenne dans le ciel et vous pouvez recevoir un signal. Il est important de ne pas oublier d'inclure le biais de départ dans les paramètres du récepteur, car L'antenne est active et ne fonctionnera pas sans alimentation. Si tout a été fait correctement, à une fréquence d'environ 1,6 GHz, nous devrions voir cette image:



Soit dit en passant, si vous regardez le spectre avec plus de détails, vous pouvez clairement voir la pente des raies due à l'effet Doppler - les satellites se déplacent en orbite et la fréquence change.



Il est intéressant de noter deux différences assez fondamentales entre Iridium et Inmarsat.

Tout d'abord, Inmarsat utilise des satellites géostationnaires volant dans l'espace sur une orbite géostationnaire à une altitude de 35786 km. En revanche, Iridium utilise une approche différente - plus de 60 satellites volent en orbite basse (871 km), couvrant tout le territoire de la Terre (photo sur KDPV). Cela permet l'utilisation d'antennes plus compactes et non directionnelles, et un tel système fonctionne mieux dans les territoires du Nord, où la réception des satellites géostationnaires est limitée. Soit dit en passant, le nombre de satellites Iridium a été calculé de sorte qu'à tout moment, l'abonné puisse utiliser plusieurs satellites visibles dans le ciel.



Et deuxièmement, Iridium utilise un schéma de transfert de données fondamentalement différent - au lieu de liaisons de données constantes à une fréquence constante, des paquets de rafale courts sont utilisés, ce qui peut être vu dans l'image.

Sur ce nous terminerons la partie «théorique», si tout fonctionne, alors il est temps de passer au logiciel.

Logiciels


Avec les logiciels de décodage, il existe une "petite" complexité - elle est écrite sous Linux. Il existe peut-être un moyen secret de compiler des projets Gnu Radio sous Windows, mais je n'ai jamais, à l'exception d'un grand nombre d'erreurs, échoué. Avec Linux, tout est simple et fonctionne hors de la boîte, mais je suppose que la plupart des lecteurs ont toujours Windows installé. Donc, nous allons faire le tour dans l'autre sens - nous enregistrerons les signaux en HDSDR, et nous démarrerons le décodeur pour les traiter sous Ubuntu dans Windows 10. Heureusement, 10ka fournit cette fonctionnalité .

Étape 1 Compilation de gr-iridium

Vous devez d'abord télécharger Ubuntu sur l'App Store et y installer GNU Radio.

En fait, la compilation du décodeur gr-iridium n'est pas particulièrement difficile:

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

Le processus ressemble à ceci:



Le décodeur nécessite le module gr-osmosdr . Sa compilation se fait sur le même principe, avec une seule différence - nous devons désactiver les récepteurs qui ne sont pas nécessaires à cette étape, sinon nous obtiendrons des erreurs de compilation.

 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 

Il y a un piège drôle. En exécutant make, j'ai eu des erreurs étranges comme "c ++: error: / wd4251: Aucun fichier ou répertoire de ce type". Une recherche Google montre que ces erreurs sont liées à la version Windows, ce qui ne peut pas être possible lors de la compilation sous Ubuntu. Il s'est avéré, peut-être - après avoir imprimé un journal détaillé avec la commande "make -n", j'ai découvert que les lecteurs Windows sont montés par défaut dans Ubuntu, et cmake a "récupéré" ces fichiers:

 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 

Naturellement, le code source est incompatible et rien ne se compile. Telle est la particularité de travailler avec Ubuntu sous Windows. La solution est simple - démontez le dossier ( sudo umount / mnt / c ), répétez cmake et build, puis remontez-le ( sudo mount -t drvfs C: / mnt / c ). Les lecteurs montés seront utiles lorsque nous traitons des fichiers enregistrés en HDSDR.

La dernière étape consiste à installer la boîte à outils Iridium :

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

Maintenant, tout est prêt et nous pouvons enregistrer et traiter les signaux Iridium.

Étape 2 Enregistrement du signal

Tout est simple ici - ouvrez HDSDR, sélectionnez la zone où il y a le plus de signaux, faites un enregistrement IQ. Les signaux dans Iridium ne vont pas constamment, mais dans des "paquets", donc vous devrez peut-être attendre un peu. Il n'y a qu'un seul inconvénient - un grand volume d'enregistrement, une minute avec une bande passante de 2 MHz prend environ 500 Mo.

Je répète encore une fois que sous Linux «normal», ce n'est pas nécessaire, et vous pouvez démarrer gr-iridium immédiatement avec un récepteur SDR sans enregistrement intermédiaire, mais cela n'a pas fonctionné sous Windows - lsusb ne voit pas les appareils connectés.

Étape 3 Traitement

Nous arrêtons l'enregistrement en HDSDR, passons à Ubuntu dans le dossier / mnt / c / Users / XXX / Documents / HDSDR et entrons la commande:

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

Ici, HDSDR_20200112_110653Z_1619XXXkkHz_RF.wav est le fichier que nous avons enregistré, 1619XXXXXX est la fréquence d'enregistrement centrale et 2 000 000 est la bande passante du fichier wav enregistré. Si tout a été fait correctement, quelque chose comme ça devrait apparaître:



Si les packages ne sont pas visibles, il est inutile d'aller plus loin, vous devez savoir quelle est l'erreur. Si les enregistrements sont visibles, répétez la commande à nouveau, enregistrez les résultats dans un fichier et traitez le fichier en utilisant 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 

Nous pouvons maintenant extraire les informations du fichier output.parsed enregistré. Vous pouvez "récupérer" à partir de là diverses données, par exemple du texte ou même des messages vocaux. Pour des raisons juridiques, je ne le ferai pas ici, tout le monde peut lire la description sur la page du projet plus en détail. Il y a des points intéressants là-bas, par exemple, dans Iridium, non seulement des données textuelles ou vocales peuvent être transmises, mais aussi des données GSM, c'est-à-dire Le terminal Iridium peut fournir des services de communication GSM dans les endroits où il n'y a pas de couverture habituelle - le satellite et le terminal ici ne fonctionnent probablement que comme une rallonge pour les paquets GSM standard.

Par exemple, vous pouvez montrer comment obtenir les coordonnées d'un satellite volant à partir des données enregistrées:



Il est facile d'importer les coordonnées dans Google Maps et de voir que pendant l'enregistrement, le satellite a volé quelque part au-dessus d'Oslo (ligne rouge):



D'autres fonctionnalités d'Iridium Toolkit sont disponibles sur la page github .

Conclusion


Comme vous pouvez le voir, le processus de réception des signaux des satellites n'est pas si compliqué, et du point de vue de l'étude des systèmes de communication, il est assez intéressant.

Pour ceux qui souhaitent étudier Iridium plus en détail, quelques vidéos (en anglais):



J'espère que cela suffit pour une meilleure compréhension.

Comme d'habitude, toutes les expériences réussies.

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


All Articles