接收中

我如何在布鲁塞尔的一个周日搭建了我的第一台ADS-B接收器

发布于

厨房餐桌上的一块Raspberry Pi 5、一个USB SDR接收棒和一根磁吸底座天线

写于2026年5月。此后贡献端安装程序已有变化:当前步骤请参阅radar.dataero.eu上的实践工坊。

一份不太技术的操作指南,作者严格来说也不算很懂技术。


好了,开始吧。

上周六我从勒图凯短途飞行回来。西南风12节,那种让您忘了预报本该更糟的天气。回程途中——在加来海峡省上空的某处,在SkyDemon上看着一串安静的A320在我上方几千英尺飞过——我冒出了一个之前至少有过四次、却从未付诸行动的念头。

我应该装一台ADS-B接收器。

这一次,在从格林贝尔亨回来的火车上,我下单买了零件。

到周日午饭时,我已经在用自己的设备看布鲁塞尔上空的航空器了。在窗台上。水壶烧着水。整个过程大约花了两个半小时、两杯咖啡,还有一小段困惑——当我读了那行之前跳过的文档后就自行解决了。我估计其中九十分钟是我读得比实际需要的更仔细。

这篇文章写给每一位曾经打开Raspberry Pi教程又默默关掉标签页的人。这是我周六早上希望能看到的那个版本的指南。

购物清单

我抽屉里躺着一块Raspberry Pi 5。我没法好好解释为什么;去年春天我买它是打算做点有意思的事,然后就没有然后了。如果您还没有Pi,买一块Pi 5(8 GB足够了)和一个电源。旧一点的Pi 4也完全可以——Pi 5只是我手头恰好有的。

在此之外,我从Amazon.de添了两样东西:

  • 一个NooElec NESDR Smart USB SDR接收棒——铝制外壳,R820T2芯片,大小像一个粗壮的U盘,一端有个小天线接口。大约30欧元。(平心而论,它是我公寓里最好看的一件设备。)
  • 一根Bingfu双频磁吸底座天线——978 / 1090 MHz,7 dBi,三米电缆,SMA接头。大约25欧元。它看起来像一个立在磁吸圆盘上的黑色小盐瓶。总体来说,还不错。下文会再细说。

再加一张我得从书桌抽屉里翻出来的microSD卡。(它从大约2019年起就一直待在那里。它的经历比我以为的要精彩。)

由于Pi本来就是我的,总花费约55欧元外加一个周日上午。价格会浮动——Amazon上的商品列表随库存和卖家变化,购买前请核实;这里的数字只是数量级参考,不是报价。

迷思与现实

迷思是:设置一块Pi,是整个项目中让您发现自己其实并不真正懂电脑、懂自家Wi-Fi、也不懂自己的那个环节。

现实更接近飞行前准备。有一份检查单;您按顺序执行;如果漏了一步,四十秒内就会发现,因为有东西不工作了。航空人受过的训练让他们喜欢这种方式。任何飞过起落航线、做过HASELL检查的人,都有适合这个爱好的脑子。

那么——检查单。

这块Pi上究竟在发生什么

最终会有两个软件住在这个小盒子里。

第一个是readsb——一个开源解码器,由一小群对无线电工程的理解超出常人健康范围的人维护。它监听接收棒从天线拉下来的微弱1090 MHz脉冲,每秒解开数千个相互重叠的航空器应答机信号,并每秒把结果写入一个整洁的JSON文件。总体来说,这是整个项目中最难的部分。别人已经做好了。

第二个是Dataero贡献端程序——一个小型Python服务,读取readsb的JSON文件并转发到位于radar.dataero.eu的Dataero网络。这是问题中容易的一半;也是让您的设备对自己以外的人有用的那一半。

先安装readsb,确认它能听到航空器,然后在其上安装Dataero贡献端程序。

这就是全部架构。从这里开始,真的就只是一份检查单。

第1步——烧录SD卡

