ubuntu下安装uhd+gnuradio
提示:安装uhd+gnuradio实际上并不难,只是实际安装的时候,作为新手经常会因为缺乏相关知识而踩不少坑,以下是我踩坑安装的一些记录。
gnuradio+uhd安装过程
win10下ubuntu双系统
使用usrpb210
ubuntu18.04
安装方法有两种,一种是使用已经编译好的二进制码,缺点是版本通常比较旧,但学习usrp也不需要太新的版本,另外,这种安装方法比较简单,会帮我们解决好依赖关系,基本不会出问题,安装速度也快;另一种自己编译源码进行安装,这种方法make时间会比较长,也容易出问题,特别是环境变量问题,如果了解ubuntu下的环境变量是如何配置和工作的,问题就不大。
使用二进制码安装:
https://files.ettus.com/manual/page_install.html
注:
使用二进制源码进行安装时,也就是使用apt-get命令进行安装,首先要知道ubuntu18.04的官方库中已经包含了uhd和gnuradio的软件包。运行apt show libuhd-dev libuhd003 uhd-host,可以知道,里面包含了uhd版本为3.10.3.0-2,但是会显示无法定位 libuhd003。我们可以继续运行apt show libuhd003*,可以发现ubuntu18.04库里的libuhd为libuhd003.010.003,至于为什么按官方给的命令会查不到软件包,可能是没有及时更新吧,所以要用查到的libuhd003.010.003来代替 libuhd003
另外,官方的安装指南也提到,如果想安装较新版本的软件包,可以安装依赖源,如:sudo add-apt-repository ppa:ettusresearch/uhd,但是当我安装好依赖源,再运行sudo apt-get install libuhd-dev libuhd003 uhd-host安装uhd时,后面安装好gnuradio运行有关usrp的程序时,会提示uhd错误,经过网上搜索得知,这时候发生了版本冲突,也就是安装了两个uhd版本,一个是ubuntu18.04库里的旧版本(libuhd003.010.003),一个是依赖源提供的新版本,至于为什么会安装了两个uhd,我也不是很清楚,但是可以通过不安装依赖源(sudo add-apt-repository ppa:ettusresearch/uhd),直接sudo apt-get install libuhd-dev libuhd003.010.003 uhd-host进行安装,这样后面不会出现两个版本的uhd问题。缺点就是uhd版本较旧,但用起来没什么问题。
安装:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libuhd-dev libuhd003.010.003 uhd-host
这样就装好了uhd.
接下来安装gnuradio:
https://wiki.gnuradio.org/index.php/InstallingGR
注:
同样可以直接安装库自带的版本(我这里是3.7),也可以通过安装依赖源(sudo add-apt-repository ppa:gnuradio/gnuradio-releases),来安装较新版本的gnuradio,还需要注意的是,gnuradio3.8及以上的版本已经去除了wxgui,说法是qtgui更好,但考虑到网上的一些旧程序使用wxgui,自己改成qtqui会有些小麻烦,干脆就装3.7版本就好了。
安装gnuradio:
sudo apt install gnuradio
这样就安装好了gnuradio.
我们可以运行uhd_find_device或者uhd_usrp_probe试试
会显示uhd版本,以及No UHD Devices Found
接下来还有一步需要完成,不然连接usrp是识别不出来的。
这个时候我们还需要运行uhd_images_downloader,如果提示权限问题,就加上sudo,如果还不行,就直接根据提示给的下载链接,直接打开浏览器下载,然后放到它说的目的路径,解压。至于为什么会有这样的问题,可能是开发者提供的程序有些问题吧。需要注意的是,不同uhd版本需要下载的东西会不一样,比如Uhd3.10需要下载的是一个压缩包,下载解压就好,但最新版本的Uhd会给出一推压缩包,可以根据自己的usrp型号下载需要的几个压缩包解压,如果不知道要下载哪几包,也可以全都下载解压,就是会有些麻烦。
以上就是使用二进制软件包进行安装的过程。
接下来是自己编译二进制源码包进行安装。
如果有了解过make编译和环境变量的知识会好一些。
先安装uhd
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux
首先是安装依赖源:
On Ubuntu 18.04 systems, run:
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
mkdir workarea
cd workarea
从github下载
git clone https://github.com/EttusResearch/uhd
cd uhd
查看包中的包含的版本
$ git tag -l
…
release_003_009_004
release_003_009_005
release_003_010_000_000
检出想要的版本(我选的是UHD3.10版本的)
Example: For UHD 3.9.5:
git checkout release_003_009_005
或者
Example: For UHD 3.14.0.0
git checkout v3.14.0.0
安装(依次输入以下命令)
cd host
mkdir build
cd build
cmake …/
make
make test
(注:make完以后可以make test试试,如果全部测试通过,就没什么问题,如果有几个测试不通过的,按官方给的说法是,这很可能是测试需要的工具没安装完整,但对安装uhd没什么影响)
sudo make install
sudo ldconfig
(注:安装完后需要更新系统的共享库缓存)
接下来配置环境变量
上面给的链接中(2016年的文档)官方说,打开$HOME/.bashrc,也就是在主目录下打开.bashrc文件,然后写入,export LD_LIBRARY_PATH=/usr/local/lib,保存关闭。但是我做了以后,
运行echo $ LD_LIBRARY_PATH,发现该环境变量没有值,也就是环境变量没有添加成功。
需要说明的是,所谓环境变量,如 LD_LIBRARY_PATH,这是它的变量名,我们想给他赋值为/usr/local/lib,这样,当程序中出现 LD_LIBRARY_PATH,系统会把它识别为/usr/local/lib,如果识别不成功,那么程序就会报错。
而.bashrc这样的bash文件就和环境变量的配置有关。系统需要运行这种文件来读取环境变量的值。需要注意的是,这样的文件不止一个,针对不同的用户、不同模式会读取不同的文件,比如主目录下的.bashrc文件是属于个人bash文件,我们自己安装的程序,可以把环境变量写进去,按理说应该可以正常工作才对,但这里我写进去的环境变量读取不出来,应该是哪里出了点问题我没发现。
但是我们可以将环境变量写入其它bashrc文件,运行,locate .bashrc(需要注意的是,新加入的文件locate可能找不出来,这时需要运行sudo updatedb,更新一下locate搜索依赖的东西,这个好像是默认开机还是一天自动更新一次),我找到了/etc/bash.bashrc,这个bash.bashrc文件也是跟环境变量有关的,是供所有用户使用的一个,打开该文件,在文件末尾写入 export LD_LIBRARY_PATH=/usr/local/lib,保存关闭,
运行echo $ LD_LIBRARY_PATH,看有没有显示出相应的值。
官方还提示,如果 LD_LIBRARY_PATH已经赋了其它值,那写的时候就换成export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib,也就是一个变量名可以并列赋多个值,用冒号隔开就行。
接下来需要Downloading the UHD FPGA Images
运行sudo uhd_images_downloader
这里可能会遇到的问题,在前面使用二进制码安装时已经说过了。
接下来安装uhd
https://wiki.gnuradio.org/index.php/InstallingGR#From_Source
这里是根据链接中针对ubuntu 18.04那个教程来的
For Ubuntu 18.04[edit]
An easy way to install GNU Radio 3.8 on many Ubuntu systems is to use the following commands (note that this skips the setup for UHD hardware):
首先,安装一些依赖和一些工具
sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-pip python3-gi-cairo
pip3 install git+https://github.com/pyqtgraph/pyqtgraph@develop
pip3 install numpy scipy
然后写环境变量
echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.bashrcecho 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrcecho 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> ~/.profileecho 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> ~/.profile
(注:这是环境变量也另一种写法,直接写到文件中,运行完后,可以echo $变量名看值对不对,不对的话,按前面说的方法,写入bash.bashrc,自己试试就知道了。也可以不用官方这种写法,改成
echo 'export PYTHONPATH=/usr/local/lib/python3/dist-packages:usr/local/lib/python2.7/site-packages:$PYTHONPATH' >> /etc/bash.bashrc
echo 'export LD_LIBRARY_PATH=/user/local/lib:$LD_LIBRARY_PATH' >> /etc/bash.bashrc
或者打开相应文件编辑)
然后下载准备安装
cd ~/
git clone --recursive https://github.com/gnuradio/gnuradio
cd gnuradio
git checkout maint-3.8
mkdir build
cd build
git pull --recurse-submodules=on
git submodule update --init
(注:gnuradio3.8版本移除了wxgui,想要的话可以选maint-3.7)
接下来的一步,官方给的是cmake -DENABLE_GR_UHD=OFF …
但这里我们不能这么写,这句话是关闭了GR_UHD的使能,如果你真的这么运行了,那么你会发现安装好的GNURADIO,打开后发现找不到UHD模块,原因就在这里。至于官方为什么这么写,因为这里是gnuradio官方写的安装gnuradio的方法,它认为你前面没有安装UHD,所以就不使能GR_UHD模块了。这里我们直接写cmake ../
这样cmake的参数就是默认的,同样默认使能了GR_UHD模块
然后make安装
make -j $(nproc --all)
sudo make install
sudo ldconfig
到这里,自行编译安装uhd+gnuradio就完成了。
插上usrpb210,运行uhd_device_find,应该就可以读取到设备的信息。如果提示你权限问题,那就加上sudo,但为了方便,我们可以根据这篇文章来解决
解决usb权限问题
https://files.ettus.com/manual/page_transport.html#transport_usb_udev
依次运行
(注:这里的要替换一下,从前面设置的环境变量LD_LIBRARY_PATH=/user/local/lib,可知需要把替换成/user/local)
cd <install-path>/lib/uhd/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
就好了,这样运行uhd_device_find,就不用每次加sudo了
最后,我们可以运行gnuradio提供的example下的uhd_fft.grc,如果可以正常运行,说明安装没什么问题了。
ubuntu下安装uhd+gnuradio相关推荐
- Ubuntu 16.04 源码编译安装 uhd gnuradio
Ubuntu 16.04 源码编译安装 uhd & gnuradio 环境介绍 UHD安装 1 安装依赖 2 编译 3 测试安装结果 4 配置 USB gnuradio安装 1 安装依赖 2 ...
- Ubuntu 下安装thttpd Web服务器
不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式.这里,Ubuntu repository的提供了 ...
- Ubuntu下安装Apache+PHP+Mysql
Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...
- ubuntu下安装ftp服务器
ubuntu下安装ftp服务器 Ftp服务器是使用以vsftp为例. 1. 安装 $sudo aptitude install vsftpd $ps aux | grep 'ftp' ...
- linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp
在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp 一.安装Ubuntu7.04 Desktop版 二.ubuntu Linux下手工安装mysql5 1.下载mysq ...
- ubuntu下安装windows虚拟机
ubuntu下安装win7虚拟机总结 ubuntu16.04 虚拟机 安装win7/win10 http://WIN10:你不能访问此共享文件夹,解决方法 VirtualBox虚拟机剪贴板共享
- Linux :debian(ubuntu)下安装和使用haskell
文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...
- Linux: debian/ubuntu下安装和使用Java 11
Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...
- Linux: debian/ubuntu下安装和使用Java 8
Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...
最新文章
- VS调试时提示此项目已经过期
- 将类别加入到别人的名称空间内
- Linux Linux程序练习十一(网络编程大文件发送UDP版)
- python 字典 元组 集合 列表 字符串 字节数组 常用的方法总结
- smarty安装与配置
- java怎么编写软键盘_安卓手机软键盘操作
- Nginx笔记-Nginx中进程结构及使用Linux信号量管理
- 在代码中使用协程(一)
- Python菜鸟入门:day12编程学习
- CocoaLumberjack
- python列表的嵌套_Python 展开多层嵌套的列表
- 485芯片方向切换的几种方式及原理
- java学习技术栈总结
- 密码显示隐藏符号格式会变
- CEMAPI实战攻略(二)——建立与短信信箱的连接
- AD20和立创EDA设计(4)PCB设计
- LVS的模式一:DR(直接路由)模式
- svn提交代码到远程服务器
- 学习 FPGA 经验与书籍分享。
- 业界前沿技术:从零开始学视觉Transformer-Data-Efficient Image Transformers