什么是 ADS-B
每架客机都在广播的信号:它包含什么,为什么任何人都能接收,以及它不会告诉你什么。
一架会报告自己位置的飞机
ADS-B 是 Automatic Dependent Surveillance – Broadcast(广播式自动相关监视)的缩写。把这几个词逐一拆开看。Automatic(自动):飞机自行发送,无需任何人询问。Dependent(相关):位置来自飞机自身的卫星导航,而不是地面雷达。Surveillance(监视):这是空中交通管制跟踪飞机的方式。Broadcast(广播):它发给所有人,而不是某一个听众。
飞机大约每秒在 1090 MHz 上发送一条短消息。消息包含它的身份(分配给该机体的 24 位地址,通常还有航班呼号)、位置(纬度和经度)、高度、速度和航向。另外一些不时发送的消息还会补充飞机的类别、垂直速率和几个标志位。
自 2020 年起,在欧洲和美国受管制空域飞行的大多数飞机都必须广播 ADS-B。客机在广播,公务机在广播,许多轻型飞机也在广播。部分军用和国家航空器不广播,或者广播时不带位置。
为什么你能收听
这些消息既没有加密也没有签名。这是有意为之:其全部意义就在于让周围的每架飞机和每个地面站都能听到其他所有飞机。消息格式是公开的,由航空业所依据的标准定义,而且频率在全世界都相同。
所以,一台接收器不过是一台调到 1090 MHz 的无线电加上一个把脉冲变成文字的程序。二十年前这样的无线电要花几千块。如今,一个为数字电视而卖的 USB 接收棒,拇指大小,就能胜任,因为它的芯片可以被指令去收听任意频率,并把原始信号交给电脑。这种接收棒叫 RTL-SDR,名字来自里面的芯片(RTL2832U)和它的理念(software-defined radio,软件定义无线电:由电脑来完成解码)。
在 Raspberry Pi 上负责解码的程序通常是 readsb,它是较早的 dump1090 的后继者。它监听接收棒,解码消息,并把结果提供给任何需要它的程序:你浏览器里的地图(tar1090)、追踪网络的数据馈送程序,或者 ZenithBoard 的“墙”。
在美国:还有 978 MHz
美国还使用第二个频率 978 MHz,称为 UAT(Universal Access Transceiver,通用访问收发机),主要用于低空飞行的小型飞机。收听它需要第二个 USB 接收棒和第二根天线。在其他任何地方,1090 MHz 就是全部。ZenithBoard 只会问你一次所在地区,只有当你回答美国时才会提到 978 MHz。
你能听多远
信号像光一样沿直线传播。一架巡航高度的飞机从很远处就能“看见”,只要它和你的天线之间没有任何遮挡。从面对山坡的窗户,你可能听到几十公里;从地平线开阔的屋顶,250 公里甚至更远很常见,而边缘处的飞机正是那些在 11,000 米高空的。你附近的低空飞机则会被每一栋楼、每一棵树挡住。距离取决于天线及其视野,而不是电脑。
ADS-B 不会告诉你什么
消息说的是飞机在哪里,而不是它要去哪里。起飞地、目的地、航空公司名称和飞机照片都来自别处:来自公开登记簿,以及追踪网络和 ZenithBoard 按飞机地址查询的数据库。ADS-B 也不会透露谁在机上,更不会透露关于你的任何信息:接收是被动的,你的接收器不发射任何东西。
MLAT:听见那些不报位置的飞机
有些飞机发送身份但不发送位置(老式应答机会这样)。如果四台或更多接收器听到同一条消息,到达时间的微小差异就能算出位置,就像凭雷声定位闪电一样。这叫 MLAT,即 multilateration(多点定位)。你的单台接收器自己做不到;但通过向网络馈送数据,它就成为那四台之一。这是分享的真正理由之一。