这个实验也是我做了很长的时间,网上的文章都是各种坑,我做的时候几乎是所有的问题都被我遇上过哈哈哈,如果不懂就在下方留言8.
更新一下ubuntu
- 首先运行software-updater

- 终端执行以下命令:sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
操作系统调整
更换4.15的内核:
- wget linux-headers-4.15.18-041518_4.15.18-041518.201804190330_all.deb
- wget linux-headers-4.15.18-041518-lowlatency_4.15.18-041518.201804190330_amd64.deb
- wget linux-image-4.15.18-041518-lowlatency_4.15.18-041518.201804190330_amd64.deb
- sudo dpkg -i *.deb
- sudo update-grub
- sudo reboot
参考ubuntu 16.04低延迟内核安装低延时内核CPU
调整为最大性能模式,并且不允许降低频率
- sudo apt-get install cpufrequtils
- sudo touch /etc/default/cpufrequtils
- sudo sed -i “/GOVERNOR.*/d” /etc/default/cpufrequtils
- test -s /etc/default/cpufrequtils && sudo sed -i ‘$a\GOVERNOR=\”performance\”‘ /etc/default/cpufrequtils || echo “GOVERNOR=\”performance\”” | sudo tee /etc/default/cpufrequtils
- sudo update-rc.d ondemand disable
- sudo apt-get install linux-image-`uname -r | cut -d- -f1-2`-lowlatency
- sudo apt-get install linux-headers-`uname -r | cut -d- -f1-2`-lowlatency
- sudo reboot

开始搭建LIMESDR的环境:
- 安装依赖包
sudo apt-get install cmake g++ libpython-dev python-numpy swig git libsqlite3-dev libi2c-dev libusb-1.0-0-dev libwxgtk3.0-dev freeglut3-dev
编译安装SoapySDR:
- cd ~
- git clone https://github.com/pothosware/SoapySDR.git
- cd SoapySDR
- mkdir build && cd build
- cmake ..
- make -j4
- sudo make install
- sudo ldconfig
- SoapySDRUtil –info

编译安装LimeSDR:
- cd ~
- git clone https://github.com/myriadrf/LimeSuite.git
- cd LimeSuite
- git checkout v17.06.0
- cd build
- cmake ..
- make -j4
- sudo make install
- sudo ldconfig
- cd ../udev-rules/
- sudo bash install.sh
- 更新Limesdr固件
- 插上Limesdr Mini
- sudo LimeUtil -update
编译安装USRP驱动:
- sudo apt-get install libboost-all-dev libusb-1.0-0-dev python-mako doxygen python-docutils python-requests cmake build-essential python-pip
- pip install setuptools
- cd ~
- git clone git://github.com/EttusResearch/uhd.git
- cd uhd; mkdir host/build; cd host/build
- cmake -DCMAKE_INSTALL_PREFIX=/usr ..
- sudo make -j4
- sudo make install
- sudo ldconfig
- sudo /usr/lib/uhd/utils/uhd_images_downloader.py
下载并解压缩需要的补丁:
- cd ~
- wget https://open-cells.com/d5138782a8739209ec5760865b1e53b0/opencells-mods-20170823.tgz
- tar xf opencells-mods-20170823.tgz
下载并编译eNB :
- cd ~
- git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git
- cd openairinterface5g
- git checkout 17b9a9e917ce2a3a8c7004c7b9a221c350ddfe17 -b ubuntu
- git apply ../opencells-mods/eNB.patch
- source oaienv
- sudo ./cmake_targets/build_oai -I
- sudo ./cmake_targets/build_oai -c -w LMSSDR –eNB -x
这里特别容易报错,因为版本的问题,或者是内核的问题

- nano targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
- 把LMS_VCTCXOWrite(lms_device,129)改为LMS_VCTCXOWrite(lms_device,129,true)

这个是我在一个大佬上看到的解决的报错,但是我改了也是解决不了,换了一个openairinterfac5g 的版本就编译通过了。
- sudo ./cmake_targets/build_oai -c -w LMSSDR –eNB -x
编译EPC
- git clone https://github.com/OPENAIRINTERFACE/openair-cn.git
- cd openair-cn
- git checkout 724542d0b59797b010af8c5df15af7f669c1e838 -b ubuntu
- git apply ~/opencells-mods/EPC.patch
- source oaienv; cd scripts
- ./build_hss -i
设置mysql密码,我设置的是123

