[SDR] 两种方法可视化打飞机:ADS-B 信号接收与航班追踪

news/2026/1/20 23:20:24/文章来源:https://www.cnblogs.com/zjutlitao/p/19096139

目录
  • 效果展示
  • 一、前言
  • 二、gr-air-modes
    • 2.1 环境构建
    • 2.2 经典案例


效果展示



一、前言

  • 介绍ADS-B协议和1090MHz频段。
  • 使用USRP和dump1090等工具接收和解码航班信息。
  • 在地图上实时显示航班位置。

二、gr-air-modes

gr-air-modes 是一个开源的软件定义无线电(SDR)接收器,用于解析飞机的 Mode S 应答器信号,包括 ADS-B 报告。它基于 Gnuradio 框架,支持 USRP 和 RTLSDR 等设备,可将信号处理后以多种格式输出。

项目地址:https://github.com/bistromath/gr-air-modes/tree/master

2.1 环境构建

由于是老 gnuradio 项目,因此需要用 docker,项目提供了 dockerfile 文件,因此直接可以构建:

# 构建的命令
systemctl start  docker
docker build -t ubuntu:gr-air-modes . # 以后每次启动的命令
systemctl start  docker
xhost -          
xhost +local:docker 
docker run -it --rm \--net=host \-e DISPLAY=$DISPLAY \-v /tmp/.X11-unix:/tmp/.X11-unix \-v /dev/bus/usb/:/dev/bus/usb/ \-v /home/btfz/Desktop/B210:/home/gnuradio/B210 \--privileged \
ubuntu:gr-air-modes  bash export UHD_IMAGES_DIR=/home/gnuradio/B210/B210_images/
uhd_find_devices

安装好之后可以用 modes_rx --help 来看看是否安装成功。


2.2 经典案例

案例 1:基础模式 - 接收并在终端显示航班数据

这是最基本的用法,通过 USRP B210 接收 1090MHz ADS-B 信号,并在终端实时显示解析后的航班信息。

modes_rx -s uhd -f 1090000000 -g 40 -l 30.24661575,119.95823993

参数说明:

-s uhd:指定使用 USRP 设备(uhd 是 USRP 硬件驱动的标识)
-f 1090000000:设置接收频率为 1090MHz(ADS-B 信号的标准频率)
-g 40:设置 RF 增益为 40dB(USRP B210 增益范围建议 0-76dB,可根据信号强度调整)
-l 35.14218,133.55393:设置接收地点的 GPS 坐标(示例为杭州,需替换为你的实际位置)

运行后,终端会实时输出附近飞机的信息(如航班号、高度、速度、经纬度等)。

输出格式的基本结构:

(信号强度 时间戳) 消息类型描述 [附加信息]
  1. No handler for message type 24 from XXXXX

(-47 24.68509747) No handler for message type 24 from 620783

  • 含义:接收到了类型为 24 的 Mode S 消息,但当前版本的 gr-air-modes 不支持解析这种类型。
  • 原因:Mode S 消息有多种类型(0-31),部分类型(如 24)可能用于特殊用途(如军用或特定航空公司自定义),开源工具可能未实现解析逻辑。
  • 620783:发送该信号的飞机的 ICAO 地址(全球唯一的六进制标识符,类似飞机的 "身份证号")。
  1. Type 4 (short surveillance altitude reply) from XXXXX at XXXft [附加信息]

(-47 27.77715472) Type 4 from 3b10a2 at 18775ft (SPI)

  • 含义:这是类型 4 的 Mode S 短报文,主要用于报告飞机的高度。
  • 关键信息:
    • 3b10a2:飞机 ICAO 地址
    • 18775ft:飞机当前高度(英尺,1 英尺 ≈ 0.3048 米)
    • (SPI):附加状态(SPI = Special Position Identification,特殊位置识别,通常是飞行员手动触发,用于向地面管制标识自己的位置)
  1. Type 0 (short A-A surveillance) from XXXXX at XXXft [附加信息]

(-46 36.21386772) Type 0 from 9ff8f2 at 106700ft (speed 300-600kt)

  • 含义:类型 0 的 Mode S 短报文,主要用于 飞机间(A-A = Air to Air)监视,通常由 TCAS(空中防撞系统)发出,用于避免碰撞。
  • 关键信息:
    • 106700ft:高度(注意:这个高度远超民航客机常规巡航高度,可能是数据误差或特殊飞行器)
    • (speed 300-600kt):速度范围(kt = 节,1 节 ≈ 1.852 公里 / 小时)
    • 其他常见附加信息:
      • (Vertical TCAS resolution only):仅使用垂直防撞措施(如爬升 / 下降避让)
      • (aircraft is on the ground):飞机在地面(未起飞)
  1. Type 5 (short surveillance ident reply) from XXXXX with ident XXXX [附加信息]

