蓝牙技术联盟网站:www.bluetooth.org
开发者网站:developer.bluetooth.org
第一章:什么是低功耗蓝牙技术
低功耗蓝牙和经典蓝牙不同:设计目标和市场领域都不同,低功耗蓝牙被视为一个不同的技术。
经典蓝牙经典蓝牙的设计目的在于统一全球各地的计算和通信设备。让手机和电脑相连接,但是经典蓝牙最广泛的应用还是音频的传输,比如让手机的音频传输到耳机。发展方向是朝着高带宽的方向发展。
蓝牙1.0版本为基本码率(BasicBate,BR)最大的物理层数据速率为1Mbps(兆比特每秒);
蓝牙2.0版本为增加码率(Enhanced Data Rate,EDR),其物理层传输的速率为3Mbps(兆bit每秒);
蓝牙3.0版本引入了Alteractive MAC PHY(AMP 交替射频技术),利用IEEE 802.11高达数百Mbps的物理层传输速率。
低功耗蓝牙低功耗蓝牙选择了完全不同的方向,并非只是增加可达的数据速率,而是从尽可能的低功耗方向优化。这就意味着你无法获得很高的数据速率,但是连接时间要保持数小时或者数天。
从低成本的需求方面考虑视为低功耗涉及方案尤为的重要。其中有三个关键的因素:
ISM频段 2.4G ISM频段槽糕频段,传播特性差,容易被各类物体吸收。在全世界免许可,自由使用。
IP许可 Wibree(超低功耗蓝牙)技术发展成熟。
低功耗低功耗蓝牙基础设计就是以纽扣电池。
1.1设备类型
低功耗蓝牙有两种设备类型:
双模设备: 既支持经典蓝牙,又支持低功耗蓝牙
双模设备是一类新的设备,要求主机和控制器提供新的软件和硬件(包括固件)。因此,现有的经典蓝牙的主机和控制无法通过升级实现低功耗蓝牙。不过大部分的经典蓝牙只是替换经典蓝牙的控制器的某些部分,这使得手机、电脑和其他的设备能够较快地利用双模控制设备替换现有的经典蓝牙的控制器。
单模设备: 只支持低功耗蓝牙不支持经典蓝牙,无法与经典蓝牙通信,但是可以与其他的单模和双模设备通信。由于经典蓝牙不支持头戴耳机,立体声音乐或者较高的文件传输速率,无法将其用于当今经典蓝牙的大部分领域。
单模、双模和经典蓝牙的兼容性
单模 | 双模 | 经典 | |
---|---|---|---|
单模 | LE | LE | 无 |
双模 | LE | 经典 | 经典 |
经典 | 无 | 经典 | 经典 |
1.2设计目标
低功耗蓝牙的设计目标很简单,就是实现低功耗。蓝牙SIG的独特之处在于该组织制定并控制从物理层到应用层的所有层次。使得蓝牙规范标准发布之后具有互通性、鲁棒性以及极高的质量。
最初的设计目标:
全球操作:2.4GHz ISM 频段是唯一一个实现低成本、大批制造的频段,所有说人人都想分一杯羹,拥挤在所难免。800/900MHz区间的频段也可以使用,但由于不同国家和地区对具体的使用频率的定义和使用规范不同,同样缺乏可操作性。
低成本:低成本的设计目标很有意思,以为做到简洁高效。举个例子,尽管可以在低功耗蓝牙中加入分散网(scantter net)或完整的网状网(mesh)支持,但要求更多的内存和处理能量来维护网络,从而增加了成本。所以低功耗蓝牙系统进行了低成本优化,没有涉及学术界广泛研究的拓扑学。
鲁棒性:
低功耗蓝牙使用的2.45GHz频段已经非常的拥挤,仅仅考虑标准的技术就包括:经典蓝牙、低功耗蓝牙、IEEE 802.11、IEEE 802.11b、IEEE 802.11g、IEEE 802.11n以及IEEE 802.15.4。另外,许多私有的无线电同样也使用这个频段,包括X10视频中继器、无线警报、键盘和鼠标等。许多其他设备在这个频段也会发出噪音,例如街灯和微波炉。
鲁棒性,包括检测和纠错比特误码的能力,这类错误通常由背景噪音引起的。少部分短距离使用了长循环冗余校验(CRC),但是大部分标准中做了折中,使用了较短的CRC校验码。优良的设计应该在校验能力和发送校验信息所需的时间之间取得平衡。
短距离:
短距离实际上存在一些问题。比如想要得到一个低功耗的系统,就必须尽可能降低传输速率以减少信号传输的能量。类似地,我们必须在接受方保持较高的灵敏度,才能减少在一大片的噪音中采集设备的无线通信信号时所需要的能量。这里,短距离真正的含义,在低功耗蓝牙网络不是一个蜂窝的基站,而是一个个人的局域网。
低功耗:
蓝牙的设计在设计低功耗并没有太多的改变,只是后者将能量的消耗目标降低到了一到两个数量级。经典蓝牙的设计目标是实现长达几天的待机能力以及若干小时的使用时间,而低功耗蓝牙的设计目标使是测量温度和测量你的步行距离的传感器能够工作几年的时间。
1.3术语
自适应调频(adaptive Frequency Hopping,AFH)一种使用某个频率子集的技术,使设备可以避免其他非自适应技术使用该调频(比如Wi-Fi接入点)。
体系结构(architecture)低功耗蓝牙设计方案。
频段(Band)参看无线频段(Radio Band)。
跳频(Frequency Hopping)两个设备之间使用多个频率通信。某一个时刻只使用一个频率,各个频率按照确定的循序使用。
层(Layer)系统中实现一个具体功能的部分,例如物理层负责无线电的操作。系统中每一层都是根据上层或者下层抽象而来的。链路层并不需要知道有关无线电功能的所有细节;逻辑链路层及适配层(L2CAP)不需要关心链路层实现的所有细节。这一抽象的概念对管理复杂的系统至关重要。
主设备(master)微微网中协调与其他设备的一台复杂设备。
微微网(piconet)单词pico和network两个单词的缩写。
无线频段(radio rand)无线电波通过频率和波长进行划分。不同的无线电波具有不同的规则和使用方法。某一范围内的无线电频率以同一规则组合起来时,该频率的集合就被称为一个无线频段。
从设备(slave)与主设备一起工作的简单设备。这些设备通常是用途单一设备的。
Wi-Fi 一种为高传输速率而设计的补充技术,用于计算机等复杂设备的物联网接入。
第二章:基本概念
格言:在协议的设计上,只有达到了“增一分则多,减一分则少”的境界才算完美。
要理解低功耗蓝牙,首先要理解如何在短距离的无线系统中实现低功耗。通常来讲,一些最基本的设计决策是围绕典型的使用实例来实现低功耗的。
低功耗蓝牙并未经典蓝牙的优化,相反的,它是针对那些以前没有使用的开放无线标准的新兴的细分市场。这些细分市场要求设备间歇性地发送数据,间隔从几秒到几天不等,每次的数据发送若干的字节。他们通常是用来执行操作的检测或控制类应用,比如智能家居采暖应用中检测窗户打开或者关闭,根据浮动电价开启或者关闭电器,切换到另一点是频道等。
2.1纽扣电池
纽扣电池是低功耗蓝牙设计的首要目标。这类电池在使用时,有严格的要求。途中的电池型号是CR2303,标签上的”CR“表示这是一个3V锂二氧化锰电池,”20“表示该电池的直径为20mm,”32“表示高度是3.2mm。除了图中所示的型号外,其他的一些电池尺寸也很常见。
对于这类小型电池而言,各品牌的电池所能存储的最大能量非常接近。一个典型CR2032的额定容量在3V时为230mAh,如果换一个场景可能更好理解——这些能维持一个人能量20s。
虽然230mAh微不足道,但即使这样,设备也无法完全获取他的全部能量。首先,可能取决于电池的温度——温度越低,电池提供的能量越低。与室内相比,纽扣电池在0摄氏度只能提供80%的能量。
其次,持续的使用电池,可用的总能量也会显著的降低。通常情况下,通常情况下,大多数纽扣电池存在一个峰值电流,一般为15mA,在使用时不应该超过这个电流,否则易损坏电池。如果长时间该电流供电,总的可用量可能减少。因此,任何成功的无线电的设计需要考虑这些因素,使电池在大电流或长时间供电以后有一段时间进行恢复。
最后电池本身具有内部漏电特性也必须加以考虑。即使设备从未从电池取电,电池电量也会减少。因此,偶尔使用电池,漏电电流成为总能量消耗的一环。
总结,温度过低供电有问题,持续供电也会有问题,电池本身也会耗电。
2.2时间即能量
时间即能量是贯穿整个低功耗蓝牙的基本概念。一旦无线电开始工作便需要了能量,哪怕检查是否需要发送或者接受。因此,减少必要的执行时间十分重要。
许多关键的操作必须通过一定的措施实现优化,包括鲁棒地发现设备、连接设备和发送数据。减少这些活动所需要的时间,能耗的减少从而延长了电池的寿命。
鲁棒的发现设备要求至少有两个设备:其中之一用于寻找其他设备,其他一个或者多个设备处于可发现状态。在低功耗蓝牙中,一个设备想被处于被发现就必须每隔几秒发送三次短消息;而如果它想发现打算与之通信的设备,在广播短消息之后该设备应立即进行侦听。寻找其他设备时,设备将打开它的接收器并侦听其他设备的传输。
三次传输分别利用了三个不同的频率进行,以提高鲁棒性。选择数字3是为了在鲁棒性和低功耗之间平衡:如果频率只有一个,那么像其他很多技术那样只要该频率被阻塞,整个系统将无法工作。如果频率数量太多,例如为16个,该设备将花大量的时间传输,将不再是”低功耗“设备。
在选择哪个设备执行发送、哪些设备执行接收时必须经过慎重的考虑。要搜寻一个正在发送的设备可能需要花很长的一段时间,并因此消耗大量的能量,因此这类操作应当交给那些能量储备更多的设备或正好选择低功耗设备。在低功耗蓝牙中,可发现设备执行数据的发送,而寻找其他设备的设备进行接收。
数据报文的长度很短,主要出于以下三个原因的考虑:首先,通过使用高效率编码,断分组可以使用更少的能量更快地发送相同数量的数据。其次,限制设备只可能使用短报文,控制器消除了在一次数据传输中不要不断校准无线电的需要。这是由于无线模块在传送或接受时不断发热,将改变硅芯片的特性,并因此改变传输速率。如果报文控制在较短的长度,则芯片没有足够的时间发热,因此传输频率的偏移可以忽略不计。此外,对于短报文的要求也略微降低了芯片的峰值功率。最后,短期、间歇性而非长期性、连续的取电令设备可以从一个纽扣电池获取更多的能量。可见,较之长报文的解决方案,使用短报文且彼此间保留足够空间让电池足以恢复的方案更合适。
2.3昂贵的内存
总所周知,一台电脑的内存越多,通常价格越贵。然而,计算机内没一个比特内存不仅费钱,还费能量。内存需要动态的刷新——每个一段时间芯片中内容便需要刷新一次。这种刷动态需要能量,而设备的内存越多也就需要更多的能量来供电。因此,整个低功耗蓝牙设计在每一层都要考虑降低内存的数量。
例如,链路层保持较短的分组有助于减少无线的发送和接受数据包时对内存的要求。例如,属性协议层不要处理任何大于23个字节长度的数据报文,在状态转换时也不需要存储任何的状态信息。所以这些降低了内存的需求。
另一个与内存相关的负担在于,当一台设备需要做很多事情时,需要激活大量的协议。例如,想象一副耳机同时支持免提(hands-free)、远程控制(remote control)和电池状态报告(battery status reporting)功能。如果以上的每个功能都需要一个单独的协议,这些协议对存储器的需求就被加在一起。而低功耗蓝牙只有一个协议——属性协议来支持设备发现、服务发现、读取和写入信息、以实现不同的实例。使用一个协议显然比使用多个协议开销少的多。
2.4非对称设计
在理解低功耗蓝牙体系结构后,你会发现一个设计概念十分明显,即在所有的层都采用了非对称设计。为了让能源更少的设备负担更少的事情,这种非对称性设计显得非常的重要。
物理层通常又两类无线电:发射器和接收器。一个设备既可以是发射器又可以是接收器,但是也有可能只有发射器或者只有接收器。假如一个设备只有发射器,而另一个设备只有接收器,则二者构成的网络称为非对称网络。
这种不对称的设计源于一个基本的假设,即所有的其他设备必须为资源有限的设备进行优化。
在链路层,设备被分为广播者、扫描者、从设备和主设备。广播者,是传输数据包的设备,扫描者是接受广播者的数据包的设备。从设备和主设备相连,但即便在这里,不对称性也是显而易见的。从设备无法发起任何复杂的操作,而主设备则必须负责微微网的定时、自适应性跳频集合设置、加密以及一些其他的复杂操作。从设备只需要完成要求的操作,不必进行复杂的处理。这样一来,从设备可以简单,实现低成本、低内存和尽可能低的功耗。
在属性协议层存在两类设备,客户端和服务器端。服务器保存数据,客户端向其发送请求以获得该数据。服务器端好比链路层的从设备,只做被要求做的事情。客户端相对比较辛苦,比如获得服务器上的数据类型以及理解如何使用这些数据。
即便是低功耗性的安全架构也是非对称性的。安全架构基于这样一个秘钥分配方案:又从设备提供秘钥,将其交给主设备并由后者保存。主设备因而负担起保存链路层绑定信息的重任,从设备从则无需记忆任何相关的信息。这就意味着在从设备上实现安全特性非常的简单,但是在主设备上实现安全特性就要麻烦一些。
有上述的介绍可见,那些资源最为受限的设备将成为广播者、从设备和服务器。这类设备拥有最少的可用内存和处理负担,得益于非对称性设计实现了超低功耗的目标。
其他类型的设备——扫描者、主设备和客户端拥有相对较多的资源。这些设备通常装备了较大的电池,具有丰富的用户界面,甚至可能是市电供电。把负担从从设备移到主设备中,从广播者移到扫描者,从服务器移到客户端的
选择是正确的,这一选择降低了资源限制的受限的功耗,将成本转嫁到具有丰富资源的设备上。
2.5为成功而涉及
许多蓝牙标准出师不利,原因在于一些无线电设计一旦受到了欢迎,用户数量不断的增加,往往导致网络阻塞不堪甚至无法工作。如果说一件事蓝牙要做得很好,那便是它在非常拥挤的环境中也能工作。蓝牙技术联盟(SIG)每年组织3次成为UnPlugFest的测试活动,许多来自彼此竞争的公司的工程师聚到一起,测试他们即将投放市场的产品。这些测试揭示了,这样一个事实,即便大酒店出现成百上千个的无线蓝牙,蓝牙依然可以正常工作。无疑,低功耗蓝牙继承了这一点。
为成功而设计就意味着无论是拥挤的通勤火车或是公共汽车上,还是进入了热闹的体育馆或是演唱会的现场,每个人都应该可以操作自己的一些低功耗设备。这就意味着一台设备周围的几米内可能有成千上万的设备,但是发现和连接还是能够如期地运作。这也就意味着,对一给定的设备能够同时连接的设备的数量不应有所限制。如果一台设备想要和另一台设备对话,它就一定能够做到,无需要担心类似经典蓝牙“同一时间只允许七个从设备进行连接”的限制。
除了设备的密度,另一个在设计控制器时必须要考虑的度量就是安全系统。任何一些流行的无线电系统总会招致一些人对其进行攻击,当涉及到对个人账号和财产安全时,这一点显得尤为重要。因此,必须使用最先进的安全和加密引擎。
除了安全之外,如果一个人想携带多种设备,鉴于它们有限资源必须间歇性进行广播,那么隐私问题也必须加以解决。隐私是低功耗蓝牙设计的一个主要的目标。每个连接使用不同的签名,并与连接双方的身份信息无关,这样一来,攻击者仅凭侦听数据的传输包将无法猜测谁正走在大街上。此外,广播时允许使用一类可以解析的私有地址,只有那些有身份识别秘钥的设备能够解析改地址,而恶意设备将无法解析或者跟踪该地址。
另一个考虑的因素是,由于无线电无处不在,即便是单个比特位的错误也会导致严重的后果。打个比方,如果你现在控制一个门阀,以保护漂亮的城市公园不会被污水淹没,你恐怕不会希望已经关闭的阀门由于某个比特位而被错误地打开。为了防止这种情况的出现,要求数据包使用强循环冗余校验(CRC)以防止1,2,3,4,5和所有的奇数位发生错误。此外,如果想要获得更高的鲁棒性还可以执行加密,数据将会附加一个不同的消息认证码,确保其正确的发送方,防止攻击者回复消息给排污阀。同时,属性协议层也拥有高度的防护方案,它提供了一种称为“准备属性写入”的能力,只允许将通过验证的返回值写入到指定的属性(而不允许写入到其他属性)。由此可见为了控制一个“阀门”的一个比特位,用到了14比特位的冗余循环校验和认证数据,足以见到低功耗蓝牙的鲁棒性。
2.6凡是皆有状态
2.7客户端-服务器架构
2.8模块化架构
2.9十亿只是个小数目
2.10无连接模型
2.11范式
2.11.1客户端-服务器架构
2.11.2面向服务的架构
第三章:低功耗蓝牙的体系结构
低功耗蓝牙体系结构非常简单。如下图,分成三个基本部分:控制器、主机和应用程序。
概念:
控制器:物理设备、发射和接受无线信号,将信号翻译成携带信息的数据包。
主机:一个软件栈,管理两台或者多台设备如何通信以及如何利用无线电提供几种不同的服务。
应用程序:用户软件栈,进而控制器来实现用户实例。
组成:
控制器组成:物理层、逻辑链路层、硬件控制层(HCI)
主机组成:逻辑链路控制和适配协议(L2CAP)、属性协议(AttributeProtocol)和安全管理协议(SecurityManagerProtocol)、通用属性规范(GATT)、通用访问规范(GAP)。
3.1控制器
蓝牙控制器同时包含了数字部分和模拟部分射频器件和负责收发数据包的硬件组成。控制器与外界通过天线相连,与主机通过主机控制接口(HCI)相连。
3.1.1物理层
物理层是采用2.4GHz无线电、完成艰巨的传输和接受工作的部分。无线电可以在某个特定的频段内改变幅度、频率或者相位携带信息。在低功耗的蓝牙中,采用一种高斯频移键控(GFSK)的调制方式改变无线电波的频率,传输0或者1的信息。
3.1.2直接测试模式
直接测试模式是一种测试物理层的新方法。直接测试模式允许测试再控制器的物理层发送一些系列的数据测试包和接受一系列的数据测试包。测试者可以分析接受的数据包,或者是很久接受的数据包分析是否遵守RF规范。
3.1.3链路层
链路层是低功耗蓝牙中最为复杂的部分。它负责广播、扫描、建立和维护连接,以及确保数据包按照正确的方式组织、正确的计算校验值以及加密序列等。为了实现上述功能,引入了三个概念:信道、报文和过程。
信道:
链路层信道有两种:广播信道和数据信道。未建立连接的使用广播信道发送数据。广播信道只有三个——这一数字是在低功耗和鲁棒性折中的产物。在建立连接后,设备利用数据信道发送数据。数据信道一共37个,由一个自适应跳变引擎控制以实现鲁棒性。在数据信道中,允许一端向另一端发送数据、确认、并在需要时重传,此外还能为每一个数据进行加密和认证。在任意信道上发送的数据(包括广播信道和数据信道)均为小数据包。数据包封装了发送者给接受者的少量数据,以及保证数据准确性的校验和。无论在广播信道还是数据信道上,基本的数据包格式相同,每个数据包含有至少80个bit的地址、报文和校验信息。
报文:
8 | 32 | 8 | 8 | 0~296 | 24 |
---|---|---|---|---|---|
前导 | 接入地址 | 报头 | 长度 | 数据 | 循环冗余校验 |
8bit前导优化数据包的鲁棒性,这一长度足够接受者同步比特计时和设置自动增益控制。
32bit接入码在广播信道数据包中是固定值,而在数据信道数据包中是完全私有的私有值。
8bit的报文字段描述数据包的内容。
8bit的长度字段描述负载的长度,由于不允许发送有效负载长度超过37字节的数据包,不是所有的bit都是用来记录长度。
0-296bit数据段:携带来自应用和主机端的有用信息。
24bit的循环冗余校验:CRC值,确保接受的报文没有错误bit。
可发送的最短报文是空报文,时长是80μs;满载的最大报文时长是376μs。大部分广播报文只有128μs,大部分数据报文只有144μs。
3.1.4主机控制接口
主机/控制器接口(HCI)的出现 为主机提供了一个与控制器通信的标准接口。允许主机将命令和数据发送到控制器,并且允许控制器将事件和数据发送到主机。主机/控制器接口实际上由两个独立的部分组成:逻辑接口和物理接口。
逻辑接口定义命令、事件及其相关的行为。
物理接口定义了包括命令、事件和数据通过不同的连接技术传输。已知定义的物理接口包括USB、SDIO、两个UART的变种。
因为主机控制器接口存在控制器和主机之内,位于控制器中的部分通常为主机控制器接口的下层部分;位于主机中的部分通常称为主机控制器的上层部分。
3.2主机
3.2.1逻辑链路控制及适配协议
逻辑链路控制和适配协议(L2CAP)是低功耗蓝牙的复用层。该层定义了两个最基本的概念:L2CAP信道和L2CAP命令,L2CAP信道是一个双向的数据通道,通向对端设备上的某一特定的协议和规范。每个通道都是独立的,可以有自己的流量控制和与其相关联的配置信息。
低功耗蓝牙只用了两个信道:一个用于信令信道,一个用于安全管理器,还有一个用于属性协议。低功耗蓝牙只有一种帧格式,即B帧,包含两个字节的长度字段和两个字节的的信道识别字符。**如图表,**B帧格式和传统的L2CAP的每个通道使用的基本帧格式一致,在协商使用一些更复杂的帧格式之前,传统L2CAP会一直使用该帧格式。
2 | 2 | 0~65535 |
---|---|---|
长度 | 信道ID | 信息净荷 |
3.2.2安全管理协议
安全管理器定义了一个简单的配对和秘钥分发协议。配对是为了获取对方设备信任的过程,通常采用认证的方式实现。配对之后,接着是链路加密和秘钥分发的过程。在秘钥分发过程中,从设备把秘钥共享给主设备,当两台设备在未来的某一个时候重连时,他们可以使用先前分发的共享秘钥进行加密,从而迅速的认证彼此的身份。安全管理器提供了一个安全管理箱,负责生产数据的Hash值,确认值以及配对过程中使用的短期秘钥。