前言
OAI的官网源代码作者一直在更新维护,导致网上会有一些资料已经失去了时效性,因此在踩坑无数次后搭建成功,商用终端也能连接上5G信号并上网,故分享给大家,供学习交流。
部署环境
电脑:ubuntu18.04物理机(核心网和基站都部署在了一台电脑上,省去了网络路由转发的操作,让OAI更好找到虚拟地址)
手机:红米k40s(测试过oppo,vivo,荣耀都没成功,按理来说都是高通芯片,但有些手机确实连接不上)
射频设备:USRP b210
源码地址:oai / openairinterface5G · GitLab (eurecom.fr)
部署过程我就不赘述了,毕竟参考其他博客的部署过程就可以,提一嘴的是我核心网启动模式是mini-nonrf版本的,所以一些镜像也没全拉在本地。
docker pull oaisoftwarealliance/oai-amf:latest
docker pull oaisoftwarealliance/oai-spgwu-tiny:latest
docker pull oaisoftwarealliance/oai-smf:latest
docker pull oaisoftwarealliance/trf-gen-cn5g:latest
还有编译基站代码的时候我将USRP设备的编译过程单独放在了一个文件夹内USRP_Drive_OAI。
mkdir USRP_Drive_OAI # 与gNB目录可同级
cd USRP_Drive_OAI
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
git checkout develop
cd openairinterface5g
source oaienv
cd cmake_targets
./build_oai -I -w USRP
然后再回到基站的文件夹内编译基站相关代码,生成可执行文件nr-softmode 和 nr-uesoftmode。
需修改的配置
核心网端
添加商用终端信息
1.直接定位数据库文件进行修改(推荐)
找到oai-cn5g-fed/docker-compose/database/oai_db1.sql文件
docker核心网中启动min-no nrf模型的启动逻辑就是读取这个sql文件,每次启动都需要重新读取sql文件简历数据库表
2.终端(命令行)修改
首先启动核心网
python3 core-network.py --type start-mini --scenario 2
输入以下命令进入docker环境中的mysql:
docker exec -it mysql /bin/bash
mysql -uroot -plinux -D oai_db
show tables;
找到user表,添加信息:
INSERT INTO users VALUES ('001010000000001','380561234567','862723064164746',NULL,'PURGED',50,40000000,100000000,47,0000000000,1,0x0C0A34601D4F07677303652C0462535B,0,0,0x40,'ebd07771ace8677a',0x63bfa50ee6523365ff14c1f45f88737d);
插入数据的值释义:其他都为默认值
001010000000001 | IMSI | 移动用户识别码 |
380561234567 | Msidn | 手机号 |
862723064164746 | IMEI | 移动设备识别码 |
0x0C0A34601D4F07677303652C0462535B | Key | 鉴权密钥 |
0x63bfa50ee6523365ff14c1f45f88737d | OPC | 源信令点编码 |
修改DNN列表
前期使用列表中第一个oai并不能成功,系统会顺次接入(用wireshark抓包后显示用oai总被拒)后直接用列表中ims作为后续手机设置的apn并修改相应的网段。
修改的文件为:
oai-cn5g-fed/docker-compose/docker-compose-mini-nonrf.yaml
基站端
修改基站配置文件(可以使用vim或者直接定位到文件修改)
vim OAI/gNB/openairinterface5g/targets/PROJECTS/GENERIC-NR- 5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
修改基站PLMN:
同时,调试前期因为发射功率过低的问题,参照商用基站配置的参数,对一些参数进行了调整,比如手机最大发射功率从20db调整到了26db等,(具体conf文件我再分享一下)
烧写sim白卡
某宝上会有烧写白卡所需要的写卡器和白卡,可以问卖家要烧卡软件,不同的烧卡软件所适配的卡也不同,需要提前沟通好,当然我这个软件显示是LTE的,但是与NR也是互通的,还是可以用于5G基站测试。
1.插卡读卡
2.写入IMSI
3.写入Ki和OPC,剩下参数需手动删除后点击Auto自动填入
4.写入手机号
5.点击保存
6.写入白卡
OPC | 63bfa50ee6523365ff14c1f45f88737d |
key(ki) | 0C0A34601D4F07677303652C0462535B |
IMSI | 001010000000001 |
PLMN | 00101 |
核心网UE的IMSI默认值为208950000000031,烧写后没有连接成功,因此采用其他资料大多采用的00101
UE端配置
接入点(APN)配置
SIM 插入手机中,在手机中新建APN,一般来说是设置->移动网络->移动数据->接入点名称->新建APN
主要修改 名称、apn这两个参数,因为前文提到我使用核心网中DNNlist中第一个oai的APN,多次连接被拒,只有ims可以连接成功,因此这里设置的ims,核心网配置文件中路由转发等相关设置也设置的ims对应的网段。
神秘代码
在手机拨号页面输入*#*#4636#*#*可以进入手机测试界面,在界面中设置首选网络类型设置“NR only”:
5G,启动!
依照核心网,基站的顺序启动,然后将手机的飞行模型打开,关闭,手机就有5G信号啦,并且如果核心网连接了网络,手机的5G数据也可以正常做业务。