(-50 41.09071772) Type 5 from 76d8bf with ident 4510 (GROUND ALERT)

  • 含义:类型 5 的 Mode S 短报文,用于 身份识别应答(飞行员在管制要求下发送,确认自己的身份)。
  • 关键信息:
    • ident 4510:识别码(飞行员手动输入的 4 位数字,用于地面管制快速识别)
    • (GROUND ALERT):附加状态(可能表示地面告警,如滑行道冲突等)
  1. Type 20 (link capability report) from 231f72: ACS: 0x5e863, BCS: 0xae6b, ECS: 0x6b, continues 6 at 95400ft

(-46 193.36927622) Type 20 link capability report from 231f72: ACS: 0x5e863, BCS: 0xae6b, ECS: 0x6b, continues 6 at 95400ft

  • 含义:类型 20 的 Mode S 扩展电文,即 “链路能力报告”,用于向地面管制和其他飞机广播本机的通信、导航、监视(CNS)能力,确保空中数据交互兼容。
  • 关键信息:
    • 231f72:发送消息的飞机的 ICAO 地址(全球唯一的六进制标识符)
    • ACS: 0x5e863:机载能力集(19 位二进制编码的十六进制表示),用于标识飞机支持的 ADS-B、Mode S 等监视功能(如高度 / 位置 / 速率报告能力)
    • BCS: 0xae6b:广播能力集,用于说明飞机支持的 Mode S 广播消息类型及传输频率
    • ECS: 0x6b:扩展能力集,补充标识飞机的特殊功能(如是否支持军用模式、特定导航系统等)
    • continues 6:表示该消息是分片传输的长消息,此为第 6 个分片
    • at 95400ft:飞机当前高度为 95400 英尺(约 29080 米,远超民航常规巡航高度,可能是高空特殊飞行器或数据误差)
  1. Type 21 TCAS report from 4e1e53: (no handler for TTI=0) ident d80
    (-45 111.68943897) Type 21 TCAS report from 4e1e53: (no handler for TTI=0) ident d80
  • 含义:类型 21 的 Mode S 消息,属于空中防撞系统(TCAS)报告,用于飞机间传递防撞相关信息,帮助避免空中碰撞。
  • 关键信息:
    • 4e1e53:发送该消息的飞机的 ICAO 地址(全球唯一标识符)
    • (no handler for TTI=0):表示当前版本的解析工具不支持处理 TTI=0 的信息(TTI 可能是 TCAS 消息中的特定类型标识或参数)
    • ident d80:飞机的识别码(此处为十六进制表示的识别信息,用于身份标识)

案例 2:输出数据到 Google Earth(KML 文件)

如果需要在 Google Earth 中可视化飞机位置,可将数据输出为 KML 文件:

modes_rx -s uhd -f 1090000000 -g 45 -l 30.24661575,119.95823993 -K aircrafts.kml

参数说明:

  • -K aircrafts.kml:指定 KML 输出文件(Google Earth 可直接打开该文件显示实时飞机位置)
  • 其他参数同上(增益调整为 45dB,坐标示例为杭州)

1)需要在 aircrafts.kml 同目录下放置一个 airports.png 图片,表示飞机,同时修改 kml.py 文件对应的条目,为 ./airports.png(当然也可以手动编辑 /usr/local/lib/python3.6/dist-packages/air_modes/kml.py 将其中的 \n\t\t\t<Icon><href>airports.png</href></Icon> 去掉,采用默认的图标)。此外,网页端的 google earth 似乎不支持自定义的 png 图标,桌面端的需要仔细和对图标的朝向,才能达到想要的效果,下图是个例子。

2)我研究了 kml 的语法,写出一个自动刷新的脚本给 google earth 网页端,发现不支持 networklink,最终得出结论:网页端不支持动态刷新,因此需要使用桌面版 yay -S google-earth-pro(这是 arch linux 安装命令,根据你的平台安装命令自行安装)

安装好之后按照下图所示创建一个 Network Link:

并设置动态刷新 aircrafts.kml:

之后就可以拖动地球找到我们对应的坐标点,观察搜索到的飞机信息:


案例 3:指定 USRP B210 硬件参数(进阶配置)

USRP B210 支持多种子设备(subdev)和天线选择,可通过参数精细配置:

modes_rx -s uhd -f 1090000000 -g 60 -l 30.24661575,119.95823993 -K aircrafts.kml \-R A:B -A TX/RX -D "num_recv_frames=512"

