HackRF实现ADS-B飞机信号跟踪定位

时间:2022-01-11 02:35:53

硬件平台:HackRF One
软件平台:MAC运行环境搭建
系统平台:OS X 10.11 EI Capitan
文章特点:捕捉程序支持HackRF One且基于MAC平台验证通过有效。


1. 原理概述

之所以能够很容易的跟踪飞机,是因为航空CNS(通信导航监视)系统里大量采用非常古老的无线标准.因为航空业巨头们建立了一整套适航规定,飞机上任何一点小小的改动若想获得广泛的应用是非常麻烦的,更不要说对CNS系统的升级换代.

CNS系统中大量采用脉冲*以及明文传输,因此我们得以很容易的监听飞机以及地面站发射的信号,并解码.脉冲*的含义是,通信的基本方式是大功率的脉冲,瞬间功率上千瓦,持续us量级,信息承载在脉冲的位置和相对强度中.

比如二次监视雷达(SSR)系统,地面站发射1030MHz的查询信号,飞机接收到此信号之后在1090MHz发射应答信号,信号中包含了飞机的一些信息,显示在空管的雷达屏幕上.还有空中防撞系统(TCAS),飞机可以自己发射1030MHz的查询信号,其他飞机接收到此信号之后在1090MHz发射应答信号,因此一架飞机得以"看到"周围的飞机.由于以上的查询-应答模式在飞机很多的时候显得效率不是那么高(碰撞,干扰等等),因此新出现了一种ADS-B方式.

在ADS-B中,每架飞机不等查询,主动广播自己的信息,这时监视和防撞需要做的就仅仅是接收了.在通用航空当中ADS-B信号经常在978MHz发射.在商业飞行中ADS-B信号经常在1090MHz发射(和SSR和TCAS发射频率相同,即复用物理层数据链).(通用航空可类比与私家车,商业飞行可类比与公交车长途大巴). 欲知这些CNS系统详情,请在en.wikipedia.org搜索Secondary surveillance radar, TCAS,ADS-B等.

电视棒为何能接收飞机发射的信号?本来他们看起来风马牛不相及的.首先电视棒是能收电视信号的(废话),但能收电视信号不意味着就能收飞机.
得益于微电子技术和通信技术的飞速发展,目前接收电视信号(包括模拟电视和数字电视)一般由两颗芯片来完成,一颗称之为tuner,另外一颗为解调器.tuner的作用是将指定频率和带宽的信号进行放大,下变频,滤波等,送给解调器芯片.解调器芯片首先把信号进行A/D采样数字化,而后根据想要接收的电视制式进行相应的运算处理,输出视频码流,声音,数据等电视台播发的信息.

因为各种系统的工作频率不同,生产tuner的厂家为了使自己的芯片能够一次投产多次使用长期销售,他们将tuner芯片设计的能覆盖很宽的频带并且能设置不同的接收带宽.而后根据用户需求和*的无线电规则在不同的产品里开启某些频段,禁用某些频段. 如果tuner被破解,那么就有办法开启它所有频段的接收能力,包括在1090MHz上接收信号.

剩下的就是解调器,电视棒里的解调器当然无法解调飞机发射的信号,但解调器当中对tuner送来的信号进行A/D采样,这个采样功能是解调任何信号所必须的,当然也可以用来采样飞机发射的信号.通过破解电视棒的driver,tuner的信号被解条器进行A/D采样数字化之后被直接通过USB接口送给电脑,使得我们能在电脑上处理原始的tuner信号采样,即用电脑软件担当解调器的任务.加之航空CNS标准是公开的(脉冲位置,相对幅度等),信息是明文的,因此编制解调软件即可正确解调飞机发射的信号了.

以上用计算机软件进行通信信号解调的方法就是所谓的"软件无线电"(Software Defined Radio -- SDR).

实际上软件无线电技术的研究和开发已经有几十年的历史了,最初源于美军的多制式电台项目. 目前我们日常使用的移动通信系统中其实已经大量使用软件无线电技术, 比如基站中的信号处理大量的使用可编程的FPGA和DSP完成, 比如手机当中的基带处理器也越来越多的采用软解调的方法(少数运算量特别大实时性要求特别高的模块除外,比如turbo解码器,扩频相关器等,这些模块往往在基带处理器中嵌入一些高度定制化"硬"核来实现)

2. ADS-B信号解调软件安装

dump1090这个程序可以配合电视棒实时在google map上显示飞机位置和飞行方向,而且是动态更新的,同时在命令行提供各飞机跟踪的详细信息.

