Hola Habr
En la
parte anterior, examinamos la recepción de señales satelitales de Inmarsat. Ahora consideraremos un sistema igualmente interesante: el sistema de comunicación satelital Iridium, en el que cualquiera también puede recibir señales en casa.
Cobertura de la red Iridium, foto de WikipediaPara aquellos que estén interesados en cómo funciona esto, continuó bajo el corte.
Nota : no hay nada secreto en los datos a continuación, los decodificadores descritos en el artículo han estado en github durante más de un año. Las frecuencias y señales también están disponibles para cualquiera que esté dispuesto a gastar $ 35 en la antena y ponerla en la ventana. Sin embargo, el sistema de comunicación Iridium está operativo, por lo que algunos datos no se presentan por razones legales. Este material está destinado exclusivamente para el conocimiento, la publicación o el almacenamiento de los mensajes recibidos, puede no estar permitido por las leyes de ciertos países.
Hierro
No hay nada nuevo aquí, todo se describió en un
artículo anterior . Utilicé la antena de antena parche Active L-Band 1525-1637, que se puede comprar por $ 35, y el receptor SDRPlay, que se puede reemplazar con el RTL SDR V3, que también cuesta alrededor de $ 35. Por lo tanto, todo costará menos de $ 100, que es bastante asequible.
El conjunto completo para la recepción se ve así (cajas de fósforos para la escala):

Luego, abra la ventana (el vidrio amortigua las ondas de radio de este rango), dirija la antena hacia el cielo y podrá recibir una señal. Es importante no olvidar incluir sesgo-tee en la configuración del receptor, ya que La antena está activa y no funcionará sin energía. Si todo se hizo correctamente, a una frecuencia de aproximadamente 1.6 GHz, deberíamos ver esta imagen:

Por cierto, si observa el espectro con más detalle, puede ver claramente la pendiente de las líneas debido al efecto Doppler: los satélites se mueven en órbita y la frecuencia cambia.

Es interesante observar dos diferencias bastante fundamentales entre Iridium e Inmarsat.
Primero, Inmarsat utiliza
satélites geoestacionarios que vuelan en el espacio en una órbita geoestacionaria con una altura de 35786 km. En contraste, Iridium utiliza un enfoque diferente:
más de 60 satélites vuelan en órbitas bajas (871 km), cubriendo todo el territorio de la Tierra (foto en KDPV). Esto permite el uso de antenas más compactas y no direccionales, y dicho sistema funciona mejor en los territorios del norte, donde la recepción de satélites geoestacionarios es limitada. Por cierto, se calculó el número de satélites Iridium para que en cualquier momento el suscriptor pueda usar varios satélites visibles en el cielo.

Y en segundo lugar, Iridium utiliza un esquema de transferencia de datos fundamentalmente diferente: en lugar de enlaces de datos constantes a una frecuencia constante, se utilizan paquetes de ráfaga corta, que se pueden ver en la imagen.
Con esto terminaremos la parte "teórica", si todo funciona, entonces es hora de pasar al software.
Software
Con el software para decodificar, hay una complejidad "pequeña": está escrita bajo Linux. Quizás haya una forma secreta de compilar proyectos de Gnu Radio en Windows, pero nunca, excepto por una gran cantidad de errores, he fallado. Con Linux, todo es simple y funciona de inmediato, pero supongo que la mayoría de los lectores todavía tienen Windows instalado. Entonces, daremos la vuelta al otro lado: registraremos las señales en HDSDR e iniciaremos el decodificador para procesarlas desde Ubuntu en Windows 10. Afortunadamente, 10ka
proporciona esta función .
Paso 1 Compilando gr-iridioPrimero debe descargar Ubuntu en la App Store e instalar GNU Radio allí.
En realidad, compilar el decodificador
gr-iridium no es particularmente difícil:
git clone https://github.com/muccc/gr-iridium.git cd gr-iridium mkdir build cd build cmake .. make sudo make install sudo ldconfig
El proceso se parece a esto:

