GNU Radio + NI USRP B210模拟物理层(一):安装UHD与GNU Radio
GNU Radio + NI USRP B210模拟物理层(一):GNU Radio的环境搭建
一 环境搭建
1 硬件环境与版本选择
我有两台设备:
-
一台是实验室的机器,搭载的是intel core i9-9900k,核显,装了Ubuntu18.04
-
一台是R7000,搭载的是4800H,1650Ti,装了Ubuntu20.04.3
总的来说,GNU Radio在Ubuntu20.04上的支持好很多,我会找时间把实验室的系统重新装掉
但这里也会把一些遇到的问题记录下来
2 UHD安装
UHD本质就是USRP的FPGA的固件,相当于驱动,有了他GNU Radio才能驱动USRP。
- 第一步,更新一下源
sudo apt-get update
sudo apt-get upgrade
- 依赖
这里仅列出Ubuntu18.04
sudo apt-get -y install git swig cmake doxygen build-essential libboost-all-dev libtool libusb-1.0-0 libusb-1.0-0-dev libudev-dev libncurses5-dev libfftw3-bin libfftw3-dev libfftw3-doc libcppunit-1.14-0 libcppunit-dev libcppunit-doc ncurses-bin cpufrequtils python-numpy python-numpy-doc python-numpy-dbg python-scipy python-docutils qt4-bin-dbg qt4-default qt4-doc libqt4-dev libqt4-dev-bin python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-doc libqwt6abi1 libfftw3-bin libfftw3-dev libfftw3-doc ncurses-bin libncurses5 libncurses5-dev libncurses5-dbg libfontconfig1-dev libxrender-dev libpulse-dev swig g++ automake autoconf libtool python-dev libfftw3-dev libcppunit-dev libboost-all-dev libusb-dev libusb-1.0-0-dev fort77 libsdl1.2-dev python-wxgtk3.0 git libqt4-dev python-numpy ccache python-opengl libgsl-dev python-cheetah python-mako python-lxml doxygen qt4-default qt4-dev-tools libusb-1.0-0-dev libqwtplot3d-qt5-dev pyqt4-dev-tools python-qwt5-qt4 cmake git wget libxi-dev gtk2-engines-pixbuf r-base-dev python-tk liborc-0.4-0 liborc-0.4-dev libasound2-dev python-gtk2 libzmq3-dev libzmq5 python-requests python-sphinx libcomedi-dev python-zmq libqwt-dev libqwt6abi1 python-six libgps-dev libgps23 gpsd gpsd-clients python-gps python-setuptools
- 下载和源码编译
cd $HOME
mkdir workarea-uhd
cd workarea-uhd
git clone https://github.com/EttusResearch/uhd
cd uhd
git checkout release v
#按Tab键,显示出已有的release版本, 这里主要3.11之后是v开头,3.11之前则是release__003__xxx的格式,注意区分
git checkout v3.14.1.1
# 选择版本,Ubuntu20可以无脑最新,18则只能3.11或者更老
#以下代码一步一步执行
cd host
mkdir build
cd build
cmake ../
make
make test
sudo make install
sudo ldconfig
- 下载和安装
sudo uhd_images_downloader
uhd_find_devices
# 如果找到了设备就是成功安装了
3 GNU Radio 安装
二进制文件安装
网上有很多源码编译的,目前大可不必,GNU Radio的官方文档也建议二进制文件安装
这里时常会发生变化我就不班门弄斧了
https://wiki.gnuradio.org/index.php/InstallingGR
基本上就是一句话
sudp apt install gnuradio
就完事了,但是Ubuntu20.04源中自动下载的是3.9版本对新版本UHD支持比较好
而Ubuntu18.04中下载的是GNU Radio3.8,对UHD的支持就很烂了
除了版本老外,读取UHD的位置也不对
这里在CSDN上找到了解决办法
https://blog.csdn.net/qq_23958451/article/details/102959193
sudo cp -r /usr/local/share/uhd/images /usr/share/uhd
比较暴力的一个方法,不知道它是如何找到他到底读取的是哪里的,如果找到配置文件也可以修改配置文件来解决
源码安装(更推荐)
因为只有源码编译安装才能修改模块,添加OOT模块,二进制文件是无法修改的。所以最终还是要回到源码安装上
大致上来说,按照gnu radio官方教程即可
https://wiki.gnuradio.org/index.php/InstallingGR#From_Source
注意volk一定要先安装!!,然后安装依赖,否则会报错
4 测试
网上如此多的安装教程,居然没有一个验证测试成功的方法
因为GNU Radio是可以在纯软件环境下运行的,并不一定需要USRP,所以装好后正常能打开并不代表成功,而需要和USRP搭配使用才表明成功
为了这个验证才有了后面FM reciver的搭建,不过事实上不用这么麻烦
只需要一行代码就可以了
uhd_fft -f $freq
这里的freq我选取的是2.45G
如果你看到了频谱图,那么恭喜你成功了!