Irídio: recebe e decodifica sinais de constelação de satélites em casa

Oi Habr.

Na parte anterior, examinamos a recepção de sinais dos satélites Inmarsat. Agora consideraremos um sistema igualmente interessante - o sistema de comunicação via satélite Iridium, que qualquer pessoa também pode receber sinais em casa.


Cobertura de rede Iridium, foto na Wikipedia

Para aqueles que estão interessados ​​em como isso funciona, continuaram sob o corte.

Nota : não há nada secreto nos dados abaixo; os decodificadores descritos no artigo estão no github há mais de um ano. Frequências e sinais também estão disponíveis para quem está disposto a gastar US $ 35 na antena e colocá-lo na janela. No entanto, o sistema de comunicação Iridium está operacional, portanto, alguns dados não são apresentados por razões legais. Este material destina-se unicamente ao conhecimento, publicação ou armazenamento de mensagens recebidas, podendo não ser permitido pelas leis de certos países.

Ferro


Não há nada de novo aqui, tudo foi descrito em um artigo anterior . Usei a antena Active L-Band 1525-1637 Patch Antena, que pode ser comprada por US $ 35, e o receptor SDRPlay, que pode ser substituído pelo RTL SDR V3, que também custa cerca de US $ 35. Assim, tudo custará menos de US $ 100, o que é bastante acessível.

O conjunto inteiro para a recepção fica assim (caixas de correspondências por escala):



Em seguida, abra a janela (o vidro amortece as ondas de rádio dessa faixa), direcione a antena para o céu e você poderá receber um sinal. É importante não esquecer de incluir viés-tee nas configurações do receptor, pois A antena está ativa e não funcionará sem energia. Se tudo foi feito corretamente, com uma frequência de cerca de 1,6 GHz, devemos ver esta figura:



A propósito, se você observar o espectro com mais detalhes, poderá ver claramente a inclinação das linhas devido ao efeito Doppler - os satélites se movem em órbita e a frequência muda.



É interessante notar duas diferenças bastante fundamentais entre Iridium e Inmarsat.

Em primeiro lugar, o Inmarsat usa satélites geoestacionários que voam no espaço em uma órbita geoestacionária com uma altitude de 35786 km. Em contraste, o Iridium usa uma abordagem diferente - mais de 60 satélites voam em órbitas baixas (871 km), cobrindo todo o território da Terra (foto em KDPV). Isso permite o uso de antenas mais compactas e omnidirecionais, e esse sistema funciona melhor nos territórios do norte, onde a recepção de satélites geoestacionários é limitada. A propósito, o número de satélites Iridium foi calculado para que a qualquer momento o assinante possa usar vários satélites visíveis no céu.



E segundo, o Iridium usa um esquema de transferência de dados fundamentalmente diferente - em vez de links de dados constantes a uma frequência constante, são usados ​​pacotes de rajada curta, que podem ser vistos na figura.

Com isso, encerraremos a parte "teórica", se tudo funcionar, é hora de seguir para o software.

De software


Com o software para decodificação, há uma complexidade "pequena" - é escrita no Linux. Talvez exista uma maneira secreta de compilar projetos do Gnu Radio no Windows, mas eu nunca, exceto por um grande número de erros, falhou. Com o Linux, tudo é simples e funciona imediatamente, mas presumo que a maioria dos leitores ainda tenha o Windows instalado. Então, daremos uma guinada no sentido inverso - gravaremos os sinais no HDSDR e iniciaremos o decodificador para processá-los no Ubuntu no Windows 10. Felizmente, o 10ka fornece esse recurso .

Etapa 1 Compilando gr-iridium

Primeiro você precisa baixar o Ubuntu na App Store e instalar o GNU Radio lá.

Na verdade, compilar o decodificador gr-irídio não é 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 

O processo é mais ou menos assim:



