树莓派3B运行srsLTE

树莓派3B运行srsLTE

    • 一、添加SIM卡的配置信息
    • 二、修改enb配置信息
    • 三、修改epc配置信息
    • 四、修改手机SIM卡配置信息
    • 五、运行srsLTE
    • 六、升级srsLTE
    • 七、升级libboost
      • 1.卸载旧版本libboost:
      • 2.获取libboost源码包:
      • 3.编译安装:
      • 4.环境设置:
    • 八、出错及解决方法汇总
      • 1.桌面端、树莓派端运行`srsepc`均出错:
      • 2.桌面端运行`srsenb`,树莓派运行`srsepc`无法建立连接
      • 3.手机成功连接LTE信号,但无法上网
      • 4.电脑端srsLTE在make test时报错
      • 5.手机连接上信号后只有上行流量,没有下行流量
      • 6.测试中发现有的手机能上网,有的手机不能

环境:

Name Version
Raspberry Pi System Ubuntu Server 18.04
PC System Ubuntu 18.04
uhd 3.15 LTS
srsLTE 20.04.1

物理环境:电脑和树莓派连接同一个路由器,电脑ip为192.168.2.100运行srsenb,树莓派ip为192.168.2.101运行srsepc,USRP B210接在电脑上的USB3.0端口。
经测试,树莓派4B同样适用所有步骤无需特殊更改。

首先请确保在安装srsLTE后运行了:

sudo srslte_install_configs.sh user

该命令将拷贝srsLTE的配置文件到~/.config/srslte,以下介绍的文件路径都基于此。

一、添加SIM卡的配置信息

SIM卡的信息如下:

修改~/.config/srslte/user_db.csv文件:

在这里插入图片描述

格式为(ue_name),(imsi),(K),(OP/OPc_type),(OP/OPc_value),(AMF),(SQN),(QCI),仿照原文件中的例子进行修改,最后两持不变。倒数第三项被红色画笔涂亮的部分一开始我设置的是1234,后来在运行过程中被程序自动修改。

二、修改enb配置信息

sudo vim ~/.config/srslte/enb.conf

其中mccmnc与手机的接入点(APN)设置相同,mme_addr设置为树莓派的IP地址,gtp_bind_addrs1c_bind_addr改为电脑的IP地址,dl_earfcn需要根据具体情况设置不同的频点号(不同的频段),我这里设置为1500。
在这里插入图片描述
在这里插入图片描述

三、修改epc配置信息

sudo vim ~/.config/srslte/epc.conf

其中mccmnc与手机的接入点(APN)设置相同,mme_addr设置为树莓派的IP地址,gtpu_bind_addr改为树莓派上可以上网的IP地址。这里我通过sudo ifconfig eth0:gtp 192.168.2.111/24 up开启了一个虚拟网口,gtpu_bind_addr也可以直接改为与mme_bind_addr相同的IP地址。
在这里插入图片描述
在这里插入图片描述

四、修改手机SIM卡配置信息

此处以小米手机为例,进入设置->双卡和移动网络->选择对应的SIM卡->接入点名称(APN)->新建APN,名称APN都改为srsapnMCC 改为460MNC改为 11,修改完成后返回保存即可。

五、运行srsLTE

enb和epc可以在同一台设备的两个窗口分别运行,也可以在两个不同的设备上分别运行,这里我在树莓派上运行epc,在电脑上运行enb,USRP B210连接在电脑上。手机使用的是Redmi 4。


1.树莓派上的操作:

ifconfig  # 查看网络接口
sudo srsepc_if_masq.sh eth0  # 配置网络接口,选择能上网的接口,每次系统重启后都需要运行一次
sudo srsepc

2.在电脑上的操作:

sudo srsenb

3.在手机上的操作:
epc和enb都运行并建立连接后,打开手机的数据连接,或者先切换到飞行模式再解除飞行模式。

然后手机就能通过树莓派的网络上网了,使用“网络信号大师”APP查看:
树莓派3B运行srsLTE_第1张图片

在测速网测速如下,网速比较慢是由于实验室限速,这个速度已经是满速了:
树莓派3B运行srsLTE_第2张图片

六、升级srsLTE

将srsLTE由18.12升级到20.04.1:

cd ~/.config
sudo rm -r srslte    #删除srslte的配置文件
cd /home/Downloads/srsLTE/build
sudo make uninstall  #卸载srsLTE
git branch -a        #查看当前分支版本
git tag -l           #查看所有分支版本
git checkout -f release_20_04_1 #-f丢弃当前分支的本地修改强制切换到新的分支
cmake ../
make -j3
make test -j3  #树莓派3b性能有限,这一步需要数个小时,可以选择跳过
sudo make install
sudo ldconfig
# 拷贝srsLTE的配置文件到`~/.config/srslte`, 这一步最好执行,因为不是master版本
sudo srslte_install_configs.sh user  

树莓派3B运行srsLTE_第3张图片

由于树莓派系统为18.04,按以上步骤即可将srsLTE成功升级到20.04,而电脑上系统为16.04,按照上面步骤升级会在make时出错,需要安装高版本的libboost,参考:在Ubuntu 16.04上安装多版本 Boost

七、升级libboost

1.卸载旧版本libboost:

sudo apt --purge remove libboost-dev
sudo apt --purge remove libboost-all-dev
sudo apt --purge autoremove libboost-all-dev

