前言

本文主要讲述了如何在Ubuntu上安装OAI的gNB,并让gNB运行起来,以及在安装和运行中遇到的错误的解决方法。
配置:
ubuntu 18.04.06
USRP b210
还有其他的电脑的CPU方面的要求以及支持的USRP可以看看官网的教程,如下:
https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/OpenAirSystemRequirements


下面开始安装

一、安装前的配置

1、更换Ubuntu你的源(推荐更换,换了之后下载的速度会变快,当然也可以不换)

在终端中执行以下命令。第一步是将原来的源备份到一个文件,以后如果有必要需要换回原来的源的话,可以用。第二步是打开源的文件。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo gedit /etc/apt/sources.list

打开源文件之后,将文件中的内容删掉,换成下面的(选一个即可):
(1)清华的源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

(2)阿里的源

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

当然还有其他的源,比如中科大之类的,找到合适的也可以用。
粘贴之后,关闭文件,在终端执行下面命令:

sudo apt-get update
sudo apt-get upgrade

等待更新结束即可。

2、更换低延迟内核和设置CPU性能

官方推荐使用低延迟的内核,以及调整CPU的性能模式,我的理解这样配置类似于让CPU超频,让他能够跑的更好,打开命令行终端,依次执行以下命令:

sudo apt-get install linux-lowlatency-hwe-18.04
sudo apt install cpufrequtils
sudo cpufreq-set -c $core_number -g performance
for ((i=0;i<$(nproc);i++)); do sudo cpufreq-set -c $i -r -g performance; done
sudo apt install linux-tools-common linux-tools-lowlatency linux-tools-5.11.0--36-lowlatency
sudo cpupower idle-set -D 2

执行完之后,重启电脑。
Tips:上面的6歩中,在第5歩的版本号可能会更新的比较快,不过这个没关系,如果你安装了旧的版本,在第六步的时候会有提示,即“你可能需要安装下面的依赖包”这样的提示,看到版本号后重新修改第五步的版本号安装即可。

二、安装OAI

1、正常安装流程

首先下载源码文件,找一个文件夹用来存放源码,建议直接放在主目录下,从终端 cd 到文件夹目录,或者在文件夹右击 在终端打开 ,执行命令

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git

如果没有安装git的话要先安装git,即

sudo apt-get install git

下载玩源码后,开始安装:

cd  openairinterface5g
git checkout develop
source oaienv
cd cmake_targets
./build_oai -I -w USRP
./build_oai -w USRP --gNB --nrUE

插上你的usrp 在终端中运行分别uhd_find_devices和uhd_usrp_probe 如果出现设备信息和设备信息树,则表示 ./build_oai -I -w USRP 安装成功了。
在这里插入图片描述

如果在cmake_targets/ran_build/build/ 文件夹下出现nr-softmode 和 nr-uesoftmode 两个文件即表示 ./build_oai -w USRP --gNB --nrUE安装成功。
这里解释一下参数的意思:

-I   表示安装OAI需要的依赖包
-w USRP 表示安装相应的硬件依赖
--gNB 是安装5g的基站
--nrUE 是安装5g的用户设备

也可以用 -h参数查看其他的命令
或者看看官网的解释https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux

2、安装问题与解决

在执行 ./build_oai -I -w USRP 这条命令的时候可能会出现一点问题,主要是一些要克隆的库的问题,然后导致失败,可以多尝试几次,也可以采用下面的方法
(1)问题一 克隆https://gist.github.com/2190472.git /opt/ssh 失败
解决办法 : 打开openairinterface5g/cmake_targets/tools 文件夹下的build_helper文件,可以搜索 opt/ssh 关键字,大概在859行,注释掉 SUDO开头的两句命令(如下),即在前面添加#号
在这里插入图片描述
之后新开一个终端,在终端中输入上面的命令直到成功为止(这条好像要翻墙,但我在下载的时候,有小概率下成功,但是这个文件是否有貌似不影响后续的OAI运行)

sudo git clone https://gist.github.com/2190472.git /opt/ssh

(2)问题二 克隆 https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c失败,即安装anS1出错,这个系统会生成日志文件,在openairinterface5g/cmake_targets/log文件夹下
解决办法:
同样在build_helper文件中,大概在870行,注释掉箭头的两句命令。
在这里插入图片描述
之后同样在新终端中运行,直到成功为止

git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c

(3) 问题三 克隆protobuf-c文件出错,这个同样有日志文件,同样在log文件夹中
解决办法: 在build_helper文件中的299行,同样注释这两句命令
在这里插入图片描述
之后在新终端中,运行一下命令 ,直到成功

cd /tmp
git clone https://github.com/protobuf-c/protobuf-c.git

(4)问题四 下载UHD images出错,这个问题当时忘记截图了,我描述一下吧,就是下载images时,出现了链接不存在的错误,当你点开那个不存在的链接时,浏览器会打开一个人机验证的页面。
解决办法 这个问题是网络的问题,可能实验室的网络被禁了,没什么办法,换个网络即可,例如换成手机热点。之后不报错的话,应该会在/usr/share/uhd/文件夹中看你见下载的images文件夹。

至此如果出现过以上的问题,并相应的成功的下载好了文件,则可以切换到openAirinterface5g/cmake_targers/文件夹下,重新运行一下命令即可:

./build_oai -I -w USRP

如果还遇到其他问题可能是一些UHD依赖包的问题,可以安装的时候缺什么补什么,
或者到USRP的官网把依赖包都下载了,不同的系统有不同的依赖包,注意对应。
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux

三、运行gNB

1、运行结果和截图

由于目前还没有安装OAI的核心网,所以只能先测试gNB是否能运行起来,即noS1模式
当然,如果你是用的两个USRP,一个当UE一个当gNB的话应该不需要用核心网,一直在noS1模式下运行即可,但是如果是使用只能手机来当UE的话,即COTSUE。则一定需要安装核心网。
首先切换到openairinterface5g/cmake_targets/ran_build/build/ 文件夹下,然后运行

sudo -E ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf  --noS1 --nokrnmod 1

这里解释一下参数:

-O 是给gNB传入配置文件 这里运行的是noS1模式所以配置文件中没有修改
--noS1 让gNB运行在noS1模式,即没有核心网的情况下
--nokrnmod 1  同上,当没有核心网的时候设置这个标志位

过程或在那个如果没有报错,并出现以下画面,等待接收UE接入,即表示gNB成功运行了,按下Ctrl+c 可以停止运行。
在这里插入图片描述

2、运行问题处理和解决

问题一 lib/x86_64-linux-gnu/libc.so.6 出错
在这里插入图片描述

这个问题时之前你的电脑安装UHD的驱动之后,出现的版本不匹配的问题,需要先卸载UHD,然后回到 第二步安装OAI的步骤中,重新运行 ./build_oai -I -w USRP 这里贴一下官方的原话
在这里插入图片描述
之前被这个问题困扰了很久,因为一开始看了USRP官网的一篇教程,里面讲述了用USRP安装OAI的教程,里面首先需要安装UHD,之后才要安装OAI,导致后面检查问题的时候完全没往这方面想,直到看到官网的那句话才明白。

问题二 [HW] unknown sample rate 61440000
这个问题的原因还没找到,但是通过在运行gNB的命令中的配置文件后面添加 -E参数 即可解决,命令如下

sudo -E ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf -E --noS1 --nokrnmod 1

问题三 未能找到images文件,请设置UHD_IMAGES_DIR环境变量,或者运行/usr/local/lib/uhd/tests/uhd_images_downloader.py
解决方法 这个问题首先检查下你的/usr/share/uhd/images/文件夹下有没有文件,或者说有没有images文件夹。没有的话在终端运行

sudo uhd_images_downloader

如果有images文件的话,只要设置环境变量即可,运行

export $UHD_IMAGES_DIR=/usr/share/uhd/images

之后打开主文件夹下的 .bashrc 文件,并把上面的命令添加到文件最后,保存后,重启电脑。(.bsahrc是个隐藏文件)

四、总结

以上就是我安装gNB的过程以及遇到的问题的解决办法,如果以后有空的话尝试把这个过程写成脚本贴上来吧。如果在安装构成中还有其他的问题,不要慌张,一步一步排查,对于OAI的问题可以先进行仿真,仿真的方法可以参考下面这篇博文
gNB仿真测试
之后如果还有其他问题,还可以尝试openAirinterface5g的邮件列表功能,https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/MailingList
在这里插入图片描述
点击其中的archives,寻找一下有没有人和你一样的问题,或者订阅邮件列表,向其他人提问。
这里顺便再贴一下openAirinterface5g的官网吧
https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/5g-nr-development-and-setup
下一步要开始安装核心网了,5g的核心网还找到中文的教程,以后的路很长,祝我好运!

核心网安装好了,这里贴一下
https://blog.csdn.net/qq_47141879/article/details/121699129

这个是我的基站配置文件,基本没怎么改动
https://download.csdn.net/download/qq_47141879/87537490

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