然后再输入一次密码

Do you want to install freeDiameter 1.2.0 ?<y/N>: yes

我选择了apache 这个可以自行选择

phpmyadmin 我选择的是不装

- ./build_mme -i
Do you want to install freeDiameter 1.2.0 ?<y/N>: no

Do you want to install asn1c rev 1516 patched? <y/N>: no

Do you want to install libgtpnl ? <y/N>: yes

我选择安装 也是可装可不装的

- ./build_spgw -i
Do you want to install libgtpnl ? <y/N>: no

正式进行编译操作 :
- ./build_hss -c -v

- ./build_mme -v

- ./build_spgw -v

配置EPC
拷贝配置文件
- cd ~
- sudo mkdir -p /usr/local/etc/oai
- sudo cp -rp opencells-mods/config_epc/* /usr/local/etc/oai
生成证书文件
- cd openair-cn; source oaienv; cd scripts
- ./check_hss_s6a_certificate /usr/local/etc/oai/freeDiameter hss.OpenAir5G.Alliance
- ./check_mme_s6a_certificate /usr/local/etc/oai/freeDiameter mme.OpenAir5G.Alliance
- 配置网卡
- sudo sed -i “s/PGW_INTERFACE_NAME_FOR_SGI.*/PGW_INTERFACE_NAME_FOR_SGI = \”
ifconfig | grep "Link" | awk '{print $1}' | grep "en"
\”;/g” /usr/local/etc/oai/spgw.conf
- 配置访问MySQL时候的密码,”/usr/local/etc/oai/hss.conf”,此处假定MySQL的密码为”123″
- sudo sed -i “s/^MYSQL_pass.*/MYSQL_pass = \”123\”/g” /usr/local/etc/oai/hss.conf
- 导入数据库,建立表结构
- ./hss_db_import 127.0.0.1 root 123 oai_db ~/opencells-mods/opencells_db.sql
修改我们UE
需要使用的配置文件:
- cd ~
- cd openairinterface5g; source oaienv
- sed -i “s/mobile_network_code.*/mobile_network_code = \”92\”;/g”
- ./targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.lmssdr.conf
nano ./targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.lmssdr.conf
////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.12.148";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.150/24";
ENB_INTERFACE_NAME_FOR_S1U = "eth0"; ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.150/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
改成
////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.12.148";
ipv6 = "192:168:30::17";
active = "yes";
preference = "ipv4";
}
);
NETWORK_INTERFACES :
{
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.150/24";
ENB_INTERFACE_NAME_FOR_S1U = "eth0"; ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.150/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
本来想放图片的 但是用文字会方便一些复制黏贴 hhh
修改hosts以及hostname:
- sudo nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 yourhostname.openair5G.eur yourhostname
127.0.1.1 hss.openair5G.eur hss
- sudo nano /etc/hostname
先当前内容全部删掉,然后输入nano //其实这里你想输入什么就输入什么,我输入的是nano.

测试功能,按照顺序打开四个独立shell(终端)
run_hhs.sh
- echo -ne “\033]0;HSS\007”
- cd openair-cn; source oaienv; cd scripts; // 在需要运行之前先清理一下数据库才行,否则可能导致设备无法入网,听大佬说这是个BUG
- ./hss_db_import 127.0.0.1 root 123 oai_db ~/opencells-mods/opencells_db.sql
- ./run_hss
run_mme.sh
- echo -ne “\033]0;MME\007”
- cd ~
- cd openair-cn; source oaienv; cd scripts;
- ./run_mme
run_spgw.sh
- echo -ne “\033]0;SPGW\007”
- cd ~
- cd openair-cn; source oaienv; cd scripts;
- sudo -E ./run_spgw
因为我用的是LimeSDR mini,所以要下另外的射频文件,因为官方不带mini的SDR文件
- cd ~
- git clone https://github.com/myriadrf/trx-lms7002m.git
- echo -ne “\033]0;EUE\007”
- cd ~
- cd openairinterface5g; source oaienv
- sudo -E ./cmake_targets/lte_build_oai/build/lte-softmodem -O ./targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.25PRB.lmssdr.conf –rf-config-file ./targets/ARCH/LMSSDR/LimeSDR_above_1p8GHz_1v4.ini -d

因为还没有来得及测试就发了文章,后续我会更新本文章,如果出现任何问题都可以在以下留言。