Iridium: menerima dan mendekode sinyal konstelasi satelit di rumah

Hai, Habr.

Pada bagian sebelumnya, kami memeriksa penerimaan sinyal dari satelit Inmarsat. Sekarang kita akan mempertimbangkan sistem yang sama menariknya - sistem komunikasi satelit Iridium, yang siapa pun juga dapat menerima sinyal di rumah.


Cakupan jaringan Iridium, foto Wikipedia

Bagi yang tertarik dengan cara kerjanya, lanjutkan di bawah cut.

Catatan : tidak ada rahasia dalam data di bawah ini, decoder yang dijelaskan dalam artikel telah ada di github selama lebih dari setahun. Frekuensi dan sinyal juga tersedia untuk siapa saja yang bersedia menghabiskan $ 35 pada antena dan meletakkannya di jendela. Namun demikian, sistem komunikasi Iridium operasional, sehingga beberapa data tidak ditata karena alasan hukum. Materi ini dimaksudkan hanya untuk kenalan, publikasi atau penyimpanan pesan yang diterima mungkin tidak diizinkan berdasarkan undang-undang negara tertentu.

Besi


Tidak ada yang baru di sini, semuanya dijelaskan dalam artikel sebelumnya . Saya menggunakan antena Antena Patch L-Band 1525-1637 Aktif, yang dapat dibeli seharga $ 35, dan penerima SDRPlay, yang dapat diganti dengan RTL SDR V3, yang juga berharga sekitar $ 35. Dengan demikian, semuanya akan menelan biaya kurang dari $ 100, yang cukup terjangkau.

Seluruh rangkaian untuk penerimaan terlihat seperti ini (kotak korek api untuk skala):



Selanjutnya, buka jendela (kaca meredam gelombang radio dari kisaran ini), mengarahkan antena ke langit, dan Anda dapat menerima sinyal. Penting untuk tidak lupa memasukkan bias-tee dalam pengaturan penerima, karena Antena aktif dan tidak akan berfungsi tanpa daya. Jika semuanya dilakukan dengan benar, pada frekuensi sekitar 1,6 GHz, kita akan melihat gambar ini:



Omong-omong, jika Anda melihat spektrum dengan lebih detail, Anda dapat dengan jelas melihat kemiringan garis akibat efek Doppler - satelit bergerak di orbit, dan frekuensi berubah.



Sangat menarik untuk mencatat dua perbedaan mendasar antara Iridium dan Inmarsat.

Pertama, Inmarsat menggunakan satelit geostasioner yang terbang di ruang angkasa dalam orbit geostasioner dengan ketinggian 35786 km. Sebaliknya, Iridium menggunakan pendekatan yang berbeda - lebih dari 60 satelit terbang dalam orbit rendah (871 km), meliputi seluruh wilayah Bumi (foto pada KDPV). Ini memungkinkan penggunaan antena yang lebih padat dan non-directional, dan sistem seperti itu berfungsi lebih baik di wilayah utara, di mana penerimaan satelit geostasioner terbatas. By the way, jumlah satelit Iridium dihitung sehingga setiap saat pelanggan dapat menggunakan beberapa satelit yang terlihat di langit.



Dan kedua, Iridium menggunakan skema transfer data yang berbeda secara fundamental - alih-alih tautan data konstan pada frekuensi konstan, paket burst pendek digunakan, yang dapat dilihat pada gambar.

Pada bagian ini kita akan mengakhiri bagian "teoretis", jika semuanya berfungsi, maka saatnya beralih ke perangkat lunak.

Perangkat lunak


Dengan perangkat lunak untuk decoding, ada satu kompleksitas "kecil" - ditulis di Linux. Mungkin ada cara rahasia untuk mengkompilasi proyek Radio Gnu di Windows, tetapi saya tidak pernah, kecuali untuk sejumlah besar kesalahan, gagal. Dengan Linux, semuanya sederhana dan berfungsi dengan baik, tetapi saya berasumsi bahwa sebagian besar pembaca masih menginstal Windows. Jadi kita akan pergi ke arah lain - kita akan merekam sinyal dalam HDSDR, dan kita akan memulai decoder untuk memprosesnya dari bawah Ubuntu di Windows 10. Untungnya, 10ka menyediakan fitur ini .

Langkah 1 Kompilasi gr-iridium

Pertama, Anda perlu mengunduh Ubuntu ke App Store dan menginstal GNU Radio di sana.

Sebenarnya kompilasi decoder gr-iridium tidak terlalu sulit:

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

Prosesnya terlihat seperti ini:



