Name | Version |
---|---|
Ubuntu | 16.04 |
uhd | 3.15.0.0 |
srsLTE | release_18_12 |
sudo apt-get install libfftw3-dev libmbedtls-dev libconfig++-dev libsctp-dev
# 如果你之前安装过高版本boost,那么下面这句不需要执行。
sudo apt-get install libboost-program-options-dev
如果cmake
出错,则从官网下载编译高版本。系统不同依赖可能有所出入,具体情况根据你实际报错情况进行修补。
可选的依赖有srsgui
和 libpcsclite-dev
,还要注意的是你的usrp设备驱动要装好。具体可以参考我之前写的博客。
git clone https://github.com/srsLTE/srsLTE.git
cd srsLTE
# 我选18_12的原因是ubuntu16.04的boost库版本过低,测试到最后只适配release_18_12
git tag -l
git checkout release_18_12
mkdir build
cd build
cmake ../
# 如果要指定boost版本,指定高版本后可以安装高版本srslte。注意修改了boost后,
# uhd可能也需要重新编译。
#cmake ../ -DBOOST_ROOT=/usr/local/boost -DBoost_NO_SYSTEM_PATHS=ON
make
make test
安装srsLTE
sudo make install
# 拷贝srsLTE的配置文件到`~/.config/srslte`, 这一步最好执行,因为不是master版本
# 有很多参数是无效的,配置文件里的内容在不同的版本里是不一样的。
sudo srslte_install_configs.sh user
这里使用Ubuntu 16.04搭配USRP B210进行测试,使用root账户直接安装配置。
先安装低延时内核,之后重启加载新内核:
apt-get install linux-lowlatency
apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency
reboot
配置网络接口,参数是默认能上网的网口,这里是eth0:
# 查找网络接口
ifconfig
# 我的网络接口是enp1s0,实际情况要根据你的网络调整。
srsepc_if_masq.sh enp1s0
添加SIM卡的配置信息,主要是IMSI、KI、OPC/OP。编辑~/.config/srsLTE/user_db.csv
文件,格式依葫芦画瓢。大致如下:
(ue_name),(algo),(imsi),(K),(OP/OPc_type),(OP/OPc_value),(AMF),(SQN),(QCI),(IP_alloc)
ue3,mil,221010123456789,6874736969202073796D4B2079650A76,opc,504F20634F6320504F50206363500A4F,8000,000000001234,7,dynamic
注意,这里algo(rithm)认证算法一定要选对,不然后面手机连接基站的时候会认证失败。
一般AFM和之后的字段不选要修改,之前的例子什么样,你就照抄。
如果没有SIM卡,需要购买空白的sim卡,并且用专门的sim读卡器进行读写。
cd ~/.config/srslte
vim epc.conf
这里主要修改mcc
和mnc
, apn
可能也需要更改,具体情况根据你的运行结果来定。
这些缩写的意思看文件里的注释。
vim enb.conf
这里和上面一样修改mcc
和mnc
, n_prb
物理资源块数量对应带宽。具体情况如下图
还有一个需要注意的是dl_earfcn
需要根据你的具体情况设置不同的频点号(不同的频段)
sudo srspec
新开一个终端
sudo srsenb
之后就用装有之前SIM卡的手机搜索网络
如果手机无法搜索到信号,或者搜到了无法加入,先用其他SDR或者频谱仪检查下是否有信号发出,其次检查信号是否有频偏,因为每种手机对频偏的容忍度是不一样的。笔者实测中,华为的兼容性是最好的。
如果有频偏,修改“ue.conf”中的“freq_offset”
参数,如图所示。正常情况下如果使用官方原版SDR设备,而不是山寨SDR设备,很少出现这种情况。另外,使用GPSDO或者其他稳定的时钟输入,也能避免这种问题。
如果还是无法搜索到信号,那就可能是手机的基带问题,可以修改下频段,也就是“EARFCN”参数,也可以直接在srsenb执行时加参数:
srsenb ~/.config/srslte/enb.conf --rf.dl_earfcn 1300
当然,注册进网络后,还需要在电脑上配置nat转发:
sudo su
echo 1 > /proc/sys/net/ipv4/ip_forward
# 修改成你的网络接口(enp1s0)
iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
在手机上配置APN,也就是epc.conf中默认设置的srsapn
然后按道理手机就可以愉快的上网了。