OpenBTS: USRP E100概述 - General Information源于嵌入式系统的有限资源,运行在 E100 的 OpenBTS 需要 52 MHz 的时钟及需构建 52 Mhz 的收发器。 E100 的主时钟是可由 UHD 驱动接口进行重构这样便无需对硬件进行任何修改便可运行 OpenBTS 。 E100 板上包含的 TCXO 可使得其主频及射频信号精度处于几个 PPM 范围内;尽管还是达不到 GSM 运行的要求,但对于简单的测试及非运营级的要求,便无需外部(高精度)时钟。 基于 E100 的 OpenBTS 项目目前还是处于开发阶段,到目前也已经反复的进行了一些逐步负荷测试试验 - 两路同时呼叫 - 对所有的 4 段 GSM 频段运行并进行(数天)拷机试验。更多详情请参阅下面的局限(limitations)及(performance page)页面。尽管没有发布任何消息,但对 ARM SIMD 的优化及对(C64x DSP)的加速的工作正在进行。 在 E100 上配置 OpenBTS 有多种途径。OpenBTS 关联性涉及面很小,随设备的文件系统的镜像文件也已经包含这些。作为选择,也可以使用 OpenEmbedded 配置交叉编译环境。
关联 - DependenciesOpenBTS 必须的文件没有被包含在 Ettus 的镜像文件中的是 subversion 和 libosip2 。 使用 opkg 便可对其进行安装。 opkg update opkg install libosip2-dev subversion 下载 - Download可从 OpenBTS P2.8 社区上获得源码 svn co http://wush.net/svn/range/software/public 构建 - Build沿循其 构建安装及运行 的标准步骤,不难发现对 ARM 处理器进行优化的针对性的编译选项。 $ autoreconf -i $ ./configure --with-uhd CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" $ make 在运行过 'autoreconf' 之后,可能会出现下面版本关联错误信息,这些不必在意。 Can't locate Autom4te/ChannelDefs.pm in @INC
... autoreconf: gnu-configize failed with exit status: 2 配置 - Configure沿循其构建安装及运行的标准步骤便可。 切记构建安装用户注册表 - Subscriber Registry 。 天线 - Antennas强烈建议使用天线及虚拟负载。对于桌面测试配置而言,发射侧配置一个 50 欧姆的堵头及接收侧配置天线便可。尽管即使在接收侧没有配置接收天线的情况下,大多数手持设备还是能够进行有限的连接。从一般意义上而言,运行没有负载的无线发射是不推荐的方式。 虚拟负载负载可以到 RF 部件供应商处购买,或者自力更生。 测试 - Testing缺省的 Asterisk 包含的回呼功能(echo)可以用来对 OpenBTS 进行基本测试。这类测试一般不需要对 Asterisk 配置文件做任何修改。Asterisk 服务在启动时便被自动修改。 起动 OpenBTS $ ./OpenBTS
;
; Create an extension, 600, for evaluating echo latency. ; exten => 600,1,Playback(demo-echotest) ; Let them know what's going on exten => 600,n,Echo ; Do the echo test exten => 600,n,Playback(demo-echodone) ; Let them know it's over exten => 600,n,Goto(s,6) ; Start over
为了测试,必须将一个手持设备同 OpenBTS 相关联。这时,该手持便会接受到来自 OpenBTS 的文字短信。 更多时候,这种测试让人无法预测的是手持设备同 BTS 的相互联系,这问题更多出现在手持方面。BTS 无法强迫手持设备进行连接对象的切换,所能给予的是一个更加友好的连接环境。如若发生这类问题,首先确保所测试的手机的频段同 OpenBTS 的测试频段相吻合。更多详情请参阅:OpenBTS/MS_Camping 。 在手持设备上拨打转接号便可进行回呼(echo)测试。 问题 - Known Issues在 E100 上运行 OpenBTS,收发部分有可能会出现启动过程太长的问题。这种情况下建议增加收发部分的延时。否则,OpenBTS 便会给出如此信息 "assuming TRX is dead" 然后终止。但即使这种情况发生,现存的收发进程(transceiver instance )仍然依旧来防止后续的 UHD 设备的请求。 下面命令便可退出收发进程(transceiver instance ): pkill transceiver 下面是用来增加收发负载等待时间的补丁。
diff --git a/apps/OpenBTS.cpp b/apps/OpenBTS.cpp index ff215bf..790668d 100644 --- a/apps/OpenBTS.cpp +++ b/apps/OpenBTS.cpp @@ -170,7 +170,7 @@ int main(int argc, char *argv[]) // Start the transceiver interface. // Sleep long enough for the USRP to bootload. - sleep(5); + sleep(8); gTRX.start(); // Set up the interface to the radio. 局限 - Limitations目前而言,运行在 OpenBTS 上能够同时支持两路呼叫。 OProfile 将会展示其基本测试, Currently, OpenBTS on the E100 will support up to two simultaneous calls. Basic testing with OProfile reveals that, with two connected handsets, the transceiver consumes roughly three times that of OpenBTS. Asterisk is negligible in comparison. Most of the operations in the transceiver are using floating point operations, so this behaviour is not too surprising. The developers are currently looking at ARM NEON optimizations of various operations along with using the available DSP in the longer term. Contributions from any developers with experience in this area are certainly welcome. 其它 - Additional Information
|