极客DIY:廉价电视棒玩转GNSS-SDR,实现GPS实时定位

0×00 前言

GNSS是Global Navigation Satellite System的缩写。中文称作:全球卫星导航系统、全球导航卫星系统。

 

GNSS泛指所有的卫星导航系统,包括全球的、区域的和增强的,如美国的GPS、俄罗斯的Glonass、欧洲的Galileo、中国的北斗卫星导航系统,以及相关的增强系统,如美国的WAAS(广域增强系统)、欧洲的EGNOS(欧洲静地导航重叠系统)和日本的MSAS(多功能运输卫星增强系统)等,还涵盖在建和以后要建设的其他卫星导航系统。

0×01 摘要

本文描述一种利用GNSS-SDR玩转身边无线信号的最廉价方式。由于这款产品是许多人共同努力的结果,无法一一罗列,在此仅提及一下此产品的先驱,V4L/DVB内核的开发人者Antti Palosaari,他发现基于 realtek瑞昱(也称螃蟹)RTL2832U 芯片的USB电视棒存在一种未公开的操作模式, 启用之后可以作为一种廉价的软件无线电的前端。这个重要功能是芯片允许设备向主机发送原生的I/Q采样信号,然后主机负责对DAB/DVB+/FM信号进行解调。这对GNSS软件接收器来说是好消息,因为它覆盖了目标频率带宽。

参考规格说明书,RTL2832U能够以高达3.2 MSPS基带采样频率输出8位I/Q采样信号。不过,经测试发现无损的最高采样频率是2.8 MSPS。频率范围严重依赖于所用的调谐器。使用Elonics E4000调谐器的电视棒可能提供最宽的频率范围(64-1700MHz,而1100-1250MHz之间的存在采样盲区)。当超出规范使用时,调谐器可以覆盖50MHz-2.2GHz(包括盲区)。有关此设备兼容性的更多信息可以参考OsmocomSDR Wiki

全球卫星导航系统(GNSS)Galileo-E1和GPS-L1链路的中心频率是 1575.42MHz,而E400调谐器芯片可以覆盖这个频段。我们可以配置GNSS-SDR,把RTL2832U作为实时信号源,从而为搭建GPS-L1信号接收器提供一种低成本的选择(数十块)。关于GNSS-SDR这个新功能,本文将介绍操作细节以及一些性能测试。

0×02 OsmoSDR驱动

为支持realtek瑞昱RTL2832U芯片的电视棒,GNSS-SDR需要使用OsmoSDR GNU Radio数据源模块(source block)及其驱动。研究人员实现新的 GNSS-SDR数据源适配器,即实际上是OsmoSDR上gr_hier_block2的类实例,而关联的GNSS-SDR 数据源名称为Osmosdr_Signal_Source。适配器的源码位于:

trunk/src/algorithms/signal_source/adapters/osmosdr_signal_source.h
trunk/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc

通过包含以下头部文件,调用libgnuradio-osmosdr 函数库:

#include <osmosdr_api.h>
#include <osmosdr_source_c.h>

编译时增加GNSS-SDR对RTL2832U的支持是可选的,需要安装 OsmoSDR库。关于一步步构建的操作方法,请查阅位于trunk/README的GNSS-SDR 说明文档。

0×03 设置GNSS-SDR 开启GPS-L1实时模式

为了兼容 USB DVB-T设备,我们必须在 GNSS-SDR配置文件(gnss-sdr.conf) 中选择 Osmosdr_Signal_Source作为信号源模块(SignalSource block)。此外,我们也需要配置如下参数:

基带采样频率  //the baseband sampling frequency
射频中心频率  //the RF center frequency
射频增益(IF gain)  //the RF gain
自动增益控制(AGC) 模式 //the AGC operation

可正常接收 GPS-L1 C/A信号的有效配置如下:

[GNSS-SDR]
;######### GLOBAL OPTIONS ##################
GNSS-SDR.internal_fs_hz=2000000
;######### CONTROL_THREAD CONFIG ############
ControlThread.wait_for_flowgraph=false
;######### SIGNAL_SOURCE CONFIG ############
SignalSource.implementation=Osmosdr_Signal_Source
SignalSource.item_type=gr_complex
SignalSource.sampling_frequency=2000000
SignalSource.freq=1575420000
SignalSource.gain=60
SignalSource.AGC_enabled=true
SignalSource.enable_throttle_control=false