sudo rm -rf /usr/lib/libboost_*
sudo rm -rf /usr/include/boost

2.获取libboost源码包:

可以手动去官网下对应版本,也可以使用wget命令:

# 1.65.0 是对应的版本号
wget https://dl.bintray.com/boostorg/release/1.65.0/source/boost_1_65_0.tar.gz

3.编译安装:

可以用 ./bootstrap.sh --help ./b2 --help 查看编译选项

./bootstrap.sh --prefix=/usr/local/boost_1_65
sudo ./b2 install --build-type=complete threading=multi --layout=tagged 

4.环境设置:

创建软连接:

sudo ln -s /usr/local/boost_1_65 /usr/local/boost

添加以下内容到$HOME/.bashrc

#export BOOST_INCLUDE_PATH=/usr/local/boost/include
#export BOOST_LIB=/usr/local/boost/lib
export BOOST_ROOT=/usr/local/boost

添加以下内容到/etc/ld.so.conf.d/libc.conf

/usr/local/boost/lib

编译时指定boost版本:

cmake -DBOOST_ROOT=/usr/local/boost

使环境变量生效,并重新链接动态库:

source ~/.bashrc
sudo ldconfig

八、出错及解决方法汇总

1.桌面端、树莓派端运行srsepc均出错:

Error reading user database file user_db.csv
Error initializing HSS

树莓派3B运行srsLTE_第4张图片

解决方法:在~/.config/srslte/user_db.csv文件中,我们添加的信息可能与原有的信息冲突,我们将原文件中的两条信息注释掉,只保留我们添加的那一条,问题解决。

2.桌面端运行srsenb,树莓派运行srsepc无法建立连接

Disconnecting rnti=0x47.
Disconnecting rnti=0x46.
Failed to connect to MME - retrying in 10 seconds
Error getting PUCCH

树莓派3B运行srsLTE_第5张图片

解决方法:修改~/.config/srslte/enb.confmcc改为460,mnc改为11,mme_addr改为树莓派地址,gtp_bind_addrs1c_bind_addr改为本机地址,dl_earfcn改为1500

修改~/.config/srslte/epc.confmcc改为460,mnc改为11,mme_bind_addr改为树莓派地址,gtpu_bind_addr改为与mme_bind_addr相同的地址。
树莓派3B运行srsLTE_第6张图片

3.手机成功连接LTE信号,但无法上网

在手机上用LTE Discovery查看,左图为srsenb和srsepc运行前,右图为运行后,可以看出运行后手机成功连接了LTE信号,但是无法上网,没有下行流量也没有上行流量。

树莓派3B运行srsLTE_第7张图片 树莓派3B运行srsLTE_第8张图片

手机调到飞行模式,再解除飞行模式,运行窗口有反应,其中用户名maplesky为电脑运行srsenb,用户名ubuntu为树莓派运行srsepc:
树莓派3B运行srsLTE_第9张图片
树莓派3B运行srsLTE_第10张图片

解决方法:将srsLTE的版本切换到20_04_1,卸载已安装的版本,重新编译安装。Ubuntu16.04安装srsLTE 20_04_1需要安装高版本的libboost,直接通过sudo apt-get install的版本太低安装不上,请参考:在Ubuntu 16.04上安装多版本 Boost

cd /home/Downloads/srsLTE/build/
sudo make uninstall
git tag -l
git checkout release_20_04_1
git branch 
cmake ../
make -j3
make test -j3
sudo make install
sudo ldconfig
# 拷贝srsLTE的配置文件到`~/.config/srslte`,拷贝前最好删除该文件夹里原有的文件,不同版本的配置信息不一样
sudo srslte_install_configs.sh user

4.电脑端srsLTE在make test时报错

切换到srsLTE 20.04,make通过,make test时报错如下:

The following tests FAILED:
			340 - pucch_test (SEGFAULT)
			702 - pucch_ca_test  (SEGFAULT)
			734 - enb_phy_test_tm1_ca_pucch3 (SEGFAULT)
			735 - enb_phy_test_tm4_ca_pucch3 (SEGFAULT)

树莓派3B运行srsLTE_第11张图片
查询得知pucch与上行控制物理信道有关,由于没有找到解决方法,我直接进行sudo make install,可以正常使用,暂未遇到问题。

5.手机连接上信号后只有上行流量,没有下行流量

树莓派3B运行srsLTE_第12张图片

解决方法:在epc设备(此处为树莓派)上配置可以上网的网络接口:

ifconfig  # 查看网络接口
sudo srsepc_if_masq.sh eth0  # 配置网络接口,选择能上网的接口,每次系统重启后都需要运行一次
sudo srsepc #重新运行epc

6.测试中发现有的手机能上网,有的手机不能

同一张SIM卡,经测试能上网的手机有Redmi 4(4G)、Mi Note 3(4G),而Redmi K30(5G)不能上网。
Mi Note 3和Redmi K30连接时在运行srsepc的设备上都有显示错误:

Unhandled NAS integrity protected message LIBLTE_MME_MSG_TYPE_PDN_CONNECTIVITY_REQUEST

但是Mi Note 3可是正常上网,而Redmi K30不行。
树莓派3B运行srsLTE_第13张图片

暂未解决…

你可能感兴趣的:(Ubuntu,树莓派,USRP,raspberry,pi,ubuntu,lte)