
Dump1090 é um decodificador Mode S simples para dispositivos RTLSDR.
Dump 1090 é um decodificador Mode S especificamente projetado para dispositivos RTLSDR.
As principais características são:
Digite "make".
Para capturar tráfego diretamente do seu dispositivo RTL e exibir o tráfego capturado na saída padrão, basta executar o programa sem nenhuma opção:
./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 a rede, e conectar com seu navegador a http://localhost:8080 para ver o tráfego ao vivo:
./dump1090 --interactive --net
No modo interativo é possível ter uma saída menos densa em informações, mas com 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 /path/to/binfile
O arquivo binário deve ser criado usando rtl_sdr desta forma (ou com qualquer outro
programa capaz de gerar amostras IQ sem sinal de 8 bits a uma taxa de amostragem de 2Mhz).
rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin
No exemplo, rtl_sdr usa um ganho de 50; simplesmente você deve usar o maior ganho
disponível para seu sintonizador. Isso não é necessário ao chamar o Dump1090, pois ele é
capaz de selecionar automaticamente o maior ganho suportado.
É possível alimentar o programa com dados pela entrada padrão usando a opção --ifile com "-" como argumento.
Dump1090 pode ser chamado com outras opções de linha de comando para definir um ganho, frequência diferentes, e assim por diante. Para uma lista de opções use:
./dump1090 --help
Tudo o 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 verifica erros de decodificação usando o checksum CRC de 24 bits, quando disponível. Mensagens com erros são descartadas.
A opção de linha de comando --fix ativa a correção de erros de bit único baseada no checksum CRC. Tecnicamente, ela usa uma tabela de diferenças de checksum pré-computadas resultantes de erros de bit único para localizar a posição incorreta do bit.
Isso de fato corrige erros e funciona de forma confiável na minha experiência; porém, 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 usando outros programas; no entanto, nenhum teste formal foi realizado, então não posso realmente afirmar que este programa é melhor ou pior comparado a outros programas similares.
Se você conseguir capturar tráfego que o Dump1090 não consiga decodificar adequadamente, envie-me um e-mail com um link para download. Posso tentar melhorar a detecção durante meu tempo livre (este é apenas um projeto de hobby).
Ao habilitar 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 quiser, veja a saída de --help).
Os clientes conectados recebem os dados assim que eles 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 *
e terminando com ;.
Assim, 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 como isto:
nc remote-dump1090.example.net 30002 | nc localhost 30001
É importante notar que o que é recebido pela porta 30001 também é transmitido para clientes ouvindo a porta 30002.
Em geral, tudo o que é 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 com 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 em 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, poderá captar sinais de aeronaves bem distantes 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:
http://antirez.com/news/46
Com esta antena trivial, fui capaz de captar sinais de aeronaves a mais de 200 km de mim.
Se você estiver interessado em uma antena mais séria, verifique os seguintes recursos:
Com --aggressive é possível ativar o modo agressivo, que é uma versão modificada da detecção e decodificação de pacotes Mode S.
O modo agressivo normalmente usa mais CPU (especialmente se houver muitos aviões enviando pacotes DF17), mas pode detectar mais algumas mensagens.
O algoritmo no modo agressivo é modificado das seguintes formas:
O uso do modo agressivo só é recomendado em locais com pouco tráfego, a fim de ter a chance de capturar mais algumas mensagens.
O modo de depuração é um auxílio visual para melhorar o algoritmo de detecção ou entender por que o programa não está funcionando para uma determinada entrada.