El decodificador requiere el
módulo gr-osmosdr . Su compilación se realiza con el mismo principio, con solo una diferencia: necesitamos deshabilitar los receptores que son innecesarios en este paso, de lo contrario obtendremos errores de compilación.
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
Hay una trampa graciosa. Al ejecutar make, recibí errores extraños como "c ++: error: / wd4251: No existe tal archivo o directorio". Una búsqueda en Google muestra que estos errores están relacionados con la versión de Windows, lo que no puede ser posible al compilar en Ubuntu. Resultó, tal vez, que después de imprimir un registro detallado con el comando "make -n", descubrí que las unidades de Windows están montadas por defecto en Ubuntu, y cmake "recogió" estos archivos:
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
Naturalmente, el código fuente es incompatible y nada se compila. Tal es la peculiaridad de trabajar con Ubuntu desde Windows. La solución es simple: desmonte la carpeta (
sudo umount / mnt / c ), repita cmake y build, luego vuelva a
montarla (
sudo mount -t drvfs C: / mnt / c ). Las unidades montadas serán útiles cuando procesemos archivos grabados en HDSDR.
El último paso es instalar el
Iridium Toolkit :
git clone https://github.com/muccc/iridium-toolkit.git
Ahora todo está listo, y podemos grabar y procesar señales de Iridium.
Paso 2 Grabación de señalAquí todo es simple: abra HDSDR, seleccione el área donde hay más señales, haga un registro IQ. Las señales en Iridium no van constantemente, sino en "paquetes", por lo que puede que tenga que esperar un poco. Solo hay un inconveniente: un gran volumen de grabación, un minuto con un ancho de banda de 2 MHz toma aproximadamente 500 MB.
Repito una vez más que bajo Linux "normal" esto no es necesario, y puede iniciar griridium inmediatamente con un receptor SDR sin un registro intermedio, pero esto no funcionó en Windows: lsusb no ve los dispositivos conectados.
Paso 3 ProcesamientoDejamos de grabar en HDSDR, cambiamos a Ubuntu en la carpeta / mnt / c / Users / XXX / Documents / HDSDR e ingresamos el comando:
iridium-extractor -c 1619XXXXXX -r 2000000 -f sc16 --offline HDSDR_20200112_110653Z_1619XXXkHz_RF.wav | grep "A:OK"
Aquí HDSDR_20200112_110653Z_1619XXXkkHz_RF.wav es el archivo que grabamos, 1619XXXXXX es la frecuencia de grabación central y 2000000 es el ancho de banda del archivo wav grabado. Si todo se hizo correctamente, debería aparecer algo como esto:

Si los paquetes no son visibles, entonces es inútil ir más allá, debe averiguar cuál es el error. Si los registros están visibles, repita el comando nuevamente, guarde los resultados en un archivo y procese el archivo usando 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
Ahora podemos extraer la información del archivo
output.parsed guardado. Desde allí puede "obtener" diversos datos, por ejemplo, mensajes de texto o incluso de voz. Por razones legales, no haré esto aquí, cualquiera puede leer más sobre la descripción en
la página del proyecto . Hay puntos interesantes allí, por ejemplo, en Iridium, no solo se pueden transmitir datos de texto o voz, sino también datos GSM, es decir El terminal Iridium puede proporcionar servicios de comunicación GSM en aquellos lugares donde no hay cobertura habitual: el satélite y el terminal aquí probablemente solo funcionan como un cable de extensión para paquetes GSM estándar.
Por ejemplo, puede demostrar cómo obtener las coordenadas de un satélite volador a partir de los datos registrados:

Es fácil importar las coordenadas en Google Maps y ver que durante la grabación el satélite voló en algún lugar sobre Oslo (línea roja):

Se pueden encontrar otras características de Iridium Toolkit en
la página de Github .
Conclusión
Como puede ver, el proceso de recibir señales de los satélites no es tan complicado, y desde el punto de vista del estudio de los sistemas de comunicación, es bastante interesante.
Para aquellos que deseen estudiar Iridium con más detalle, un par de videos (en inglés):
Espero que esto sea suficiente para una mejor comprensión.
Como de costumbre, todos los experimentos exitosos.