OpenAirInterface5G (OAI5G) 是一个开源的软件无线电 (SDR) 解决方案,提供了符合 3GPP 规范的无线接入网(gNB、eNB)和用户设备(UE)的软件实现。本文主要记录并总结了 OAI5G NR(5G)独立组网下的接入网(gNB)nr-softmodem 的编译环境准备、网络配置与基本运行。
1. 源码下载与环境配置
OAI 的 develop 分支包含了对 5G NR 的最新支持。下载源码并切换至相应的开发分支:
1 | git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git |
在进行任何特定组件的编译之前,请务必初始化环境配置:
1 | source oaienv |
2. 编译接入网 (gNB)
OAI 提供了便捷的统一构建工具 build_oai,只需指定运行模式及射频接口即可编译所需的组件(例如 gNB、UE 等)。本例以支持 BLADERF 硬件平台为例编译 gNB 软件:
1 | cd cmake_targets |
编译成功后,将在 cmake_targets/ran_build/build 目录下生成可执行文件 nr-softmodem。
3. 运行前准备:核心网路由配置
若需对接已部署的核心网 (5GC),确保 gNB 服务器可以将出站流量发往核心网服务器:
1 | # 将发往核心网网段的流量路由经由物理网卡(例如 eno1) |
4. 运行 gNB (nr-softmodem)
OAI5G 提供了极其灵活的命令行启动参数,主要通过传入相应的配置文件(例如 .conf 结构)并配合各种标志来指定频段、带宽 (PRB)、天线数量及调试模式。
4.1 无核心网联调测试 (No Core Network)
用于单纯的空口与射频物理层验证而不依赖 5GC 部署。
1 | # -O 指定使用的配置文件 |
4.2 接入核心网:SA (独立组网) 模式
配合部署的核心网(如 OAI-CN5G、Open5GS 等),启动基于 Band 41 (2.5GHz) 下行环境运行 5G 独立组网:
1 | # -E: 应用采样频率 23.04 Msps 以减小总线传输压力 (适用于 20 MHz 宽带) |
5. 常用的启动选项与排错参数表
启动过程中如遇到问题或需精细调整时(例如报错、无同步或 CPU 超出),可以通过 sudo ./nr-softmodem --help 察看 OAI 模块详尽的运行参数。
一些常用并重要的配置标志:
| 命令标志 | 说明 |
|---|---|
| 射频硬件与时钟 | |
--rf-config-file |
给射频前端提供特定的初始化配置文件 (多用于 LMS7002M) |
--clock-source |
硬件参考时钟源配置 (0: 内部、1: 外部PPS、2: GPSDO) |
--time-source |
同步时间基准配置 (0: 内部、1: 外部PPS、2: GPSDO) |
--emulate-rf / --rfsim |
启动无线电模拟器(纯软件验证,无须真实 SDR 射频前端) |
--worker-config |
WORKER_DISABLE 或 WORKER_ENABLE,线程池及 CPU 核亲和性 |
-C / --CO / -a |
分别用于配置所有载波组件的中心下行频率、上行频率偏移与通道 ID 偏移 |
| 物理架构隔离 | |
--split73 |
分列架构 Option 7.3 配置 <CU|DU>:<RemoteIP>:<RemotePort> |
--sa / --nsa |
区分 gNB 运行在独立组网模式或非独立组网模式下 |
--noS1 |
物理侧排障使用,切断上层接口依赖 |
| 网络诊断与日志 | |
-C , -g |
开启在线日志跟踪以及详细度调整(例如 4:Trace, 3:Debug) |
--disable-stats |
关闭控制台物理层信息 (L1/L2 MAC) 打桩输出以拯救性能瓶颈环境 |
--chest-freq / --chest-time |
时频域的通道估计(物理层多径衰落排障相关参数) |
提示:如果出现物理硬件超时延迟或 TX 过度运行 (如出现大量 U、O 错误),建议检查系统的 dma_latency (
/dev/cpu_dma_latency) 与 CPU 缩放状态 (CPU scaling governor 置为performance) 并适当调整--thread-pool亲缘性。