本文从安装好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/)。

  1. 首先,备份原来的源列表/etc/apt/sources.list
cd $HOME
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
  1. 然后,再打开sources.list文件修改 (可以用gedit、vim等来修改)(vim如果没有可以自行下载,怎么使用见。。。。。。)
sudo gedit /etc/apt/sources.list
  1. 将.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
  1. 保存关闭即可,换源成功

二、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的驱动安装。

  1. 首先,下载NI Linux Device Drivers,并直接解压,在哪个目录无所谓只要能找到就行,我这里是在主文件夹,如左图。

    网站:https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-linux-device-drivers.html#477925


  1. 接着,打开文件夹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
  1. 更新安装包信息
sudo apt update
  1. 安装kernel-headers
sudo apt install linux-headers-$(uname -r)

Note: 此步骤要确保安装kernel header版本是硬件对应版本的,命令uname -r可以看到自己的系统版本。笔者这里是5.15.0-60-generic

  1. 安装ni-usrp-rio
cd
sudo apt install ni-usrp-rio
  1. 用DKMS build kernel 模块
sudo dkms autoinstall

如果build出错,应该就是版本不对应。

  1. 重启
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

  1. 安装依赖包

注意: 不同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
  1. 创建一个安装文件夹

切换到主目录

cd $HOME

创建名为workare的文件夹

mkdir workarea

切换到workare目录

cd workarea
  1. 克隆文件,并切换到uhd目录
git clone https://github.com/EttusResearch/uhd
cd uhd
  1. 找到想要的uhd版本

输入git checkout v,连按三个Tab键可以看到所有的版本。

git checkout v3.15.0.0
  1. 正式进入安装流程
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
  1. 环境变量配置

打开$HOME/.bashrc文件

gedit $HOME/.bashrc

在文件末尾添加以下命令:

export LD_LIBRARY_PATH=/usr/local/lib

执行

source $HOME/.bashrc
  1. 测试成功安装
uhd_find_devices
  1. 下载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

  1. 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
  1. 测试gnuradio是否安装成功
gnuradio-config-info --version
gnuradio-config-info --prefix
gnuradio-config-info --enabled-components

结果v3.8.5.0-6-g57bd109d/usr/local、一串

  1. 测试gnuradio的可视化工具 grc
gnuradio-companion

如果能打开就不用下面的

  1. 提示路径问题

打开$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

USRP-2974上安装Ubuntu20.04 + UHD 3.15 + GNU Radio 3.8 过程全记录的更多相关文章

  1. 在VirtualBox上安装Ubuntu-20.04

    本文主要介绍如何在VirtualBox上安装Ubuntu-20.04 目录 下载VirtualBox 下载Ubuntu-20.04镜像 新建虚拟机 第一步:打开VirtualBox 第二步:设置虚拟机 ...

  2. 华为Mate14上安装Ubuntu20.04纪要

    Ubuntu16.04用了将近五年了,已经好几年没折腾过系统,所以简要记录一下.   1. 关于UEFI分区,之前的笔记本UEFI是可选的(只是默认该模式),Bios里面还有其他选项.一般安装系统之前 ...

  3. Mac Mini 安装Ubuntu20.04 KVM

    在一台 Mac Mini mid 2011上安装Ubuntu20.04并配置KVM环境, 过程也适用于其他版本的Mac Mini. 硬件配置 I5 2415, 内存8G*2, 硬盘 SSD 500G ...

  4. 树莓派4b安装Ubuntu20.04

    树莓派4b安装Ubuntu20.04 下载Ubuntu20.04镜像 下载地址 安装Raspberry Pi Imager 下载地址 烧录系统 打开Raspberry Pi Imager,选择自己刚刚 ...

  5. Linux,在不使用U盘的情况下使用wubi.exe程序在Win7上安装ubuntu-14.04.3版系统

    本文介绍如何在不使用U盘的情况下使用wubi.exe程序在Win7上安装ubuntu-14.04.3版系统. 花了一天的时间终于安装上了Ubuntu14.04,过程坎坷,是血泪史,开始报“cannot ...

  6. 在CentOS7上通过RPM安装实现LAMP+phpMyAdmin过程全记录

    在CentOS7上通过RPM安装实现LAMP+phpMyAdmin过程全记录 时间:2017年9月20日 一.软件环境: IP:192.168.1.71 Hostname:centos73-2.sur ...

  7. 在CentOS6上配置MHA过程全记录

    在CentOS6上配置MHA过程全记录 MHA(Master High Availability)是一款开源的MariaDB or MySQL高可用程序,为MariaDB or MySQL主从复制架构 ...

  8. SAP S4HANA1610/Fiori安装过程全记录

    经历各种坑,从硬件到文件,终于安装成功. 有需要安装或使用S4HANA(含Fiori)的同学可以参考. 安装文件分享给大家 链接:http://pan.baidu.com/s/1mi7LfIS 密码: ...

  9. windows上安装ubuntukylin16.04并且在ubuntukylin上安装jdk

    1.安装ubuntukylin16.04 教程链接:http://jingyan.baidu.com/article/f71d60379824041ab641d19d.html 我是完全按照这个教程来 ...

  10. 在Mac上安装Ubuntu14.04虚拟机

    1.在macOS High Sierras上安装VMware for mac 下载地址:VMware Fusion 8.5.1  https://pan.baidu.com/s/1skQ1OyL 2. ...

随机推荐

  1. Java编程--接口(interface)简单用法(一)

    接口是Java中的一个重要的概念. interface:定义了子类要实现的功能.由全局常量和抽象方法组成. 接口的定义 定义一个简单的interface public interface A {  p ...

  2. 01Spring-01jdbc 未使用spring代码编写

    目录 pom.xml JdbcDemo1.java pom.xml <?xml version="1.0" encoding="UTF-8"?> & ...

  3. Flutter图片组件的定制开发与配置实践

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  4. 详解ES6升级优化以及知识点汇总

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...

  5. Longest Univalue Path——LeetCode进阶路

    原题链接https://leetcode.com/problems/longest-univalue-path 题目描述 Given a binary tree, find the length of ...

  6. 阅读类元服务开发笔记---week3

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  7. Guava中的常见集合操作用法

    本文主要介绍Guava中几种处理字符串和Map的方法,包括Joiner(连接).FluentIterable(过滤.转换集合)和Splitter(分割).本文基于Java 8进行测试,Guava 版本 ...

  8. NOIp2020复赛游记

    NOIp2020复赛游记 T1 他们用的都是拓扑排序,但是我用的是\(bfs\)+\(online\)标记\(\dots\dots\)样例当然能过,但是会被卡成暴力. 不过,他们有人用拓扑时,要么把入 ...

  9. [Python] 开发一个lychee相册命令行客户端以及python库pychee6

    有一段时间收集了不少的写真集和漫画,但是一直苦于没有很好的组织和储存的方法,直到我找到了LycheeOrg/Lychee ,它的图片组织形式非常适合存放写真集或者漫画,于是我尝试把图片都放上去.体验很 ...

  10. 用网页计数器来说明application和session

    jsp的代码: 1 <body> 2 <h1>网页计数器</h1> 3 <% 4 //第一次访问数据为空 5 Object obj=application.g ...