HACK RF学习之旅记录1——填坑历程

在家隔离期偶尔发现RTL SDR,是realtek芯片破解了做软件无线电,价格非常实在不到百元,功能可以玩电视 广播等等。后来搜搜发现更强大的Hack RF ONE开发板,淘宝和闲鱼都看了大多都是Hack RF ONE单板999,便宜的闲鱼有600多的。还有一块扩展板是MCU+屏+时钟,看起来也很实用(非常推荐)。通过闲鱼某卖家找了渠道,从上海一家店的淘宝下单优惠价格(据说是国内原厂,超出想象)。

在板子到货之前,先搜了一圈资源看了实现的功能很多,主要关注的一个点是GPS信号发生器,可以在工作中用到。平常用的廉价转发器稳定性很不好,有了发生器可能搭建一个比较稳定的测试环境,主要想用于分析EMI对设备GPS干扰,做排查。提前查阅资料搭建环境,也看了osmosdr的学习视频(B站有https://www.bilibili.com/video/av7079120?p=4),强烈建议初学者用此视频学习SDR的基础理论知识+基本操作

一 Ubuntu环境搭建GNURADIO和gr-osmosdr

开源项目主战场是linux,准备在WIN10下虚拟机搭建Ubuntu环境。网上教程千千万,有几句命令就搞定的,也有很复杂的指令,还有Pybomb自动化安装的,最后参考的Pybomb自动化安装
https://blog.csdn.net/qq_27513221/article/details/79343194
https://blog.csdn.net/dragonshx/article/details/91350720 (带了卸载指令)
坑点1 注意WIN10要用比较新版的VMware ,之前下了12,能运行VMware但是死活装不上Ubuntu。改了15就正常了
坑点2 不要手欠了故意关更新了,关了后就各种更新的命令不能跑。这个和window很不一样

Ubuntu在官网下18.04的iso速度很快,然后虚拟机配置很简单,默认有虚拟机工具可以和主机之间复制粘贴文字文件,也可以设置共享文件夹。
使用Pybombs安装GNURadio优点是把各种依赖包自动下载装了,大约1小时。试过多次都是在长时间安装的过程sudo pybombs install gnuradio 中间必卡失败。后来改用Ubuntu 16也会失败。
不用Pybombs安装办法是参考了
http://www.hackrf.com.cn/post/12.html
执行gnuradio-companion界面可以出来,看到gnuradio文件比较大约几十MB。用Pybombs装的时候大约接近200MB
安装好了后gnuradio-companion界面可以胡乱搭建个能跑,然后下载osmocom大神课程第一课学习资料https://greatscottgadgets.com/sdr/1/的lesson1.grc,发现osmocom source提示找不到
应该是gr-osmosdr库没有安装好。
按照http://osmocom.org/projects/gr-osmosdr/wiki完整流程安装cmake时候出错

CMake Error at CMakeLists.txt:45 (find_package):
Could not find a configuration file for package “Gnuradio” that is
compatible with requested version “3.8”.

The following configuration files were considered but not accepted:

/usr/lib/x86_64-linux-gnu/cmake/gnuradio/GnuradioConfig.cmake, version: 3.7.11.0

此时知道安装的gnuradio版本是3.7.11.0,但是看起来要求是3.8版本。刚开始理解为cmake版本不够新,又折腾一番重新安装cmake新版本还是无果。
最后终于gr-osmosdr/wiki介绍步骤里面想通了,经过近年的更新gr-osmosdr默认要搭配gnuradio 3.8但是用默认不切分支会下3.7.11(可能这个是稳定版本吧),gnuradio在Pybomb安装用的git资源是清华的镜像站(默认貌似网络不稳定?),是没有更新gnuradio?

If you are building for gnuradio 3.6 series, you have to switch to the gr3.6 branch as follows

git checkout gr3.6

最后用git checkout gr3.7切换之后cmake之后流程全部成功,下面就是cmake成功的界面
######################################################
– # Gnuradio enabled components
– ######################################################
– * Python support
– * Osmocom IQ Imbalance Correction
– * sysmocom OsmoSDR
– * FUNcube Dongle
– * FUNcube Dongle Pro+
– * IQ File Source & Sink
– * Osmocom RTLSDR
– * RTLSDR TCP Client
– * HackRF & rad1o Badge
– * RFSPACE Receivers
– * Red Pitaya SDR

– ######################################################
– # Gnuradio disabled components
– ######################################################
– * Ettus USRP Devices
– * Osmocom MiriSDR
– * nuand bladeRF
– * AIRSPY Receiver
– * SoapySDR support
– * FreeSRP support

– Building for version: 0.1.5 / 0.1.5
– Using install prefix: /usr/local
– Configuring done
– Generating done
– Build files have been written to: /home/zf/gr-osmosdr/build

打开gnuradio-companion不再报错找不到osmocom source。
终于正常了

用虚拟机的注意把设备连接过来到虚拟机
在前面的搭建过程HackRF驱动等等都是装好的,运行lesson1.grc,终于能把HackRF板输入实网的FM频段波形的FFT显示(频谱仪功能),也有声音,但是声音很卡,按照osmosdr的课程视频讲可能是采样率太高,改为从20M改10M到1M还是比较卡,把FFT SINK禁用也卡,此处不得而知。osmosdr的课程说显示左下角提示OOOO字符是Overrun,我是提示Ua字符。从任务管理器gnome-system-monitor来看运行过程中CPU RAM占用不是很高,此处问题不得而知,可能是前面装gnuradio有提示的报错缺东西吧,也有可能是虚拟机的锅,总之能跑起来先进行学习吧。

二 WIN下的GNURADIO

在前面折腾很久在Ubuntu虚拟机环境下osmocom source没解决的情况下,先走win路线应急了。http://www.gcndevelopment.com/gnuradio/downloads.htm找到资源,下载了v3.7.13.5/v1.6 是个稳定版本,从说明来看是带了各种插件。WIN下的GNURADIO文件夹下还带了zadig-2.4,用这个安装win下的驱动即可。注意带Portapack的用按钮选择进入HackRF mode。
这个简单安装后打开osmocom source正常,运行后无窗口弹出。检查HackRF驱动没问题,用SDR#跑收音机功能是好的。
WIN下安装的GNURADIO默认各个block有,但是在有osmosoure跑不起来
然后自己随便搭建一个,FFT PLOT能出来
在这里插入图片描述

WIN下的其他搭建可以用,但是HackRF板子和osmocom source就是无法联动起来。作罢了。WIN下就先用SDR#玩收音机了

三 Portapack的使用

Portapack是一个扩展套件,用于脱机使用一些功能,目前拿到手里的可能是H1版本,传闻已经有H2。固件用了轻触科技(gridrf),开发固件下载工具和固件,不开源代码。
参考流程 https://blog.csdn.net/shukebeta008/article/details/103270214 感谢 舒克贝塔008,基本是仿照他的步骤
将USB连接电脑后,工作于HackRF mode识别USB硬件,然后刷gpssim固件,之后菜单就有那一行

在这里插入图片描述
播放的GPS信号文件需要拷贝到TF卡,在 舒克贝塔008流程里面有已经做好的,可以省去大把时间。TF卡格式化为FAT32, Portapack能识别。然后播放了,信号很强。在GPS simulator里面选择使能PA和调节功能貌似不好用,一直很强,也有可能是太近的原因饱和了吧。但是一直无法定位,真让人恼火,手机试过2个小米手机,开飞行模式,等1分钟无法定位。
星很强,不能定位且时间不出现
按照舒克贝塔008视频说的 老款时钟精度问题。和开发板卖家确认Portapack是TCXO 0.5PPM,这里还是将信将疑。要么再试试用PC控制跑吧。
舒克贝塔008的视频

四 Ubuntu下GPS-SDR-SIM

基于前面的失败经验,在虚拟机Ubuntu 18.04搭建GPS-SDR-SIM很简单顺畅,
原版git https://github.com/osqzss/gps-sdr-sim
参考教程1 https://www.cnblogs.com/k1two2/p/5164172.html (静态)
参考教程2 https://www.cnblogs.com/k1two2/p/6387701.html (动态)
先用了教程1 搭建静态的,编译很快完成可以执行,用了gps-sdr-sim默认的星历文件生成了gpssim.bin,在开发板选择到HackRF mode,可以运行。
gpssim.bin可以拷贝到TF卡给Portapack的GPS simulator使用。
星历文件从NASA下载ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily 选择后缀是xx n的文件即可。按照要求选某天的星历,再用gps-sdr-sim的-l 加经纬度坐标和高度,就可以做出对应地点的波形文件(在git上描述为I/Q sampling data file,不知这样描述准确么),还有很多参数可选,最关键的是在HackRF使用必须是-b 8(iq_bits 8位)。不加这个参数默认16无法出星,举例如下
./gps-sdr-sim -e brdc3540.14n -l 29.643598,91.101319,100 -b 8
经纬度是29.643598,91.101319,高度100m,iq_bits是8

执行的话,依靠 简单易懂,
hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 0
几个参数意思是 发射文件,频点,采样率,PA使能,功能。默认这种情况手机就显示CN值60多了,建议降低一下例如-a 0 ,或者手机远离一点,可能导致定位程序过滤不正常的。

搭建这个环境后运行,还是类似前面Portapack状态,手机搜星很强不定位,时间也没有。
和卖家联系再次确认了TCXO规格书都给过来了,看起来是没问题的。拆机看了应该是TCXO,顺带发现板子的TCXO信号跳线电阻100R焊盘0402贴了0603,用万用表确认是贴片器件通的。HackRF是支持多时钟源的,不知道这个时钟用上了没有。

和一个做过GPS的学弟探究半天,建议我再试试飞行模式重启,同时控制下信号强度,有可能过滤掉了,最后终于成功,在PC端运行GPS-SDR-SIM和Portapack都可以,就是定位时间比较久。接近1分钟,按照一般GPS模块性能强信号应该40秒内定位。
此处坑点可能是:只是飞行模式,手机上一状态还有星历数据在,面对突变做了过滤,重启后清掉了。在GPSTEST应用里面点clear AGPS可能没效果。
手机远离一点定位了
在这里插入图片描述
手机离的近超强信号也定位了
WINDOWS下也可以运行GPS-SDR-SIM,要在VS环境编译2个文件。在前面没成功的情况下试了一波,先是各种找VS版本,然后编译也一堆报错,没搞过,放弃了。在pudn上看到别人做好的编译执行文件,要付费下载作罢。

后面继续学习osmocom大神的课程。

五 HackRF的一些资料

1 hackrf-master.zip是git上hackrf软硬件开放资源,下载下来了。HackRF板子的固件不需要下载,出厂卖家做好的。之前没发现批量下载功能,还在找工具。
在这里插入图片描述
2 在win和虚拟机Ubuntu都安装了KICAD,把原理图转出PDF,方便查阅省的装Kicad打开了。
3 PortapackFirmwareTool.zip是Portapack的固件,用gridrf固件有Gps Simulator
4 sdrsharp是win下的sdr软件检测下板子,先跑跑收音机
5 zadig是win下usb驱动工具

链接:https://pan.baidu.com/s/1iXQm16-93JTPywTQD7oAeg
提取码:4lxm
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200220095603268.png在这里插入图片描述

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页