LimeSDR实验教程(13) LTE基站、终端、核心网 (srsLTE nextepc)
接下来我会讲一个大型应用,实现LTE基站和LTE终端。其实这个应用之前国内就有很多人做,但是一般都是使用OAI实现的,这个软件包虽然很全,但是安装很麻烦,而且很不稳定。我使用的是srsLTE实现的,它包含了EPC、eNodeB和UE三大部分。srsepc是一个简易核心网,srsenb是基站,srsue是终端。srsepc和srsenb可以运行在一台电脑上,srsue必须运行在另一台电脑上。然后它们之间就可以建立一个高速连接,实现以太网通信,就好像互相之间连了一根网线一样。
演示视频:https://www.bilibili.com/video/av78917560
演示视频2:https://www.bilibili.com/video/av79578637
除了可以为2台电脑提供连接外,还可以用普通手机或者LTE模块接入srsepc和srsenb的网络,但是要自己写卡并配置user_db.csv,另外srsue也支持连接运营商的基站,但是需要另外购买一个sim读卡器。
为了本教程的完整性,我会从头开始安装,你只需要安装一个干净的ubuntu即可,我现在用的是16.04。
先安装Lime的驱动。如果你apt装过了就不要重新装,否则会有问题。soapy我建议你自己编译安装,如果apt安装会自动安装limesuite,这样limesuite就不是最新版本的了。不过soapy不能用太新的版本,否则srslte可能不兼容它,可能要从release里下载一个老一点的版本。
#packages for soapysdr available at myriadrf PPA
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update#install core library and build dependencies
sudo apt-get install git g++ cmake libsqlite3-dev#install hardware support dependencies
sudo apt-get install libsoapysdr-dev libi2c-dev libusb-1.0-0-dev#install graphics dependencies
sudo apt-get install libwxgtk3.0-dev freeglut3-devgit clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build
cd build
cmake ..
make -j4
sudo make installgit clone https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
git checkout stable
mkdir builddir && cd builddir
cmake ../
make -j4
sudo make install
sudo ldconfigcd LimeSuite/udev-rules
sudo ./install.sh
装完以后安装srsLTE。
sudo apt-get install cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-devgit clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake -DUSE_LTE_RATES=True ..
make
make testsudo make install
sudo ldconfig
srslte_install_configs.sh user
如果你需要图形界面,就再安装srsGUI。
sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-dev libqt4-dev
git clone https://github.com/srsLTE/srsGUI.git
cd srsGUI
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
这样就基本装完了。
你可以到~/.config/srslte/下找到enb.conf和ue.conf来编辑你所想要的工作频段(arfcn)和带宽(prb),另外收发增益也很重要。
现在这套软件同时支持LimeSDR-USB和LimeSDR Mini。
运行:
在电脑1上开2个终端窗口,分别运行下面两个命令。
sudo srsepc
sudo srsenb
在电脑2上开1个终端窗口,运行下面命令。
sudo srsue
要选择天线可以在enb.conf和ue.conf里加入下面的语句
device_name = soapy
device_args = rxant=LNAL,txant=BAND1
现在可以在两台电脑上运行ifconfig看看多出来一个虚拟网卡,两个电脑可以互相ping对方的ip地址172.16.0.X,并且可以ssh登录。
前几天我做实验,发现了奇怪的现象,我用两个mini一个做基站一个做终端不行,必须用mini做基站,usb做终端,如果反一反usb做基站,mini做终端就不行,而且即使mini做基站,usb做终端也不是很稳,甚至不能保证每次都能接上。所以昨天我又试了试基站和终端都用LimeSDR-USB,信号质量提高了不少,见演示视频2。
我现在是3MHz的小区,prb 15,这个带宽对电脑配置要求也比较低,可以用被动散热的M3芯片跑(我用的是8代m3,终端或者基站都可以做),传输文件大概400kbps~700kbps,cpu占用率在30%以下。我后来在M3上单开基站,发现prb 100的20MHz小区也可以跑,cpu占用比i5 5200u还低。
还测试了其他频段arfcn 5200和5800,它们属于LTE FDD Band 13和17,频率都是700MHz的,都是北美运营商用的频段,用国外手机和模组就能支持。后来还试了arfcn 9870,这个是460MHz的,工业用频段,网上可以找到配套cpe。另外我还手动设置过dl_freq和ul_freq,只要enb和ue都设置为同样的频率值,可以脱离3gpp的规定,任意使用任何频段并互相通信。
我现在已经可以用enb作为路由器接入互联网了。
参考这个文章:https://blog.csdn.net/qq_30943197/article/details/83863819
首先在enb上运行下面的命令,eth0表示你连上公网的网卡,如果是别的可以用ifconfig里查到的名字替换掉。
sudo srsLTE/srsepc/srsepc_if_mask.sh eth0
然后ue上运行下面命令。ifconfig里tun_srsue后面会有小序号,不用填。
sudo route add default gw 172.16.0.1 tun_srsue
今天我试过商用终端(华为p20)接入enb了,要写sim卡,必须要用mil的方式,不能用xor(xor是srsue用的),然后把user_db.csv里的IMSI,Key(KI),OPC填入写卡软件就行。
#
# .csv to store UE's information in HSS
# Kept in the following format: "Name,Auth,IMSI,Key,OP_Type,OP,AMF,SQN,QCI,IP_alloc"
#
# Name: Human readable name to help distinguish UE's. Ignored by the HSS
# IMSI: UE's IMSI value
# Auth: Authentication algorithm used by the UE. Valid algorithms are XOR
# (xor) and MILENAGE (mil)
# Key: UE's key, where other keys are derived from. Stored in hexadecimal
# OP_Type: Operator's code type, either OP or OPc
# OP/OPc: Operator Code/Cyphered Operator Code, stored in hexadecimal
# AMF: Authentication management field, stored in hexadecimal
# SQN: UE's Sequence number for freshness of the authentication
# QCI: QoS Class Identifier for the UE's default bearer.
# IP_alloc: IP allocation stratagy for the SPGW.
# With 'dynamic' the SPGW will automatically allocate IPs
# With a valid IPv4 (e.g. '172.16.0.2') the UE will have a statically assigned IP.
#
# Note: Lines starting by '#' are ignored and will be overwritten
ue2,mil,001010123456780,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,00000000510f,7,dynamic
ue1,xor,001010123456789,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,9001,000000001234,7,dynamic
上面是user_db.csv,我们只能用ue2的参数,ue1的不能用,把对应信息填入写卡软件即可。
我开了enb,然后手机连上去,另一个电脑开ue,可以同时接入同一个enb,sdr我都用limesdr mini也可以。不过似乎手机会被srsue干扰掉。
另外我还测试了一下最大带宽,我一个enb+limesdr mini开了75prb也就是15MHz小区,手机也可以接上,测速确实比10MHz快,不过速度不太稳定。试下来还是10MHz最好。我用了双工器后只能开5MHz小区手机才能连上,星座图完美,但是limesdr mini的ue这时会有dc offset。所以我还是想开10MHz小区,后来我用频谱仪看了一下,发现我这运营商信号太强,开10MHz的时候,下行信号左侧会被干扰,5MHz时不会,所以我把arfcn改为2560,这时手机和srsue都能接入了,尤其是手机星座图很好,srsue也有好的时候但是不稳定,看来双工器是有用的,问题是ue的反向双工器不太好找。
接下来我要测试使用另一种方案的epc对接srsenb了,这样有望实现基站切换功能,我参考了下文,但是我是apt安装的。
https://blog.csdn.net/qq_32037393/article/details/96269517
我现在本机同时安装nextepc和srsenb可以正常运行,挺稳定。
今天我还测试成功了nextepc和srsenb分别安装在局域网内的两台不同电脑上,mme连接成功了,并且手机能接入,能ping通epc也能上外网。
我之前参考的那篇文章有不少问题,今天又参考了一篇oai epc + srsenb的文章,才搞定了。
http://www.pianshen.com/article/809368876/
我的nextepc是在ubuntu 18.04上apt安装的。
步骤如下:
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository ppa:nextepc/nextepc
sudo apt-get update
sudo apt-get -y install nextepcsudo apt-get -y install curl
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
curl -sL https://nextepc.org/static/webui/install | sudo -E bash -
装完要验证一下:
sudo systemctl status nextepc-mmed
● nextepc-mmed.service - NextEPC MME DaemonLoaded: loaded (/lib/systemd/system/nextepc-mmed.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2019-02-21 19:29:43 MST; 27s ago...
sudo systemctl status nextepc-sgwd...
sudo systemctl status nextepc-pgwd...
sudo systemctl status nextepc-hssd...
sudo systemctl status nextepc-pcrfd...ifconfig pgwtun
pgwtun Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:45.45.0.1 P-t-P:45.45.0.1 Mask:255.255.0.0inet6 addr: fe80::50f6:182c:5aa3:16bb/64 Scope:Linkinet6 addr: cafe::1/64 Scope:Global...
nextepc配置我没做,都是默认值。
装完后还要增加ue,在epc电脑的http://locahost:3000,网页里配置就行,用户名admin,密码1423,参考那篇博客截图填写imsi等信息就行。
装完了nextepc要配置srsenb,下面是我的例子:
epc的ip是192.168.1.15,enb的ip是192.168.1.11。
我摘录了enb.conf的关键部分。
[enb]
enb_id = 0x19B
cell_id = 0x01
phy_cell_id = 1
tac = 0x3039 #0x0007
mcc = 001
mnc = 01
mme_addr = 192.168.1.15 #127.0.1.100
gtp_bind_addr = 192.168.1.11 #127.0.1.1
s1c_bind_addr = 192.168.1.11 #127.0.1.1
n_prb = 25
#tm = 4
#nof_ports = 2
可以看到要改tac, mme_addr, gtp_bind_addr, s1c_bind_addr。
mme_addr是局域网中epc电脑的网卡地址。gtp_bind_addr和s1c_bind_addr填写的是enb电脑的网卡ip。
如果ue要访问公网,在epc电脑上还要做一件事,要在命令行里运行如下3行。
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o wlp7s0 -j MASQUERADE
sudo iptables -I INPUT -i pgwtun -j ACCEPT
其中wlp7s0替换为你的连接公网的网卡名字,可以在ifconfig里查到,这一步与srsepc的srsepc_if_mask.sh差不多的,只不过nextepc没做成一个单独的脚本。
接下来我就可以试试两台enb连接局域网内的epc了。到时再看看能不能做基站切换。
这里还要插一段,作为记录。
srsepc和srsenb也可以分开在两台电脑上运行,只需要更改epc.conf和enb.conf即可。
现在192.168.1.11作为epc,192.168.1.15作为enb。
epc.conf摘录
[mme]
mme_code = 0x1a
mme_group = 0x0001
tac = 0x0007
mcc = 001
mnc = 01
mme_bind_addr = 192.168.1.11 #127.0.1.100
apn = srsapn
dns_addr = 8.8.8.8
encryption_algo = EEA0
integrity_algo = EIA1
paging_timer = 2[spgw]
gtpu_bind_addr = 192.168.1.11 #127.0.1.100
sgi_if_addr = 172.16.0.1
sgi_if_name = srs_spgw_sgi
max_paging_queue = 100
enb.conf摘录
[enb]
enb_id = 0x19B
cell_id = 0x01
phy_cell_id = 1
tac = 0x0007
mcc = 001
mnc = 01
mme_addr = 192.168.1.11 #127.0.1.100
gtp_bind_addr = 192.168.1.15 #127.0.1.1
s1c_bind_addr = 192.168.1.15 #127.0.1.1
n_prb = 50
#tm = 4
#nof_ports = 2
注意,srsepc和nextepc的mcc mnc分别是001和01,这两个项目是一样的,tac在nextepc里是0x3039,srsepc是0x0007。因此,如果srsenb要连它们,他的tac也要对应填写,否则连不上去的。
现在我用两台电脑+sdr实现了两个基站并同时接入局域网内的epc,可以实现基站切换了。
两个基站下的手机都可以访问同一台服务器。
实验视频:https://www.bilibili.com/video/av86505146/
不过目前的切换必须要重新切一下飞行模式,也就是说在一个基站覆盖范围外才有可能切到另一个基站上,这样两个基站之间的重叠区域还不知道如何处理,貌似还不是无缝切换。
LimeSDR实验教程(13) LTE基站、终端、核心网 (srsLTE nextepc)相关推荐
- LimeSDR实验教程(15) Lattepanda + LimeSDR Mini转接板
最近做portapack教程,感觉反响不错,Portapack的优点是可以脱离电脑使用,具有很高的便携性.同样的功能在portapack上运行比在电脑上运行感觉实用了不少,我早期也是被portapac ...
- 【OAI】【debug】分立机器基站接入核心网并调试可用解决之路
这里写目录标题 问题描述 解决思路1--机器网卡设置到192.168.70.0网段 测试过程 结论 解决思路2 docker-swarm 测试过程 结论 讨论: 原始方案路由关系详解 0422调试问题 ...
- LimeSDR实验教程(10) DVB-S发射和接收
我在windows下实现了dvb-s的发射和接收. 发射使用的是limesdr-mini,接收使用的是hackrf/limesdr-usb. 这次和以前的dvb-t发射不同,这次的发射和接收都是用软件 ...
- LimeSDR实验教程(11) GFSK音频发射和接收
gnuradio 3.7.13 下面的流图可以实现本地回环,可以听一下声音是不是录音文件里的,其中采样率必须等于wav文件实际采样率,要不然声音会有问题,可以查看wav的详细信息,观察采样率和通道数, ...
- NB-IoT 接入 5G 核心网丨边缘计算阅读周
#边缘计算阅读周# 读书的人,有梦可做. 边缘计算社区联合6大出版社邀您一起阅读,一起做追梦人. 在近日结束的ITU-R WP5D#35会议上,3GPP技术正式被接受为ITU IMT-2020 5G ...
- amf组网_【5G核心网】5G核心网SA组网方案及4G/5G互操作探讨
摘 要: SA(Standalone 独立组网)架构是5G核心网的目标架构.在SA架构下,4G/5G互操作是在核心网实现.本文针对4G/5G核心网互操作,分析了控制面网元整体部署架构.接入层网元组网 ...
- 【5G架构】5G 核心网——基于服务的网络架构
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...
- 2021-2027全球与中国核心网电信设备市场现状及未来发展趋势
报告摘要 本文研究全球及中国市场核心网电信设备现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.日本.中国.东南亚.印度等地区的现状及未来发展趋势. 2019年全球核心网电信设 ...
- zigbee CC2530 系列教程 13 烟雾传感器实验
所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.13烟雾传感器实验 4.13.1 实验目的 学习使用烟雾传感器. 4.13.2 实验讲解 首先根据开发板硬件原理图确定烟雾传 ...
最新文章
- t-SNE algorithm(t-分布邻域嵌入算法)
- 数组之间的计算matlab,MATLAB软件数组的运算
- LightOJ 1088 - Points in Segments 二分
- ps -aux|grep 详细信息
- android auto answer,Incoming call auto answer in android 4.0.3
- Spring集合类型依赖查找
- IEC61850报告服务(报文解析)
- oracle instr函数 判断字段中是否有换行符
- 16 个优秀的 Vue 开源项目
- 沉舟侧畔千帆过,病树前头万木春
- Unity Scroll View在Clamped模式下无法移动
- mysql有mdf文件和ldf文件吗_如何得到.MDF和.LDF文件
- python实现淘宝客服自动回复语_Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例...
- OvR逻辑回归多分类算法
- python解决微分方程(数值解法)
- idea2019版本有效激活码error问题
- aspx网页背景图片设置代码_Vue+CSS3制作双螺旋DNA动画:代码详解和基础知识复习
- 在胸口凝成一颗鲜红的朱砂印
- RecyclerView 梳理:点击长按事件、分割线、拖曳排序、滑动删除
- windows pyinstaller打包pytorch程序到exe文件
热门文章
- python读取一张图片未响应_opencv python 图片读取与显示图片窗口未响应问题的解决...
- Network | 高颜值动态网络可视化工具(二)
- 前端使用 heyui 配置
- Linux系统C编程资料
- 【翻译】如何选择一个开源软件许可证 Choosing an OSS license doesn’t need to be scary...
- 用J-Flash合并两个HEX烧录文件
- 软件在win10上安装,请问如何解决被Windows Defender SmartScreen阻止
- Trustlines Network:以太坊上实现 Ripple 瑞波协议
- 命令行静默安装msu格式的Windows更新离线安装包
- 尝试cartographer中使用scan和odom来建图,失败(可能实验室的中继机器人odom有问题)总结