ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境

操作系统调整

参考 ubuntu 16.04低延迟内核 安装低延时内核CPU调整为最大性能模式,并且不允许降低频率。

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装USRP驱动

下载并解压缩需要的补丁,点击此处下载

下载并编译eNB

下载并编译EPC(核心网)

配置EPC

修改我们UE需要使用的配置文件

找到:

替换为:

测试功能,按照顺序打开四个独立Shell

 

 

 

正常启动之后,用手机(比如华为荣耀7)搜索运营型,可以找到一个名为20892的运营商,或者有些欧洲制式的手机可以正确的显示Eurecom这个法国电信运营商的名字。

设备使用的SIM卡建议从淘宝购买可以重复写入的LTE测试卡(大约30元每张的样子),卡内的内容请严格遵守下图的信息进行写入,包括灰色区域,看似不可写而无效,但是如果不设置成下图的样子,就会无法联网:

上述的代码如果下载困难,可以从本站下载一份拷贝。

SoapySDR源代码下载
LimeSuite源代码下载
USRP源代码下载
openairinterface5g源代码下载
openair-cn源代码下载
推荐使用LimeUtil刷新的固件
有需要上述的写卡软件的(SIM Personnalize tools),可以点击这里下载

如果发生手机等设备无法连接到我们自己搭建的基站,在确定测试卡信息填写完全正确的前提下,如果lte-softmodem窗口出现下图的红色错误信息:

优先检查设备的MTU,如果设备的MTU大小超过1500,则会导致这种问题,/usr/local/etc/oai/spgw.conf里面配置的MTU大小就是1500,这个大小可以设置为1536,但是貌似会导致应用异常。
目前已知的是小米Note1会记录上次联网时候设备的MTU大小,如果恰好连接过MTU1536的基站,貌似会使用这个数字,导致问题。
一般建议Android手机执行adb shell ifconfig观察一下手机的输出。

手机如果要实现上网,需要手工创建一个APN,如下图,名字任意填写即可

主要的设置为下图,APN协议APN漫游协议承载系统,这三个要设置,否则MME会崩溃(src/nas/emm/sap/emm_cn.c:358 空指针异常),主要是协议不支持,导致处理异常。正常情况下,已经自动设置了MCCMNC,如果没有自动设置,请手工修改成MCC 208MNC 92

手机实验的时候有个小技巧,可以解决频繁插拔SIM卡的问题,就是把手机设置成飞行模式,再取消飞行模式,可以强制手机重新搜索基站并建立连接,因而减少对于SIM卡的插拔操作。

参考链接


发布者

《ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境》上有87条评论

  1. Did it possible to emulate the limesdr like usrp and use the command "sudo –E ./lte-softmodem –o $OPENAIR_DIR/targets/PROJECT/GENERIC-LTE-
    EPC/CONF/enb.band7.tm1.usrpb210.conf –d "with the same hardware but use only the soapyUHD like driver with the OAI !? what kind of command on the terminal should I do for doing it !?

      1. OAI with LimeSDR Mini run perfectly now. For the authentication, we have pisword simcard reader writter but the default driver with it couldn't write the usim (OPc,ki, imsi,iccid ...). Is it possible to know where did you download or how to get your software "SIM Personnalize tools" to test it?

          1. Is it possible that you send the software that you use for my mail !!! because someone still use the same software in pisword and it run perfectly! if it's possible, please send to my mail the software that you use for the USIM?

            Chears

          2. Even for the piswords simcardreader_writer, It's run perfectly for the reading and writing !!! Thanks you very much!!! Thanks a lots

        1. hey, did'nt you add msisdn somenumber on msisdn and on the sql database ? The phone see the network but I can't authenitcate on it now. If it's possible also! i would like to demand you the logfile of all command
          ./run_spgw
          ./run_mme
          ./run_hss
          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

      1. hey, did'nt you add msisdn somenumber on msisdn and on the sql database ? The phone see the network but I can't authenitcate on it now. If it's possible also! i would like to demand you the logfile of all command
        ./run_spgw
        ./run_mme
        ./run_hss
        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

          1. you said that : "sometimes we must clear all database and rerun the sql script to rebuild the database ,you can try" , could you give me any example of sql command for doing it if it's not so demanding please ?

          2. Mine always has problem of authentication. if it's possible to have the modified open-cells.sql and to load to file .grsp the configuration used on the gsmwritter. it's could help me to understand what i did bad!

          3. I don't modify open-cells.sql ,you can try modify this file.

            as i know ,if you have problem of authentication, usually it is a real time problem ,your system is not real time or not real time linux kernel or cpu too high

            After mobile send auth request ,cell must send response immediately ,if delay even 1us ,the auth will failed.

            please check this.

  2. 博主你好,我最近入手了limesdr硬件,然后完全按照你的这篇博客进行操作(HostOS, 软件版本号等都和你保持一致),但是在enb的shell窗口中 显示一条红色错误信息:[SCTP][E][sctp_enb_read_from_socket] sctp_recvmsg(fd 41, len -1):connection time out:110, 然后显示[EMU][N]waiting for eNB application to be ready, 之后就没有进一步log输出了。接着继续等了10分钟左右也没有进一步进展。请问可能是什么原因造成的?谢谢!

      1. 检查了一下,mme的ip手误写错了,导致这个问题。
        还有一个问题,用了谷歌官方手机nexus 6p尝试搜网,按照博主的贴图写好白卡并插入白卡打开手机,nexus 6p报告找不到SIM卡,又尝试了其他几个手机nexus4/5/6都是同样的问题,感觉应该不是卡或者卡槽接触不良的问题,是不是白卡的设置参数上有点问题?博主尝过的成功的手机有哪些?多谢!

        1. 小米,华为都可以,这个应该不是卡的问题,估计是手机限制了,因为默认是法国电信的,貌似谷歌的手机在欧盟是有限制的,试试修改一下国家代码试试,另外就是这个要求FDD的,如果你手机只能使用TDD的话,确实是有问题的。

        2. 另外注意,你买的是4G SIM卡还是2G SIM卡,你必须使用4G的SIM卡,两者差价差不多一倍的,你联系一下买卡的卖家,确认一下这个事情才行。

  3. 多谢博主!应该是4G的白卡,30块左右一张的那种。
    还有, 博主,你有尝试过用limesdr+OAI+opencoreims 做端到端的VoLTE呼叫吗?还有博主,你有微信公众号或者微信方便加个好友吗?

  4. 博主你好, 再请教一个问题。我刚刚买了红米6A和华为荣耀畅玩7A,都是号称全网通手机,但是用红米6A可以手动搜网,并搜到20892的网,但是无法注册成功。用华为荣耀畅玩7A,连20892的网都搜不到。请问一下这可能是什么问题?难道手机太新了?得用老一点的手机才行?多谢!

    1. 这个没关系的,如果出现无法注册成功,一般说明是设备设置上存在问题,最常见的就是内核不是实时内核,而是非实时内核,或者机器上其他任务导致了处理器开销太大,请注意一下内核版本以及CPU利用率。
      设备需要跟基站进行一次通信,双方需要一次双向认证,这个认证时间的精度要求非常高,如果发生内核不实时,会造成时间精度不正确,导致双向认证不通过。

  5. 您好,想請問一下,按照教程安裝完EPC後,過一段時間oai_db會從phpmyadmin上消失,但電腦裡還有oai_db的檔案,只是新增上去的user資料全部都不見了,再重新匯入oai_db後過一段時間又會自己消失,請問這樣是為什麼呢?

    1. 应该是某个脚本重新创建了一遍数据库,这个请查找全部脚本中创建数据库部分的功能,看看能不能找到相关的代码

      1. 請問eNB連上EPC後,有時會自己斷線是為什麼呢?
        UE連上EPC後,也常常自己斷線,這樣是為甚麼呢?
        還有最近UE連上EPC後,原本有下載流量,可以連上其他網頁的,但是現在變成可以連上eNB,有上載流量但下載流量一直是0,無法上網,想請問這樣是發生什麼問題呢?

      2. 想請問一下eNB連上EPC後常常自己斷線是為甚麼呢?
        UE連上eNB之後也常常自己斷線,這是為甚麼呢?
        另外原本UE連上eNB時,是有下載跟上傳流量的,可以上網,但現在UE連上eNB之後,只有上傳沒有下載流量,不能上網了,請問這樣是發生什麼問題呢?

  6. 想請問一下,eNB連上EPC之後常常自己斷線是為甚麼呢?
    UE連上eNB之後也常常自己斷線是為什麼呢
    還有以前UE連上線的時候,上傳下載都有流量,可以連上其他網頁,但現在UE連上eNB之後只有上傳有流量,下載流量為0,無法連線,這樣是發生甚麼問題呢?

    1. 最近是不是执行过apt-get upgrade 或者apt-get dist-upgrade ? 如果执行过,看一下内核 uname -a 非常可能被替换成非普通内核了,需要手工安装一遍低延时内核,这个问题非常头疼!

    1. 这个太笼统了,貌似是你的设备发送了不支持的控制报文信息,导致EPC解析不了,一般这个是由于手机等UE设备发送的协议中使用了高版本的协议导致的,我记得当时是由于某个配置文件错了,或者某个协议错了,具体记不到了。

  7. 你好,我的是虚拟机环境,IP:10.10.70.134,直接复制你的MME配置,报错“[SCTP][E][sctp_eNB_read_from_socket] sctp_recvmsg (fd 42, len -1 ): Connection refused:111

  8. ./build_spgw -i后libgtpnl选择不安装,提示“SPGW not compiled, to compile it, re-run build_spgw without -i option”请问这样是正常的吗?

  9. 博主,写入第二卡,只需要把IMSI改成SQL里面的IMSI就可以了吧,其他配置不动。另外2个手机如何打电话和发短信,我在手机设置里面没有获取到本机号码。

  10. Scanning dependencies of target oai_lmssdrdevif
    Building CXX object CMakeFiles/oai_lmssdrdevif.dir/home/xiaohuang/openairinterface5g/targets/ARCH/LMSSDR/USER$
    /home/xiaohuang/openairinterface5g/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp: In function ‘int trx_lms_st$
    /home/xiaohuang/openairinterface5g/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp:196:40: error: too many argu$
    LMS_VCTCXOWrite(lms_device,129,true);
    ^
    In file included from /home/xiaohuang/openairinterface5g/targets/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp:39:0:
    /usr/local/include/lime/LimeSuite.h:971:26: note: declared here
    API_EXPORT int CALL_CONV LMS_VCTCXOWrite(lms_device_t * dev, uint16_t val);
    ^
    CMakeFiles/oai_lmssdrdevif.dir/build.make:62: recipe for target 'CMakeFiles/oai_lmssdrdevif.dir/home/xiaohuan$
    make[3]: *** [CMakeFiles/oai_lmssdrdevif.dir/home/xiaohuang/openairinterface5g/targets/ARCH/LMSSDR/USERSPACE/$
    CMakeFiles/Makefile2:815: recipe for target 'CMakeFiles/oai_lmssdrdevif.dir/all' failed
    make[2]: *** [CMakeFiles/oai_lmssdrdevif.dir/all] Error 2
    CMakeFiles/Makefile2:827: recipe for target 'CMakeFiles/oai_lmssdrdevif.dir/rule' failed
    make[1]: *** [CMakeFiles/oai_lmssdrdevif.dir/rule] Error 2
    Makefile:378: recipe for target 'oai_lmssdrdevif' failed
    make: *** [oai_lmssdrdevif] Error 2

    openairinterface5g编译报错有没有解决的方法

    1. 这个东西,我也是只能指定编译版本才能编译通过的,不是任何版本都可以的,他们改动太多,太频繁,这个很难处理,你可以用我编译时候的那个版本先看看

  11. Connecting to device: LimeSDR Mini, media=USB 3.0, module=FT601, addr=24607:1027, serial=1D424DF1993644
    Reference clock 40.00 MHz
    LoadConfig() - file not found
    Failed to load configuration file
    libusb: warning [libusb_exit] application left some devices open
    LoadConfig() - file not found
    画面刚弹出来一会就闪退了

  12. I'm executing this command: "git apply ../opencells-mods/EPC.patch"
    but it notify "
    error: patch failed: build/tools/build_helper:99
    error: build/tools/build_helper: patch does not apply
    error: patch failed: src/common/common_defs.h:109
    error: src/common/common_defs.h: patch does not apply
    error: patch failed: src/gtpv1-u/gtp_mod_kernel.c:31
    error: src/gtpv1-u/gtp_mod_kernel.c: patch does not apply
    error: patch failed: src/gtpv1-u/gtp_mod_kernel.h:6
    error: src/gtpv1-u/gtp_mod_kernel.h: patch does not apply
    error: patch failed: src/gtpv1-u/gtpv1u_task.c:111
    error: src/gtpv1-u/gtpv1u_task.c: patch does not apply
    error: patch failed: src/oai_hss/utils/hss_config.c:297
    error: src/oai_hss/utils/hss_config.c: patch does not apply
    error: patch failed: src/s6a/s6a_peer.c:88
    error: src/s6a/s6a_peer.c: patch does not apply

    I tried to fix it but it failed . Can you help me ? Thank you !

  13. I'm executing the command: "git apply ../opencells-mods/EPC.patch"
    but it notify :
    error: patch failed: build/tools/build_helper:99
    error: build/tools/build_helper: patch does not apply
    error: patch failed: src/common/common_defs.h:109
    error: src/common/common_defs.h: patch does not apply
    error: patch failed: src/gtpv1-u/gtp_mod_kernel.c:31
    error: src/gtpv1-u/gtp_mod_kernel.c: patch does not apply
    error: patch failed: src/gtpv1-u/gtp_mod_kernel.h:6
    error: src/gtpv1-u/gtp_mod_kernel.h: patch does not apply
    error: patch failed: src/gtpv1-u/gtpv1u_task.c:111
    error: src/gtpv1-u/gtpv1u_task.c: patch does not apply
    error: patch failed: src/oai_hss/utils/hss_config.c:297
    error: src/oai_hss/utils/hss_config.c: patch does not apply
    error: patch failed: src/s6a/s6a_peer.c:88
    error: src/s6a/s6a_peer.c: patch does not apply

    I tried to fix it but it failed. Can you help me ? Thank you !

    1. 一般是系统不实时导致的,检查一下系统的实时性设置,OS是否使用了低延时内核,CPU部分是否禁用Boost频率是否设置为定频,二级缓存是否关掉,是否禁止省电

  14. 博主你好,我用的是ubuntu16.04的虚拟机,下载固件后执行LimeUtil --update报错,这个过程都后续有影响么?大概是什么问题你呢?谢谢

    root@eNodeB:/home/enodeb/LimeSuite/udev-rules# LimeUtil --update
    No devices found

    1. 不建议用虚拟机,因为设备的USB部分是USB3.0的,USB 3.0由于是高速传输(5Gbbps)因此对于数据传输信号的时序要求非常高,虚拟机模拟出来的USB设备由于操作系统转换,会造成额外的延时。这个延时会造成高速通信总线信号超时,导致通信异常。建议用物理机,物理机的USB通信由硬件实现,不会出现时序问题。

  15. 博主你好 ,这套系统可以用一个LimeSDR和一台Ubuntu就能搞定么,之前搞srsLTE貌似要两台机器两套硬件 。
    另外LimeSDR mini可以么?

  16. 博主,我在虚拟机上安装了了ubuntu1404,OAI为v0.6.1。但运行时提示ULLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLO[PHY][E][recv] received 4113 samples out of 7680
    L[PHY][E]Time: 7.74638 s
    ERROR_CODE_OVERFLOW (Overflow)

    [PHY][E]rx_rf: Asked for 7680 samples, got 4113 from USRP。
    我该怎么去考虑和解决这个问题啊?我感觉是时延太大引起的问题,但我不知道怎么去降低时延。我已经做过相关电源管理的设置。

      1. 不要用虚拟机,虚拟机没办法做到实时,必须是物理机,时序要求非常严格,即使物理机,也是不能百分百满足实时需要的,真正的基站要依赖物理芯片保证实时性

  17. 博主你好,我手机连入基站后开始大约1分钟左右能上传下载,但是一分钟后eNB就开始输出
    [PHY][E]ERROR: Format 1A: rb_alloc (1ff) > RIV_max (144)
    然后手机就无法联网连,我在手机上安装超级终端,确定手机的MTU就是1500,所以请问还有萨满可能的原因会导致这个问题呢?

      1. 博主你好,感谢你的回复。
        所以针对这两种情况我该怎么解决呢?
        1.我使用的是ubuntu16.04,安装的是OAI官网教程步骤给的4.4.0的lowlatency的内核,也不是用的虚拟机,还有什么其他的方法可以降低时延吗?
        2.手机请求高版本的协议,是指手机上LTE协议版本高于OAI的LTE协议吗?
        谢谢。

        1. 1. 尝试编译比较新的代码,估计要费劲不少,建议试试 srsLTE 我后期都是使用 srsLTE 的,OpenAirInterface的代码实在是有些惨不忍睹
          2. 换个早期版本的手机试试或者在协议广播中调低支持的LTE协议版本,LTE协议分多个版本,进化很快,但是实际上OpenAirInterface并没有完全实现对应版本的功能,他广播出来支持很高的版本,实际上支持的都不是非常完整,比如声明支持 LTE 10 ,实际上比较完整支持的只是LTE 8
          3. 如果学习的话,强烈推荐 srsLTE 代码非常清晰流畅

  18. 好的,谢谢博主。
    请问srsLTE是不是比较轻量级?但是好像对电脑硬件的要求更高?
    另外,我看见srsLTE目前支持的也只是达到Release 8,这个版本是不是对于学习LTE协议的已经够了?

    1. 1. srsLTE的代码效率比OpenAirInterface要低一些,比如有些汇编部分的优化比较简单,但是就是因为优化少,才会使得思路很清晰,容易读懂。
      2. srsLTE底层有几套代码,其中一套是运行在X86系统的,优化较多,另外一套是运行在实时硬件上的,基本上没有优化,这套代码在跟优化后的代码输出结果相同,但是非常易懂。
      3. 没必要追最新的,先把基本原理看明白,后面的都是在这些版本上增加新的Feature。

    1. 这块没有操作过,但是默认都是IPV4的,核心网部分都是软件模拟实现的,改成IPV6支持应该比较简单,OAI更多的是验证功能,不是商用。

  19. 博主您好!

    还有个问题请教下,基站、EPC以及终端的配置文件位置在哪里,还是代码直接写死的,oai的代码逻辑比srslte混乱很多,读起来比较头疼

    1. 我当时看的时候,也是一头雾水,没有头绪,后期是使用srsLTE来分析的,https://github.com/srsLTE/srsLTE srsLTE 的代码清爽的想让人哭!

  20. 博主您好!
    还有个问题请教下,我现在按照您的这些配置修改运行起来了,然后手机也能找到这个基站,但是在/tmp目录下没看到任何log信息,这个log怎么开启呢?

  21. 博主,你好!

    使用USRP测试,除了编译基站时使用./cmake_targets/build_oai -w USRP --eNB # compile eNB这个命令,那么在启动时基站的这个需要怎么改,选择哪个配置文件,内容如何修改,请指教,谢谢!
    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(这是用limesdr设备的启动脚本,usrp的呢?)

    1. USRP的设备没有用过,当时太贵了,但是比LimeSDR用起来要简单的这个配置文件你直接修改就可以的,里面指定了相关的配置频段等信息,官方代码中有直接操作USRP的配置文件的。你参考调整一下就可以了。

  22. 博主你好!

    请教个问题,使用usrp B210设备测试时,除了编译时执行./cmake_targets/build_oai -w USRP -x -c --eNB # compile eNB,

    在启动的时候,应该怎么操作呢?(limesdr设备启动是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)

    配置文件可以修改为这个enb.band7.tm1.25PRB.usrpb210.conf,但是ini文件怎么办呢?

    谢谢!

    1. 我记得在某些版本上,这些配置文件都存在的,后期他们删除了好多,你可以Git看一下以前的版本,至于配置文件,参考srsLTE的部分也可以,这两部分控制硬件是相同的。

  23. 博主请教一下,用LimeSDR和srsLTE,UE也用LimeSDR和srsue实现的。
    1、为什么只在一个频段下UE可以attach上,其他频率要么attach上就release了,要么根本连不上。
    2、白卡在哪里可以买到?
    3、手机用iphone行吗?

    1. 1.只在一个频段下UE可以attach上 这个更可能是你的硬件,你硬件可能只能工作在某个固定的频段上,这个参考硬件芯片手册,这个说的很清楚的。
      2.白卡在哪里可以买到 淘宝
      3.手机用iphone行吗? 这个没有测试过,不好说。

  24. I got this error with Ubuntu 18.04
    how to fix it ?
    git apply ../opencells-mods/eNB.patch
    error: patch failed: cmake_targets/tools/build_helper:95
    error: cmake_targets/tools/build_helper: patch does not apply

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注