news 2026/4/19 15:57:18

用USRP B210和Ubuntu 18.04搭建5G OAI开源基站:从硬件选型到RRC连接成功的保姆级避坑记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用USRP B210和Ubuntu 18.04搭建5G OAI开源基站:从硬件选型到RRC连接成功的保姆级避坑记录

用USRP B210搭建5G OAI基站的实战避坑指南:从硬件选型到RRC连接全流程解析

在开源5G技术领域,OAI(OpenAirInterface)平台正成为研究者和工程师探索无线接入网技术的首选工具。不同于商业设备的封闭性,OAI提供了从物理层到核心网的完整开源实现,让低成本搭建实验性5G网络成为可能。本文将聚焦于使用性价比较高的USRP B210软件无线电设备,在Ubuntu 18.04系统上完成OAI gNB(5G基站)的部署,并实现终端设备的RRC连接。这一方案特别适合预算有限但需要真实5G环境验证算法的研究生、科研团队以及通信技术爱好者。

1. 硬件选型与系统准备:为什么B210是入门级5G实验的理想选择

1.1 USRP设备横向对比:B210 vs B310 vs N310

在搭建OAI 5G基站时,硬件选择直接影响实验成本和可实现的功能。主流USRP设备参数对比如下:

设备型号最大带宽价格区间FPGA资源适用场景
B21056MHz$1,000-$1,500Spartan6教学实验、基础研究
B31080MHz$3,000-$4,000Kintex7中等规模实验
N310100MHz$5,000-$6,000Kintex7专业研发、生产测试

对于5G NR研究,B210的56MHz带宽虽然无法支持完整的100MHz载波,但足以验证大多数物理层算法和协议栈功能。其优势在于:

  • 成本优势:仅为高端设备的1/5到1/3
  • 供电简便:单USB 3.0供电,无需额外电源
  • 便携性:紧凑的单一板卡设计

实际测试表明,在20MHz带宽配置下,B210能稳定支持4个UE同时接入,满足大多数研究需求。

1.2 计算平台要求与优化建议

OAI 5G gNB对计算资源有较高要求,推荐配置:

# 查看CPU信息命令示例 lscpu | grep -E 'Model name|Core(s) per socket'
  • 最低配置:Intel i7-6700(4核8线程),16GB内存
  • 推荐配置:Intel i9-9900K(8核16线程)或以上,32GB内存
  • 关键优化点
    • 关闭BIOS中的节能模式
    • 在Ubuntu中设置CPU性能模式:
      sudo apt install cpufrequtils echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils sudo systemctl restart cpufrequtils

1.3 Ubuntu 18.04系统调优

针对OAI编译环境,需对Ubuntu进行专项优化:

  1. 更换国内软件源

    sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list sudo apt update
  2. 安装基础依赖

    sudo apt install -y git build-essential cmake libfftw3-dev \ libmbedtls-dev libboost-program-options-dev libconfig++-dev \ libsctp-dev libuhd-dev uhd-host
  3. USB3.0性能优化

    echo 'options usbcore autosuspend=-1' | sudo tee /etc/modprobe.d/usb-autosuspend.conf sudo reboot

2. OAI源码编译:解决网络依赖与常见错误的实战方案

2.1 源码获取与分支管理

OAI代码库更新频繁,建议使用develop分支获取最新功能:

git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git cd openairinterface5g git checkout develop git submodule sync --recursive git submodule update --init --recursive

遇到子模块下载失败时,可手动修改.gitmodules文件中的URL,将gitlab.eurecom.fr替换为github.com上的镜像源。

2.2 编译过程中的典型问题与解决方案

问题1:protobuf编译失败

错误信息:

CMake Error at cmake_modules/FindPROTOBUF.cmake:64 (message): Protobuf compiler version 3.x required

解决方案:

# 手动安装protobuf 3.20.1 wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.1/protobuf-cpp-3.20.1.tar.gz tar -xzf protobuf-cpp-3.20.1.tar.gz cd protobuf-3.20.1 ./configure --prefix=/usr make -j$(nproc) sudo make install
问题2:UHD驱动兼容性问题

当同时存在多个UHD版本时,会导致运行时冲突。推荐解决方案:

# 查看已安装UHD版本 uhd_find_devices --version # 清理旧版本 sudo apt purge libuhd-dev uhd-host # 从源码编译安装 git clone https://github.com/EttusResearch/uhd.git cd uhd/host mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr make -j$(nproc) sudo make install

2.3 针对性编译选项

