OAI(OpenAirInterface)是欧洲EURECOM组织发起并维护的一个开源NR/LTE项目。
1. 设备环境 1.1 硬件环境5G-NR 的处理要求远高于 4G,因此需要高端的PC或服务器。目前OAI正在使用的有:
- Intel Core i7 6900K (8 cores), 16GB DDR, 480GB SSD。允许SW LDPC运行在3个核上(高达30Mb/s),或者LDPC运行在FPGA(在80MHz SISO上高达 300Mb/s)。
- Intel Core i9 7980EX (18 cores)。允许LDPC SW 解码器并行在 9 或 12 个内核上(高达140Mb/s),或者LDPC运行在FPGA(同上)。
- Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz with 18 cores and 2x10Gbit Ethernet
USRP有三种可选:
- USRP N310
这是专为 5G-NR 设计的最新版 USRP,支持高达 100MHz 的带宽。
2. USRP X310
这个较旧的平台也适用于 5G-NR,但仅支持高达 80MHz 的带宽和 3/4 采样。
3. USRP B210
该平台可用于使用 3/4 采样的高达 40MHz 的带宽。
我们选择了USRP B210,其简介如下:
USRP B210 提供了一个完全集成的单板通用软件无线电外设 (USRP™) 平台,具有 70 MHz – 6 GHz 的连续频率覆盖范围。它专为低成本实验而设计,结合了 AD9361 RFIC 直接变频收发器,提供高达 56MHz 的实时带宽、开放且可重新编程的 Spartan6 FPGA 以及快速的SuperSpeed USB 3.0 连接和便捷的总线电源。
1.3 系统安装- 安装系统Ubuntu 18.04。
2. 更换163源:
sudo cp /etc/apt/sources.list /etc/apt/sources_bak.list
sudo vim /etc/apt/sources.list
注释原有的官方源,替换为以下的163源:
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
3.系统更新:sudo apt-get update
2. 编译运行 2.1 OAI编译- 下载OAI源码
git clone oai / openairinterface5G · GitLab
2. 代码编译
cd openairinterface5g
sudo git checkout develop
source oaienv
cd cmake_targets
vim tools/build_helper
注释以下两句:
$SUDO rm -fr /opt/ssh
$SUDO git clonehttps://gist.github.com/2190472.git /opt/ssh
sudo ./build_oai -I --gNB -w USRP
3.编译完成后,USRP驱动已经安装完毕,USRP插上USB线,运行uhd_find_devices查看是否有信息。
2.2 OAI运行- 修改配置文件
vim ../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1. 106PRB.usrpb210.conf
修改plmn、AMF IP和GNB IP:
plmn_list = ({
mcc = 460;
mnc = 03;
amf_ip_address = ( { ipv4 = "192.168.88.31"; //5GC IP
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0";
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.88.31/24"; //oai本地IP
GNB_INTERFACE_NAME_FOR_NGU = "eth0";
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.88.31/24";
GNB_PORT_FOR_S1U = 2152; # Spec 2152
};
2.启动5GC
这里使用的是自己的5GC。
3. 启动OAI
cd ran_build/build
sudo ./nr-softmodem -O ~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --sa -E
--SA
sa 标志用于在独立模式下运行 gNB。
为了在独立模式下运行 gNB 和 UE,需要以下标志:
--sa
在 gNB 中,--sa 标志执行以下 *** 作:
RRC根据配置文件对SIB1进行编码,通过NR-BCCH-DL-SCH传输。
在 UE 处,--sa 标志将:
解码 SIB1 并启动 SA 的 5G NR 初始接入程序:
- 5G-NR RRC 连接设置
- NAS 认证和安全
- 5G-NR AS 安全程序
- 5G-NR RRC 重配置
- 开始下行和上行数据传输
-E
Apply three-quarter of sampling frequency,23.04 Msps to reduce the data rate on USB/PCIe transfers(only valid for 20MHz).
2.3 接入测试用5G终端进行接入测试,分析Log,可以看到RRC接入过程完成。
2.4 注意事项- 由于源码库在国外,如果编译过程中某个源码目录下载困难,可以从build_helper中将对应的git语句或wget语句复制出来,在前台直接下载,下载完成后,即刻注释掉对应rm语句和git语句,避免重复下载。
- 如果ubuntu 某个国内源由于更新出现问题,在本地apt-get update时出现错误,可以更换其他的国内源。
- 第一次编译完成,为节省后续修改代码后的编译时间,可以将build_helper中源码下载命令注释掉:
# rm -rf /tmp/protobuf-cpp-3.3.0.tar.gz* /tmp/protobuf-3.3.0
# wget --tries=3 --retry-connrefused https://github.com/google/protobuf/releases/download/v3.3.0/protobuf-cpp-3.3.0.tar.gz
# rm -rf /tmp/protobuf-c
# git clone https://github.com/protobuf-c/protobuf-c.git
# rm -rf /tmp/uhd
# git clone https://github.com/EttusResearch/uhd.git
# rm -rf /tmp/bladeRF
# git clone https://github.com/Nuand/bladeRF.git
# rm -rf /tmp/soapysdr
# git clone -b soapy-sdr-0.7.0 --single-branch https://github.com/pothosware/SoapySDR.git
# $SUDO rm -rf /tmp/asn1c
# git clone https://gitlab.eurecom.fr/oai/asn1c.git /tmp/asn1c
3. 拓展OAI编译可以生成的二进制文件有:
- LTE用户: lte-uesoftmodem
- 5G用户端: nr-uesoftmodem
- LTE eNodeB: lte-softmodem
- 5G gNodeB: nr-softmodem
- LTE PHY 模拟器:dlsim和ulsim
- 5G PHY 模拟器: nr_dlschsim nr_dlsim nr_pbchsim nr_pucchsim nr_ulschsim nr_ulsim polartest smallblocktest ulsim ldpctest
构建 PHY 模拟器
可以按如下方式构建 PHY 层模拟器(LTE 和 NR):
cd
source oaienv
cd cmake_targets/
./build_oai -I --phy_simulators
完成构建后,二进制文件在 cmake_targets/phy_simulators/build 目录中可用。
target/bin 目录中也有一个副本,所有二进制文件都以 3GPP 版本号为后缀,目前是.Rel15。
构建 UE、eNodeB 和 gNodeB 可执行文件
下载源文件后,可以使用单个构建命令获取可执行文件:
cd
source oaienv
cd cmake_targets/
./build_oai -I -w USRP --eNB --UE --nrUE --gNB
- 该-I选项是安装先决条件,仅在第一次构建 softmodem 或某些 oai 依赖项发生更改时才需要它。
- 该-w选项是选择射频板支持。
- --eNB是构建lte-softmodem可执行文件和所有必需的共享库
- --gNB是构建nr-softmodem可执行文件和所有必需的共享库
- --UE是构建lte-uesoftmodem可执行文件和所有必需的共享库
- --nrUE是构建nr-uesoftmodem可执行文件和所有必需的共享库
可以实际使用情况,单独构建任何 oai softmodem 可执行文件。完成构建后,二进制文件在cmake_targets/ran_build/build目录中可用。该target/bin目录中还提供了一份副本,所有二进制文件都以 3GPP 版本号为后缀,目前是 .Rel15。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)