ubuntu 16.04(x64)编译LimeSDR v1.4的USB固件

最近在捣鼓LimeSDR,如果只使用USB供电的话,默认USB固件只向系统声明了400MA的电流。

明显当设备全功率运行的话,是不够设备使用的,全功率大约是3W以上的样子,因此,我们需要调整USB固件,向系统多申请些电流。

USB 3.0可以提供900MA的电流。

下面是如何编译LimeSDRUSB固件:

继续阅读ubuntu 16.04(x64)编译LimeSDR v1.4的USB固件

MCC 移动设备国家代码 (Mobile country code)

概述

移动设备国家代码 ( Mobile country code / MCC ) 定义于国际电信联盟 E.212 ,其目的为在电信网络中辨识用移动设备基地,特别是在全球移动通信系统和通用移动通信系统中。移动设备国家代码通常和移动设备网络代码结合使用(MCC/MNC)以用来辨试网络营运商。

移动设备国家代码是国际移动用户识别码的一部分。此识别码是用来辨认特定的用户,通常存储于可移除的SIM卡。在 GSM/UMTS 无线调制解调器中可用 AT 指令 AT+COPS 来得到目前的国家代码。

继续阅读MCC 移动设备国家代码 (Mobile country code)

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

操作系统调整

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

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装USRP驱动

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

下载并编译eNB

下载并编译EPC(核心网)

配置EPC

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

找到:

替换为:

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

 

 

 

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

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

OpenAir, single machine Ubuntu 17.04, after major EPC update

(updated: 2017, July 10th)

Modifs since version on July 6th:

  • Latest commit
  • Fix lacking file in the tarball
    (non modified ones since the June version were missing)
  • improved code pieces formating in HTML, added automatic git patch
  • Full re-test, from disk install of Ubuntu 17.04 to UE throughput measurement

This document explains how to install and configure OAI EPC+eNB on one single Ubuntu 17.04 64 bits machine connected with a regular UE (a Huawei E3272), routing the UE traffic to internet.

We use EPC after a major contribution in May 2017: a lot of code has been modified, all directories names were changes, configuration parameters names/values changed.

The description uses a USRP B210 board, a Lime SDR page is provided separately.

We also explain how to simplify, fix existing issues, to make a single computer as a full LTE network: EPC+eNB.

Known limitations fixed in the hereafter description

  • OAI EPC require kernel >= 4.7, so we have to use Ubuntu 17.04
    • We already pushed some enhancements in OAI, nevertheless some more are required
  • GTP UDP ports are in conflict for eNB and SGW
  • Useless link between OAI and the Ubuntu/Linux hostname removed
  • Several simplifications and precisions to make easier and reliable installations

继续阅读OpenAir, single machine Ubuntu 17.04, after major EPC update

ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

前几天从github下载代码的时候,一直失败,提示如下:

如果操作系统的语言是英文的话,输出如下内容:

刚刚开始以为是由于GnuTLSBUG导致的。

当时的解决方法是翻墙出去进行克隆。或者用Windows进行克隆操作。

然而,从最近的新闻来看,更像是遭受了攻击导致的。

继续阅读ubuntu 16.04执行git clone时失败“RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.”

ubuntu 16.04系统LimeSDR使用srsLTE搭建LTE实验环境

操作系统调整
参考ubuntu 16.04低延迟内核安装低延时内核

CPU调整为最大性能模式,并且不允许降低频率

安装依赖包

编译安装SoapySDR

编译安装LimeSDR

编译安装srsGUI

编译安装srsLTE

测试

搭建LTE测试环境

如果设备(比如手机)的设置是按照ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境里面的设置的,设备参数如下图:
注意上图与OpenAirInterface中设置的不同之处,差别就是一个选中OPC,一个选中OP

则需要对配置文件进行如下调整:

注意目前srsLTE的CPU开销远远高于OpenAirInterface,差不多一个内核满负载,以及稳定性是低于OpenAirInterface的,经常出现连接困难以及中途掉线,这部分需要后续的持续修改。目前测试发现,在"lteEPC/epc.conf"中关闭GUI的显示,可以显著减低CPU开销,并增加稳定性,但是还是比OpenAirInterface要多消耗CPU。另外在"lteEPC/epc.conf"中日志设置成"all_level = none"也可以降低CPU开销,并且增加稳定性。