参数说明:

  • -R A:B:选择 USRP 的子设备(B210 有 A 和 B 两个通道,A:B 表示使用 B 通道)
  • -A TX/RX:指定使用的天线(B210 支持 TX/RX 和 RX2 天线,根据实际连接选择)
  • -D "num_recv_frames=512":向 USRP 驱动传递额外参数(这里设置接收缓冲区大小,优化高数据量场景)
  • 坐标示例为杭州,增益 60dB(适用于信号较弱区域)

案例 4:启动 SBS-1 兼容服务器(供其他软件连接)

许多飞行跟踪软件(如 Virtual Radar Server)支持 SBS-1 协议,可通过 -P 参数启动兼容服务器:

modes_rx -s uhd -f 1090000000 -g 60 -l 30.24661575,119.95823993 -P -t 5000

参数说明:

  • -P:在端口 30003 启动 SBS-1 兼容服务器(供外部软件连接)
  • -t 5000:额外在端口 5000 启动一个 TCP 服务器,用于自定义数据接收
  • 坐标示例为杭州,增益 60dB(适用于信号较弱区域)

启动后,其他软件(如飞行跟踪工具)可通过 localhost:30003 或 localhost:5000 接收数据。


Virtual Radar Server is an open-source .NET application that runs a local web server,其在 linux 上安装理论上会很麻烦,不过有个 github 开源项目支持一键安装(适配的平台超多):

bash -c "$(wget -qO - https://github.com/mypiaware/virtual-radar-server-installation/raw/master/virtual_radar_server_install.sh)"

在安装过程中可以顺带配置下 Receiver(我们这里是 B210 SDR):

Receiver name:         B210                     # 任意名称
Receiver source type:  BaseStation              # 对应 SBS-1 
Receiver address:      192.168.101.192          # ADS-B 接收器设备的 IP 地址。如果 VRS 与接收器安装在同一设备上,输入统一台电脑的 ip
Receiver port:         30003                    # 输入提供飞机消息的 ADS-B 接收器的端口值

安装完之后 vrs -gui 以 GUI 方式启动 VRS(先启动 modes_rx),同时可以选中 B210 进行调整配置:

当我们看到 modes_rx 的 log 中显示 connect 时,表明我们 vrs 已经连接上了接收者,此时打开 http://127.0.0.1:8090/VirtualRadar 链接,就能在网页中看到实时的飞机信息了:


案例 5:禁用终端输出,仅保存数据到文件

如果不需要在终端显示,可禁用输出并专注于数据保存:

modes_rx -s uhd -f 10900000 -g 50 -l 30.24661575,119.95823993 \-n -K aircrafts.kml -P -t 5000

参数说明:

  • -n:禁用终端输出(减少干扰,专注于后台数据处理)
  • 同时启用 KML 文件输出和 SBS-1 服务器,适合无人值守场景

[1]. 豆包 —— 咨询 gr-air-modes 的用法(个人)
[2]. Gemini —— 咨询网页端的 google earth networklink 为啥不行(个人)
[3]. Github —— gr-air-modes
[4]. B210专项 —— 03-环境搭建与驱动安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/161214.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P7072 [CSP-J2020] 直播获奖

P7072 [CSP-J2020] 直播获奖#include <bits/stdc++.h> using namespace std;const int maxn = 1e5 + 10; int n,w,cnt[610] = { 0 };int main(){ios::sync_with_stdio(0);cin.tie(0);cin >> n >> w;int ans = 1;for(int i = 1; i <= n; i++){int t;cin &g…

服务器文件同步工具大盘点

内容概要 在数据驱动的时代,服务器文件同步成为企业日常运营不可或缺的一环。面对繁多的文件同步需求,“服务器文件同步工具有哪些”成为众多IT管理者关心的焦点。本文将全面盘点当前主流的服务器文件同步工具,特别介绍如Ftrans FTC文件传输管控系统等高效解决方案。它们凭借…

AI破局俱乐部,通过AI搞副业,确实解决了很多人中年危机问题

前段时间“李一舟”事件炒得沸沸扬扬,有的人悲愤不已,有的人拍手叫好。割韭菜的情景,就如你满怀期待地报班学一门课程,结果发现所谓的“秘籍”不过是些网上随处可见的常识。又如你兴冲冲地去吃大餐,结果端上来的却是昨天的剩饭。这种“割韭菜”的套路,简直就是在考验我们…

解锁RAG高阶密码:自适应、多模态、个性化技术深度剖析

别让你的AI系统还停留在只会查字典的阶段!本文用轻松幽默的方式揭秘高级RAG技术如何让AI变得更聪明:自适应检索像读心术一样精准,多模态RAG让AI能看图识字,个性化RAG则让AI记住你的每一个小习惯。想打造真正智能的AI应用?这三项技能缺一不可!当你走进一家智能咖啡厅,第一…

软件逆向入门理论

