OAI搭建 eNB(2018-09最新版)

OAI搭建——eNB(2018-09最新版)

写在前面:eNB的安装过程费劲一些。中文社区的指南都是只介绍了流程,并没有提及怎么解决问题,自己google又得花一些时间,这也是我写这一系列文章的目的。老样子,这篇教程写的比较详细,还是适用于将会各种碰壁的初学者。我的搭建是EPC和eNB分开的,用的是USRP B210,这也是官方强烈推荐的初始配置。另外,请注意带有All in one的指南都是eNB和EPC装在一起的。

0、须知

我的实际搭建模型是通过交换机相连的,如下文:

https://blog.csdn.net/qq_42030961/article/details/82751991

如何加入邮件列表:

https://blog.csdn.net/qq_42030961/article/details/82983264

接下来是eNB安装正文。

1、硬件准备

eNB对电脑配置的要求比EPC高一些,简单来说就是3代以上的i5/i7。以下是官网晒的通过测试的配置:

https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/OpenAirSystemRequirements

系统方面,请务必使用Ubuntu 14.04.3 ,原因在于可以一键更换内核,当然14.04 LTS也可以通过synapic或者更改grub来更换,接下来也会提。毕竟没有一键方便。

2、更换内核

执行如下两条,更换3.19.0-61低延迟内核

sudo apt-get update
sudo apt-get install linux-image-3.19.0-61-lowlatency linux-headers-3.19.0-61-lowlatency

更换完成后输入

sudo reboot

电脑就会立刻重启了。重启后输入 uname -a可以查看内核信息。如下

Linux wty 3.19.0-61-lowlatency #69~14.04.1-Ubuntu SMP PREEMPT Thu Jun 9 10:15:00 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

wty是hostname,更换成功后 lowlatency 应该很显眼了。但是,如果失败了,可以用更改grub的方式更换,请参考我的另一篇讲如何更换内核的文章。

https://blog.csdn.net/qq_42030961/article/details/82740315

3、电源管理

(1)

sudo gedit /etc/default/grub

在GRUB_CMDLINE_LINUX_DEFAULT="quiet splash”这行的下面添加两行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"
GRUB_CMDLINE_LINUX_DEFAULT="processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll”

预告:如果没有关掉c-state,这两行会需要修改,先往下走。

(2)

sudo gedit /etc/modprobe.d/blacklist.conf

在文件最后添加

blacklist intel_powerclam

(3)

依次执行

sudo apt-get install cpufrequtils
sudo gedit /etc/default/cpufrequtils

这个cpufrequtils 大概率为空文件,在里面加上一句:

GOVERNOR=“performance”

(4)

sudo update-rc.d ondemand disable

(5)

sudo apt-get install i7z

安装i7z,后面可以查看CPU频率。

(6)

重启,进入bios关闭与节能或者影响CPU次能性能的设置,一般在Advanced设置里面。关闭超线程(Hyper-threading),C-state(有的电脑在bios里面找不到c-state,比如我的就没有,没有需要强行在grub里关),方法见(8):

(7) 用i7z查看是否完成操作

sudo i7z

OAI搭建 eNB(2018-09最新版)_第1张图片

看到所有频率都在C0就大工告成了,如果没有,请转8。

(8)仅没有成功关闭c-state的同学需要执行

sudo gedit /etc/default/grub

注释掉原来的三行(有两行是在(1)中添加的)

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash”
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable"
GRUB_CMDLINE_LINUX_DEFAULT="processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll”

把它们都写到一行去,用空格隔开:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash quiet intel_pstate=disable processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll"

然后更新并重启即可。

sudo update-grub
sudo reboot

这个方法来源参考地址:

https://askubuntu.com/questions/749349/how-to-set-intel-idle-max-cstate-1

另附:OAI官网关闭 Power management 的教程

https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/OpenAirKernelMainSetup

4、克隆源码

sudo apt-get install git
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git

如果外网访问速度太差,可能会遇到 :fatal:过早的文件结束符(EOF)
遇到这种情况可以尝试我的另一篇搭建EPC时无法克隆的操作:

https://blog.csdn.net/qq_42030961/article/details/82695682

5、配置eNB

sudo gedit ~/openairinterface5g/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf

需要更改和确认的部分如下:前三行在MME中可以查到,之后就是把IP对应换成自己的EPC和eNB所在IP。

tracking_area_code  =  "1";
mobile_country_code =  "208";
mobile_network_code =  "92";


////////// MME parameters:
    mme_ip_address      = ( { ipv4       = "192.168.12.62";
                              ipv6       = "192:168:30::17";
                              active     = "yes";
                              preference = "ipv4";
                            }
                          );
    NETWORK_INTERFACES :
    {
        ENB_INTERFACE_NAME_FOR_S1_MME         = "eth0";
        ENB_IPV4_ADDRESS_FOR_S1_MME           = "192.168.12.82/24";

        ENB_INTERFACE_NAME_FOR_S1U            = "eth0";
        ENB_IPV4_ADDRESS_FOR_S1U              = "192.168.12.82/24";
        ENB_PORT_FOR_S1U                      = 2152; # Spec 2152
    };

6、编译eNB

cd openairinterface5g
source oaienv
cd cmake_targets
sudo ./build_oai -I -w USRP

编译后无红色报错即可。以下是成功编译的部分截图。
OAI搭建 eNB(2018-09最新版)_第2张图片
注:

(1)如果出现如下错误:
fatal: unable to access https://gist.github.com/2190472.git : Failed to connect to gist.github.comport 443: Connection timed out

执行:

sudo gedit openairinterface5g/cmake_targets/tools/build_helper

打开后 Ctrl+F 搜索找到这2行

$SUDO rm -fr /opt/ssh
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh

改成如下(来自大佬的镜像克隆)

$SUDO rm -fr /opt/ssh
$SUDO git clone https://github.com/JackPaul/ssh.git /opt/ssh

(2)不要使用下面这条命令编译(这是给all in one准备的):

./build_oai -I --eNB -x --install-system-files -w USRP

(3)如果出现freeDiameter没注册什么的,可以注册一个,减少黄色报错,我是注册了,但是不知道到是不是必须的(确认了,不是必须的):

# 1、安装依赖的软件包
sudo apt-get -y install mercurial cmake make gcc bison flex libsctp-dev libgnutls-dev libgcrypt-dev libpq-dev libmysqlclient-dev ssl-cert debhelper fakeroot

# 2、下载最新版freeDiameter(注:这里安装在了主目录之下)
cd
hg clone http://www.freediameter.net/hg/freeDiameter
cd freeDiameter

# 3、新建一个编译文件夹
cd ..
mkdir fDbuild
cd fDbuild

# 4、配置产生cmakefiles
cmake ../freeDiameter
make edit_cache

# 5、编译安装
make
sudu make install

7、运行eNB

cd ~/openairinterface5g
source oaienv
cd cmake_targets
./build_oai --eNB -c -w USRP (这条运行一次就行了 确认安装)
cd lte_build_oai/build
sudo -E ./lte-softmodem -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf -d

就能看到scope的观察窗口了。我这里没有接UE。因此只有接收信号。
(2019-06-11更新, 最后一条不要加-d 似乎-d已经挂掉了 )
注:命令中的$OPENAIR_DIR并不需要更换成对应路径,当然换了也没问题。
OAI搭建 eNB(2018-09最新版)_第3张图片

上图是刚刚编译完成时,接入COTS UE后,会加入一些数据:

OAI搭建 eNB(2018-09最新版)_第4张图片

如何接入UE(SIM卡)有很多大坑,以后有时间再补。
(2018-11-14更新, 终于把SIM卡如何搭建补上了

https://blog.csdn.net/qq_42030961/article/details/84039098

注:

(1)如果报错:

[ERROR] Downloader raised an unhandled exception: 
HTTPConnectionPool(host='files.ettus.com', port=80): Max retries exceeded with url: /binaries/cache//usrp2/fpga-6bea23d/usrp2_n200_fpga_default-g6bea23d.zip (Caused by : [Errno 110] Connection timed out)
You can run this again with the '--verbose' flag to see more information
If the problem persists, please email the output to: [email protected]
build have failed

这是因为没有装好USRP驱动。解决方案,依次执行:

sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils python-requests cmake build-essential
git clone git://github.com/EttusResearch/uhd.git
cd uhd
mkdir host/build
cd host/build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install
sudo ldconfig
sudo /usr/lib/uhd/utils/uhd_images_downloader.py

(2)如果报错:

[WARNING] [B200] The recv_frame_size must be a multiple of 8 bytes and not a multiple of 1024 bytes. Requested recv_frame_size of 15360 coerced to 15368.

解决方案:
①使用3.10版本的 uhd,不过我不是用的这种解决方式;②

sudo gedit ~/openairinterface5g/target/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp

找到recv_frame_size=15360,把它改为 15368即可。

到这里eNB就编译完成了。如果有什么问题我遗漏了,欢迎在评论区和我讨论。

你可能感兴趣的:(OAI的从零奋斗之路)