安全研究员建议把采样频率设为2 MSPS。在酷睿2四核Q9000处理器@2.66GHz主频和4G内存的硬件情况下,这一配置可以实现8个卫星信道的实时接收操作。此外,启用E4000的自动控制增益(AGC)可以获得最好效果。

0×04 RTL2832U振荡器精度和稳定性的问题

正如Michele Bavaro在他GNSS 博客上提到的, RTL2832U 电视棒所用晶体振荡器的精确度非常低。通过在两种设备(EzCap666和Generic P160)上的实验证实了这个问题。作者使用高精度的信号生成器在GPS-L1链路上产生未调制的载波信号,然后在捕获的信号中测量载波频率错误。在EzCap设备上产生的偏差是80KHz,而在P160设备上产生的偏差是14.8KHz。

本地晶体振荡器的的误差会给GNSS接收器造成两种影响:

1.基带信号会偏移到一个中频( Intermediate Frequency //IF //中高频;中高频中间频率; ),等同于压控振荡器的偏差(VCO deviation)。也可以视为明显的多普勒频移。如果叠加的多普勒频移(实际的信号多普勒频移+偏移的中频)超过可辨识的多普勒搜索间距,信号识别便会失败。
2.由于模数转换器的采样时钟也要参考本地振荡器,所以采样频率也会出现偏差。这个问题会影响追踪的延时锁相环(Delay Locked Loop DLL),因为配置文件中设置的理论采样时钟频率与实际的采样时钟频率存在偏差。如果偏差太大,追踪的延时锁相环(DLL)也会锁定失败。

多亏了GNSS-SDR的灵活性,安全研究员可以通过修改软件接收器配置来消除这两种负面影响。一方面,可以通过启用如下的频率转换FIR过滤器来使用信号调节模块(Signal Conditioner block )抵消中频(IF):

;######### SIGNAL_CONDITIONER CONFIG ############
SignalConditioner.implementation=Signal_Conditioner
DataTypeAdapter.implementation=Pass_Through
;######### INPUT_FILTER CONFIG ############
InputFilter.implementation=Freq_Xlating_Fir_Filter
InputFilter.input_item_type=gr_complex
InputFilter.output_item_type=gr_complex
InputFilter.taps_item_type=float
InputFilter.number_of_taps=5
InputFilter.number_of_bands=2
InputFilter.band1_begin=0.0
InputFilter.band1_end=0.85
InputFilter.band2_begin=0.90
InputFilter.band2_end=1.0
InputFilter.ampl1_begin=1.0
InputFilter.ampl1_end=1.0
InputFilter.ampl2_begin=0.0
InputFilter.ampl2_end=0.0
InputFilter.band1_error=1.0
InputFilter.band2_error=1.0
InputFilter.filter_type=bandpass
InputFilter.grid_density=16
InputFilter.sampling_frequency=2000000
InputFilter.IF=14821
;######### RESAMPLER CONFIG ############
Resampler.implementation=Pass_Through
Resampler.dump=false
Resampler.item_type=gr_complex

另一方面,通过设置GNSS-SDR内部采样频率参数预计的采样时钟频率,可以测量和斟酌采样频率错误。

GNSS-SDR.internal_fs_hz=corrected_value
InputFilter.sampling_frequency=corrected_value
Resampler.sample_freq_in=corrected_value
Resampler.sample_freq_out=corrected_value

0×05 GPS有源天线

安全研究员使用带有陶瓷贴片天的低噪声放大器(Low Noise Amplifier LNA)天线作为有源GPS天线,从而降低整体的噪声。下图展示Garmin GA27C GPS天线,我们可以看到在它的PCB板子上有块陶瓷贴片:

除去塑料壳的Garmin GA-27有源天线

为把天线连接到DVT-T电视棒上,安全研究员需要做一些硬件的修改:

1. 假设GPS天线配置了SMA连接器,为了让GPS天线能够与DVB-T电视棒对接,我们需要自己制作射频(RF)电缆把SMA连接器转换成MCX连接器。
2. 需要使用Bias-T网络(Bias-T network)馈入(feed)低噪声放大器(LNA)。

0×06 性能测量及结论

为实时接收和处理GPS信号,安全研究员评估了两种不同的配置。

第一种方法:安全研究员使用自制的20dB放大和过滤电路把DVB电视棒连接到有源贴片天线。增益模块(gain block)提供+5伏直流电压为有源天线内部的低噪声放大器(LNA)供电。

下图为DVB电视棒(generic P160)、低噪声放大器(LNA)和有源天线的组合:

使用外部LNA电路把通用P160 DVB-T电视棒连接到的GA-27天线

另一种方法:安全研究员使用bias-T网络(standard bias-T network)把有源GPS天线与DVB电视棒的直接连接起来。此设置如下图所示:

使用bias-T网络把通用P160 DVB-T电视棒连接到GA-27天线

在这些实验中,安全研究员使用Dell XPS M1530笔记本,配置为:

Intel 酷睿2双核 T9300 CPU (Intel Core 2 Duo T9300 CPU)
内存:4 GB
操作系统:Ubuntu 12.04
GNU Radio版本为3.6.0

本文撰写之时(SVN rev. 227),在把RtlsdrSignalSource 的采样频率从2MSPS降低1MSPS情况下,上述设备可以支持4个卫星信道的实时操作。虽然支持的带宽有限,但是GNSS-SDR均可以通过上述两种配置获取、追踪、确定位置。天线放置在CTTC(建筑群热时间常数简写)建筑的屋顶,并在实验过程一直保持固定。

Tracking.dump=true
Tracking.dump_filename=./tracking_ch_

在后续的分析处理中,研究人员使用Matlab脚本进行完整性检查(sanity check),脚本位置如下:

trunk/src/utils/matlab/gps_l1_ca_dll_pll_plot_sample.m

图片清楚地显示了GPS C/A导航信号。PLL和DLL鉴相器的输出非常杂乱。

追踪数据分析

最后,直接通过Google地图来描绘获取到的KMV位置文件,如下图所示。黄线代码表示10秒间隔内位置的变化,而红箭头表示天线实际所在的位置。此外,我们也绘制了高度的变化情况。使用4颗卫星和非常低的采样频率-1.2MSPS,研究人员便可以估计位置的时间和速度时间曲线(Position Velocity and Time PVT),这里估计的定位误差在200米范围内。

使用Google地图分析GNSS-SDR估算的位置

0×07 总结

总结这个初步的实验,研究人员得出结论,使用低成本的Realtek DVB-T电视棒实现GNSS定位是可行的。据称,这是GNSS软件接收器首次使用RTLSDR设备进行实时定位操作。这个里程碑可以让我们使用笔记本和极低成本的硬件获取GNSS服务的潜能。研究人员正在计划进一步测试和提升对RTLSDR设备的支持。

*原文地址:gnss-sdr.org

时间: 2024-10-14 05:04:46

极客DIY:廉价电视棒玩转GNSS-SDR,实现GPS实时定位的相关文章

极客DIY:使用树莓派制作一架四轴无人机

如果你想DIY一台属于自己的无人机,那么接下来可以阅读这篇文章,阅读完毕之后也许对你会有启发. 这个项目主要用到的零件主要来自Erle Robotics(一个使用Linux系统的开源四轴飞行器项目).本文的作者并不为这家公司工作,如果对该场景感兴趣也可以关注以树莓派相关联的基础项目,例如 Dexter Industries以及PiBOT.另外在一些相关网站上也更多的教程可以观看.在今年 Robotics是向爱好者提供了相对廉价而又易上手的一次机会,可以在芯片上烧录程序同时可以不断添加新硬件,这一

极客DIY:打造属于自己的无线移动渗透测试箱

本文中介绍的工具.技术带有一定的攻击性,请合理合法使用. 你想不想拥有一款属于自己的移动无线渗透测试箱,如果你感兴趣,下面介绍的设备将会对你很有帮助.这个箱子被称为"MiTM(中间人攻击)WiFi箱",使用这个箱子可以完成一些无线审计工作,同时也可以伪造接入点并完成中间人攻击. 工具要求 如果你真的想要做这个箱子那么你需要如下工具: 5或6mm的钻木/金属钻头 开口扳手(规格8) 钳子 手术刀/裁纸刀 尼龙扎带(俗称:勒死狗) 箱子的选择 这里有些建议,你选中的箱子最好是用过一次以上,

极客DIY:如何构建一台属于自己的基站

写在前面(原文作者) 上周我去特拉维夫(Tel Aviv)探望我的朋友结果有了一些收获,一块崭新的BladeRF(x40),即一个支持USB3.0的SDR平台,这就意味着可以同时发送和接收信息了.而HackRF不同于其他两款硬件,它不支持全双工.这意味着要切换收和发的话,必须每次给控制器发送命令. 微控制器处理切换可能要花费微秒级的时间.在这篇文章中将会介绍如何建立一个小型便携式GSM基站,GSM网络可以遭到攻击/劫持/拦截,当然你可以利用相对价格比较低的电子设备做到这一点.而本文也仅仅供交流学

极客DIY:使用Arduino制作一块开源手表

1 – 引言 首先让我们看下这个项目要考虑到的问题: 1.)使用100%Arduino兼容性硬件 2.)保证存储器足够大可以装下大量的稍后会扩展的新内容 3.)电量最少够1天用 4.)BLE既是中枢设备又是外围设备 5.)体积足够小 接下来的几页都是如何建造一个开源的手表!(这个版本是最初版本,所以之后的内容会有所更改来改进设计!) 这个项目非常耗时,既需要耐心又需要坚定的决心完成细致的焊接项目(小电线是不是非常有趣呢?) 这张图片是完成版的手表 2 – 零配件和工具 1.)Microduino

极客DIY:RFID飞贼打造一款远距离渗透利器

本文使用最新的渗透工具RFID飞贼(Tastic RFID Thief)和RFID感应破解技术来获取一些拥有安防的建筑物的访问权限. Tastic RFID Thief是一个无声远距离RFID读卡器,可不为人知地远距离盗取RFID信息,当不知情人员佩戴门禁卡或射频设备时,便会被它攻破.Tastic RFID Thief针对的是低频125KHz的射频系统,例如那些使用HID Prox或者Indala Prox的产品,不仅如此,你还可以利用它的电路板改造成一个13.56MHz的高频RFID读卡器,这

极客学院&amp;Cocos强强联手的开发者教育平台合作

2014年10月28日 Cocos 2014开发者大会(秋季)在国家会议中心举行.作为中国最大的IT在线教育平台及触控开发者教育平台唯一的在线教育合作伙伴,极客学院为广大COCOS生态系统的开发者们专业制作了近50门COCOS相关在线课程,累计观看超过10万人次.在触控科技CEO陈昊芝在开场演讲中还特别致谢极客学院,他认为这种基于录屏的实时在线教程模式非常的专业,同时很好地填补了目前的市场 空缺,让COCOS的开发者们能更加快速直接地学习掌握基于COCOS引擎的游戏开发.当场,极客学院还提供了2

高德“极客地图”上线 首批解锁吃住玩等等五类独家极客推荐榜单

本文讲的是高德"极客地图"上线 首批解锁吃住玩等等五类独家极客推荐榜单[IT168 资讯]8月8日,集合多个高德极客用户推荐的吃喝玩乐榜单"极客地图"今日正式在高德地图内上线.包括林志玲.TFBOYS.董克平.苏芩等在内的高德极客用户推荐的榜单覆盖了明星.文艺.玩乐.美食.出行等五大类别,共计46个,且这些榜单只在高德地图内独家呈现.现在只要打开高德地图,通过左上角"G"按钮(或在搜索框内搜索"极客地图")就可以进入极客地图榜

欧盟撺掇女性玩科技:当极客很酷

欧盟委员会科技专员尼莉·克罗斯( 腾讯科技配图)腾讯科技 小贝 3月7日编译欧盟委员会科技专员尼莉·克罗斯(Neelie Kroes)周四表示,高科技行业缺少女性给欧盟带来了数十亿欧元的损失,因此欧盟将发起一项倡议,吸引女性加入科技行业,缓解技术力量不足的问题.欧盟委员会发布的数据显示,100名欧洲应用开发者当中只有9名女性,女性在欧洲信息与通信技术(ICT)劳动力当中只占不到30%.克罗斯表示,如果科技行业技术不足的现状持续下去,将削弱欧洲的整体竞争力,而解决该问题则有助于缓解欧盟的就业难题.

根据互联网的创造者以及硅谷极客们的总结

虽然没有明文记载,但是根据互联网的创造者以及硅谷极客们的总结,互联网精神被最终浓缩为四个词语:"开放.自由.协作.共享",尤其对于信奉开源理念的程序员们,这则互联网精神几乎如同"机器人三定律"一样不可违背. 但是,随着互联网的生长,它开始接触并卷入商业.政治甚至是宗教领域,所谓的"互联网精神",也在不断遭受挑战和撬动. 比如,在亚洲和非洲的一些国家,"自由"访问互联网并不是用户的天然权利,也有科技公司协助当地政府帮助限制互联网