USRP-2974上安装Ubuntu20.04 + UHD 3.15 + GNU Radio 3.8 过程全记录,首先,备份原来的源列


本文从安装好Ubuntu20.04系统说起,经历下述流程:

  1. 换源 北京外国语大学开源软件镜像站
  2. USRP-2974需要额外安装的驱动
    USRP-2974关于UHD的驱动安装 官方教程
    USRP-2974_Getting_Started_Guide
  3. 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

相关内容