另外,注意"/tmp/enb.log",这个日志文件默认情况下,写入的比较多,文件大小增长很快,注意磁盘占用情况。

目前测试发现,使用Intel MKL加速的情况下,CPU降低并不明显,而稳定性下降非常多应该是代码的适配问题。因此,暂时不要使用Intel MKL。

目前测试发现,使用最新的FFTW3版本,使用AVX,AVX2加速的情况下,CPU开销更高,性能更差,应该是代码存在BUG。因此,暂时不要使用自己编译的FFTW3,使用系统自带的版本即可。

手机等设备的设置参考ubuntu 16.04系统LimeSDR V1.4使用OpenAirInterface搭建LTE实验环境最后的介绍。

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

SoapySDR源代码下载
LimeSuite源代码下载
srsLTE源代码下载
srsGUI源代码下载
fftw3源代码下载

参考链接


ubuntu 16.04低延迟内核

在某些特殊环境中,比如音视频实时处理(比如MIDI),无线电数据的编解码(比如 OpenAirInterface 明确要求使用低延时内核)等情况下,我们希望系统尽可能的实时,同时又不会降低太多的性能(实时性越高,性能,功耗等的损失越大)。这种情况下,我们可以尝试使用低延时内核。

Linux提供了五种内核类型,对于内核类型的选择,可以参考如下的解释:

*******************************************

  • If you do not require low latency for your system then please use the -generic kernel.
  • If you need a low latency system (e.g. for recording audio) then please use the -preempt kernel as a fist choice. This reduces latency but doesn't sacrifice power saving features. It is available only for 64 bit systems (also called amd64).
  • If the -preempt kernel does not provide enough low latency for your needs (or you have an 32 bit system) then you should try the -lowlatency kernel.
  • If the -lowlatency kernel isn't enough then you should try the -rt kernel
  • If the -rt kernel isn't enough stable for you then you should try the -realtime kernel

*******************************************

目前(2018.02)为止,ubuntu官方库中提供前四种内核,我们一般建议使用lowlatency版本。可以使用如下命令安装:

目前,如果机器上使用了nvidia显卡,并且使用nvidia的闭源驱动的情况下,重启机器会无法进入图形界面,查看系统日志,出现如下错误信息:

解决方法如下:

注意,使用sudo apt-get dist-upgrade升级内核的时候,内核会被替换成generic版本,低延时内核需要手工重新安装一遍。

参考链接


ubuntu 16.04修复固件刷新失败的LimeSDR-USB V1.4

最近在使用LimeSDR捣鼓软件定义无线电,结果在刷新固件的过程中,莫名失败,导致无法识别硬件。

使用LimeUtil检查硬件,出现如下结果:

之后就再也无法通过

更新固件了,一直失败。

继续阅读ubuntu 16.04修复固件刷新失败的LimeSDR-USB V1.4

泰勒公式

泰勒公式是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)n次多项式来逼近函数的方法。

若函数f(x)在包含x0的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,成立下式:

其中,表示f(x)n阶导数,等号后的多项式称为函数f(x)x0处的泰勒展开式,剩余的Rn(x)是泰勒公式的余项,是(x-x0)n的高阶无穷小。

这里需要注意的是,我们规定0的阶乘 " 0!=1 "

参考链接


Chrome扩展:内容脚本(ContentScript)修改控件时未触发事件

在编写Chrome扩展的时候,我们需要修改一个input控件的内容,并且在内容修改完成后,需要触发控件的onFocus,onBlur事件,在这两个事件中,网页有相关的处理逻辑。

使用如下代码修改input控件的内容的时候,没有正确的触发焦点变化事件:

经过Google发现,原来不能直接调用控件的事件函数,直接调用控件事件函数会导致事件流程不正确,尤其是网页使用Kissy,JQuery框架的时候,可能导致框架内部流程异常。

应当通过发送事件的方式,驱动整个框架的运行,代码如下:

同样的道理适用于change事件触发的情况:

参考链接


Fire “onchange” event on page from google chrome extension