Ads-b 接收站搭建与优化

ADS-B(Automatic Dependent Surveillance-Broadcast,自动相关监视广播)是一种广泛使用的飞行监视技术,通过飞机广播自身的位置、高度、速度等数据给地面站和其他飞机,其提供了相比传统雷达技术更加准确、实时的飞行数据,与此同时 ADS-B 也是广泛使用的航班追踪软件例如 Flightradar24 的运行原理,这一类追踪软件通过部署范围广阔的 ADS-B 地面站来实现实时追踪飞机位置。
按照当今设计系统的惯用思维,要实现飞机位置等信息的跟踪大概率会使用卫星甚至 LTE 等技术传输到统一的控制中心实现监控,然而航天发展历史悠久,ADS-B 作为早期针对这一问题的解决方案一直沿用至今(虽然飞机制造商例如 Boeing 和各大航司确实有类似的中心化控制中心,但是大多局限在该组织内部使用),更何况 B737 这样发布至今已有 60 余年的机型仍在蓝天翱翔,想要将飞行监视技术进行统一的更新换代并不容易。所以,目前的航班追踪平台靠着自行构建全球性的 ADS-B 接收网络这一实属不易的方式运作着,那么,有没有可能我们也能为构建接收网络出一份力呢?

实际上 Flightradar 和 FlightAware 这样的追踪平台很大成分上依赖着爱好者们为爱发电搭建的 ADS-B 接收站,并且如果你位于欠覆盖区域,他们会很乐意为你提供免费的接收设备。对于所有愿意提供 ADS-B 数据馈送的用户,许多平台会提供免费的企业订阅作为交换,以感谢你的付出,这也是我愿意搭建 ADS-B 接收设备的主要动力来源。
购买接收器 (SDR Dongles)
接收 ADS-B 广播所使用的接收器其实也就是 SDR (Software-defined radio) 所使用的接收器,它不仅可以用于接收 ADS-B 广播,也可以拿来接收例如国际空间站下传的卫星图片,或者拿来当成老大爷同款收音机听听广播也是不错的,用途十分广泛。
目前主流的 Dongles 主要采用 Realtek 的 RTL2832U 芯片组,价位在 200 左右,不同厂家之间性能差异有限,同时选用更高端的 Dongles 在 ADS-B 接收场景意义不大,故这里简单推荐两款:
RTL-SDR Blog V3
https://www.rtl-sdr.com/rtl-sdr-blog-v-3-dongles-user-guide/
广泛使用的接收设备,V3 似乎比 V4 更适合于 ADS-B 场景,淘宝存在许多翻版,翻版性能自行甄别
相比下面这款它拥有铁壳所以散热应该更好,具有 Bias-T 供电能力故可使用依赖于此的 LNA
FlightAware Pro Stick Plus
额外内置一个 1090Mhz 的带通滤波器
省得额外买,当然也更不方便于接收 ADS-B 以外的信号
无线电玄学部分——天线、线材、滤波与LNA
偶极子天线 (Dipole Antenna)
我购买的 RTL-SDR 套装自带了一套偶极子天线,效果对于轻度要求尚尚尚可,在使用时需要注意:
长度
偶极子天线长度影响其谐振频率,你应该找到与期望频率(对于 ADS-B/Mode-S 而言是 1090Mhz,或是 978Mhz)相匹配的长度,这里推荐一个计算器: https://www.omnicalculator.com/physics/dipole
在 1090Mhz 频率下天线总长应该为 13.087cm
方向
对于ADSB接收,偶极子天线的最佳朝向通常是垂直放置

偶极子天线的辐射方向图呈环形(甜甜圈形状),信号强度在垂直于天线轴的方向上最强,由于大多数商用飞机的 ADS-B 发射天线为垂直极化,也应使用具有相同极化的天线以获得最佳性能
我是否需要升级天线
一般来说,除去天线位置的限制,如果接收范围总是小于 50nm,就可以考虑升级,同时你可以参考 adsb.im 控制面板的 Stats:

