運行 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(評論)