O decodificador requer o módulo gr-osmosdr . Sua compilação é feita com o mesmo princípio, com apenas uma diferença - precisamos desativar os receptores desnecessários nesta etapa, caso contrário, obteremos erros de compilação.

 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 

Há uma armadilha engraçada. Ao executar o make, obtive erros estranhos como "c ++: error: / wd4251: Esse arquivo ou diretório não existe". Uma pesquisa no google mostra que esses erros estão relacionados à versão do Windows, o que não é possível ao compilar no Ubuntu. Aconteceu que, talvez - depois de imprimir um log detalhado com o comando "make -n", descobri que as unidades do Windows são montadas por padrão no Ubuntu e o cmake "pegou" esses arquivos:

 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, o código fonte é incompatível e nada compila. Essa é a peculiaridade de trabalhar com o Ubuntu no Windows. A solução é simples - desmonte a pasta ( sudo umount / mnt / c ), repita cmake e build e monte-a novamente ( sudo mount -t drvfs C: / mnt / c ). As unidades montadas serão úteis quando processarmos os arquivos gravados no HDSDR.

A etapa final é instalar o Iridium Toolkit :

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

Agora está tudo pronto, e podemos gravar e processar sinais de Iridium.

Etapa 2 Gravação de Sinal

Tudo é simples aqui - abra o HDSDR, selecione a área onde há mais sinais, faça um registro de QI. Os sinais no Iridium não são constantes, mas em "pacotes", portanto, talvez você precise esperar um pouco. Há apenas uma desvantagem - um grande volume de gravação, um minuto com uma largura de banda de 2 MHz leva cerca de 500 MB.

Repito mais uma vez que, no Linux "normal", isso não é necessário e você pode iniciar o gr-iridium imediatamente com um receptor SDR sem um registro intermediário, mas isso não funcionou no Windows - o lsusb não vê os dispositivos conectados.

Etapa 3 Processamento

Paramos de gravar no HDSDR, mudamos para o Ubuntu na pasta / mnt / c / Users / XXX / Documents / HDSDR e inserimos o comando:

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

Aqui HDSDR_20200112_110653Z_1619XXXkkHz_RF.wav é o arquivo que gravamos, 1619XXXXXX é a frequência de gravação central e 2000000 é a largura de banda do arquivo wav gravado. Se tudo foi feito corretamente, algo como isto deve aparecer:



Se os pacotes não estiverem visíveis, é inútil ir além, você precisa descobrir qual é o erro. Se os registros estiverem visíveis, repita o comando novamente, salve os resultados em um arquivo e processe o arquivo 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 

Agora podemos extrair as informações do arquivo output.parsed salvo. Você pode "obter" a partir daí vários dados, por exemplo, texto ou até mensagens de voz. Por razões legais, não farei isso aqui, qualquer pessoa pode ler a descrição na página do projeto com mais detalhes. Existem pontos interessantes, por exemplo, no Iridium, não apenas dados de texto ou voz podem ser transmitidos, mas também dados GSM, ou seja, O terminal Iridium pode fornecer serviços de comunicação GSM nos locais onde não há cobertura usual - o satélite e o terminal aqui provavelmente funcionam apenas como um cabo de extensão para pacotes GSM padrão.

Por exemplo, você pode demonstrar como obter as coordenadas de um satélite voador a partir dos dados gravados:



É fácil importar as coordenadas para o Google Maps e ver que durante a gravação o satélite voou em algum lugar acima de Oslo (linha vermelha):



Outros recursos do Iridium Toolkit podem ser encontrados na página do github .

Conclusão


Como você pode ver, o processo de receber sinais dos satélites não é tão complicado e, do ponto de vista do estudo de sistemas de comunicação, é bastante interessante.

Para aqueles que desejam estudar o Iridium com mais detalhes, alguns vídeos (em inglês):



Espero que isso seja suficiente para uma melhor compreensão.

Como sempre, todas as experiências bem-sucedidas.

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


All Articles