srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装

(转载自作者的b站专栏文章srsLTE+USRP B210软件无线电系统在Ubuntu18.04虚拟机上的安装)
实验室最近买了几套USRP设备,想做一些B5G/6G通信系统的SDR原型实现。目前常用的SDR软件有OAI和srsLTE(好像改名叫srsRAN了)两种,其中OAI功能更强大,不过安装较为复杂,而srsLTE安装运行相对简单一些。作者暂时不想装双系统,就在vmware虚拟机里的ubuntu18.04上进行安装,srsLTE在虚拟机里运行是可以的。但在安装并配置srsLTE+USRP的整个系统时,还是遇到了很多问题,作者和师兄两个人搞了一整天才彻底安装成功。以下是作者博采众长整理出来的安装指南,亲测实现0 error安装。


一、虚拟机设置以及安装low-latency内核

给虚拟机分配尽可能多的cpu及内存。在USB控制器选项中,将USB兼容性设置为USB 3.1。

USRP B210需要用USB线连接到电脑的USB 3.0/3.1接口上,实现供电以及高速数据传输。
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第1张图片
启动虚拟机,查看当前内核:
ubuntu默认为通用内核安装lowlatency内核:

sudo apt-get install linux-lowlatency
sudo apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
sudo apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency
sudo reboot  # 重启以加载新内核

ubuntu系统重启,查看是否成功更换内核:
已成功更换为lowlatency内核


二、更新源列表、安装各种工具及依赖库

更新源列表与已安装软件、安装常用工具:

sudo apt update
sudo apt upgrade
sudo apt install net-tools vim ssh git git-gui htop

安装后来cmake时需要用到的一些依赖库:

sudo apt-get install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev

安装GNU Radio 3.7.x需要的依赖库:

sudo apt install cmake git g++ libboost-all-dev python-dev python-mako \
python-numpy python-wxgtk3.0 python-sphinx python-cheetah swig libzmq3-dev \
libfftw3-dev libgsl-dev libcppunit-dev doxygen libcomedi-dev libqt4-opengl-dev \
python-qt4 libqwt-dev libsdl1.2-dev libusb-1.0-0-dev python-gtk2 python-lxml \
pkg-config python-sip-dev

安装GNU Radio 3.8.x需要的依赖库:

sudo apt install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy \
python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libcomedi-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

安装其他一些依赖库:

sudo apt install python-setuptools python3-dev python3-setuptools python3-numpy python3-mako dpdk dpdk-dev

安装一个和DMA相关的库(很迷,运行完指令后报很多异常,不知道到底安好没):

注意,若终端中无法使用git clone命令克隆源代码,可直接在浏览器中打开网址,下载代码的压缩包,然后解压到ubuntu中合适的位置(记得重命名,或者后面cd到正确的目录下)。

作者把安装过程中所有需要从github上下载的文件放在百度网盘了,文末自取。

git clone https://github.com/EttusResearch/liberio.git
sudo apt install autoconf libudev-dev
cd liberio/
autoreconf -i
./configure
make
sudo make install

三、UHD编译安装

如果把USRP设备比作显卡,那UHD就是显卡驱动,srsLTE则是3A游戏。正确安装UHD后,srsLTE程序才能调用USRP设备实现信号的处理与收发等。

下载uhd驱动程序和uhd镜像文件:

wget https://github.com/EttusResearch/uhd/archive/v3.15.0.0.tar.gz
wget https://github.com/EttusResearch/uhd/releases/download/v3.15.0.0/uhd-images_3.15.0.0.zip

安装uhd驱动:

cd uhd-3.15.0.0/host
mkdir build
cd build
cmake ../
make –j4
sudo make install
sudo ldconfig

cmake …/成功之后应显示如下:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第2张图片
make -j4成功之后应显示如下:
make编译成功
sudo make install和sudo ldconfig运行后未显示任何报错即为成功:
无报错即为成功
将uhd镜像 uhd-images_3.15.0.0 文件夹复制到正确的位置:

cd
sudo mkdir -p /usr/local/share/uhd/images
sudo cp -r uhd-images_3.15.0.0/* /usr/local/share/uhd/images/

使用uhd指令查找设备:

sudo uhd_find_devices

若uhd成功识别到usrp设备,显示如下:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第3张图片
使用uhd指令检测uhd版本与ursp设备固件版本是否兼容:

sudo uhd_usrp_probe

若两者版本兼容,则会打印出usrp设备的详细信息,此时可直接跳转到本节最后一步:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第4张图片
若显示信息类似于下图,则说明版本不兼容,需要给ursp设备烧录正确的固件:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第5张图片
使用指令自动下载和uhd版本对应的镜像,并烧录到usrp设备中。serial参数和type参数由之前的 sudo uhd_find_devices 指令获得:

sudo uhd_images_downloader
sudo uhd_image_loader --args=serial=31C9235,type=b200

烧录正确的固件后再使用 sudo uhd_usrp_probe 指令,即可正确输出设备信息:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第6张图片
正确安装uhd、检测到usrp设备并验证兼容性之后,此时只有root用户才能调用usrp设备。为解除普通用户的权限限制:

cd /usr/local/lib/uhd/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

这样普通用户也可以调用usrp设备了。


四、srsGUI编译安装

安装srsGUI,即srsLTE运行时的图形化显示:

git clone https://github.com/srsLTE/srsGUI.git
cd srsgui
mkdir build
cd build
cmake ../
sudo make
sudo make install
sudo ldconfig

如果之前正确安装了文章开头的所有依赖库,cmake …/ 指令能迅速成功跑通:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第7张图片
后面三条指令运行成功效果:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第8张图片


五、srsLTE编译安装与配置

目前最新版本为21.04。make编译过程比较长,可尝试使用 make -j4 进行多核编译。

git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig

若文章开头的依赖库都正确安装,则srsLTE21.04就能成功安装:
完成srsLTE的安装
进入srsLTE的安装目录,srsenb、srsepc、srsue这三个文件夹中有很多 .example 结尾的文件,为srsLTE默认的配置文件。
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第9张图片
我们将三个文件夹里所有的.example配置文件都复制一份,重命名去掉 .example ,例如下图中的 enb.conf 文件。

后续我们要对srsLTE进行开发,就修改并使用复制出来的配置文件。原 .example 后缀的配置文件保持不变,作为参考。
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第10张图片
将 ue.conf 和 enb.conf 中的[gui]节由false改为true,即可开启srsLTE的UI显示。
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第11张图片


六、srsLTE试运行

首先运行srsEPC,使用epc.conf这个配置文件:

cd
cd srsLTE/srsepc
sudo srsepc epc.conf

epc成功运行:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第12张图片
另开一个终端,运行srsENB,使用enb.conf配置文件:

cd srsLTE/srsenb
sudo srsenb enb.conf

enb成功运行,并显示图形界面:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第13张图片
epc终端里显示有enb连接:
srsLTE+USRP B210在Ubuntu18.04虚拟机上的安装_第14张图片
srsUE的运行同上,up在此就不赘述了。


七、总结

目前作者完成了uhd和srsLTE程序的安装与试运行,只算是为SDR软件无线电的研究打下了一个基础。后面的UE与ENB之间连接以及收发数据,以及使用srsLTE+B210搭建4G微基站等,都会是很有趣的工作。

附安装过程中需要从github下载的各个文件:

链接:https://pan.baidu.com/s/1hDmxtiEgn8OTDyxM9qYKzA

提取码:ea9g

你可能感兴趣的:(linux,ubuntu,docker,网络通信)