在笔记本电脑上下载Raspberry Pi Imager。它有Windows、Mac和Linux版本,而且悄悄地算得上是我用过的最好的安装工具之一。把SD卡插进笔记本电脑。选择Raspberry Pi OS Lite (64-bit)——选Lite,因为一个将要住在窗台上、永远不会接显示器的东西,不需要桌面。

在点击Write之前,打开齿轮图标的设置。设置主机名(我的是radar-etterbeek,因为我不太含蓄),设置用户名和密码,粘贴您的Wi-Fi凭据,并勾选Enable SSH。这样就预先配置好了您需要的一切;您在任何时候都不必给Pi接显示器。

点击写入。去冲杯咖啡。五分钟后回来。

第2步——启动Pi

从笔记本电脑弹出SD卡。把它插入Pi底部的卡槽。接上电源。

当一块Raspberry Pi第一次启动时,厨房里会笼罩着一种特别的寂静。在我家持续了大约九十秒。配乐是Brothers in Arms,感觉刚刚好。

等Pi思考完毕,在您的网络中找到它。最简单的办法是路由器管理页面——找radar-etterbeek(或者您给它起的任何名字),记下IP地址。

第3步——通过SSH登录并更新

在笔记本电脑的终端中:

ssh sandy@192.168.1.42

(使用您的用户名和Pi的IP。)第一次它会问您是否信任该主机。您信任。然后:

sudo apt update && sudo apt upgrade -y

这需要几分钟。去冲第二杯咖啡。

第4步——插上接收棒和天线

关闭Pi(sudo shutdown now)。把NooElec接收棒插进Pi的一个USB-A口。把天线的SMA电缆拧到接收棒末端——手拧紧,再用两根手指拧四分之一圈;别逞英雄去拿钳子。

把天线立在能看到天空的地方。我把我的放在客厅窗户内侧,磁吸圆盘吸在一个铁皮饼干盒上,因为窗台是木头的。怎么行得通就怎么来。

重新给Pi通电。再次通过SSH登录。

第5步——创建Dataero账户并获取API密钥

两个简短的浏览器步骤,不在Pi上进行。

  1. 在笔记本电脑的浏览器中打开radar.dataero.eu。点击注册,填写表单,如果要求的话确认您的电子邮件。
  2. 登录后,点击右上角的用户名,进入个人资料,找到API密钥部分,点击申请API密钥。把密钥复制到一个您三十秒内能找到的地方。

就这样。把密钥当密码对待——别贴到Discord里,别提交到公开仓库,别在晚餐时大声念出来。

第6步——安装Dataero贡献端程序

回到Pi上的SSH会话。您应该还在第5步的dataero-adsb-feeder文件夹里;如果您跑到别处去了:

cd ~/dataero-adsb-feeder

然后运行贡献端安装程序:

sudo bash installer.sh

它会礼貌地问您几个问题——最重要的是粘贴您刚从Dataero个人资料复制的API密钥。安装程序会在/usr/local/dataero-adsb-feeder下创建一个Python虚拟环境,把您的密钥放进那里的.env文件,并把贡献端注册为一个开机自启的systemd服务。

完成后,检查它是否在运行:

sudo systemctl status dataero-feeder.service

同样的套路:active (running),绿色。如果不是,最常见的原因是API密钥输错了,journalctl -u dataero-feeder.service -e会相当直白地指出这一点。

第7步——首次接触

再次打开radar.dataero.eu,登录,在地图上找到您的站点。贡献端启动后一两分钟内,您应该会看到站点标记变绿,一小片航空器星座从它周围散开。

我看到的第一架航空器是一架汉莎A320,从法兰克福爬升到FL340,向西飞行。第二架是一架波音C-17,高高地飞在荷兰上空,以FL310向东——大概是绕远路去海湾某处。第三架才真正让我咧嘴笑了:一架Cirrus SR22——不是我的,但够接近了——沿着比利时海岸悠悠北上。

就是那一刻。一旦您看着头三四条航迹出现在自己的屏幕上,由自己的设备捕获,项目的技术部分就结束了,爱好者的部分开始了。

