引言
MiFi是近年来推出的一种便携式WiFi热点终端,这个名字代表“My WiFi”,即实现将网络揣进口袋为用户提供随身WiFi。它的特点是可利用SIM卡连接互联网,将SIM卡接收到的移动通信网络信号(LTE/3G/2G)以802.11无线通信标准网络的形式分享出来供上网设备连接上网,给用户实现随身WiFi[1]。目前国内外都已经兴起了MiFi热潮。
目前国内主流的一些MiFi产品支持3G/2G网络转MiFi、有线固网转WiFi、WiFi中继、有线和无线及USB的接入方式、Web远程管理、防火墙设置等功能,为用户上网提供了极大的方便,但普遍也还存在一些问题。
本文主要是实现了一款TD网络类型的3G MiFi,它除了支持上述所说功能外,针对当前市场上MiFi产品存在的不足进行性能上的改善和功能上的创新。文中提出的方案也适用于LTE MiFi的开发。
1 系统框架
1.1 MiFi硬件框架
从MiFi的主要特征功能上看,将MiFi分为4大模块[2]:电源部分、最小系统部分(包括中央处理器CPU+存储设备MCP)、WLAN部分、RFIC(射频集成电路),如图1所示。
图1 MiFi硬件框架
电源部分负责把外接的直流电源转换为系统其他部分需要的电源,从而给整个系统供电。
最小系统部分主要由CPU、掉电易失存储器RAM和掉电非易失存储器FLASH组成,此部分是MiFi的核心。
◆ CPU——控制的核心,最关键的部分,CPU的处理能力直接影响整个系统的性能。
◆ MCP(NAND+DDR)——Memory Control Port,包括NAND Flash非易失存储器和DDR易失存储器。
WLAN部分:WiFi模块部分,让其通过SDIO总线与处理器进行连接,将接收到的3G/2G网络信号以802.11无线通信标准网络的形式分享出来,向外提供WiFi网络。
基带部分:RFIC射频集成电路就是实现设备能接收SIM卡移动数据通信网络的关键。它通过USB总线与处理器进行连接。
1.2 MiFi软件框架
图2 MiFi总体软件架构
软件中需要两个操作系统,一个是路由操作系统,一个是跑基带软件、协议的实时操作系统。基带即使俗称的BB,产品设备能支持什么样的网络(GSM/CDMA/WCDMA/TDSCDMA/LTE)就是由它来决定的。路由操作系统这边除了实现一般无线路由具有的功能外,还负责与基带的通信,完成将3G/2G网络信号转为WiFi信号,负责与WiFi通信,及负责其他功能。路由操作系统是主控。下面通过图表对MiFi的软件架构进行说明,罗列出所需的软件组件。图2为MiFi总体软件架构。软件架构描述见本刊网站www.mesnet.com.cn—— 编者注。
2 MiFi的设计与实现
2.1 MiFi系统硬件设计方案
方案一:双芯片。一块芯片中运行基带实时操作系统、另一块芯片中运行路由操作系统。
方案二:单芯片。通过虚拟机实现一块芯片中同时运行两个系统。
考虑到成本、硬件电路集成度,以及所需处理能力要求并不高等,选定采用单芯片方案。本文实现的这款MiFi硬件平台以C6310作为核心处理器,此芯片是一块TD的芯片,在该芯片上经虚拟机的方式实现跑有两个操作系统——基带相关的实时操作系统(虚拟机上运行)和Linux内核路由操作系统。
2.2 操作系统解决方案
前面说到MiFi中操作系统有两个——路由操作系统、基带实时操作系统。基带实时操作系统采用重邮信科公司的基带平台(该公司是国内最早从事TDSCDMA移动终端研发的单位之一),路由操作系统采用移植一种开源的Linux内核的路由操作系统。
目前流行的第三方路由固件[3],主要有DDWRT、Tomato、Openwrt。
DDWRT:界面美观,设置简单,是三大固件中功能最丰富的,对新路由的支持十分迅速,但系统不稳定,经常出现一些bug。
Tomato:界面尚可,设置简单,是三大路由固件中最为稳定的,但对新路由几乎不支持,不出所料的话,Tomato会慢慢消亡。
Openwrt:官版LuCI界面相对丑陋,设置不简单,易用性不好,但它是三大固件中可扩展性最好的固件,对新路由的支持十分迅速,可以在新路由强劲CPU的支持下获得很好的性能表现,是最有前途的固件。
本文实现的MiFi是基于Openwrt来实现的。
2.3 MiFi的Web远程管理系统设计
对MiFi设备的管理配置同对路由器的管理相同,都是通过Web远程管理设备的。基于Openwrt的MiFi的Web远程管理系统的开发可借助于LuCI。LuCI是Openwrt有其默认的Web系统,是一个独立的Web框架,它是Lua和UCI这两个项目的结合体,是接口用Lua脚本语言的UCI。轻量级 Lua语言的官方版本只包括一个精简的核心和最基本的库,其体积小,启动速度快,适合嵌入在别的程序里[4]。Web远程管理实现机制如图3所示,其实现路由配置的机制是:
图3 Web远程管理实现机制
① 当在浏览器输入MiFi的IP(如:192.168.0.1)时,浏览器会给路由系统中的uhttpd服务器发出事件。uhttpd是Openwrt中开机就要启动的一个后台程序,一直在运行一直在侦听。
② uhttpd收到浏览器的请求后将LuCI跑起来,也即使得在浏览器上看到网页界面框图。
③ LuCI通过UCI接口与系统进行交互。
但官版的LuCI系统是针对路由器的,必然与MiFi不符,本文仅是借助LuCI框架对整个Web管理重开发,开发一套MiFi的Web远程界面、建立物理逻辑连接。利用LuCI的框架及LuCI定义封装好的多控件,可快速实现远程管理系统里模块的快速添加或删除、节点的快速添加或删除,以及避免繁琐的html编写,以实现超快速的页面搭建。
若移植的开源Openwrt固件版本中没自带LuCI环境,可自行搭建。LuCI环境搭建[5]:
① 所需下载的软件包——Lua、LuCI;
② 组件LuCI文件夹——把LuCI运行所需要的库放到LuCI文件夹根目录;
③ 建立动态连接库——有一些.so需要C库的支持,比如uci.so 需要libuci.so.0.8等,需搬移安装;
④ 建立config文件夹——在/etc/config/下面建立配置文件;
⑤ 移植Web服务器——把已经编译好的Uhttpd拷贝到相应的bin下面;
⑥ 组件www文件夹。
2.4 性能及功能上的改善
对当前市场上的主流MiFi产品进行了数据统计和分析,普遍存在如下问题[1]:
① 连接数小。很多主流MiFi产品最多只允许5个上网设备同时连接上WiFi。
② 电池导航时间短,普遍只能持续工作2~4小时。
③ 无流量限制设置功能和流量用超时有效的提醒方式。很多用户反映SIM卡流量用超时没有任何提醒,一个月后去缴费得知欠费很多。
2.4.1 性能指标提升
性能指标提升:
① 连接数的提升。通常连接数的多少是由WiFi芯片本身已经确定了的,其值一般都是比较大的,但是MiFi系统能支持多少连接数还与其他很多方面有关。本文中实现的MiFi通过加大缓冲区buffer(每一个连接都会申请占用一些buffer,注册不到buffer也就不会连接成功)、在SDIO总线驱动中增添了包种类识别算法(使其支持多种大小的数据包传输)来增大了MiFi的连接数,最后实现了使系统能支持10个上网设备同时连接上WiFi。
② 电池导航时间的提升。本系统中添加了省电方案,写了一个power manage进程,该进程执行每隔1 min检查是否有上网设备通过USB线/LAN口有线/WiFi无线连接到MiFi,若没有设备则使定时器开始计时,若在指定时间内都不再有连接,则系统进入睡眠模式,若在定时器计时期间检测到有设备连接则将定时器清零。当系统进入睡眠模式后,若有按键或USB插入发生,则唤醒系统进入正常模式。
2.4.2 功能上的创新
这里主要是解决当前用户抱怨最多的问题——无流量限制设置功能和流量用超时有效的提醒方式。
其实现方式是:
① 在MiFi的Web远程管理系统上添加流量套餐管理,实现流量套餐使用情况的显示及查询、流量使用最高门限的设置;
② 流量用超后有效的报警。
这里强调的是有效的报警,提出两种方式:方案一,MiFi硬件上加入音频发音器,长鸣发音的报警方式。在Webui上设置流量限制值,当使用流量超限后启动音频发音器,使MiFi长鸣,以告知用户流量已超。方案二,MiFi给主人的手机发送报警短信的方式。设置流量限制值,当流量超限后下发AT指令到基带,让其发送流量用超的报警短信到用户的手机上以告知用户进行处理。
本文中实现的MiFi采用的是第一种报警方式。
3 测试验证及成果展示
系统测试验证结果见表1。
表1 测试验证
成果展示如图4所示。
图4 成果展示图
结语
本文对MiFi的软硬件进行了系统的论述,讲述了MiFi的实现原理,建立了一个宏观的实现框架及思路;对实现MiFi的各个环节提出了实现方案,在某些点上还提出了不同的方案;分析了当前市场上MiFi的不足,在性能和功能上进行了改善。测试验证本文实现的MiFi具有一般MiFi应具有的功能,且在性能和功能上更优于一般的MiFi。相较而言,它具有较快的网络速率、较大的连接数、较低的功耗且具有省电模式,在功能上创新地加入流量用超后的自动报警功能。该MiFi已经做成产品并在市场售出。