【虚拟定位】基于BladeRF的GPS虚拟欺骗 [附小米14捕获跟踪结果无定位] [2025年4月]

基于BladeRF的GPS虚拟欺骗

作者:齐花Guyc(CAUC)


一、准备硬件和环境

  • 螺旋天线
    请添加图片描述

  • Blade RF 2.0 Micro xA4

  • 请添加图片描述

  • PC安装Blade RF驱动 和 bladeRFCLI
    在这里插入图片描述

  • GPS-SDR-SIM用于生成虚假 GPS 信号

网盘中还有2025年4月28日的广播星历 年积日为118

在这里插入图片描述
连接设备
请添加图片描述

二、仿真GPS信号

网盘中给的GPS-SDR-SIM是已经编译好了的,可以直接在文件夹中用终端打开。

直接输入命令

gps-sdr-sim.exe

请添加图片描述
稍微解读一下:

  -e <gps_nav>     指定 GPS 星历数据的 RINEX 导航文件,用于模拟真实 GPS 信号
  -u <user_motion> 指定动态模式下的用户运动轨迹文件(ECEF格式)
  -x <user_motion> 指定动态模式下的用户运动轨迹文件(经纬高格式)
  -g <nmea_gga>    指定动态模式下的 NMEA GGA 流
  -c <location>    指定静态模式下的位置(ECEF,单位:米)
  -l <location>    指定静态模式下的位置(经纬高格式)
  -L <wnslf,dn,dtslf> 指定未来的 GPS 闰秒事件(GPS 周数、天数、闰秒值)
  -t <date,time>   指定仿真开始时间(格式:YYYY/MM/DD,hh:mm:ss)
  -T <date,time>   将星历的 TOC(时钟参考时间)和 TOE(轨道参考时间)覆盖为指定时间
  -d <duration>    指定仿真持续时间(单位:秒)
  -o <output>      指定输出的 I/Q 数据文件(默认:gpssim.bin)
  -s <frequency>   指定采样频率(单位:Hz,默认:2600000-b <iq_bits>     指定 I/Q 数据位深(1/8/16,默认:16-i               禁用电离层延迟
  -p [fixed_gain]  禁用路径损耗,固定信号功率
  -v               显示仿真通道的详细信息

打开谷歌地图,进行坐标点的选取。
上海东方明珠的纬度和经度是31.239783239702604, 121.49980011202929
纬度坐标的数值介于 -90 和 90 之间;经度坐标的数值介于 -180 和 180 之间
在这里插入图片描述

开始仿真
-e brdc1180.25n
-l 选择静态模式,经纬高赋值 121.49971080037747,31.239750513187605,100
-o 输出 I/Q 数据文件 gps_sim_shanghai.bin
-b I/Q 数据位深 16bit

gps-sdr-sim -e brdc1180.25n -l 121.49971080037747,31.239750513187605,100 -o gps_sim_shanghai.bin -b 16

请添加图片描述
此时文件夹会多出.bin文件
在这里插入图片描述

三、传输BladeRF播发信号

注意:先将BladeRF连接PC后再打开bladeRF CLI

否则会出现以下情况:显示未连接。
在这里插入图片描述

连接成功后,再次打开bladeRF CLI。

在这里插入图片描述
可以先print打印基本信息

在这里插入图片描述
解读一下:

//接收和发射通道带宽
//RX1 和 RX2 是 bladeRF 的两个接收通道,TX1 和 TX2 是两个发射通道
//当前带宽设置为 18 MHz,范围为 200 kHz 至 56 MHz
TX1 Bandwidth: 18000000 Hz (Range: [200000, 56000000])

//接收和发射通道频率
//当前 TX 通道的频率设置为 2.4 GHz
TX1 Frequency: 2400000000 Hz (Range: [47000000, 6000000000])

//表示 TX1 通道的总增益
Gain TX1 overall: 71 dB (Range: [-4, 71])
//表示数字衰减量
Gain TX1 dsa: 50 dB (Range: [-89, 0])

//发射信号采样率
TX sample rate: 30720000 0/1 (Range: [520834, 61444000])

注意:需要将中频文件移动到bladeRF文件夹路径中,否则读取不了文件。
在这里插入图片描述

键入命令

tx config file=gps_sim_shanghai.bin format=bin channel=1 repeat=0
set frequency tx2 1575.42M
set samplerate tx2 2.6M
set bandwidth tx2 2.5M
tx start

在这里插入图片描述

四、结果

博主手机型号是小米14,查了一下官网参数:
GNSS支持北2的B1I、北3的双频B1C/B2a 、GPS双频L1CA/L5、Galileo E1 E5a 、GLONASS G1、准天顶QZSS L1CA/L5
支持基站辅助GNSS、蜂窝和WiFi网络定位、传感器辅助定位
请添加图片描述
下面是仿真信号的卫星序列 PRN为 08 10 13 15 16 18 23 26 27

请添加图片描述
打开手机的GPS测试软件
PRN为 08 10 13 15 16 18 23 26 27
方位角和高度角也解算正确
在这里插入图片描述
这是手机仅GPS下的卫星分布
请添加图片描述
这是另一款软件的结果
请添加图片描述
在这里插入图片描述
请添加图片描述

但奇怪的是一直没有成功解算出最终的定位结果,不知道是手机的问题还是软件问题,有待考究。

请添加图片描述
请添加图片描述


2025.04.29
有长期从事导航的大佬给出猜测:
1.手机的原因:现在手机大多采取差分定位;
2.FPGA十年老鸟:手机先调成飞行模式,然后重启,在接收信号。不然会优先网上下载星历,导致和模拟器接收的信号冲突,也可能不出定位。

### 设置和使用BladeRF软件定义无线电设备 #### 安装依赖库 为了能够在Ubuntu系统上顺利运行BladeRF,需要先安装一系列必要的依赖库。这些依赖项通常包括但不限于libusb开发文件和其他支持库。 ```bash sudo apt-get update sudo apt-get install libusb-1.0-0-dev pkg-config cmake git ``` #### 下载并编译BladeRF源码 获取最新的BladeRF驱动程序和支持工具可以通过克隆官方GitHub仓库完成。之后按照标准流程进行构建和安装[^2]: ```bash git clone https://github.com/Nuand/bladeRF.git cd bladeRF/host mkdir build && cd build cmake .. make sudo make install sudo ldconfig ``` #### 验证安装成功 一旦上述步骤顺利完成,则可以尝试验证BladeRF命令行工具`bladerf-cli`是否正常工作。通过简单的帮助选项查看是否有响应来确认安装无误。 ```bash bladerf-cli -h ``` 如果一切正常,这将显示有关可用命令的帮助信息列表;如果有任何错误提示,请检查之前的每一步骤确保没有遗漏之处。 #### 使用GNU Radio集成BladeRF模块 对于希望利用图形界面来进行更复杂信号处理工作的用户来说,可以在GNURadio Companion (GRC) 中加载特定于BladeRF的模块。首先需保证已经正确设置了环境变量以便Python能找到对应的包路径。接着启动GRC应用,在组件库里查找名为“BladeRF Source”或“BladeRF Sink”的元件用于创建流图项目[^1]。 #### 同步与校准注意事项 考虑到实际应用场景中的频率偏移以及相位噪声等因素的影响,在设计接收算法时应当考虑加入自动增益控制(AGC),频偏估计补偿机制等措施以提高系统的鲁棒性和准确性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值