1. 下载和安装dump1090.

软件是开源的,下载链接(用版本管理软件git下载):

$ git clone https://github.com/itemir/dump1090_sdrplus.git
$ make

2. 运行命令:

$ ./dump1090 --aggressive --net --interactive

这时候一般应该能在命令行看到实时更新的飞机信息了(如果天线靠近窗户或者在室外,而且附近有航线或机场)

3. 打开浏览器,输入:

[http://127.0.0.1:8080/]

google map会自动打开(记得挂代理), 右侧栏会看到目前地图上飞机的数量和航班号等信息.

地图上看不到?不要急,你需要手工把地图平移缩放到你所在地点周围,你就能看到箭头样子的飞机了.

下图是在室内抓到的四架飞机:4个黄色箭头,选中标黑的刚离开禄口机场飞向北方

HackRF实现ADS-B飞机信号跟踪定位

2.2 其他解调软件安装及使用 (可选,主要可记录航迹)

安装gr-air-modes:

OS X下执行:port install gr-air-modes 即可一键自动化安装

Linux编译安装

$ git clone https://github.com/bistromath/gr-air-modes.git
$ cd gr-air-modes
$ gedit README & 查看安装方法

在README中给了需要预安装的软件包:

=================================
REQUIREMENTS gr-air-modes requires: * Python >= 2.5 (written for Python 2.7, Python 3.0 might work)
** NumPy and SciPy are required for the FlightGear output plugin.
* Gnuradio >= 3.5.
* Ettus UHD >= 3.4. for use with USRPs
* osmosdr (any version) for use with RTLSDR dongles
* SQLite 3.7 or later
* CMake 2.6 or later

其中NumPy and SciPy are required for the FlightGear output plugin.和Ettus UHD >= 3.4.0 for use with USRPs我们这里暂时用不到.

Linux编译安装:

$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
$ sudo ldconfig

成功执行后,飞机解调软件的可执行文件已经安装于/usr/local/bin

3. 解调数据/飞机轨迹的可视化

如果想详尽研究该解调软件的用法,请命令行输入modes_rx --help

如果现在就想接收飞机信号,那么请靠近窗口,天线尽可能靠近屋外,运行:

$ modes_rx --gain= --output-all --rtlsdr --kml=xxx.kml

可以用--gain调整增益,我的经验是增益高一些接收能力强一些。

xxx.kml是把接收到的飞机航班号位置高度信息等存为kml文件的文件名.

正常情况下你应该从命令行打印能实时看到很多飞机的信息了.收集一会儿之后,关掉程序(ctrl + C), 把那个kml文件导入google earth或者其他能导入kml文件的地图网站/软件,就能看到飞机轨迹了.

linux下一个看kml的程序是gpsprune, 请自行安装. apt-get, 软件中心, synaptic都行.

可以把kml导入地图查看的一个网站是 gpsies.com

备注:其实也可以用hackrf_transfer直接采样1090Mhz频段数据,再导入dump1090或其他软件实现样本分析

HackRF实现ADS-B飞机信号跟踪定位的更多相关文章

  1. 永不消逝的电波(二)HackRF入门:家用无线门铃信号重放

    0×00 前言 在第一篇文章:永不消逝的电波(一):无线电入门篇 我们了解了一下无线电的发展史以及无线电的一些物理知识,在第二篇里我们将用HackRF录制家用门铃的无线信号,然后重放门铃信号. 门铃从 ...

  2. CPU消耗,跟踪定位理论与实践

    CPU消耗,跟踪定位理论与实践 一.性能指标之资源指标定位方案 1.打tprof报告方法 抓取perfpmr文件 60秒. perfpmr.sh 60 从结果文件中取出tprof.sum 或直接抓取t ...

  3. Shell编程之Linux信号及信号跟踪

    一.Linux信号 1.什么是信号? Linux信号是由一个整数构成的异步消息,它可以由某个进程发给其他进程,也可以在用户按下特定键发生某种异常事件时,由系统发给某个进程. 2.信号列表 [root@ ...

  4. 语音跟踪:信号分解、锁相、鸡尾酒会效应、基于PR的信号分离

    NLP中关于语音的部分,其中重要的一点是语音信号从背景噪音中分离.比如在一个办公室场景中,有白天的底噪-类似于白噪音的噪音.空调的声音.键盘的啪啪声.左手边45度7米元的地方同事讨论的声音.右手边1. ...

  5. 使用USRP探索无线世界 Part 1:USRP从入门到追踪飞机飞行轨迹

    温馨提示:请自觉遵守无线电管理法规,依法设置和使用无线电设备 0×00 前言 USRP是数款流行的SDR硬件中功能和应用都相对成熟的一款产品,从WIFI协议.ZigBee协议.RFID协议.GSM通信 ...

  6. Wi-Fi定位,AP定位

    Wi-Fi实时定位系统 基于Wi-Fi的无线局域网实时定位系统(Wi-Fi RTLS)结合无线局域网络(WLAN).射频识别(RFID)和实时定位等多种技术,广泛地应用在有无线局域网覆盖的区域,实现复 ...

  7. ORB-SLAM (四)tracking跟踪解析

    初始化完成后,对于相机获取当前图像mCurrentFrame,通过跟踪匹配上一帧mLastFrame特征点的方式,可以获取一个相机位姿的初始值:为了兼顾计算量和跟踪鲁棒性,处理了三种模型: 1. Tr ...

  8. 浅谈UWB(超宽带)室内定位技术(转载)

    技术背景 随着无线通信技术的发展和数据处理能力的提高,基于位置的服务成为最有前途的互联网业务之一.无论移动在室内还是室外环境下,快速准确地获得移动终端的位置信息和提供位置服务的需求变得日益迫切.通信和 ...

  9. GPS信号模拟器信号发生器应用介绍

    GPS信号模拟器信号发生器应用介绍 随着近些年的科学技术不断发展,卫星导航技术也在日益发展和成熟,并在不同领域得到广泛的应用.尤其在导航定位接收机的研制测试阶段,就需要GPS信号模拟器来模拟不同环境和 ...

随机推荐

  1. 配置文件keepalived.conf详解

    keepalived.conf       一个功能比较完整的keepalived 的配置文件,其配置文件keepalived.conf 可以包含三个文本块:全局定义块.VRRP 实例定义块及虚拟服务 ...

  2. AjaxFileUpload 方法与原理分析

    AjaxFileUpload需求 传统的form表单方式上传文件,  必然会刷新整个页面. 那么在不刷新界面的情况下实现文件的上传呢? 在 HTML4下, 聪明的程序员们发明了 ajax file u ...

  3. Scrum Meeting---Two(2015-10-26)

    这次会议主要有两个方面 一.讨论项目 经过我们团队的激烈讨论,我们团队决定专注于做二手交易这一块.即将之前决定要做的学习经验交流以及校园交由这两块删除. 二.后两天的任务规划 以下便是我们的任务规划: ...

  4. http_load压力测试

    http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB.它以并行复用的方式运行,可以测试web服务器的吞吐量与负载. 一.安装http_load A.进入/usr/local ...

  5. Dapper 基础用法

    Dapper是.Net下的一个简单orm框架,具有以下特点: 1.简单,只需要一个文件即可(SqlMapper.cs) 2.快速,下面是一个查询结果集在500以上的运行速度对比 3.不要求特定的db ...

  6. Java 并发编程(三)为线程安全类中加入新的原子操作

    Java 类库中包括很多实用的"基础模块"类.通常,我们应该优先选择重用这些现有的类而不是创建新的类.:重用能减少开发工作量.开发风险(由于现有类都已经通过測试)以及维护成本.有时 ...

  7. android进入adb shell步骤及修改sqlite数据库文件的权限

    1 准备工作 (1)将adb.exe从  \Sdk\platform-tools目录下移动到 \Sdk\tools目录下(主要是看emulator这几个文件在哪个文件夹就把adb.exe移动到哪个文件 ...

  8. 用Python处理实验数据

    开篇语 近来忙于考试以及应付专业课,基本很少写简书了.昨晚攻坚了三个学生工作的任务(妈妈的吻.好久没有这么疯狂工作了.还是很爽的哦!) 今天难得清静,虽然上课还是沉浸于完成任务的放纵式玩手机中,但是也 ...

  9. Windows 为右键菜单瘦身

    当你想删除右键菜单中某些选项时,一种比较合适的思路是: 1.如果软件本身提供了控制选项,那么直接在该软件设置即可.没必要在注册表操作.比如360安全卫士和360杀毒都提供了这种机制. 值得一提的是,3 ...

  10. java位运算(&、|、 ~、>>、>>> 、 ^)

    1.& 与 数字按位进行与运算 101101 110111 100101 2.| 或 数字按位进行或运算 3.~ 非 数字按位取反 4.>> 右移 数字按位进行右移 正数右移高位补 ...