Docker-контейнер, на котором работает rbfeeder
AirNav RadarBox. Предназначен для работы в тандеме с sdr-энтузиастами/readsb-protobuf. Собирается и работает на x86_64
, arm64
и arm32v7
.
rbfeeder
извлекает информацию ModeS/BEAST с хоста или контейнера, предоставляющего данные ModeS/BEAST, и отправляет данные в RadarBox.
Дополнительную информацию о том, что такое rbfeeder
, можно найти здесь: обмен данными.
latest
( main
ветка, Dockerfile
)
latest_nohealthcheck
аналогичен latest
версии, указанной выше. Однако в этой версии удалена проверка работоспособности докера. Это сделано для людей, использующих платформы (такие как Nomad), которые не поддерживают отключение проверок работоспособности вручную, где проверки работоспособности не нужны.
Доступны теги, специфичные для версии и архитектуры.
В настоящее время этот образ должен работать на следующих архитектурах:
amd64
: Linux x86-64
arm32v7
, armv7l
: 32-разрядная версия ARMv7 (Odroid HC1/HC2/XU4, RPi 2B/3B)
arm64
, aarch64
: 64-разрядная версия ARMv8 (64-разрядная операционная система RPi 4)
Пользователи, впервые использующие RadarBox, должны получить ключ общего доступа к RadarBox.
Чтобы получить ключ общего доступа RadarBox, при первом запуске контейнера rbfeeder
сгенерирует ключ общего доступа и распечатает его в журнале контейнера.
Таймаут 300 секунд, запуск докера --rm -это -e BEASTHOST=ВАШБЕСТХОСТ -e LAT=ВАША ШИРОТА -e LONG=ВАША ДОЛГОТА -e ALT=ВАША ВЫСОТА ghcr.io/sdr-enthusiasts/docker-radarbox:latest
Контейнер запустится на пять минут, что позволит сгенерировать ключ общего доступа.
Очевидно, вам следует заменить YOURBEASTHOST
, YOURLATITUDE
, YOURLONGITUDE
и YOURALTITUDE
соответствующими значениями.
Вскоре после запуска контейнера вам должно быть представлено:
[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)
Запишите ключ общего доступа, так как он понадобится вам при запуске контейнера.
Если вы пользуетесь им не впервые и выполняете миграцию с другой установки, вы можете получить ключ общего доступа одним из следующих способов:
Подключитесь по SSH к существующему приемнику и запустите команду rbfeeder --showkey --no-start
Подключитесь по SSH к существующему приемнику и запустите команду grep key= /etc/rbfeeder.ini
docker run
запуск докера -д --rm --name rbfeeder -e TZ="ВАШВРЕМЯ" -e BEASTHOST=ВАШБЕСТХОСТ -e LAT=ВАША ШИРОТА -e LONG=ВАША ДОЛГОТА -e ALT=ВАША ВЫСОТА -e SHARING_KEY=ВАШSHARINGKEY ghcr.io/sdr-enthusiasts/docker-radarbox:latest
Очевидно, вам следует заменить YOURBEASTHOST
, YOURLATITUDE
, YOURLONGITUDE
, YOURALTITUDE
и YOURSHARINGKEY
соответствующими значениями.
Например:
запуск докера -д --rm --name rbfeeder -e TZ="Австралия/Перт" -e BEATHOST=читаетb -e LAT=-33.33333 -e ДЛИННЫЙ=111.11111 -е АЛТ=90 -e SHARING_KEY=g45643ab345af3c5d5g923a99ffc0de9 ghcr.io/sdr-enthusiasts/docker-radarbox:latest
Обратите внимание: высота указана в метрах, единицы измерения указывать не нужно.
версия: '2.0'услуги: рбфидер: изображение: ghcr.io/sdr-enthusiasts/docker-radarbox:latest tty: truecontainer_name: rbfeeder перезапуск: всегда среда: - TZ=Австралия/Перт - BEATHOST=читаетb - LAT=-33,33333 - ДЛИННЫЙ=111.11111 - АЛТ=90 - SHARING_KEY=g45643ab345af3c5d5g923a99ffc0de9
Как только ваш контейнер будет запущен и заработает, вы должны потребовать своего получателя.
Перейдите на https://www.radarbox.com/.
Создайте учетную запись или войдите в систему
Заявите права на свой приемник, посетив https://www.radarbox.com/raspberry-pi/claim и следуя инструкциям.
Прежде чем поднимать вопрос об ошибках подключения, подождите хотя бы 10 минут. Двоичный файл rbfeeder
настроен на попытку подключения к набору серверов циклическим методом. Некоторые серверы отклоняют соединение вполне нормально, поэтому поиск доступного сервера и подключение к нему может занять несколько минут. В приведенном ниже примере от запуска контейнера до установления соединения прошло примерно 6 минут.
Вы можете попытаться решить эту проблему, установив этот параметр:
- RB_SERVER=истина
Это обеспечит использование жестко запрограммированного IP-адреса, который, как известно, работает (по состоянию на 22 ноября 2023 г.). Он соединит вас с европейским сервером, если вы находитесь в восточном полушарии (включая Азию/Океанию), или с сервером в США, если вы находитесь в Америке.
Вы также можете получить ложную ошибку Error authenticating Sharing-Key: Invalid sharing-key
. Если вы правильно ввели ключ общего доступа, просто игнорируйте это в течение нескольких минут.
Вот пример вывода RBFeeder версии 1.0.10 (сборка 20231120150000), демонстрирующий вышеупомянутое поведение:
[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
Существует ряд доступных переменных среды:
Переменная среды | Цель | По умолчанию |
---|---|---|
BEASTHOST | Необходимый. IP/имя хоста провайдера Mode-S/BEAST (dump1090/readsb) | readsb |
BEASTPORT | Необязательный. Номер TCP-порта поставщика Mode-S/BEAST (dump1090/readsb) | 30005 |
UAT_RECEIVER_HOST | Необязательный. IP/имя хоста внешнего поставщика JSON, декодированного UAT (например: dump978-fa). | |
UAT_RECEIVER_PORT | Необязательный. Номер TCP-порта внешнего поставщика JSON, декодированного UAT. | 30979 |
SHARING_KEY | Необходимый. Ключ общего доступа к Radarbox | |
LAT | Необходимый. Широта антенны | |
LONG | Необходимый. Долгота антенны | |
ALT | Необходимый. Высота в метрах | |
TZ | Необязательный. Ваш местный часовой пояс | время по Гринвичу |
STATS_INTERVAL_MINUTES | Необязательный. Как часто печатать статистику, в минутах. | 5 |
VERBOSE_LOGGING | Необязательный. Установите значение true , чтобы не фильтровать журналы rbfeeder . | false |
DEBUG_LEVEL | Необязательный. Установите любое число от 0 до 8 чтобы увеличить детализацию журналов rbfeeder . | 0 |
ENABLE_MLAT | Вариант. Установите значение true , чтобы включить MLAT внутри контейнера. См. примечание MLAT ниже. | true |
MLAT_RESULTS_BEASTHOST | имя хоста или IP-адрес, куда должны быть отправлены результаты MLAT. (отключает порт прослушивания результатов 30105) | |
MLAT_RESULTS_BEASTPORT | номер порта, укажите номер TCP-порта, на который должны быть отправлены результаты MLAT. | 30104 |
RB_SERVER | Необязательный. Если установлено значение true , контейнер попытается подключиться к одному из двух серверов Radarbox, которые, как известно, работают по состоянию на 22 ноября 2023 года. Вы также можете явно указать имя хоста или IP-адрес. Если этот параметр не установлен, будут использоваться настройки RadarBox по умолчанию. | Сброшено |
Этот контейнер использует следующие TCP-порты:
32088
- rbfeeder
прослушивает этот порт, однако я не могу найти применение этому порту...
30105
— mlat-client
прослушивает этот порт, чтобы предоставить результаты MLAT. (порт прослушивания результатов mlat отключен, когда MLAT_RESULTS_BEASTHOST
настроен на устранение ошибки rbfeeder)
Вы можете обнаружить, что MLAT в вашем контейнере часто выдает ошибки в ваших журналах, например:
[rbfeeder] Отключение от mlat1.rb24.com:40900: в течение 60 секунд не получено никаких данных (даже сообщений поддержки активности). [rbfeeder] Подключен к серверу мультилатерации по адресу mlat1.rb24.com:40900, рукопожатие
Вероятно, но не всегда, это вызвано не вашими действиями, а самим сервером Radarbox, и поэтому вы ничего не можете сделать, чтобы это исправить. В статистике Radarbox вы увидите очень мало целей MLAT из вашего фидера, если они вообще есть, пока он это делает.
Чтобы запретить отправителю рассылать спам в ваши журналы, вы можете установить ENABLE_MLAT=false
в конфигурации среды для Radarbox, и это остановит службу MLAT и сообщения журнала. Обратите внимание: если вы сделаете это и используете MLAT Hub, удалите Radarbox из вашего READSB_NET_CONNECTOR
в MLAT Hub
.
Внутри контейнера используется двоичный файл rbfeeder
для отправки данных в службу RadarBox. Этот двоичный файл предоставляется AirNav (компанией, которая управляет RadarBox) с закрытым исходным кодом и доступен только в формате ArmHF (32-разрядный) с использованием страниц ядра размером 4 КБ. Это будет хорошо работать на Raspberry Pi 3B+, 4B и других системах на базе ARM, которые используют 32-битный или 64-битный Debian Linux с размером страницы ядра 4 КБ. Он также хорошо работает в Linux x86, где мы используем эмулятор qemu
ARM для запуска двоичного файла.
Debian Linux для Raspberry Pi 5 по умолчанию использует ядро с размером страницы 16 КБ, и оно несовместимо с двоичным файлом rbfeeder
. Вы увидите сбои в журналах вашего контейнера.
Вы можете проверить размер страницы ядра с помощью этой команды: getconf PAGE_SIZE. Если возвращаемое значение равно 4096, то все в порядке. Если это что-то другое (например, 16384 для размера страницы 16 КБ), вам потребуется реализовать следующий обходной путь:
Добавьте следующее в /boot/firmware/config.txt (Debian 12 Bookworm или более позднюю версию) или /boot/config.txt (Debian 11 Bullseye или более раннюю версию), чтобы использовать ядро с размером страницы 4 КБ. Это сделает использование ЦП на вашем Raspberry Pi 5 немного менее эффективным, но решит проблему для многих программных пакетов, которые имеют ту же проблему. После изменения этого параметра вам необходимо перезагрузить систему, чтобы изменения вступили в силу:
kernel=kernel8.img
(одноразовая команда для добавления:)
echo "kernel=kernel8.img" | sudo tee -a /boot/firmware/config.txt >/dev/null
Все процессы записываются в стандартный вывод контейнера, и их можно просмотреть с помощью docker logs [-f] container
.
Вы можете зарегистрировать проблему на GitHub проекта.
У меня также есть канал Discord, не стесняйтесь присоединяться и общаться.
Если вы постоянно получаете ошибки сегментации внутри этого контейнера, см.: #16 (комментарий).