Pluto SDR环境搭建libiio/libad9361-iio/GNU Radio/gr-iio(Ubuntu)

前言

ADI前些年推出的ADALM-PLUTO SDR设备由于其轻便灵活的特点,外加价格相比于专业无线电相当实惠,受到了很多开源社区的欢迎,也诞生了许多的应用,如跟踪GPS、伪造GPS实现硬件级虚拟定位、电子钥匙重发攻击等(这些实际上HackRF做的更多)。同时对于学习通信的师生和对无线电感兴趣的业余玩家,也是个很不错的选择。

国内购买纯原版Pluto SDR有些困难,但好在国内也有很多企业或团队基于某些成熟的SDR平台衍生出的性能更强,适用固件更多的软件无线电平台,价格也并非难以承受。一台设备不仅可以体验到Pluto,还可以体验到FMCOMMS、UHD等著名无线电的固件(也就是可以跑它们对应的例程,做简单的开发)。

本文介绍一下拿到Pluto设备后,应当在自己的PC上做什么设置,才可以顺利的开始调试设备。
(作者使用的SDR也并非纯原版Pluto SDR,而是国内企业魔改的,但在使用Pluto固件的前提下,是可以兼容绝大多数关于Pluto SDR的教程或文章的)

声明:本文测试环境为Ubuntu22.04.4初始环境,流程验证无误,但在其他主机上仍然可能存在问题,若无法解决,请在官方求助论坛提问或寻求官方帮助,本文仅供参考。

安装libiio

首先安装一些依赖(这条命令很长,复制时请复制全):

sudo apt-get install build-essential libxml2 libzstd-dev libxml2-dev bison flex libcdk5-dev cmake libaio-dev libusb-1.0-0-dev libserialport-dev libxml2-dev libavahi-client-dev doxygen graphviz

然后拉取源码编译安装:

git clone https://github.com/analogdevicesinc/libiio.git --branch v0.25
cd libiio
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
sudo ldconfig
cd ../..

在命令行键入iio_info,若输出版本信息,则安装成功。
iio_info

安装libad9361-iio

步骤与之前相似:

git clone https://github.com/analogdevicesinc/libad9361-iio.git
cd libad9361-iio
cmake .
make -j$(nproc)
sudo make install
sudo ldconfig
cd ..

安装GNU Radio

此部分面向Ubuntu20或更新,若你是Ubuntu18及以前的版本,请参照官方教程的这一部分

实际上你可以直接通过apt安装,即sudo apt install gnuradio,但这样安装的版本没办法指定版本,且安装的版本随着平台不同而不同(各别系统下安装的具体版本见这里,例如Ubuntu 22.04下为v3.10.1.1,Ubuntu20.04下需要添加GNU Radio源即可安装v3.10否则安装的也是v3.8),如果你对版本没有特殊需求,直接执行sudo apt install gnuradio安装即可,并可跳过gr-iio的安装;如果你需要安装其他版本则推荐从源码编译,下面以v3.8为例讲解。

首先安装一些依赖(这条命令很长,复制时请复制全):

sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-gi python3-gi-cairo gir1.2-gtk-3.0 libcodec2-dev libgsm1-dev libusb-1.0-0 libusb-1.0-0-dev libudev-dev

然后步骤仍和上面一样:

git clone https://github.com/gnuradio/gnuradio.git
cd gnuradio
git checkout maint-3.8
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ..
make -j$(nproc)
sudo make install
cd ../..
sudo ldconfig

然后向.bashrc写入环境变量:

vim ~/.bashrc
# 在文件末尾添加以下内容
export PYTHONPATH=$PYTHONPATH:/usr/lib/python3/dist-packages/iio:/usr/local/lib/python3/dist-packages
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/local/lib
# 保存退出
source ~/.bashrc
gnuradio-companion

可以在应用列表中找到GNU Radio Companion图标,在命令行键入gnuradio-companion都可以打开GNU Radio,若能正常显示主界面则安装成功。

卸载GNU Radio

如果是通过源代码编译安装的:

cd gnuradio
sudo make uninstall

如果是通过包管理器(如apt)安装的:

sudo apt remove gnuradio
sudo apt autoremove -y

安装gr-iio

由于GNU Radio v3.8没有自带与Pluto SDR通信的gr-iio,所以需要单独安装,如果之前安装的GNU Radio版本为v3.10或更新则已经自带gr-iio,无需安装(使用apt安装的GNU Radio则可以跳过这一步)。
安装过程同样非常解压:

sudo apt install liborc-dev
git clone -b upgrade-3.8 https://github.com/analogdevicesinc/gr-iio.git
cd gr-iio
cmake .
make -j$(nproc)
sudo make install
cd ..
sudo ldconfig
gnuradio-companion

安装完毕后打开GNU Radio,若能在右边的器件栏找到Pluto相关器件则环境配置完毕。
gnuradio

卸载gr-iio

cd gr-iio
sudo make uninstall

验证Pluto SDR与libiio

将Pluto SDR通过USB或以太网线连接到PC,等待SDR开机后,在PC命令行键入iio_info -s,若显示出含有Analog Devices或Pluto字样的信息,记录开头的ip地址,如ip:192.168.2.1,或是最后的usb:1.8.5
iio_info-s
再键入iio_info -u 'ip:192.168.2.1'iio_info -u 'usb:1.8.5',打印出如图的大段内容则没问题(输出的是固件中有关于发射接收的各种属性)。
ip
usb

验证GNU Radio

现在使用GNU Radio和Pluto SDR创建一个简易频谱仪来测试功能是否正常,打开GNU Radio(通过应用列表点击GNU Radio图标或命令行键入gnuradio-companion),首先将左上角的Options和Variable按照下图修改,即为项目取个合法的名字,并且修改采样率为2.4MHz:
id
samprate
然后从右侧期间栏找到PlutoSDR Source和QT GUI Frequency Sink模块(位置见图),拖入到中间区域,并将二者相连:
block
并作如下图修改,即修改Pluto SDR的访问地址和采样率:
source
然后按下F6或在菜单栏找到执行按钮,即可开始运行程序,输出如图:
spec
这样就证明了Pluto SDR和GNU Radio的联动成功。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值