运行 AirNav RadarBox 的rbfeeder
的 Docker 容器。旨在与 sdr 爱好者/readsb-protobuf 协同工作。在x86_64
、 arm64
和arm32v7
上构建并运行。
rbfeeder
从提供 ModeS/BEAST 数据的主机或容器中提取 ModeS/BEAST 信息,并将数据发送到 RadarBox。
有关rbfeeder
的更多信息,请参阅此处:共享数据。
latest
( main
分支, Dockerfile
)
latest_nohealthcheck
与上面的latest
版本相同。但是,此版本删除了 docker healthcheck。这是为运行不支持手动禁用运行状况检查(不需要运行状况检查)的平台(例如 Nomad)的用户完成的。
可用的版本和架构特定标签
目前,该映像应在以下架构上拉取并运行:
amd64
:Linux x86-64
arm32v7
、 armv7l
:ARMv7 32 位(Odroid HC1/HC2/XU4、RPi 2B/3B)
arm64
、 aarch64
:ARMv8 64 位(RPi 4 64 位操作系统)
首次使用的用户应获取 RadarBox 共享密钥。
为了获取 RadarBox 共享密钥,在容器第一次运行时, rbfeeder
将生成一个共享密钥并将其打印到容器日志中。
docker run超时300秒 --rm -它 -e BASTHOST=你的BASTHOST -e LAT=您的纬度 -e LONG=您的经度 -e ALT=您的海拔高度 ghcr.io/sdr-爱好者/docker-radarbox:最新
这将使容器运行五分钟,从而生成共享密钥。
显然,您应该将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
启动并运行码头运行 -d --rm --名称 rbfeeder -e TZ="您的时区" -e BASTHOST=你的BASTHOST -e LAT=您的纬度 -e LONG=您的经度 -e ALT=您的海拔高度 -e SHARING_KEY=您的SHARINGKEY ghcr.io/sdr-爱好者/docker-radarbox:最新
显然,您应该将YOURBEASTHOST
、 YOURLATITUDE
、 YOURLONGITUDE
、 YOURALTITUDE
和YOURSHARINGKEY
替换为适当的值。
例如:
码头运行 -d --rm --名称 rbfeeder -e TZ="澳大利亚/珀斯" -e BEASTHOST=readsb -e LAT=-33.33333 -e 长=111.11111 -e ALT=90 -e SHARING_KEY=g45643ab345af3c5d5g923a99ffc0de9 ghcr.io/sdr-爱好者/docker-radarbox:最新
请注意,高度数字以米为单位,不应指定单位。
版本:'2.0'服务: RB馈线: 图片:ghcr.io/sdr-enthusiasts/docker-radarbox:最新 tty: truecontainer_name: rbfeeder 重新启动:始终 环境: - TZ=澳大利亚/珀斯 -BEASTHOST=readsb - 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 地址(截至 2023 年 11 月 22 日)。如果您位于东半球(包括亚洲/大洋洲),它会将您连接到欧洲服务器;如果您位于美洲,它将连接到美国服务器。
您还可能会收到虚假错误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 | 必需的。 S 模式/BEAST 提供商的 IP/主机名 (dump1090/readsb) | readsb |
BEASTPORT | 选修的。 S 模式/BEAST 提供程序的 TCP 端口号 (dump1090/readsb) | 30005 |
UAT_RECEIVER_HOST | 选修的。外部 UAT 解码 JSON 提供程序的 IP/主机名(例如:dump978-fa)。 | |
UAT_RECEIVER_PORT | 选修的。外部 UAT 解码 JSON 提供程序的 TCP 端口号。 | 30979 |
SHARING_KEY | 必需的。雷达盒共享密钥 | |
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 | MLAT 结果应发送到的主机名或 IP。 (禁用 30105 结果监听端口) | |
MLAT_RESULTS_BEASTPORT | 端口号,指定应发送 MLAT 结果的 TCP 端口号。 | 30104 |
RB_SERVER | 选修的。如果设置为true ,容器将尝试连接到截至 2023 年 11 月 22 日已知运行的两个 Radarbox 服务器之一。您还可以将其显式设置为主机名或 IP 地址。如果未设置,将使用 RadarBox 的默认设置。 | 取消设置 |
该容器使用以下 TCP 端口:
32088
- rbfeeder
侦听此端口,但我找不到此端口的用途...
30105
- mlat-client
侦听此端口以提供 MLAT 结果。 (当MLAT_RESULTS_BEASTHOST
设置为解决 rbfeeder 错误时,mlat 结果侦听端口被禁用)
您可能会发现容器中的 MLAT 经常会在日志中吐出错误,例如
[rbfeeder] 与 mlat1.rb24.com 断开连接:40900:60 秒内未收到数据(甚至没有保持活动) [rbfeeder] 连接到位于 mlat1.rb24.com:40900 的多边定位服务器,握手
这很可能(但并非总是如此)不是由您正在执行的任何操作引起的,而是由 Radarbox 服务器本身引起的,因此您无法采取任何措施来修复它。您将在 Radarbox 统计数据中看到,在执行此操作时,来自您的馈送器的 MLAT 目标(如果有的话)非常少。
要阻止 Feeder 向您的日志发送垃圾邮件,您可以在 Radarbox 的环境配置中设置ENABLE_MLAT=false
,它将停止 MLAT 服务和日志消息。请注意,如果您执行此操作并且使用 MLAT Hub,请从MLAT Hub
下的READSB_NET_CONNECTOR
中删除 Radarbox。
容器内部使用名为rbfeeder
的二进制文件将数据发送到 RadarBox 服务。该二进制文件由 AirNav(运营 RadarBox 的公司)作为闭源代码提供,并且仅以使用 4kb 内核页面的 armhf(32 位)格式提供。这在 Raspberry Pi 3B+、4B 和其他使用 32 位或 64 位 Debian Linux(内核页面大小为 4kb)的基于 ARM 的系统上运行良好。它在 x86 Linux 上也运行良好,我们使用qemu
ARM 模拟器来运行二进制文件。
Raspberry Pi 5 的 Debian Linux 默认使用页面大小为 16kb 的内核,这与rbfeeder
二进制文件不兼容。您将在容器日志中看到失败。
您可以使用以下命令检查内核页面大小: getconf PAGE_SIZE 。如果返回的值为 4096,则一切正常。如果是其他值(例如 16kb 页面大小为 16384),您将需要实施以下解决方法:
将以下内容添加到 /boot/firmware/config.txt(Debian 12 Bookworm 或更高版本)或 /boot/config.txt(Debian 11 Bullseye 或更早版本)以使用页面大小为 4kb 的内核。这将使 Raspberry Pi 5 的 CPU 使用效率稍微降低,但它将解决许多具有相同问题的软件包的问题。更改后,您必须重新启动系统才能生效:
kernel=kernel8.img
(添加此命令的一次性命令是:)
回声“内核=kernel8.img”| sudo tee -a /boot/firmware/config.txt >/dev/null
所有进程都会记录到容器的标准输出中,并且可以使用docker logs [-f] container
查看。
您可以在项目的 GitHub 上记录问题。
我还有一个 Discord 频道,欢迎加入并交谈。
如果您在此容器内遇到持续的分段错误,请参阅:#16(评论)