如图可见信号强度均值 -32dB,属于较弱,这个值越大越好;噪声 -42dB 也属于偏高,这个值越小越好

从增益上也能反映当前信号接收强度,当前增益 49.6 是非常高的设置,接近很多接收机的最大增益,高增益会同时放大信号和噪声,也可能导致接收机过载,故天线部分很有必要进行升级
玻璃钢天线

https://www.amazon.com/gp/product/B09P19H1Q8/?th=1
FlightAware 这款天线应该是使用最为广泛的,0.6m 长度,5.5dBi 增益,其他具有类似参数的天线(例如 ADSBexchange)的天线理论上具有相似的性能(甚至可能来自同一家厂商)
同一个 Amazon 链接下还有 12dBi 增益的一款更长的天线值得尝试,不过需要注意的是,增益并不是越高越好,增益越高波束宽度变窄,覆盖角度减小,有 Reddit 用户测试发现 5.5dBi 的天线甚至好于更高增益的天线也说明了这一问题
线材
在天线接收了信号之后线材的质量决定了传输中信号损失,一些常用的线材规格为 RG-58, LMR-240, LMR-400,其中还有 LMR-240 的变种 KMR-240,理论具有相似的性能但执行标准不如 LMR 严格

RG-58 的损耗值为 23 dB/100 ft,在 30ft 的长度下,加上连接器的损耗等,实际值更接近于 8-10 dB,即便与上述增益更高的 12dBi 天线搭配使用,这意味着将损失 90% 的信号,故在可能的情况下应该尽量避免采用
LMR-240 损耗值为 8Db/100ft,LMR-400 为 4 db/100ft,可以结合线材长度计算或在这里: https://www.w4rp.com/ref/coax.html 直观感受不同线材带来的损耗
在购买线材和转接头时应该注意类型,N公/母头,SMA公/母头
带通滤波器

带通滤波器能够滤除不需要的频率信号(噪声)而保留目标频率,其根据原理不同性能有所差异,常见的是LC(电感L和电容C)滤波和SAW滤波(利用压电材料表面的声表面波 Surface Acoustic Wave 传播特性,将电信号转换为声波,再转回电信号),两者各有千秋,可以按需看谁便宜购买
如果追求极致的过滤效果,也可以尝试这一款 1090 MHz cavity filter https://shop.sysmocom.de/1090-MHz-cavity-filter-for-Mode-S-ADS-B/cf1090-kt3

其拥有非常干净的频率响应,适合有更高需求的用户
LNA

LNA(低噪声放大器 Low Noise Amplifier)是一种专门设计用来放大微弱射频信号的电子设备,其是一个有源组件故需要通过支持的 SDR 依赖 Bias-T 供电或者外接电源
该设备通常是宽频,能够对所有信号进行放大,故应该在滤波之后以免放大噪声,同时也有结合了滤波的版本例如上图
完整连接顺序
连接以上所有器件的顺序应该为:Antenna - Filter - LNA - [Cable] - SDR Dongle
带通滤波器和 LNA 应该尽可能靠近天线,如果LNA有很低的噪声系数,可以放在滤波器前面,但仍不建议,确保 LNA 只对需要的信号进行放大更为合适,这里有关于连接顺序更细致的讨论
注意在更新天线与射频前端后,你应该重新设置增益或者进行 autogain
升级前后比较
前面提到,起初我使用的是偶极子天线和随附的馈线,发现效果不佳后购买了 LNA、SAW 滤波、LMR240 标准的馈线,搭配 0.6m 5.5dBi 的玻璃钢天线进行升级,升级前后对比:

