Contêiner Docker executando rbfeeder
do AirNav RadarBox. Projetado para funcionar em conjunto com entusiastas de sdr/readsb-protobuf. Compila e roda em x86_64
, arm64
e arm32v7
.
rbfeeder
extrai informações do ModeS/BEAST de um host ou contêiner que fornece dados do ModeS/BEAST e envia dados para o RadarBox.
Para mais informações sobre o que é rbfeeder
, veja aqui: sharing-data.
latest
(ramo main
, Dockerfile
)
latest_nohealthcheck
é igual à versão latest
acima. No entanto, esta versão teve o docker healthcheck removido. Isso é feito para pessoas que executam plataformas (como Nomad) que não suportam a desativação manual de verificações de integridade, onde as verificações de integridade não são desejadas.
Tags específicas de versão e arquitetura disponíveis
Atualmente, esta imagem deve ser extraída e executada nas seguintes arquiteturas:
amd64
:Linux x86-64
arm32v7
, armv7l
: ARMv7 de 32 bits (Odroid HC1/HC2/XU4, RPi 2B/3B)
arm64
, aarch64
: ARMv8 de 64 bits (sistemas operacionais RPi 4 de 64 bits)
Usuários iniciantes devem obter uma chave de compartilhamento do RadarBox.
Para obter uma chave de compartilhamento do RadarBox, na primeira execução do contêiner, rbfeeder
irá gerar uma chave de compartilhamento e imprimi-la no log do contêiner.
tempo limite 300s docker run --rm -isto -e BEASTHOST = SEU BEASTHOST -e LAT = SUA ATITUDE -e LONG = SUA LONGITUDE -e ALT=SUALTITUDE ghcr.io/sdr-enthusiasts/docker-radarbox:mais recente
Isso executará o contêiner por cinco minutos, permitindo a geração de uma chave de compartilhamento.
Obviamente, você deve substituir YOURBEASTHOST
, YOURLATITUDE
, YOURLONGITUDE
e YOURALTITUDE
por valores apropriados.
Logo após o lançamento do contêiner, você deverá receber:
[2020-04-02 11:36:31] Empty sharing key. We will try to create a new one for you!
[2020-04-02 11:36:32] Your new key is g45643ab345af3c5d5g923a99ffc0de9. Please save this key for future use. You will have to know this key to link this receiver to your account in RadarBox24.com. This key is also saved in configuration file (/etc/rbfeeder.ini)
Anote a chave de compartilhamento, pois você precisará dela ao iniciar o contêiner.
Se você não for um usuário iniciante e estiver migrando de outra instalação, poderá recuperar sua chave de compartilhamento usando um dos seguintes métodos:
SSH em seu receptor existente e execute o comando rbfeeder --showkey --no-start
SSH em seu receptor existente e execute o comando grep key= /etc/rbfeeder.ini
docker run
execução do docker -d --rm --name rbfeeder -e TZ = "SEU FUSO TEMPO" -e BEASTHOST = SEU BEASTHOST -e LAT = SUA ATITUDE -e LONG = SUA LONGITUDE -e ALT=SUALTITUDE -e SHARING_KEY = SUA CHAVE DE COMPARTILHAMENTO ghcr.io/sdr-enthusiasts/docker-radarbox:mais recente
Obviamente, você deve substituir YOURBEASTHOST
, YOURLATITUDE
, YOURLONGITUDE
, YOURALTITUDE
e YOURSHARINGKEY
por valores apropriados.
Por exemplo:
execução do docker -d --rm --name rbfeeder -e TZ="Austrália/Perth" -e BEASTHOST = lêb -e LAT=-33.33333 -e LONGO = 111,11111 -e ALT = 90 -e SHARING_KEY=g45643ab345af3c5d5g923a99ffc0de9 ghcr.io/sdr-enthusiasts/docker-radarbox:mais recente
Observe que o valor da altitude é dado em metros e nenhuma unidade deve ser especificada.
versão: '2.0'serviços: rbfeeder: imagem: ghcr.io/sdr-enthusiasts/docker-radarbox:latest tty: truecontainer_name: rbfeeder reiniciar: sempre ambiente: - TZ=Austrália/Perth - BEASTHOST = lêb - LAT=-33,33333 - LONGO = 111,11111 - ALT = 90 - SHARING_KEY=g45643ab345af3c5d5g923a99ffc0de9
Assim que seu contêiner estiver instalado e funcionando, você deverá reivindicar seu receptor.
Acesse https://www.radarbox.com/
Crie uma conta ou faça login
Reivindique seu receptor visitando https://www.radarbox.com/raspberry-pi/claim e seguindo as instruções
Antes de levantar um problema relacionado a erros de conexão, aguarde pelo menos 10 minutos. O binário rbfeeder
está configurado para tentar se conectar a uma coleção de servidores em um método round-robin. Parece normal que alguns servidores rejeitem a conexão, por isso pode levar vários minutos para encontrar um servidor disponível e conectar-se. No exemplo abaixo, foram necessários aproximadamente 6 minutos desde o início do contêiner até o estabelecimento da conexão.
Você pode tentar resolver isso definindo este parâmetro:
- RB_SERVER = verdadeiro
Isso imporá o uso de um endereço IP codificado que funcione (em 22 de novembro de 2023). Ele irá conectá-lo a um servidor europeu se você estiver localizado no Hemisfério Oriental (incluindo Ásia/Oceania), ou a um servidor baseado nos EUA se você estiver nas Américas.
Você também pode receber um erro falso Error authenticating Sharing-Key: Invalid sharing-key
. Desde que você tenha inserido sua chave de compartilhamento corretamente, ignore isso por alguns minutos.
Aqui está um exemplo de saída com RBFeeder versão 1.0.10 (compilação 20231120150000) mostrando o comportamento mencionado acima:
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Starting RBFeeder Version 1.0.10 (build 20231120150000)
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Using configuration file: /etc/rbfeeder.ini
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Network-mode enabled.
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Remote host to fetch data: 172.20.0.11
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Remote port: 30005
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Remote protocol: BEAST
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Using GNSS (when available)
[2023-11-22 21:59:06.966][rbfeeder] [2023-11-22 21:59:06] Start date/time: 2023-11-22 21:59:06
[2023-11-22 21:59:06.972][rbfeeder] [2023-11-22 21:59:06] Socket for ANRB created. Waiting for connections on port 32088
[2023-11-22 21:59:08.039][rbfeeder] [2023-11-22 21:59:08] Connection established.
[2023-11-22 21:59:18.154][rbfeeder] [2023-11-22 21:59:18] Could not start connection. Timeout.
...
[2023-11-22 22:05:29.223][rbfeeder] [2023-11-22 22:05:29] Connection established.
[2023-11-22 22:05:29.456][rbfeeder] [2023-11-22 22:05:29] Client type: Raspberry Pi
[2023-11-22 22:05:29:29.524][rbfeeder] [2023-11-22 22:05:29] Connection with RadarBox24 server OK! Key accepted by server.
[2023-11-22 22:05:29.524][rbfeeder] [2023-11-22 22:05:29] This is your station serial number: EXTRPIxxxxxx
Há uma série de variáveis de ambiente disponíveis:
Variável de ambiente | Propósito | Padrão |
---|---|---|
BEASTHOST | Obrigatório. IP/nome do host de um provedor Mode-S/BEAST (dump1090/readsb) | readsb |
BEASTPORT | Opcional. Número da porta TCP do provedor Mode-S/BEAST (dump1090/readsb) | 30005 |
UAT_RECEIVER_HOST | Opcional. IP/nome do host de um provedor JSON decodificado UAT externo (por exemplo: dump978-fa). | |
UAT_RECEIVER_PORT | Opcional. Número da porta TCP do provedor JSON decodificado UAT externo. | 30979 |
SHARING_KEY | Obrigatório. Chave de compartilhamento do Radarbox | |
LAT | Obrigatório. Latitude da antena | |
LONG | Obrigatório. Longitude da antena | |
ALT | Obrigatório. Altitude em metros | |
TZ | Opcional. Seu fuso horário local | GMT |
STATS_INTERVAL_MINUTES | Opcional. Com que frequência imprimir estatísticas, em minutos. | 5 |
VERBOSE_LOGGING | Opcional. Definido como true para nenhuma filtragem de logs rbfeeder . | false |
DEBUG_LEVEL | Opcional. Defina qualquer número entre 0 e 8 para aumentar o detalhamento dos logs rbfeeder . | 0 |
ENABLE_MLAT | Opção. Defina como true para ativar o MLAT dentro do contêiner. Veja a nota do MLAT abaixo | true |
MLAT_RESULTS_BEASTHOST | um nome de host ou IP, para onde os resultados do MLAT devem ser enviados. (desativa a porta de escuta de resultados 30105) | |
MLAT_RESULTS_BEASTPORT | um número de porta, especifique o número da porta TCP para onde os resultados do MLAT devem ser enviados. | 30104 |
RB_SERVER | Opcional. Se definido como true , o contêiner tentará se conectar a um dos dois servidores Radarbox que funcionam em 22 de novembro de 2023. Você também pode configurá-lo explicitamente para um nome de host ou endereço IP. Se não definido, as configurações padrão do RadarBox serão usadas. | Desativar |
As seguintes portas TCP são usadas por este contêiner:
32088
- rbfeeder
escuta nesta porta, porém não consigo encontrar o uso para esta porta...
30105
- mlat-client
escuta nesta porta para fornecer resultados MLAT. (porta de escuta de resultados mlat desabilitada quando MLAT_RESULTS_BEASTHOST
está configurado para contornar o bug do rbfeeder)
Você pode descobrir que o MLAT em seu contêiner muitas vezes gera erros em seus logs, como
[rbfeeder] Desconectando de mlat1.rb24.com:40900: Nenhum dado (nem mesmo keepalives) recebido por 60 segundos [rbfeeder] Conectado ao servidor de multilateração em mlat1.rb24.com:40900, handshaking
Isso é provável, mas nem sempre, causado por algo que você está fazendo, mas sim pelo próprio servidor Radarbox e, como tal, não há nada que você possa fazer para consertar. Você verá nas estatísticas do Radarbox muito poucos, ou nenhum, alvos MLAT do seu alimentador enquanto ele estiver fazendo isso.
Para impedir que o alimentador envie spam para seus logs, você pode definir ENABLE_MLAT=false
na configuração do seu ambiente para o Radarbox e isso interromperá o serviço MLAT e as mensagens de log. Observe que se você fizer isso e usar o MLAT Hub, remova o Radarbox do seu READSB_NET_CONNECTOR
em MLAT Hub
.
O contêiner usa internamente um binário chamado rbfeeder
para enviar dados ao serviço RadarBox. Este binário é fornecido como código fechado pela AirNav (a empresa que opera o RadarBox) e está disponível apenas no formato armhf (32 bits) usando páginas do kernel de 4kb. Isso funcionará bem no Raspberry Pi 3B+, 4B e outros sistemas baseados em ARM que usam Debian Linux de 32 ou 64 bits com um tamanho de página de kernel de 4kb. Também funciona bem no Linux x86, onde usamos o emulador qemu
ARM para executar o binário.
O Debian Linux para Raspberry Pi 5 usa por padrão um kernel com tamanhos de página de 16kb e isso não é compatível com o binário rbfeeder
. Você verá falhas nos logs do contêiner.
Você pode verificar o tamanho da página do kernel com este comando: getconf PAGE_SIZE . Se o valor retornado for 4096, então está tudo bem. Se for outra coisa (por exemplo, 16384 para tamanho de página de 16 KB), você precisará implementar a seguinte solução alternativa:
Adicione o seguinte a /boot/firmware/config.txt (Debian 12 Bookworm ou posterior) ou /boot/config.txt (Debian 11 Bullseye ou anterior) para usar um kernel com tamanho de página de 4kb. Isso tornará o uso da CPU no Raspberry Pi 5 um pouco menos eficiente, mas resolverá o problema para muitos pacotes de software que apresentam o mesmo problema. Depois de alterar isso, você deve reinicializar o sistema para que tenha efeito:
kernel=kernel8.img
(um comando único para adicionar isso seria:)
echo "kernel=kernel8.img" | sudo tee -a /boot/firmware/config.txt >/dev/null
Todos os processos são registrados no stdout do contêiner e podem ser visualizados com docker logs [-f] container
.
Você pode registrar um problema no GitHub do projeto.
Também tenho um canal no Discord, fique à vontade para entrar e conversar.
Se você estiver recebendo falhas de segmentação contínuas dentro deste contêiner, consulte: #16 (comentário)