另外感觉天线需要一个外壳。
用开源项目gps-sdr-sim就可以干这个:XXXXXXXXXXXXXXXXXX/osqzss/gps-sdr-sim
不过原版的gps-sdr-sim只能输出一个I/Q信号文件,然后再用相关的软件来把这个I/Q信号文件用SDR发射出去。。没法实时地运行。。
于是fork过来改了一下,加了个用TCP流输出I/Q信号的功能,这样就能和Gnuradio的"TCP Source"连接起来,实时运行。。
不过这样显然不够过瘾,因为原来的gps-sdr-sim只能使用静态的坐标位置或者路径文件。。这样就没法实时改变位置了。。于是又加上了个http的接口,这样就能使用网页地图,想去哪就去哪:
用HackRF来发射,为了限制发射范围,关闭hackrf的RF放大,再加个20dB的衰减器:
使用外部TCXO时钟,要不然HackRF自带的振荡器频率不够准确,信号根本没法被接收。。
用手机接收:
大概一分钟多就能3D FIX了。。
去上海
去杭州
北京某某门
因为用的是十几天前的星历文件,所以GPS时间很显然是错的。。不过可以用-T选项来强制替换信号中的日期/时间来解决。。
下载:
或者:XXXXXXXXXXXXXXXXXX/gym487/gps-sdr-sim-realtime
使用方法:
先用Gnuradio运行XXXXXXc(其中的sdr用的是设为hackrf的osmocom sink,需要换成自己的..)
然后参照XXXXXXXXX运行gps-sdr-sim(需要开启-n选项连接Gnuradio,开启-w选项连接地图服务器
例子:
./gps-sdr-sim -e tro11110.17n -n 1234 -v -d 3600 -w
然后cd进入mapserver目录,
python ./mapper.py
运行地图服务器,访问 http://127.0.0.1:8080/static/XXXXXXXXXXXml 打开地图
然后就可以到处"旅游"啦~
单击地图移动位置
注:
百度地图上取到的坐标和实际坐标有几百米的偏差。。需要注意一下。。
[修改于 7年9个月前 - 2017/05/01 02:10:15]
引用 ry7740kptv:官方wiki?
话说GNU Radio开发有么有什么参考资料呢?
比如新开发一个硬件外设要和它对接,接口什么的~~~
引用 radio:用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
用开源项目gps-sdr-sim就可以干这个:<XXXXXXXXXXXXXXXXXX/osqzss/gps-sdr-sim>
不过原版的gps-sdr-sim只能输出一个I/Q信号文件,然后再用相关……
引用 warmonkey:是不是没有用外部时钟源?
用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
HackRF and bladeRF require 2.6 MHz sample rate, while the USRP2 requires 2.5 MHz (an even integral decimator of 100 MHz).
引用 radio:
官方wiki?
XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp/Main_Page#Developing_GNU_Radio
引用 radio:墙内表示比较痛苦。。。
官方wiki?
XXXXXXXXXXXXXXXXXXXXXXXXX/XXXXXXXXp/Main_Page#Developing_GNU_Radio
引用 warmonkey:用B205mini+gps-sdr-sim配合自己写的轨迹生成器,iPhone/各种Android机器接收正常。。。而且发现iOS有偏心GPS时间的倾向,如果一旦被GPS欺骗了以后,很快系统时间就被改成GPS时间,而且关闭GPS欺骗,很长时间无法正常接收正常的GPS信号,时间也会很难改回来。
用USRP B210回放,ublox NEO-6M NEO-8M 小米4 这些设备都无法接收
dc tone是自动bias消掉的吗 几年前那些库还不完善的时候 生成的流 看运气会有很高的dc tone,然后接收机就不认了,要手工修正
dc tone是指频谱中间那个高高耸立的DC offset么?不清楚你用的库是是怎么样的。。我这个没有这样的现象。。从顶楼的频谱图也可以看出来。。 库源代码里生成I/Q信号有关的代码主要就这些:
每次循环把载波的相位步进一段,计算下一个采样点的信号:
chan[i].carr_phase += chan[i].carr_phasestep;
步进长度由卫星初始化时确定:
chan[i].carr_phasestep = (int)(512 * 65536.0 * chan[i].f_carr * delt);
步进时间delt为采样率倒数:
delt = 1.0/samp_freq;
载波频率的计算:
// Pseudorange rate.
rhorate = (rho1.range - chan->rho0.range)/dt;
// Carrier and code frequency.
chan->f_carr = -rhorate/LAMBDA_L1;
由两次步进伪距的差值除以LAMBDA_L1(光速除以GPS L1的频率)得到。(产生多普勒偏移)
生成I/Q信号。。就是把数据比特和伪随机扩频序列还有增益分别和两路相差90度的载波信号乘到一起调制,然后把全部视野内的卫星信号叠加在一起:
iTable = (chan[i].carr_phase >> 16) & 511;
ip = chan[i].dataBit * chan[i].codeCA * cosTable512[iTable] * gain[i];
qp = chan[i].dataBit * chan[i].codeCA * sinTable512[iTable] * gain[i];
// Accumulate for all visible satellites
i_acc += ip;
q_acc += qp;
显然正常情况下大约正负10kHz的载波信号,与1.023MHz的伪随机序列相乘会产生上下两个边带共2.046MHz带宽的信号的。。不会只在直流上形成一个尖峰。 这种情况姑且胡乱推测一下,这种情况应该是bug导致生成了一个或者多个C/A码一直为0或1的卫星?
谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用的安卓手机上定位的软件叫啥?
谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用的安卓手机上定位的软件叫啥?
引用iamapighhh发表于13楼的内容谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用...
GPS Test
话说必须要TCXO吗,最近用AD9363的平台试着发射,没有TCXO,频率定为GPS的L1,但是奇怪的是用手机无法接收到,手机为华为平台。用RTLSDR观测到是有信号发出的
话说必须要TCXO吗,最近用AD9363的平台试着发射,没有TCXO,频率定为GPS的L1,但是奇怪...
我用HackRF+安卓手机的测试结果是不用TCXO就无法被接收,用了就可以。。GPS接收机对信号频率准确性要求比较高,真正卫星上的信号是原子钟产生的,毕竟要用来进行多普勒/载波相位之类的测量。
USRP B205mini 是内置TCXO,实测无需用外部ref也可以。没想到HackRF板载晶振差距这么大。
您好,请问一下,我使用您的项目文件去操作,用的硬件是Bladerf,但是在实际操作中,发现并不能欺骗,如果用原始文件生成制定坐标的文件可以欺骗(排除硬件问题),但是利用您提供的项目文件产生实时文件的时候,并不能成功欺骗,而且我将TCP的文件保存下来,重新发射,也并不能欺骗,请问有什么需要注意的,或者不同的么。时钟已经改为default。
引用houjiezhuzi发表于18楼的内容您好,请问一下,我使用您的项目文件去操作,用的硬件是Bladerf,但是在实际操作中,发现并不能欺骗...
没有用过BladeRF,方便讲下你的具体配置么?
因为按照主贴的操作在实时模式下并不会产生任何输出文件,所以感觉可能是配置的问题。(例如用BladeRF时不要用原项目的脚本,而应该把GnuRadio中流图的sink配置为BladeRF)
没有用过BladeRF,方便讲下你的具体配置么?因为按照主贴的操作在实时模式下并不会产生任何输出文...
这是我的配置方案。
Bandwidth 改为2.5M(参考XXXXXXXXXXript里发射设置)
Device number没有写,gnuradio会自动识别板子进行发射。
其余命令没有任何改动。
引用houjiezhuzi发表于20楼的内容这是我的配置方案。Bandwidth 改为2.5M(参考XXXXXXXXXXript里发射设置)...
感觉可能还是配置上的问题?
从原理上来讲,只要网页地图上不动,生成的数据就和通常的静止坐标的模式没有任何区别,应该不会产生这种无法使用的现象。
建议用GnuRadio搭框图读取那个可以正常欺骗的文件,用这个配置的sink发射看看?
如果在HackRF信号覆盖下我移动手机,会看到手机显示的坐标移动吗?
还是说手机显示的坐标一直是你设定的经纬度坐标?
如果在HackRF信号覆盖下我移动手机,会看到手机显示的坐标移动吗?还是说手机显示的坐标一直是你设定...
如果此时手机接收到的只有伪造的信号的话移动手机不会对位置产生影响,只会导致GPS获取的时间产生微小的偏移。
如果此时手机接收到的只有伪造的信号的话移动手机不会对位置产生影响,只会导致GPS获取的时间产生微小的...
经过你的提醒我想明白了,因为都是从一台HackRF板子出来,手机的移动只会改变△t的值,不会带来τ的变化。所以位置不会变化。
所以现在我有个想法,我是不是可以用一块板子模拟一个GPS卫星,这样用最少4个板子或者更多板子来模拟更多的GPS卫星,这样就可以组网,然后就手机移动,然后手机显示的位置有变化了吧?
理论上这样可行的吧?
经过你的提醒我想明白了,因为都是从一台HackRF板子出来,手机的移动只会改变△t的值,不会带来τ的...
理论上可行,但目的是什么?
gps位置的解算还涉及到gps各卫星的轨道参数等复杂的因素,如果这样做最后手机上显示的位置变化和实际的移动是对应不上的。
如果是做室内定位之类的话,有更可靠成熟的方案。
感谢你的教程,但是我遇到了一个问题,使用-w参数,从网页获取经纬度能够正常欺骗手机,但是使用自己输入的经纬度却不行,比如这个示例命令:gps-sdr-sim -e brdc3540.14n -l 30.286502,120.032669,100 -n 1234 -d 3000,他会欺骗但是固定到一个日本附近的位置,即使我不带 -l参数它也是到那个位置,所以我觉得我手动指定的-l好像没有效果,是不是这个-n传输方式的不支持原生的那些-l,-g获取坐标方式,还是我的操作有什么遗漏点?我是用的是hackrf one。
感谢你的教程,但是我遇到了一个问题,使用-w参数,从网页获取经纬度能够正常欺骗手机,但是使用自己输入...
目前版本n选项默认使用w选项,l无效。
原作者设定的默认位置是日本东京。
这样啊,那要是想导入路径文件生成连续坐标,比如-g,-u,有没有办法实实现?
引用iamapighhh发表于12楼的内容谢谢楼主的帖子。当年实验室里一台GPS信号模拟发生器十几万,现在软件无线电就全搞定了。对了,楼主使用...
当年GPS信号模拟发生器哪里买的
我用的USRP-B210信号没有发送成功,我的USRP没有GPSDO模块,请问是不是这个原因?
我用的USRP-B210信号没有发送成功,我的USRP没有GPSDO模块,请问是不是这个原因?
最好用实机linux系统测试,vbox之类的虚拟机usb传输速率太低,我用plutosdr+虚拟机可以发射,但是定位无效果,换成实机linux就没有问题了
引用justinpiggy发表于8楼的内容引用 warmonkey:用USRP B210回放,ublox NEO-6M NEO-8M 小米4 ...
似乎iOS更新了,目前纯GPS很难欺骗。
iphone 6s plus,iOS 12
飞行模式,打开定位。使用GPS信号,5分钟都没法定位(哪怕把GPS时间和地点改到和实际位置很接近也不行)
同时一起有一部android,很快就被骗了
单独iphone放在室外,就很容易定位
您好,我使用USRP B210发送定点经纬度星历文件,可以进行GPS欺骗,但是使用您文中的方法,grc文件usrp配置也改了,没有装GPSdo时钟,发送地图位置,使用频谱仪看在1.57542G位置有功率发出,但是手机gps test却搜不到一个卫星定位,请问是时钟问题么,外部时钟是必要的么
200字以内,仅用于支线交流,主线讨论请采用回复功能。