Tracks Seen/Hour: 200 → 1200
Peak Signal Level: -20dB → -6dB
Max Range: 40nm → 120nm
Noise: -42dB → -36dB ⬇️
Auto Gain: 49.6 → 37.3
可以发现消息频率、观测范围、观测数量等参数都有非常明显的提升,不过噪声底也提升了,猜测是滤波滤除不够干净以及经过 LNA 放大导致信号与噪声一起放大导致的
看到噪声提升之后,我暂时移除了 SAW 滤波想进行对比测试以了解滤波是否有作用:移除滤波之后噪声底来到 -30dB (再次提升),证明滤波确实是有作用的,同时还观察到了个有趣的现象:移除滤波后自动计算的增益下降到 -30dB,一直以来我认为增益越小说明信号质量越好,但为什么噪声增加后增益反降呢,搜索后发现自动增益控制算法以总 RF 功率作为输入,维持信号在合适的范围以避免弱信号丢失以及接收机过载,也就是说该算法无法区分目标信号和干扰信号,这也解释了当噪声增加后总 RF 功率提高,虽然信噪比下降,但由于 AGC 的工作原理其仍然需要降低增益以保护接收机避免过载
运行 Feeder 的设备
这里指的是与 Dongles 连接的类似树莓派的设备,运行 Feeder 软件将接收到的 ADS-B 报文转发给各大平台

一种常见的搭配自然是树莓派+Dongles,但如果你碰巧有一台运行着 Proxmox VE 的 Home Lab,在上面新建一个虚拟机也可以达成同样的效果
这里使用一个极其方便的系统镜像: adsb.im 同时适用于树莓派和虚拟机的安装,以下为 Proxmox VE 的安装步骤:
在 Proxmox VE 宿主机上运行:
mkdir -p ~/adsbim; cd ~/adsbim
wget -O adsb-im-vm.tar.xz https://github.com/dirkhh/adsb-feeder-image/releases/download/v2.3.2/adsb-im-x86-64-vm-v2.3.2-proxmox.tar.xz
tar xJf adsb-im-vm.tar.xz && bash ./pve-vmcreate.sh -s 16G
cd && rm -rf ~/adsbim
运行完成后应该能看到名为 adsb-feeder 的 VM,选择 Hardware - Add: USB Device - Use USB Port 将 Dongle 直通给 VM 后点击启动即可

打开 Console 观察输出,可能需要手动重启一次直到给出连接信息方为初始化完成,打开 VM IP 即可见 adsb.im 的控制台

MLAT (Multilateration) 是一种为缺少 GPS 信息的 Mode-S 报文计算出位置信息的技术,其通过 3 个或更多地面接收器的接收时间差来计算位置,MLAT 的运作依赖高精度的时钟(通常是 SDR Dongle 内置时钟),通过虚拟机运行的实例由于 USB 延迟的问题,许多平台会由于数据不可靠拒绝采用作为 MLAT 源,将 Feeder 直接安装在物理机上或者树莓派上可以解决此问题

这里推荐几个值得 Feeding 的平台:
Flightradar24 不用说,最大的航班追踪平台,送 Enterprise 订阅
FlightAware 大概是第二大?送 Enterprise 订阅,送 $10 AeroAPI Credit 可用于构建自己的航班追踪 App
PlaneFinder 大概是这里面 UI/UX 做的最漂亮的平台,送 Premium 订阅
题外话:在追踪覆盖范围上,Flightradar24 几乎是最强的,在刁钻的航线上拥有远超 FlightAware 的覆盖,同时对于太平洋等不可能有接收站的地区有效果不错的卫星覆盖(不懂为什么 FlightAware 声称自己有 Aireon 天基 ADS-B ,但覆盖和 FR24 却完全没法比)。FlightAware 覆盖其次,但是对于中国大陆区域覆盖欠佳,这点上 FR24 不成问题
题外话2:如果希望在中国大陆建设接收站补足覆盖,请确保 Feeder 不要直连到任何平台例如 Flighradar24
以上,Happy Feeding !
Reference:
https://www.reddit.com/r/RTLSDR/comments/pyh34g/effect_of_rtlsdr_blog_adsb_triple_filtered_lna/
https://www.reddit.com/r/RTLSDR/comments/xizisc/lna_ahead_of_saw_filter/
https://www.reddit.com/r/RTLSDR/comments/15mxix9/trying_to_organize_thoughts_lna_for_adsb/
https://www.reddit.com/r/ADSB/comments/1imqjs3/for_those_whove_upgraded_from_default_rubber/