简单介绍

做实验需要使用SDR设备,选用了NI的USRP 2922(Ettus的是NI的子公司,他生产的USRP有自己的版本,BNEX四个系列,使用开源的Gnu Radio开发),NI的USRP有自己的配套软件,是运行在Windows上的LabView套件,奈何另外收费且很贵,幸好NI系列的也支持GNU Radio,因此我们选择了在linux上运行的GNU radio,因为他是开源的不用对日后工作有顾虑。

环境

GNU需要安装在linux上,我是用的版本是Linux Mint 19.03(基于Ubuntu 18.04)。安装Ubuntu可以选择给电脑装一个windows+ubuntu双系统,也可以装虚拟机。虚拟更安装快一点,移动也方便,所以我在VMware上建了一个Linux Mint的虚拟机。

安装

安装UHD

这里选择使用源代码编译安装的方法。

首先安装一些依赖库

sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils cmake build-essential

下载源码

git clone https://github.com/EttusResearch/uhd.git

进入目录

cd uhd/host 

创建一个build目录,并编译安装

mkdir build  
cd build/  
cmake ../  
make  
make test  
sudo make install  
sudo ldconfig  

这个编译过程可能时间比较长,可以挂着干点别的了。接下来下载UHD镜像。

sudo uhd_images_downloader

然后可以用一下命令查看USRP设备

uhd_find_devices  

这里发现没找到,发现设备和虚拟机没有在一个子网内,需要配置一下。

配置虚拟机网络模式-桥接

我电脑有两个网卡,我将其中一个用NAT模式和虚拟公用网络,这样我就可以正常上网。
另一为了和USRP通信,和虚拟机桥接。

首先添加一个虚拟网卡,设置为桥接模式:

qnjp

然后点击 编辑-> 虚拟网络编辑器

xuniwhlobmjiqi

更改设置

gguv

设置交接到的网卡
whka

最后,在主机网络适配器找到这个网卡,IPV4设置为固定IP,由于USRP默认IP为:

192.168.10.2  

所以我们主机IP改为同一网段,例如192.168.10.3,子网掩码255.255.255.0,这样连接网线才能找到USRP

USRP刷固件

配好网络之后,运行以下命令应该就可以看到USRP了。

uhd_find_devices  

gfdh

但是使用GNU radio 还需要刷一下固件,运行以下命令看一下是否需要刷固件。

uhd_usrp_probe  

可以看到,并不兼容。

sadas

运行一下命令

uhd_image_loader --args="type=usrp2,addr=192.168.10.2,reset"  

sadasdas
再运行uhd_usrp_probe,会看到设备的详细信息。

sadaffdg

安装GNU radio

以下方法二选一

(1)使用pybombs

最简单的方式是使用pybombs 安装,一次失败还可以重复安装,还可以支持同时装多个版本。default最新,stable相对比较稳定。

sudo apt install pybombs  
pybombs recipes add gr-recipes git+https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-recipes.git  
pybombs recipes add gr-etcetera git+https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-etcetera.git  
mkdir prefix/  
# 稳定版
pybombs prefix init -a stable prefix/stable/ -R gnuradio-stable 
# 最新版
pybombs prefix init -a default prefix/default/ -R gnuradio-stable

安装好之后进入/prefix/stable或者/prefix/default,

source ./setup_env.sh

输入以下命令就可以运行了。

gnuradio-companion
# 或者  
pybombs -p stable run gnuradio-companion  
# 或者
pybombs -p default run gnuradio-companion

可以运行一个gnu radio自带的FFT demo 试一下,是否成功。

(2)使用apt安装

现在很多ubuntu(我使用基于ubuntu18.04LTS的Mint19.3测试可行)都提供了稳定版本的gnuradio,用这个版本安装方便,而且UHD最好也用apt安装(之前版本的gnuradio、uhd需要删除)。可以使用如下命令:

apt install uhd-host
apt install gnuradio

可能安装完运行demo(一般在/usr/share/gnuradio/examples或/usr/local/share/gnuradio/examples下)会提示没有xterm,安装一个即可。

apt install xterm

使用gnuradio打开/usr/local/share/gnuradio/examples/und/uhd_fft.grc, 运行效果如下:

fft

Ubuntu PPA Installation

这里主要参考了Gnuradio Wiki [1].
有时候使用apt 安装并不是想要的版本,需要先添加对应的apt库,在进行安装

最新版

sudo add-apt-repository ppa:gnuradio/gnuradio-master

现在的Released 版本

sudo add-apt-repository ppa:gnuradio/gnuradio-releases

released 3.8版本

sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8

released 3.7版本

sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.7

添加适合的版本库之后,更新apt,并安装

sudo apt-get update
sudo apt-get install gnuradio

参考文献:


  1. InstallGR. Gnuradio Wiki. https://wiki.gnuradio.org/index.php/InstallingGR ↩︎