- A+
本文从安装好Ubuntu20.04系统说起,经历下述流程:
- 换源 北京外国语大学开源软件镜像站
- USRP-2974需要额外安装的驱动
USRP-2974关于UHD的驱动安装 官方教程
USRP-2974_Getting_Started_Guide - UHD和GNU Radio安装教程
UHD_and_GNU_Radio官网安装教程
LinuxInstall GunRadio UHD官方教程
一、Ubuntu20.04更换apt源
方便更新和下载,这里是北京外国语大学开源软件镜像站(https://mirrors.bfsu.edu.cn/help/ubuntu/)。
- 首先,备份原来的源列表/etc/apt/sources.list
cd $HOME
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
- 然后,再打开sources.list文件修改 (可以用gedit、vim等来修改)(vim如果没有可以自行下载,怎么使用见。。。。。。)
sudo gedit /etc/apt/sources.list
- 将.list文档中(也就是上图)内容全部删除,替换成下面的代码(这里仅仅适用于Ubuntu 20.04 LTS,其他版本在这里北京外国语大学开源软件镜像站)
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.bfsu.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirrors.bfsu.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirrors.bfsu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirrors.bfsu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirrors.bfsu.edu.cn/ubuntu/ focal-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.bfsu.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirrors.bfsu.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
- 保存关闭即可,换源成功
二、USRP-2974关于UHD的驱动另外需要的
USRP-2974 = 一个USRP X310 + 两个UBX-160板 + 一个GPSDO + 一个板载Intel i7计算机
事实上,就是需要USRP X310和板载Intel i7计算机相连,用计算机驱动X310另外需要安装的
USRP-2974预装了NI Linux RTOS,但为了与开源工具链一起使用,我们需要安装Linux(最好是Fedora或Ubuntu),然后安装USRP硬件驱动程序(UHD)。安装这些工具后,可以安装任何其他开源工具,例如GNU Radio。
USRP-2974_Getting_Started_Guide 这篇文章中的链接https://files.ettus.com/manual/page_ni_rio_kernel.html里,包含了如何安装USRP-2974关于UHD的驱动安装。
- 首先,下载NI Linux Device Drivers,并直接解压,在哪个目录无所谓只要能找到就行,我这里是在主文件夹,如左图。
网站:https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-linux-device-drivers.html#477925
- 接着,打开文件夹NILinux2023Q1DeviceDrivers,即可看到右图所示,粉色的都是.deb文件,这些文件我们将通过deb命令依次安装。
命令sudo dpkg -i {ni drivers repository}.deb
,将“{ni drivers repository}”替换成.deb的文件名即可。
cd NILinux2023Q1DeviceDrivers/
sudo dpkg -i ni-ubuntu2004-drivers-2023Q1.deb
sudo dpkg -i ni-ubuntu2004-drivers-stream.deb
sudo dpkg -i ni-ubuntu2204-drivers-2023Q1.deb
sudo dpkg -i ni-ubuntu2204-drivers-stream.deb
- 更新安装包信息
sudo apt update
- 安装kernel-headers
sudo apt install linux-headers-$(uname -r)
Note: 此步骤要确保安装kernel header版本是硬件对应版本的,命令uname -r
可以看到自己的系统版本。笔者这里是5.15.0-60-generic
- 安装ni-usrp-rio
cd sudo apt install ni-usrp-rio
- 用DKMS build kernel 模块
sudo dkms autoinstall
如果build出错,应该就是版本不对应。
- 重启
reboot
三、Ubuntu 20.04版本,安装gnu-radio3.8,以及UHD 3.15
想在硬件USRP上使用gnu-radio,就必须要安装UHD驱动。先安装UHD。
官网安装教程:https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux
从源码安装UHD 3.15
- 安装依赖包
注意: 不同ubuntu版本不一样,这里适用于Ubuntu 20.04(其它版本不同的依赖,官网安装教程可以找到)
sudo apt-get -y install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool fort77 g++ gir1.2-gtk-3.0 git gobject-introspection gpsd gpsd-clients inetutils-tools libasound2-dev libboost-all-dev libcomedi-dev libcppunit-dev libfftw3-bin libfftw3-dev libfftw3-doc libfontconfig1-dev libgmp-dev libgps-dev libgsl-dev liblog4cpp5-dev libncurses5 libncurses5-dev libpulse-dev libqt5opengl5-dev libqwt-qt5-dev libsdl1.2-dev libtool libudev-dev libusb-1.0-0 libusb-1.0-0-dev libusb-dev libxi-dev libxrender-dev libzmq3-dev libzmq5 ncurses-bin python3-cheetah python3-click python3-click-plugins python3-click-threading python3-dev python3-docutils python3-gi python3-gi-cairo python3-gps python3-lxml python3-mako python3-numpy python3-numpy-dbg python3-opengl python3-pyqt5 python3-requests python3-scipy python3-setuptools python3-six python3-sphinx python3-yaml python3-zmq python3-ruamel.yaml swig wget
- 创建一个安装文件夹
切换到主目录
cd $HOME
创建名为workare
的文件夹
mkdir workarea
切换到workare
目录
cd workarea
- 克隆文件,并切换到uhd目录
git clone https://github.com/EttusResearch/uhd cd uhd
- 找到想要的uhd版本
输入git checkout v
,连按三个Tab键可以看到所有的版本。
git checkout v3.15.0.0
- 正式进入安装流程
cd host mkdir build cd build // 运行CMAKE,准备makefile文件 cmake .. // 编译程序,-j8意味着8线程运行,比较快 make -j8 // 测试程序(当然无误最好) //(此步骤可省略,有时make test不通过是因为前面依赖没安装对,但是实际UHD和gnu-radio并不需要那些依赖,只不过test时需要) make test // 安装程序 sudo make install // 更新动态库的链接 sudo ldconfig
- 环境变量配置
打开$HOME/.bashrc文件
gedit $HOME/.bashrc
在文件末尾添加以下命令:
export LD_LIBRARY_PATH=/usr/local/lib
执行
source $HOME/.bashrc
- 测试成功安装
uhd_find_devices
- 下载UHD FPGA Images
sudo uhd_images_downloader
测试
uhd_usrp_probe
从源码安装GNU Radio3.8
GNU Radio不同版本安装有较大的不同,3.9和3.10安装时可参考 https://wiki.gnuradio.org/index.php?title=LinuxInstall 从这篇文章可以看出,3.9和3.10安装是需要先安装volk。
而3.8及以前不需要,可参考 https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux 。
- GNU Radio 3.8安装
// 切换目录 cd cd workarea // 下载资源 git clone --recursive https://github.com/gnuradio/gnuradio // 追踪3.8版本 cd gnuradio git checkout maint-3.8 // 更新子模块 git submodule update --init --recursive // 创建目录,CMAKE,编译,测试,安装,更新动态库 mkdir build cd build cmake ../ make make test //这里有个小错误不影响 sudo make install sudo ldconfig
- 测试gnuradio是否安装成功
gnuradio-config-info --version gnuradio-config-info --prefix gnuradio-config-info --enabled-components
结果v3.8.5.0-6-g57bd109d
、/usr/local
、一串
- 测试gnuradio的可视化工具 grc
gnuradio-companion
如果能打开就不用下面的
- 提示路径问题
打开$HOME/.bashrc文件
gedit $HOME/.bashrc
把export PYTHONPATH=/usr/local/lib/python3/dist-packages
添加到最后一行。
执行
source $HOME/.bashrc
再次执行gnuradio-compantion
就可出现可视化界面。
Note: 官方文档里面是添加export PYTHONPATH=/usr/local/lib/python2.7/dist-packages
,我们应该用python3而不是python3.9或者python2.7,事实上是python版本对应的问题,根据gnuradio版本就对应python。
至此UHD以及GNU Radio安装完毕。
参考文档:
https://mirrors.bfsu.edu.cn/help/ubuntu/
https://files.ettus.com/manual/page_ni_rio_kernel.html
https://kb.ettus.com/USRP-2974_Getting_Started_Guide
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux
https://wiki.gnuradio.org/index.php?title=LinuxInstall
https://wiki.gnuradio.org/index.php?title=InstallingGRFromSource_on_Raspberry_Pi#Load_prerequisites
https://blog.csdn.net/luncky_dog/article/details/122350266
https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-linux-device-drivers.html#477925