目录
前言
1. 设备环境
1.1 硬件环境
1.2 USRP
1.3 系统安装
2. 编译运行
2.1 OAI编译
2.2 OAI运行
2.3 接入测试
2.4 注意事项
3. 拓展
OAI是还算不错的5G开源代码,如同4G时的srsLTE一样。要搭建实际的OAI运行环境,必不可少的就是USRP,对于5G SA来说,最好是用USRPB310进行搭建,但B310购买相对较难,价格也偏高,而B210就要实惠多了。因此本文使用了USRP B210进行了搭建。以OAI当前开发进度,终端还不能完全入网,但RRC连接是可以走完的。
OAI(OpenAirInterface)是欧洲EURECOM组织发起并维护的一个开源NR/LTE项目。
5G-NR 的处理要求远高于 4G,因此需要高端的PC或服务器。目前OAI正在使用的有:
USRP有三种可选:
这是专为 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 连接和便捷的总线电源。
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
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查看是否有信息。
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).
用5G终端进行接入测试,分析Log,可以看到RRC接入过程完成。
# 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
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
/openairinterface5g/ source oaienv
cd cmake_targets/
./build_oai -I --phy_simulators
完成构建后,二进制文件在 cmake_targets/phy_simulators/build 目录中可用。
target/bin 目录中也有一个副本,所有二进制文件都以 3GPP 版本号为后缀,目前是.Rel15。
构建 UE、eNodeB 和 gNodeB 可执行文件
下载源文件后,可以使用单个构建命令获取可执行文件:
cd
/openairinterface5g/ 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。