在树莓派使用 hackrf 环境搭建
很久没有写 blog 了,本来想按照顺序记录用 matlab 处理 hackrf 收到的 ADS-B 信号的过程,但这段时间都在玩 Rasperry Pi+Hackrf, 因此还是有必要先把在这段积累下来。
其实用 Rasperry Pi 玩 Hackrf 会更加底层,也更加灵活,只是非软件科班出身,在独立从0到1的programming 还存在一定的困难,不过给大家推荐使用 chatgpt 来作为一个入门或 demo 代码的编写,剩下的只需要在已有的框架代码上进行理解和修改,这样对 SDR 爱好者而言应该就绰绰有余了。Roma is not built on one day, 祝大家也能在这个过程中收获乐趣与知识吧。
搭建树莓派远程环境
我手头的树莓派3b应该是5,6年前买的了,虽然现在手头也有 4b版本了,但还是不想让老伙计一直吃灰,再者我们入门级的玩玩 Hackrf,应该3b的资源就足够了。
先从树莓派官网下载最新的树莓派OS,现在的树莓派系统安装已经很方便了,基本上通过官方的 Raspberry Pi Imager 就可以实现从系统固件下载,到烧录到 SD卡的全部过程,网上也有很多的教程,这里就不详细展开了,只是为了和我的树莓派4b兼容,我直接在树莓派3b上跑的 64位系统,之前有看到网上说不推荐使用树莓派3b使用64位系统,不过实际用起来也没啥问题。
关于 SD 卡容量,我似乎记得刚买树莓派的时候看到说 SD 卡容量太大也不行,不过这几年 SD 卡的价格降了不少,于是乎直接选择了 64GB 的 SD 卡,用起来也十分方便。不过这里推荐大家还是可以同一型号的 SD 卡多买一张进行系统备份。既然讲到这里,就提前说说备份,网上有各种各样的备份方式和工具,其实目前安装的树莓派系统中都自带有 SD Copier,这个应该是目前最快最简单的方法,不过貌似要求备份的 SD卡容量大于等于现有的卡,亲测同一家同一容量的 SD 卡可以完美实现备份和使用。
树莓派系统安装完成后,面临的第一个问题就是如何在没有多余键盘,鼠标和屏幕的情况下用起来,当然如果这些都有,只需要简单上电即可。如果没有,则可以通过 SSH+VNC 的方式来进行使用。首先第一步是需要在台式机安装免费的 VNC Viewer,然后在本地准备树莓派开机自动连 wifi 的 config 文件:
在本地新建一个 wpa_supplicant.conf 文件,然后用记事本打开后输入以下 WIFI 配置:
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=”Your WIFI NAME”
key_mgmt=WPA-PSK
psk=”Your Password”
priority=1
}
最后将这个 .conf 文件放在树莓派的 SD 卡根目录就可以了
之后,可以在 modem 管理页面查找到 IP 然后用Putty 登录(用无线网络管理去查找 IP),如果这里出现 connect refused,则新建一个text命名为 ssh文件(无后缀)放入 SD卡中,可以尝试解决这个问题
完成这些配置和找到树莓派的 IP 后,参考下图就可以通过 putty 登录了,输入用户名和密码,则可以进入连接到树莓派;再如下图所示在 putty 窗口中通过命令 vnc server 则可以打开树莓派的 VNC,最后通过 VNC Viewer 就可以在本地远程连接到树莓派了。
树莓派配至 Hackrf 环境
首次使用树莓派,会需要一些库的安装和配置来使用 hackrf,如大多数树莓派教程所讲的,需要先更新源:我选择的是国内清华的源,在其官网上有对更新源方法的详细描述: https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/,按照其中的步骤操作即可。
之后通过 sudo apt-get update 对源进行更更新即可,结果如下图所示:
接下来就是对 hackrf 所需要的库的安装,参考这篇 blog (https://blog.csdn.net/OpenSourceSDR/article/details/114647192),分别安装常用的依赖包,hackrf,gqrx 和 gnuradio。常用的依赖包主要包括:
sudo apt-get install git build-essential cmake libusb-1.0-0-dev liblog4cpp5-dev libboost-dev libboost-system-dev libboost-thread-dev libboost-program-options-dev swig libtool libosmocore-dev
最后通过在 terminal 中简单运行 osmocomm_fft,即可以判断 hackrf 环境是否配置好了,如果配置成功,运行后会打开一个简单的频谱仪画面,如下图所示:
树莓派修改 swap 分区
这个问题是我在后来准备用 hackrf 去跑 Qt5 的时候遇到的,发现无论如何 Qt5 Creator 创造 GUI 的时候都会卡死,一开始还怀疑是由于安装原因导致的,但是发现如果不跑 Qt5 Creator,直接用 C++ code 的方式去创建窗口又可以,所以最终定位到是由于树莓派的 SWAP (RAM) 空间不够导致的。因为现在 SD 卡真的很便宜了,建议大家直接把 SWAP 空间扩展到最大(树莓派3b 的 swap 空间最大是 2G)
参考这篇 blog,可以完成对树莓派 SWAP 空间的永久修改:https://blog.csdn.net/qq_17041537/article/details/123015029,首先在 terminal 中输入 sudo nano /etc/dphys-swapfile 打开 swapfile 配置文件,然后注释掉最后一行的 CONF_MAXSWAP=2048, 再将 CONF_SWAPSIZE 一行改为:CONF_SWAPSIZE = 4096。这个 size 即使超过 2GB 也没关系,SWAP SIZE 会自动被限制到最大 2GB。
最后通过 sudo /etc/init.d/dphys-swapfile restart 命令重启 SWAP 即可。 修改完成后通过 free -h 指令可以查看到 total 和 当前使用的 SWAP 空间大小。
至此,树莓派+Hackrf 的基本环境就配置好了,下一篇 blog,我们将会看看如何用 C 语言直接实现对 hackrf 的控制。