以后会用到的实用命令

一张简短的参考卡,供您下周末回来、把一切都忘光时使用:

# Status
sudo systemctl status readsb
sudo systemctl status dataero-feeder.service
# Live logs
sudo journalctl -u readsb -f
sudo journalctl -u dataero-feeder.service -f
# Restart after editing config
sudo systemctl restart dataero-feeder.service
# Edit the feeder's config (API key, paths, debug)
sudo nano /usr/local/dataero-adsb-feeder/.env

当出了问题而原因不明显时,在.env中设置DEBUG=TRUE并重启服务是正确的第一步。解决之后把它改回FALSE;这样日志会安静一些。

室内天线究竟能给您带来什么

说实话?比我预期的多,比我想要的少。

从我在埃特尔贝克的窗户,在合适的几何条件下,我几乎能看到约100海里内5,000英尺以上的任何航空器。这涵盖了进入扎芬特姆的主要到达航班、穿越比利时的高空欧洲交通,以及从格林贝尔亨和沙勒罗瓦出发、飞离建筑物遮挡后的大部分通航飞行。

我错过的是低空和近距离——小机场的起落航线训练、1,500英尺以下的直升机、夜间保持低空的医疗飞行。Bingfu在做它设计用来做的事,即小巧、室内、够用。它的设计目标并不是您能做到的最好。

于是我做了每一位ADS-B数据贡献者在我之前都做过的事。我已经在盯着室外天线了。Auratrove 1090 SMA室外天线,大约60欧元,是现实的下一步——增益更高,耐候,可装在阳台栏杆上。从室内到室外的接收提升,据各方说法,相当明显。我会回来汇报。

向readsb微微鞠躬

结束这篇文章前,有句话必须说明白:这个项目真正聪明的部分不是Pi,也不是Dataero贡献端程序。是readsb。Dataero这一边——包括这整篇文章——是容易的那一半。

readsb负责监听来自可能远在200海里外的航空器的微弱1090 MHz无线电脉冲,每秒解开数千条相互重叠的Mode S应答机报文,并把这一切变成一台价格不及一顿像样晚餐的小电脑上的一个干净的JSON文件。它源自dump1090,由Mictronics接续推进,目前由wiedehopf和一个贡献者社区维护。Dataero的我们没有写过其中任何一行。我们只是把字节传递下去。

如果这套软件是一支乐队,readsb就是主唱、主音吉他手、鼓手、贝斯手、制作人、音响师,以及写了每一首歌的人。Dataero贡献端程序则是在门口发传单的那位。

所以——微微鞠躬,真心的。

关于Dataero的说明

我把数据推送指向Dataero——我们运营的欧洲社区共建ADS-B网络——一部分是因为这是我工作的地方,一部分是因为把我的接收器叠加进一个由运行它的人所拥有的网络,比把数据交给一家我永远不会与之交谈的公司更吸引我。安装过程与其他任何网络没有区别;不同的是数据之后的去向。

如果您已经在向别处贡献数据,不需要更换。Dataero可以并行运行。

我想对周六早上的Sandy说的话

Raspberry Pi总体上只是一台小型Linux电脑,只要您好好请求,它就能把一件事做得很好。SDR接收棒只有U盘大小。天线只有厨房工具大小。您需要的两个软件都由脚本安装;其中一个是开源魔法,另一个是六十行的中继程序;这里没有任何东西是无法挽救的。如果某一步不工作,重读上面那一行,再试一次。

打开一个浏览器标签页,看着真实的航空器——由您自己的设备捕获,设备就立在您公寓的窗台上——这种满足感,悄悄地,与所付出的工作完全不成比例。

总之。喝杯茶,继续干活。


如果您想把自己的节点加入Dataero,贡献端程序仓库在github.com/dataero-adsb/dataero-adsb-feeder,它所加入的网络在radar.dataero.eu。今晚我会在上面。

用您自己的数据来看看

告诉我们您的机场、民航当局或机队情况,我们会向您展示网络在那里已经能看到什么。