Linux系统下搭建USRP + GNU Radio开发环境
系统概述
通信软件开发环境中用USRP-B210模拟基站或终端,通过USB口连接到Ubuntu16.04系统(其他Ubuntu系列也可以),在Linux操作系统上部署软件编程开发环境。
系统主要由基站和1到N终端构成,基站与终端侧都需要外接PC来承载业务进行验证。USPR模拟环境系统图如下所示:
1 搭建过程简述
1.1 过程
搭建人员最好对Linux系统、Linux常用指令、VIM用法、GIT工具、编译安装源码程序有一定的了解,大致的安装步骤如下:
1)制作Ubuntu系统安装盘,安装Linux发行版操作系统;
2)配置操作系统IP/DNS,apt-get源等;
3)安装软件编程环境依赖库;
4)编译安装UHD,即USRP驱动;
5)编译安装GNU-Radio。
1.2 型号
USRP型号:B210;
Linux版本:Ubuntu16.04;
UHD版本:3.14.1.1L;
GNU-Radio版本:3.7.13.5;
2 Ubuntu系统安装
U盘启动安装Ubuntu16.04按常规方法进行即可,选择实体机或双系统安装均可,大致分为三个步骤:
1)使用软碟通,把下载的iso系统文件制作成U盘安装盘;
2)修改电脑bios启动优先项;
3)安装Ubuntu系统。
给出一个参考网址,此处不再详述。网址如下:
https://blog.****.net/lingyunxianhe/article/details/81415675
3 操作系统配置
3.1 配置静态IP和DNS
- 打开网络配置文件,命令如下:
vim /etc/network/interfaces - 加入网卡名、ip地址、子网掩码、网关、dns信息等,如图所示。
修改完毕,执行ESC、:wq保存。 - 重启网口:
先后执行ifdown 网口名 + ifup 网口名,或直接reboot重启系统。 - 验证
终端输入ifconfig命令观察ip即可。
3.2 安装源修改
使用apt-get命令发现无法下载程序或提示MD5码错误,说明需要更换源。
- 打开源配置文件:
命令: sudo vim /etc/apt/sources.list - 注销原来文件内容,添加清华源地址(教育网可换为教育网内的源),
如图所示。
- 保存退出后,更新源。
命令:sudo apt-get update
更新后apt-get命令即可正常使用。
3.3 线程优先级调配
添加usrp组,并把个人用户添加到usrp组中,把usrp组设置采用低时延配置。
命令如下:
$ groupadd usrp
$ usermod -aG usrp $USER
然后在/etc/security/limits.conf文件最后添加一行代码:
@usrp -rtprio 99
保存退出重启系统
运行cat /etc/group命令,查看所有用户组,结果如下:
4 软件依赖库
On Ubuntu16.04 systems,run:
sudo apt-get -y install git swig cmake…(需要安装很多依赖库,全局依赖库请见网址:https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux)。
5 编译安装UHD
以下命令是在root用户下输入的,理想情况应该在一般用户下输入,则每条命令前方需加上sudo字样。
- 安装git
命令:apt-get install git - pull UHD源码
命令:
cd /home
mkdir usrp
cd usrp
git clone https://github.com/EttusResearch/uhd.git . - checkout UHD v3.14.1.1L
命令:
git tag -l
git checkout v3.14.1.1L - 编译
命令:
cd host
mkdir build
cd build
cmake …/
make
make test
UHD的make过程如下所示。
- 安装
make install - 环境变量
在.bashrc文件尾部添加命令:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib - 验证
不接usrp设备,输入命令:uhd_find_devices
6 编译安装GNU-Radio
一下命令是在root用户下输入的,理想情况应该是在一般用户下输入,则每条命令前方加上sudo字样。
- Pull gnu-radio源码
命令:
cd /home
mkdir usrp-gnuradio
cd usrp-gnuradio
git clone https://github.com/gnuradio/gnuradio.git .
(此命令格式:git clone 远程git库地址 本地文件夹名称) - checkout v3.7.13.5
命令:
git checkout v3.7.13.5
git submodule update --init -recursive - 编译
mkdir build
cd build
cmake …/
make
make test - 安装
make install
sudo ldconfig - 测试
gnuradio-config-info --version
gnuradio-config-info --prefix
gnuradio-config-info -enabled-components
python /home/usrp-gnuradio/gnuradio/graudio/examples/python/dial_tone.py
uhd_find_devices
uhd_usrp_probe
接入设备后查看成功效果图如下:
- 可视化工具安装与配置
安装命令:gnuradio-companion
环境变量配置:在./bashrc文件中加入命令:
export PYTHONPATH=/usr/local/lib/python2.7/dist-packages
使用gnuradio-companion来运行gnuradio例子:
share/gnuradio/audio/dial_tone.grc
gnuradio运行实例如下图所示:
7 附录
Ettus官方安装部署指南网址:
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux