本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
温馨提示:“开源SDR实验室”是北京的。
本文使用LimeSDR-USB和自己的手机来实现基站和手机之间的握手通信。相关功能仅限用于科研实验。
目录
一、srsLTE简介
上图中的相关名词解释:
MME:移动管理实体,负责控制面功能,如非接入层信令的加密、完整性保护和安全控制,并对空闲状态下的移动台进行移动性管理,
S-GW:服务网关,负责用户面功能,如终止用户面数据包及用户平面切换
P-GW:分组数据网关,终结和外部数据网络(如互联网、IMS等)的SGi接口,是EPS锚点,即3GPP与non-3GPP网络间的用户面数据链路的锚点
eNodeB(eNB):演进型节点B,具有3GPP R5/R6/R7的Node B功能和大部分RNC功能(接入层功能)
演进型通用陆基无线接入网(E-UTRAN)仅由eNodeB组成,取消了RNC。
演进型分组核心网(EPC)由MME和S-GW组成,演进后的系统仅存在分组交换域,取消了电路交换域,eNodeB之间通过X2接口互连,eNodeB通过用户面接口S1-GW与S-GW相连,eNodeB通过S1-MME接口与MME相连。
以下srsLTE介绍内容来自https://www.oschina.net/p/srslte,详情请查看该网页。
srsLTE是软件无线电系统(SRS)的开源SDR LTE软件套件。是由爱尔兰SoftwareRadioSystems (SRS)公司开发实现的免费开源LTE SDR平台,在AGPLv3 license许可下发布,并且在实现中使用了OpenLTE的相关功能。SrsLTE的开源过程大致经历了三个阶段:
- srsLTE包含全协议栈的UE(srsUE)以及一个物理层下行链路的收发链路,该阶段可以使用第三方(如OAI)的eNB以及EPC来搭建LTE SDR系统;
- srsLTE开源了srseNB,即srs具备了全协议栈的eNB以及UE,没有EPC,因此需要使用第三方(如Amarisoft)的EPC,搭建LTE SDR的整个网络
- srsLTE开源了srsEPC,即核心网功能,且一如往常的代码简洁,配置简单,使用方便,到目前为止,既可以通过srsLTE搭建完整的LTE网络。
srsLTE包括:
- srsUE:完整的 SDR LTE UE 应用,支持从 PHY 到 IP 层特性
- srsENB:完整的 SDR LTE eNodeB 应用
- srsEPC:轻量级 LTE 核心网络实现,支持 MME, HSS 和 S/P-GW
- 高度模块化的共用库:PHY, MAC, RLC, PDCP, RRC, NAS, S1AP 和 GW layers.
二、实验硬件软件
软件---Ubuntu运行支持Limesdr、SoapySDR、Pothos的环境,srsLTE软件。
硬件---LimeSDR Mini、拉杆天线
你需要购买一张LTE测试卡及配套读写器。可以TB搜搜。
三、编译安装
1、搭建LimeSDR环境
使用apt-get安装,依次输入以下命令即可。【如果你之前已经用apt-get安装了LimeSDR的环境,则此步骤可省略】。
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images
sudo apt-get install soapysdr-tools soapysdr-module-lms7
将LimeSDR插入电脑USB3.0端口,使用SoapySDRUtil命令测试,看是否能发现设备:
SoapySDRUtil --find
然后,根据我的博客https://blog.csdn.net/OpenSourceSDR/article/details/79761800
的第四部分《用LimeSuiteGUI来测试一下LimeSDR-USB的接收》进行基本测试。
2、安装srsLTE
在Ubuntu中可直接使用以下apt-get install命令直接安装,但是经过验证,这种安装方法在运行程序时会出现问题,所以暂时先记录在这里,但是不建议大家使用。
sudo add-apt-repository ppa:srslte/releases
sudo apt-get update
sudo apt-get install srslte -y
本文建议通过git下载源码安装。
(1)依赖包安装
sudo apt-get install git cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libboost-thread-dev libconfig++-dev libsctp-dev
(2)下载、编译、安装srsLTE
cd XXX【其中XXX替换成你想存放srsLTE的文件夹目录,这个自己定就行】
git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
mkdir build
cd build
cmake ../
make
make test
sudo make install
srslte_install_configs.sh user
上述编译安装命令都是按照https://github.com/srsLTE/srsLTE来做的。
(3)基本测试srsLTE
cd XXX/srsLTE【XXX是srsLTE所在目录的前缀】
cd build/lib/examples
./pdsch_enodeb
四、LTE实验操作
在一台电脑上运行srsENB和srsEPC【电脑插上一个LimeSDR-USB】,你自己的手机作为srsUE来接入LimeSDR搭建的LTE基站。srsENB和srsEPC配置在同一台计算机上运行(即核心网与eNodeB基站运行在同一台电脑+LimeSDR上),手机作为UE终端。
1、修改默认配置文件
将~/srsLTE/srsepc文件夹中的epc.conf.examples和user_db.csv.examples复制一份到srsLTE/build/srsepc,并分别改名为epc.conf和user_db.csv;
将~/srsLTE/srsenb文件夹中的drb.conf.examples、enb.conf.examples、rr.conf.examples复制一份到srsLTE/build/srsenb,并分别改名为drb.conf、enb.conf、rr.conf;
接下来需要对这些配置文件的内容进行修改改。例如,按照下图配置LTE测试卡,则需要对epc.conf、user_db.csv和enb.conf文件进行修改。用软件gedit进行修改即可。
(1)epc.conf文件
MCC:Mobile Country Code 移动设备国家代码。三个数字,如中国为460。
MNC:移动设备网络代码(Mobile Network Code,MNC)是与移动设备国家代码(Mobile Country Code,MCC)(也称为“MCC / MNC”)相结合,以用来表示唯一一个的移动设备的网络运营商。由所在国家分配,通常2~3数字组成。如00为移动,01位联通。
通信运营商的网络ID为MCC+MNC,如中国移动为460-00,中国联通为460-01。
TAC:Tracking Area Code 跟踪区域码,定义小区所属的跟踪区域码,一个跟踪区域可以涵盖一个或多个小区
Milenage:鉴权算法
(2)user_db.csv
user_db.csv需要增加如下参数。增加的是用户3的IMSI(国际移动用户识别码)、鉴权密钥ki、鉴权参数OP,AMF,SQN。
(3)enb.conf
enb.conf需要修改tac、mcc、mnc的参数:
2、运行EPC程序
电脑上打开第一个终端输入命令:
cd ~/srsLTE/build/srsepc
sudo srsepc epc.conf
3、运行ENB程序
电脑上打开第二个终端输入命令:
cd ~/srsLTE/build/srsenb
sudo srsenb enb.conf
4、手机作为UE连接LTE基站
手机作为UE,手动选择网络可以搜索到Test PLMN 1-1的网络:
五、有用的链接
https://www.mobibrw.com/2018/10678
https://www.oschina.net/p/srslte
https://github.com/srsLTE/srsLTE