软件逆向入门理论目录大脉络软件的构成软件逆向是一种技术手段,它能达成的目的:分析该软件的漏洞; 分析这个软件,想作为跳板获取其他软件、系统的更高权限; 分析该软件的安全性、可靠性等; 分析该软件的构成;下面粗浅的进行软件逆向入门,将选择经典的x86平台下的软件来…

鸿蒙应用开发从入门到实战(七):ArkTS组件声明语法

《鸿蒙应用开发从入门到项目实战》系列文章持续更新中,陆续更新AI+编程、企业级项目实战等原创内容、欢迎关注!​本文从界面制作从组件声明开始,通过一个相对简单的案例来系统的学习 ArkTS 声明组件的语法。大家好,我是潘Sir,持续分享IT技术,帮你少走弯路。《鸿蒙应用开发…

P1115 最大子段和

P1115 最大子段和 妙#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 2e5 + 10;int n,a[maxn],dp[maxn]; int ans = -100010;signed main(){// freopen("in","r",stdin);ios::sync_with_stdio(0);cin >&g…

麒麟系统关闭防火墙

有时远端连接数据库时出现 连接超时 ,则有可能是 麒麟系统的防火墙 开启了,最简单的方法是关闭防火墙#查看防火墙状态 sudo systemctl status firewalld #检查 firewalld 是否运行 #或 sudo systemctl status ufw #检查 ufw 是否运行 (部分系统适用)#临时停止防火…

Windows Server 2019开启远程桌面无法远程处理

故障现象 Windows Server 2019开启了远程桌面但是无法远程 Telnet对应端口3389也不通 故障原因 远程服务Down了 修复 到服务管理重启远程服务Remote Desktop Service如果提示病毒则关闭本机自带杀毒

英语_阅读_This makes me crazy_待读

My parents know little about high-tech products. 我的父母对高科技产品几乎一无所知。 Computers, mobile phones, iPads ... They cant use any of them! 电脑、手机、平板……他们一个都不会用! Every time Im home for a holiday, my parents ask me how to take a phot…

一位华裔数学家40年目睹之怪现状:美国学生的数学为什么那么差?

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087最近在《知识分子》上读到一篇特写《数学战争警示录:我们需要什么样的数学教育?》,颇有感触。在这俄乌战争已持续三年有余、…

这些年轻科学家不再满足于“追赶美国”

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)在很长一段时间里,硅谷是全球AI人才的终点站。而中国曾是最大的人才输出地,把一代又一…

英语_阅读_

My parents know little about high-tech products. 我的父母对高科技产品几乎一无所知。 Computers, mobile phones, iPads ... They cant use any of them! 电脑、手机、平板……他们一个都不会用! Every time Im home for a holiday, my parents ask me how to take a phot…

英语_阅读_BMI_待读

56. What is Chinas recent success in BMI? 中国在脑机接口方面最近的成功是什么? A paralyzed patient was able to drink water by controlling a glove with his brain. 一位瘫痪患者能够通过用大脑控制手套来喝水。57. What is the external device in the recent exper…

0130_中介者模式(Mediator)

中介者模式(Mediator) 意图 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 UML 图优点降低耦合度:将对象间的一对多关联转变为一对一的关联,减少对象间的依赖 集中控制:将交互逻辑集…

2025介绍1个简单好用免费的版权符号复制生成网站

最近安装了claude code,这编程真是很爽啊,直接把需求告诉他就行了,很快,已经彻底放弃cursor啦!顺便做了个复制版权符号的网站https://copyrightsymbol.app 一句话介绍网站: 复制版权符号,和版权符号相关的一切小功能,免费无登录 网站地址: https://copyrightsymbol.ap…

【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?

原文:【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?爆火!garak——大语言模型漏洞扫描神器全揭秘 garak 是一个用于检测大语言模型漏洞的扫描工具。简单讲,它能自动发现AI模型中的安全弱点和潜在风险。适用人群:AI安全研究人员、模型…

WPF 通过 WriteableBitmap 实现 TAGC 低光增强效果算法

我在寻找将一些拍摄出来的比较暗的图片进行光亮增强的算法,用于处理我出门拍的一些照片。我从博客园找到了 Imageshop 大佬记录的伊拉克团队的TAGC(低光增强效果)算法实现,通过阅读大佬的博客和对应的论文,基于 WPF 的 WriteableBitmap 实现 TAGC 低光增强效果算法开始之前…

css-3

css的基础选择器css的关系选择器css的文本样式css的继承性css的分组选择器伪类选择器css的属性选择器

Linux服务器部署FRP及配置Token

Linux服务器部署0.64.0版本frp并配置systemctl,Windows安装frpmgr管理多服务器多连接。相关软件 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. Release v0.64.0 fatedier/frp koho/frpmgr: A user-frie…