OpenBTS: USRP E100

概述 - General Information

源于嵌入式系统的有限资源,运行在 E100 的 OpenBTS 需要 52 MHz 的时钟及需构建 52 Mhz 的收发器。 E100 的主时钟是可由 UHD 驱动接口进行重构这样便无需对硬件进行任何修改便可运行 OpenBTSE100 板上包含的 TCXO 使得其主频及射频信号精度处于几个 PPM 范围内;尽管还是达不到 GSM 运行的要求,但对于简单的测试及非运营级的要求,便无需外部(高精度)时钟。

基于 E100 的 OpenBTS 项目目前还是处于开发阶段,到目前也已经反复的进行了一些逐步负荷测试试验 - 两路同时呼叫 - 对所有的 4 段 GSM 频段运行并进行(数天)试验更多详情请参阅下面的局限limitations)及(performance page)页面尽管没有发布任何消息,但对 ARM SIMD 的优化及对C64x DSP的加速的工作正在进行。

在 E100 上配置 OpenBTS 有多种途径。OpenBTS 关联性涉及面很小,随设备的文件系统的镜像文件也已经包含这些。作为选择,也可以使用 OpenEmbedded 配置交叉编译环境。

  • E100 FAQ
  • boot 文件的升级
  • SD 卡的备份

关联 - Dependencies

OpenBTS 必须的文件没有被包含在 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


回呼(echo)在 Asterisk 的转接号(extension"600" 的配置,请参阅:/etc/asterisk/extensions.conf 。

;
; 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









注:OpenBTSE100(原文出处,翻译整理仅供参考!