Dekoder membutuhkan modul gr-osmosdr . Kompilasi dilakukan dengan prinsip yang sama, dengan hanya satu perbedaan - kita perlu menonaktifkan receiver yang tidak diperlukan pada langkah ini, jika tidak kita akan mendapatkan kesalahan kompilasi.

 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 

Ada jebakan lucu. Menjalankan make, saya mendapat kesalahan aneh seperti "c ++: error: / wd4251: Tidak ada file atau direktori". Pencarian google menunjukkan bahwa kesalahan ini terkait dengan versi Windows, yang tidak dapat dilakukan saat kompilasi di Ubuntu. Ternyata, mungkin - setelah mencetak log terperinci dengan perintah "make -n", saya menemukan bahwa drive Windows dipasang secara default di Ubuntu, dan cmake "mengambil" file-file ini:

 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 

Secara alami, kode sumber tidak kompatibel dan tidak ada yang dikompilasi. Itulah kekhasan bekerja dengan Ubuntu dari bawah Windows. Solusinya sederhana - unmount folder ( sudo umount / mnt / c ), ulangi cmake dan build, lalu pasang kembali ( sudo mount -t drvfs C: / mnt / c ). Drive yang terpasang akan berguna ketika kami memproses file yang direkam dalam HDSDR.

Langkah terakhir adalah menginstal Iridium Toolkit :

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

Sekarang semuanya sudah siap, dan kita dapat merekam dan memproses sinyal Iridium.

Langkah 2 Rekaman sinyal

Semuanya sederhana di sini - buka HDSDR, pilih area di mana ada lebih banyak sinyal, buat catatan IQ. Sinyal di Iridium tidak berjalan terus-menerus, tetapi dalam "paket", jadi Anda mungkin harus menunggu sedikit. Hanya ada satu kelemahan - volume rekaman besar, satu menit dengan bandwidth 2 MHz membutuhkan sekitar 500 MB.

Saya ulangi sekali lagi bahwa di bawah Linux "normal" ini tidak diperlukan, dan Anda dapat segera memulai gr-iridium dengan penerima SDR tanpa catatan perantara, tetapi ini tidak berfungsi pada Windows - lsusb tidak melihat perangkat yang terhubung.

Langkah 3 Pengolahan

Kami berhenti merekam dalam HDSDR, beralih ke Ubuntu di folder / mnt / c / Pengguna / XXX / Dokumen / HDSDR dan masukkan perintah:

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

Di sini HDSDR_20200112_110653Z_1619XXXkkHz_RF.wav adalah file yang kami rekam, 1619XXXXXX adalah frekuensi perekaman pusat dan 2.000.000 adalah bandwidth dari file wav yang direkam. Jika semuanya dilakukan dengan benar, sesuatu seperti ini akan muncul:



Jika paket tidak terlihat, maka percuma untuk melangkah lebih jauh, Anda perlu mencari tahu apa kesalahannya. Jika catatan terlihat, ulangi perintah lagi, simpan hasilnya ke file dan proses file menggunakan 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 

Sekarang kita dapat mengekstrak informasi dari file output.parsed yang disimpan. Anda dapat "mendapatkan" dari sana berbagai data, misalnya teks atau bahkan pesan suara. Untuk alasan hukum, saya tidak akan melakukan ini di sini, siapa pun dapat membaca deskripsi di halaman proyek lebih terinci. Ada poin menarik di sana, misalnya, di Iridium, tidak hanya data teks atau suara yang dapat ditransmisikan, tetapi juga data GSM, yaitu Terminal Iridium dapat menyediakan layanan komunikasi GSM di tempat-tempat di mana tidak ada jangkauan biasa - satelit dan terminal di sini mungkin hanya berfungsi sebagai "kabel ekstensi" untuk paket GSM standar.

Misalnya, Anda dapat mendemonstrasikan cara mendapatkan koordinat satelit terbang dari data yang direkam:



Mudah untuk mengimpor koordinat ke Google Maps dan melihat bahwa selama perekaman, satelit terbang ke suatu tempat di atas Oslo (garis merah):



Fitur Iridium Toolkit lainnya dapat ditemukan di halaman github .

Kesimpulan


Seperti yang Anda lihat, proses penerimaan sinyal dari satelit tidak begitu rumit, dan dari sudut pandang mempelajari sistem komunikasi, itu cukup menarik.

Bagi mereka yang ingin mempelajari Iridium lebih detail, beberapa video (dalam bahasa Inggris):



Saya harap ini cukup untuk pemahaman yang lebih baik.

Seperti biasa, semua percobaan berhasil.

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


All Articles