针对B210设备的优化编译命令:

source oaienv cd cmake_targets ./build_oai -I --gNB -w USRP --ninja

关键参数说明:

  • -I:安装所有依赖项
  • --gNB:仅编译gNB相关组件
  • -w USRP:指定USRP硬件支持
  • --ninja:使用更快的ninja构建系统

3. 配置文件深度解析:关键参数设置与网络对接

3.1 gNB核心配置文件解读

gnb.sa.band78.fr1.106PRB.usrpb210.conf为例,关键配置段包括:

# PLMN标识设置 plmn_list = ({ mcc = 460; # 移动国家码 mnc = 03; # 移动网络码 mnc_length = 2; }); # AMF连接配置 amf_ip_address = ({ ipv4 = "192.168.88.31"; # 核心网IP active = "yes"; preference = "ipv4"; }); # 射频参数 tx_gain = 90; # 发射增益(需根据实际环境调整) rx_gain = 110; # 接收增益 dl_center_frequency = 3500e6; # 3.5GHz频段

3.2 与5GC核心网的对接要点

  1. IP地址规划

    • gNB与AMF需在同一子网
    • 避免使用常见网段如192.168.1.x
  2. SCTP端口配置

    NETWORK_INTERFACES : { GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.88.30/24"; GNB_PORT_FOR_NG_AMF = 38412; # 标准NGAP端口 }
  3. N2接口调试命令

    # 检查SCTP连接状态 sudo netstat -tulnp | grep 38412

3.3 射频参数优化实践

通过实际测试得出的B210推荐参数:

参数项城区环境实验室环境说明
tx_gain8090过高会导致信号失真
rx_gain100110根据背景噪声调整
sample_rate23.04e623.04e6必须使用3/4采样率模式
channel_bandwidth20e620e6B210最大支持56MHz

4. 启动调试与RRC连接验证

4.1 分阶段启动策略

  1. 预检查阶段

    # 验证USRP连接 uhd_usrp_probe # 检查CPU频率 watch -n 1 "cat /proc/cpuinfo | grep 'MHz'"
  2. 最小化启动

    sudo ./nr-softmodem -O ../gnb.sa.band78.fr1.106PRB.usrpb210.conf \ --sa --noS1 --nokrnmod 1
  3. 完整启动

    sudo ./nr-softmodem -O ../gnb.sa.band78.fr1.106PRB.usrpb210.conf \ --sa -E --rfsimu

4.2 常见启动错误排查

错误1:UHD设备未找到
[ERROR] [UHD] No devices found

解决方案:

# 重载UHD固件 sudo uhd_images_downloader uhd_find_devices
错误2:SIB1编码失败
[PHY] ERROR: Illegal MIB parameter

需检查配置中的频段参数是否与硬件能力匹配。

4.3 RRC连接成功的关键指标

在gNB日志中确认以下关键流程:

  1. Received RRCSetupRequest:终端发起连接请求
  2. Sending RRCSetup:基站下发配置
  3. Received RRCSetupComplete:连接建立完成
  4. UE Context Setup:核心网注册成功

完整的信令流程通常能在10秒内完成,实测延迟主要取决于:

  • USRP与终端间的射频环境
  • 主机CPU的单核性能
  • 5GC核心网处理速度

在i7-8700K平台上,使用B210实测的RRC连接建立时间为平均320ms,满足大多数研究需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 15:52:42

GitHub中文界面终极指南:三步实现GitHub汉化

GitHub中文界面终极指南:三步实现GitHub汉化 【免费下载链接】github-hans [废弃] {官方中文马上就来了} GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-hans 对于很…

作者头像 李华
网站建设 2026/4/19 15:48:10

普通人如何理解并用好AI算力

先搞清楚AI算力到底是什么很多人把AI算力等同于GPU或者芯片,其实不全对。简单说,AI算力指的是系统处理人工智能任务的能力,包括计算速度、内存带宽、并行处理效率等等。你可以把它想象成做饭用的灶台火力——火太小,炖一锅汤要半天…

作者头像 李华
网站建设 2026/4/19 15:47:26

Next-Shadcn-Dashboard-Starter:现代化管理面板的终极完整解决方案

Next-Shadcn-Dashboard-Starter:现代化管理面板的终极完整解决方案 【免费下载链接】next-shadcn-dashboard-starter Open source admin dashboard starter built with Next.js 16, shadcn/ui, Tailwind CSS, and TypeScript. 项目地址: https://gitcode.com/gh_m…

作者头像 李华