
Dump1090 é um simples decodificador de Modo S para dispositivos RTLSDR
O Dump 1090 é um decodificador Mode S projetado especificamente para dispositivos RTLSDR.
As principais características são:
Embora de vez em quando eu ainda adicione/corrija coisas no meu fork, viso o minimalismo da implementação. No entanto, existe um fork muito mais completo em funcionalidades disponível, desenvolvido por MalcolmRobb.
Digite "make".
Para capturar tráfego diretamente do seu dispositivo RTL e mostrar o tráfego capturado na saída padrão, basta executar o programa sem opções:
./dump1090
Para apenas exibir mensagens hexadecimais:
./dump1090 --raw
Para executar o programa no modo interativo:
./dump1090 --interactive
Para executar o programa no modo interativo, com suporte de rede, e conectar com seu navegador em http://localhost:8080 para ver tráfego ao vivo:
./dump1090 --interactive --net
No modo interativo é possível ter uma saída menos densa em informações, mas mais "estilo arcade", onde a tela é atualizada a cada segundo exibindo todas as aeronaves vistas recentemente com algumas informações adicionais como altitude e número do voo, extraídas dos pacotes Mode S recebidos.
Para decodificar dados de arquivo, use:
./dump1090 --ifile /caminho/para/arquivo.bin
O arquivo binário deve ser criado usando rtl_sdr assim (ou com qualquer outro
programa capaz de gerar amostras IQ de 8 bits sem sinal a uma taxa de amostragem de 2 MHz).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
No exemplo rtl_sdr, um ganho de 50 é usado; simplesmente você deve usar o maior ganho
disponível para seu sintonizador. Isso não é necessário ao chamar o Dump1090 em si,
pois ele é capaz de selecionar automaticamente o maior ganho suportado.
É possível alimentar o programa com dados via entrada padrão usando a opção --ifile com "-" como argumento.
O Dump1090 pode ser chamado com outras opções de linha de comando para definir um ganho, frequência diferentes, etc. Para uma lista de opções use:
./dump1090 --help
Tudo que não está documentado aqui deve ser óbvio, e para a maioria dos usuários chamá-lo sem argumentos é a melhor coisa a fazer.
Por padrão, o Dump1090 tenta corrigir erros de bit usando o checksum CRC. O programa usa uma tabela de síndromes pré-computada para identificar e corrigir rapidamente até dois erros de bit em mensagens recebidas.
Isso realmente consegue corrigir erros e funciona de forma confiável na minha experiência, no entanto, se você estiver interessado em dados muito confiáveis, sugiro usar a opção de linha de comando --no-fix para desabilitar a correção de erros.
Na minha experiência limitada, o Dump1090 foi capaz de decodificar um grande número de mensagens mesmo em condições onde encontrei problemas ao usar outros programas, no entanto nenhum teste formal foi realizado, então não posso realmente afirmar que este programa é melhor ou pior em comparação com outros programas similares.
Se você conseguir capturar tráfego que o Dump1090 não consegue decodificar corretamente, envie-me um e-mail com um link para download. Poderei tentar melhorar a detecção durante meu tempo livre (este é apenas um projeto de hobby).
O Dump1090 pode decodificar mensagens de posição em solo (Código de Tipo 5-8), que são transmitidas por aeronaves enquanto estão no chão (taxiando, esperando em portões, etc.). Essas mensagens incluem a posição da aeronave, velocidade em solo e direção em solo.
As posições em solo usam uma codificação diferente das posições em voo: o formato CPR (Compact Position Reporting) cobre apenas 90 graus em vez de 360, e requer uma posição de referência dentro de 45 milhas náuticas para decodificação sem ambiguidade.
Em vez de exigir que você configure a localização do seu receptor, o Dump1090 calcula automaticamente uma posição de referência calculando a média de todas as posições em voo decodificadas com sucesso. Isso funciona porque se você consegue receber tráfego em solo de um aeroporto, quase certamente também receberá tráfego em voo. A posição média das aeronaves sobrevoando fornece uma referência que está próxima o suficiente (bem dentro do requisito de 45 MN) para decodificar posições em solo.
Nota: As posições em solo só serão exibidas depois que pelo menos uma posição em voo tiver sido decodificada com sucesso para estabelecer a referência. Aeronaves no chão serão mostradas com altitude 0 na tela interativa.
Ativando o suporte de rede com --net, o Dump1090 começa a escutar conexões de clientes nas portas 30002 e 30001 (você pode alterar ambas as portas se desejar, veja a saída de --help).
Os clientes conectados recebem dados assim que chegam do dispositivo (ou do arquivo, se --ifile for usado) no formato bruto semelhante ao seguinte:
*8D451E8B99019699C00B0A81F36E;
Cada entrada é separada por uma simples quebra de linha (caractere LF, hex 0x0A).
A porta 30001 é a porta de entrada bruta e pode ser usada para alimentar o Dump1090 com
dados no mesmo formato especificado acima, com mensagens hexadecimais começando com
um * e terminando com um caractere ;.
Por exemplo, se houver outra instância remota do Dump1090 coletando dados, é possível somar a saída a uma instância local do Dump1090 fazendo algo assim:
nc remote-dump1090.example.net 30002 | nc localhost 30001
É importante notar que o que é recebido via porta 30001 também é transmitido para clientes ouvindo na porta 30002.
Em geral, tudo recebido da porta 30001 é tratado exatamente como o tráfego normal de dispositivos RTL ou de arquivo quando --ifile é usado.
É possível usar o Dump1090 apenas como um hub usando --ifile com /dev/zero como argumento, como no exemplo a seguir:
./dump1090 --net-only
Ou alternativamente, para ver o que está acontecendo na tela:
./dump1090 --net-only --interactive
Então você pode alimentá-lo a partir de diferentes fontes de dados da internet.
Os clientes conectados recebem mensagens no formato SBS1 (BaseStation), semelhante a:
MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0
MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0
Isso pode ser usado para alimentar dados para vários sites de compartilhamento sem a necessidade de usar outro decodificador.
As mensagens Mode S são transmitidas na frequência de 1090 MHz. Se você tiver uma antena decente, será capaz de captar sinais de aeronaves bem longe da sua posição, especialmente se estiver ao ar livre e em uma posição com boa visão do céu.
Você pode facilmente construir uma antena muito barata seguindo as instruções em: