USRP(Universal Software Radio Peripheral)作为业界最主流的软件无线电硬件平台,配合开源软件可搭建完整的2G/4G/5G伪基站系统。从OpenBTS的GSM伪基站,到srsRAN的4G LTE,再到OpenAirInterface的5G NR,USRP为通信科研、教学实验和专网部署提供了灵活低成本的解决方案。本文系统梳理基于USRP搭建各代移动通信伪基站的全流程技术要点。
一、通用准备:UHD驱动安装与USRP基础配置
无论搭建哪一代伪基站,首先需要在主机上安装UHD驱动并正确配置USRP。本指南以Ubuntu 22.04 LTS为例 。
1. 安装依赖
sudo apt-get update sudo apt-get -y install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool git libboost-all-dev libfftw3-dev libtool libusb-1.0-0-dev python3-dev python3-numpy swig
2. 从源码编译UHD
git clone https://github.com/EttusResearch/uhd.git cd uhd git checkout v4.6.0.0 # 使用稳定版本 mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. make -j$(nproc) sudo make install sudo ldconfig
3. 配置USB设备权限
对于USB接口的USRP(如B200/B210),需安装udev规则 :
cd uhd/host/utils sudo ./uhd-usrp.rules install sudo udevadm control --reload-rules
4. 下载FPGA镜像
sudo uhd_images_downloader
5. 测试USRP连接
uhd_find_devices uhd_usrp_probe
如果能看到设备信息,说明USRP已正确连接 。
二、2G GSM伪基站:基于OpenBTS + USRP X310
OpenBTS是一个开源GSM伪基站软件,可将USRP转换为完整的2G伪基站,支持商用手机接入 。
1. 硬件准备
- USRP X310 + UBX160子板(或其他支持70MHz-6GHz的型号)
- 支持2G的手机(需开启仅2G模式)
2. 克隆并编译OpenBTS
git clone https://github.com/PentHertz/OpenBTS cd OpenBTS git checkout 5.1.0 ./preinstall.sh ./autogen.sh ./configure --with-uhd make -j$(nproc) sudo make install sudo ldconfig
3. 启动支持服务
sudo smqueue & sudo sipauthserve &
4. 启动OpenBTS
sudo /OpenBTS/OpenBTS
5. 配置伪基站参数
在OpenBTS命令行中,可查看和修改配置 :
config # 查看当前配置 config GSM.identity.ShortName MyGSM # 设置网络名称 config GSM.Radio.Band 900 # 设置频段(900MHz或1800MHz) config GSM.Radio.C0 50 # 设置BCCH频点 restart
6. 手机接入
手机设置中关闭自动选网,手动搜索网络,应能看到网络名称(如"MyGSM")。连接后手机会收到包含IMSI的短信 。
三、4G LTE伪基站:基于srsRAN + USRP B210/N310
srsRAN(原srsLTE)是完整的开源LTE软件套件,包含srsEPC(核心网)、srsENB(伪基站)和srsUE(终端)。
1. 硬件准备
- USRP B210(USB连接)或 USRP N310(网络连接)
- 支持4G的手机或SIM8200 USB Modem
2. 编译srsRAN
git clone https://github.com/srsRAN/srsRAN_4G.git cd srsRAN_4G mkdir build && cd build cmake ../ -DUSE_LTE_RATES=ON make -j$(nproc) sudo make install sudo ldconfig
3. 配置核心网(srsEPC)
编辑配置文件~/.config/srsran/epc.conf :
[mme] mme_code = 0x1a mme_group = 0x0001 tac = 0x0007 mcc = 310 mnc = 014
4. 配置伪基站(srsENB)
编辑~/.config/srsran/enb.conf,指定USRP参数:
[enb] enb_id = 0x19B mcc = 310 mnc = 014 tac = 0x0007 [rf] device_name = uhd device_args = type=b200,master_clock_rate=30.72e6,tx_gain=70,rx_gain=50 [cell] dl_earfcn = 2850 n_rb_dl = 50
对于USRP N310,需指定设备IP地址 :device_args = type=n3xx,addr=10.38.2.1
5. 启动网络
两个终端分别启动核心网和伪基站:
# 终端1:启动EPC srsepc epc.conf # 终端2:启动eNodeB srsenb enb.conf
6. SIM卡配置
在~/.config/srsran/user_db.csv中添加用户信息:
ue1,mil,310014123456789,00112233445566778899aabbccddeeff,opc,ffeeddccbbaa99887766554433221100,8000,000000000000,7,dynamic
四、5G NR伪基站:基于OAI + USRP N300系列
OpenAirInterface(OAI)是开源的5G协议栈实现,支持5G SA模式,可与商用5G手机对接 。
1. 硬件准备
- USRP N310/N321(推荐10G网络接口)
- 支持5G的手机(如OnePlus 8T)或5G模组
2. OAI 5G核心网与伪基站编译
OAI推荐使用Docker容器化部署。NVIDIA Sionna Research Kit提供了完整的脚本化部署方案 。
git clone --recurse-submodules https://github.com/NVlabs/sionna-rk.git cd sionna-rk # 准备系统 make prepare-system sudo reboot # 安装USRP驱动 ./scripts/install-usrp.sh # 构建OAI容器 make sionna-rk
3. 配置USRP参数
编辑config/b200/.env(根据实际USRP型号修改):
USRP_SERIAL=3176DF5 # 替换为你的USRP序列号 UHD_IMAGES_DIR=/usr/share/uhd/images NR_RB=52 # 10MHz带宽 OPERATOR_NAME=OAI PLMN=310014
4. 配置OAI数据库
OAI使用MySQL存储用户信息,需配置SIM卡参数 :
# 使用program_uicc工具写卡 sudo ./program_uicc --adm 12345678 --imsi 262990100016069 --key fec86ba6eb707ed08905757b1bb44b8f --opc C42449363BBAD02B66D16BC975D77CC1
5. 启动5G系统
./scripts/start_system.sh b200 # 使用USRP硬件 # 监控日志 docker logs -f oai-gnb
6. 测试连接
手机手动搜索网络,选择"OAI"或"00101"网络,连接后应能获取IP地址 。
# 在UE侧测试ping ping -I wwan0 google.com # iperf吞吐量测试 iperf3 -u -t 10 -i 1 -b 1M -B 12.1.1.2 -c 192.168.72.135 -R # 下行测试
五、USRP型号选型指南
| 型号 | 连接方式 | 频率范围 | 带宽 | 适用场景 |
|---|---|---|---|---|
| B200/B210 | USB 3.0 | 70MHz-6GHz | 56MHz | 4G/5G教学实验、便携测试 |
| N310 | 1G/10G以太网 | 10MHz-6GHz | 100MHz | 5G分布式系统、MIMO |
| X310 | PCIe/10G以太网 | DC-6GHz | 160MHz | 2G/4G/5G通用平台、高吞吐 |
六、开源软件方案对比
| 软件 | 适用制式 | 核心网支持 | 商用终端兼容性 |
|---|---|---|---|
| OpenBTS | 2G GSM | 内置简化核心网 | 良好(2G手机) |
| srsRAN | 4G LTE | 内置srsEPC | 良好 |
| OAI | 4G LTE / 5G NR | 独立5GC | 良好(需正确配置) |
七、常见问题与排错
1. USRP无法识别
- 检查USB 3.0连接和供电(B210需外接电源)
- 运行
sudo uhd_find_devices确认权限 - 对于网络型USRP(N310/X310),检查网络配置和IP地址
2. 手机无法注册网络
- 确认PLMN(MCC+MNC)与SIM卡一致
- 检查频点配置(dl_earfcn)是否正确
- 查看日志定位鉴权失败原因
3. 时钟同步问题
- 对于网络型USRP,确保master_clock_rate设置正确
- OAI环境中,需配置1588v2或GPS同步
八、参考资料与推荐阅读
- Ettus Knowledge Base: Building and Installing the USRP Open-Source Toolchain
- COSMOS Lab: Amarisoft 5G Network with COTS UEs
- SDR Family: 5G伪基站模拟在SDR平台上使用OAI 5G和srsRAN
- NVIDIA Sionna Research Kit Quickstart
- SDRStore: Build Your Own 2G GSM Base Station with USRP X310
从2G GSM到5G NR,USRP为通信研究者提供了完整的端到端实验平台。通过OpenBTS、srsRAN、OAI等开源软件,可在实验室环境中快速搭建符合3GPP标准的伪基站系统,为协议研究、算法验证和专网部署提供低成本、高灵活性的解决方案。