蓝牙™ 低能耗入门
1.修订历史
| 版本 | 日期 | 作者 | 变化 |
|---|---|---|---|
| 1.0.0 | 2022 年 4 月 22 日 | Martin Woolley,蓝牙技术联盟 | 初始版本。 |
| 1.0.4 | 2022 年 6 月 6 日 | Martin Woolley,蓝牙技术联盟 | 改进了链路层 部分:增加了允许多个链路层 状态 实例的信息,改进了语言以确保明确信道分类是一种可选的实施功能,区分了信道状态报告和信道图更新,并标明了 AFH 在监管背景下可能有不同的含义。 |
| 1.1.0 | 2023 年 1 月 17 日 | Martin Woolley,蓝牙技术联盟 | 已更新以反映Bluetooth®Core Specification 5.4,并添加了有关带响应的周期性广播 的信息。 |
| 1.2.0 | 2024 年 3 月 15 日 | 蓝牙SIGIfti Anees | 更新了格式,并修复了 14.2 中与观察员角色有关的错字。 |
| 1.3.0 | 2024 年 10 月 15 日 | Martin Woolley,蓝牙技术联盟 | 已更新,包括有关Bluetooth® 信道探测、Decision-Based Advertising Filtering 和监测广告设备 功能的信息,以及帧间空间定时变量的修订允许值。 |
2.关于本文
蓝牙低功耗入门》旨在帮助产品 人员和开发人员等技术专业人员在查阅正式技术规范和深入研究该主题之前,快速了解蓝牙低功耗 (LE)。
蓝牙SIG(BluetoothSIG收集了大量有关Bluetooth LE 规范、论文和其他教育资源。本文的另一个目的是提高人们对其存在、目的的认识,并帮助读者了解该主题及其辅助材料。
大多数Bluetooth LE 产品要么结合使用无连接通信(广告)和点对点连接来交换数据,要么仅通过广播广告数据包来进行通信。本资源涵盖Bluetooth LE 协议栈,因为它用于上述类别的产品。与此相反,本资源不涵盖蓝牙网格。蓝牙网格是Bluetooth LE 的一种特殊用途,应参考其他相关信息资源。
本文的目的并不在于复制或精确涵盖与正式规范相同的内容或深度。在有必要的情况下,本文可能会时不时地摘录一些规范内容。您应将本文视为通过介绍和解释重要的Bluetooth LE 概念、指出其他资源和规范的方向,并希望使学习曲线不那么陡峭,从而起到定向的作用。
3.导言
蓝牙技术早在 2000 年就已问世。蓝牙技术最初是为了让两台设备无线交换数据,而不需要任何其他中间网络设备,它很快就在无线鼠标和汽车免提套件等产品中发挥了作用。后者是一种音频产品 ,音频被证明是蓝牙技术最初版本的杀手级应用。多年来一直如此。
Bluetooth 技术的第一个版本用于最早的Bluetooth 产品,更正式的名称是Bluetooth BR(基本速率)。它在物理层提供的原始数据传输速率为每秒 100 万比特(1 mb/s)。
后来,一种更快的蓝牙技术被定义为Bluetooth BR/EDR (增强数据传输速率)。它的原始数据传输速率为 2 mb/s,但仍是为两个设备之间直接交换数据而设计的。
蓝牙核心规范低功耗(LE)首次出现在蓝牙核心规范[1]的 4.0 版本中。这是蓝牙技术的一个新版本,它并没有取代其前身Bluetooth BR/EDR,而是作为Bluetooth BR/EDR替代品,其功能和质量使其成为新一代产品的完美选择,并能满足新的和具有挑战性的技术和功能要求。
Bluetooth LE 支持两个设备之间点对点通信以外的拓扑结构,具有多种基于广播的模式,允许一个设备同时向数量不限的接收器传输数据。它也是蓝牙网状网络的基础,可创建由数以万计的设备组成的网络,每个设备都能与网络中的任何其他设备通信。
面向连接的通信和无连接通信都支持两个设备之间的一对一通信。无连接广播支持一对多通信。
应用 数据的通信方向取决于Bluetooth LE 使用方式。请注意,这里的模式一词可作为速记词使用。有些模式涉及面向连接的通信,有些涉及无连接通信。有些模式支持应用 数据的双向交流,但在某些情况下,应用 数据只能单向传输。
通常情况下,应用 数据与时间的关系并不重要,但在某些情况下,应用 数据与时间的关系很重要,设备在处理接收到的数据时必须保持这种关系。Bluetooth LE 支持面向连接和无连接模式下的等时通信。等时通信正是为数据有时间限制的情况而设计的。音频就是一个很好的例子。
Bluetooth LE 具有许多设备定位功能,专供与定位相关的应用使用。
- 方向查找它定义了通过接收器计算传输信号方向的两种不同方法。这两种方法分别称为到达角 of Arrival)和出发角 of Departure)。
- Bluetooth® 信道探测 (蓝牙信道探测 )允许两台设备合作,其中一台设备可安全地计算出与另一台设备的距离。
这种新型蓝牙技术变体的最初design 目标之一是高效利用能源。我们设想的设备可以使用硬币大小的小电池运行数天或数周甚至更长时间,这种对能源效率的追求解释了Bluetooth LE 的许多决定性特征。特别是,该design 为设备分配了不对称的能力和责任,以确保拥有相对充足电源(如大型智能手机电池)的设备比使用纽扣电池的同类设备承担更多的重任。这一design 决策以及其他类似的design 决策使Bluetooth LE 成为现在的低功耗无线通信技术,并在随后的几年中被广泛应用于多种类型的产品中。
4.Bluetooth LE 规格
要深入透彻地了解Bluetooth LE ,就必须熟知适用的规范。蓝牙核心规范 Bluetooth LE 的架构、程序和协议由一个名为蓝牙核心规范的关键规范完整定义。产品如何使用蓝牙使其具有互操作性,由两种特殊类型的规范(即配置文件和服务)组成。图 1 展示了Bluetooth LE 规范类型及其关系。
图 1 -Bluetooth LE 规格
4.1蓝牙核心规范
蓝牙核心规范 是Bluetooth LE 和 Bluetooth Classic 的主要规范。该规范
- 定义了Bluetooth 技术的架构和各种堆栈配置的层级。
- 描述并定义主要特征。
- 确定支持行动的正式程序。
- 定义了设备在堆栈相关层之间进行通信的协议。
蓝牙核心规范 必然是一个大规范。
总之,蓝牙核心规范 定义了蓝牙技术的工作原理,以及开发人员在实施蓝牙协议栈或其一项或多项功能时的要求。
4.2配置文件 规格
当两个Bluetooth LE 设备通过连接进行通信时,通常会形成客户端 /服务器关系。服务器包含状态 数据,而客户则以某种方式使用这些数据。
考虑一下蓝牙钥匙扣,它的作用是在你把钥匙放在某处并暂时丢失后帮你找到钥匙。智能手表可以充当客户端 设备,蓝牙钥匙扣则充当服务器。按下智能手表显示屏上的按钮,钥匙扣的状态 就会改变,并发出响亮的声音,让你重新找到钥匙。
配置文件规范定义了相关设备(如智能手表和钥匙扣)所承担的角色,特别是定义了客户端 设备的行为以及它应与之配合使用的连接服务器上的数据。
在钥匙找寻器的例子中,智能手表或其他承担相同角色的设备的行为是在Find Me配置文件 规范中定义的。
4.3服务 规格
服务器上的状态数据存在于正式定义的数据项中,这些数据项被称为特征和描述符[2]。特征和描述符被组合在称为服务的结构中。服务提供了一种环境,在这种环境中,可以为它们所包含的特征和描述符赋予意义和行为。
服务 规范定义了单个服务 及其包含的特征和描述符。服务 规范中定义了托管服务 的设备在响应各种条件和状态 数据值时的行为。
服务 规范可视为定义服务器设备行为的一个方面。
在智能手表和钥匙扣的示例中,钥匙扣充当服务器,执行即时警报服务。
4.4 协议规格
一些标准化的Bluetooth 应用程序需要自己的协议,这些协议有自己的规范。Bluetooth Mesh 的主要规范是协议规范。
4.5分配号码
Bluetooth LE 的各个方面都使用了唯一标识符。例如,所有服务、特性和描述符都有一个通用唯一标识符 (UUID),用于识别与之相关的服务、特性 或描述符的类型,而不是特定设备上的特定实例。公司可以通过唯一的公司标识符来识别,这也是某些配置文件的要求。
蓝牙SIG 分配的标识符称为 分配号码此类标识符的完整列表可从蓝牙技术SIG 网站上的分配号码 页面获取。
5.Bluetooth LE 堆栈
5.1 高级架构
Bluetooth LE 协议栈由许多层和功能模块组成,其中有些是必须的,有些是可选的。协议栈的这些部分分布在两个主要架构模块中,即 host标准逻辑接口定义了这两个组件的通信方式。
host 通常是类似操作系统的东西。控制器通常是芯片上的系统。但情况并不一定如此,蓝牙规范也没有规定任何此类实施细节。重要的是,host 和控制器作为架构中独立的逻辑容器,可以通过某种方式在物理上独立的组件中实现,并为它们之间的通信定义了标准接口。这样,蓝牙系统就可以由来自不同制造商的host 和控制器组件组成。
图 2 展示了Bluetooth LE 协议栈、其层级及其在host 和控制器组件中的分布。
Host Controller 接口(HCI)表示它们之间的逻辑接口,但本身并不是物理组件。就底层物理传输而言,HCI 可以通过多种不同方式实现,但逻辑或功能接口始终是相同的。
编解码器是低复杂度通信编解码器,是蓝牙低功耗音频音频使用的默认音频编解码器。它不是标准Bluetooth LE 协议栈的一部分,但在低功耗音频 产品中总能找到,如图所示,编解码器 组件要么在host 中实现,要么在控制器中实现。
图 3 展示了通信系统的标准 OSI 参考模型。值得注意的是,Bluetooth LE 栈跨越了 OSI 参考模型的所有层,而许多其他无线系统只跨越了 OSI 层的子集 ,如物理层和数据链路层。蓝牙技术作为全栈通信系统的一个优势是,它不依赖于其他标准机构。这种依赖性会限制技术的发展。
图 2 -Bluetooth LE 协议栈
图 3 - OSI 参考模型
蓝牙网状网协议使用Bluetooth LE 核心功能,并在核心Host 上增加了一系列专用层,以实现蓝牙网状网协议和程序。host 可包括图 2host 部分所示的任何层,以支持其他产品 要求,如形成连接的能力。
本资料不涉及蓝牙网格的更多内容,如需这方面的教育资源,请参阅第 18 节。下面的其他资源。
图 4 -Bluetooth Mesh 协议栈
5.2 图层概览
如图 2 所示,Bluetooth LE 堆栈各层的主要职责和功能概述如下:
| 层数 | 主要职责 |
|---|---|
| 物理层 | 定义了蓝牙技术中与射频(RF)使用相关的所有方面,包括调制方案、频段、信道使用、发射器 和接收器 特性。 |
| 链路层 | 定义了空中接口数据包格式、比特流处理程序(如错误检查)、状态 以及空中通信和链路控制协议。 |
| Channel Sounding | 为设备提供测量能力,应用 可利用测量结果计算与另一设备的距离。应用层采用了两种不同的方法,即PBR PBR)和往返RTT)。这些方法可以结合使用,也可以单独使用。 |
| 异步适配层(ISOAL) | 允许使用等时通信的设备使用不同的帧持续时间。执行成帧 PDU 的分段和重组,或非成帧 PDU 的分段和重组。 |
| Host 控制器接口(HCI) | 为host 组件和控制器之间的命令和数据双向通信提供定义明确的功能接口。 |
| 逻辑链路控制和适配协议(L2CAP) | 在host内充当协议多路复用器,确保由适当的host 组件为协议提供服务。在下层和上层 L2CAP 之间执行 PDU/SDU 的分段和重新组装。 |
| 安全管理器协议(SMP) | 执行配对等安全程序时使用的协议。 |
| 属性协议(ATT) | ATT客户端 和 ATT 服务器使用的协议,允许发现和使用服务器属性表中的数据。 |
| 通用属性配置文件(GATT) | 定义使用 ATT 处理属性表的高级程序。 |
| 通用访问配置文件(GAP) | 定义了在非连接状态 下可能使用的操作模式和程序,如如何使用广告进行无连接通信以及如何执行设备发现。 |
6.物理层
Bluetooth LE 的物理层定义了如何使用无线电发射器对传输和接收的数字数据进行编码和解码,以及其他适用的无线电相关参数和属性。
6.1 频带
Bluetooth LE 在 2400 MHz 至 2483.5 MHz 范围内的 2.4GHz 非授权频段上运行,该频段分为 40 个信道,每个信道的宽度为 2 MHz。如何使用信道由链路层 和数据传输架构决定。
图 5 -Bluetooth LE 频道
6.2 调制方案
6.2.1 高斯频移键控
为了在传输前对来自堆栈高层的数字数据进行编码,并对接收到的无线电信号进行解码,Bluetooth LE 采用了一种名为高斯频移键控(GFSK)的调制方案。GFSK 的工作原理是采用选定信道(载波)的中心频率信号,并将其上移一定量以表示数字值 1,或下移相同量以表示二进制值 0。
图 6 展示了基本的频移键控过程。需要注意的是,频率偏移量被称为频率偏差,根据所使用的 PHY 变体,频率偏差至少为 +/-185 kHz 或至少为 370 kHz(PHY的解释见 6.3 PHY 变体部分)。
图 6 -Bluetooth LE中的移频键控
6.2.2 振幅偏移键控
信道探测 (见第 8.Bluetooth®信道探测 章节)的某些传输使用一种称为 "振幅偏移键控"(ASK)的调制方案。ASK 是一种二进制调制方案,有两种符号状态。第一种状态是在选定的频率上传输固定幅度的载波,持续一段时间。第二种表示在选定的频率上和相关时间段内没有传输。
6.3 物理层变体
定义了许多调制方案变体。每种变体都被称为PHY,并有一个名称。物理层的传输速度是以每秒符号数而不是每秒比特数来衡量的,因为物理层只处理模拟无线电信号,而不是数字概念。
Bluetooth LE 使用二进制调制方案,即一个模拟符号代表堆栈中更高的一个数字比特。
每个 PHY 都包含一个称为带宽-比特周期(BT)产品 属性 。BT 决定了信号带宽与符号持续时间之间的关系。
BT 值会影响构成符号的无线电脉冲的形状和跨度。BT 值越高,脉冲越窄、越方;BT 值越低,脉冲越宽、越圆。
蓝牙核心规范 定义的 PHY 类型概述如下:
- LE 1MPHY 使用 1 Msym/s 的符号速率,要求频率偏差至少为 185 kHz,并且不使用特殊编码。所有设备都必须支持 LE 1M PHY。使用该 PHY 时,BT=0.5。
- 低功耗 低功耗2MPHY 与 LE 1M 类似,但使用 2 Msym/s 的符号率,要求频率偏差至少为 370 kHz。对低功耗2M PHY 的支持是可选的。使用该 PHY 时,BT=0.5。
- 低功耗2M 2BTPHY 的符号速率为 2 Msym/s,但要求频率偏差至少为 420 kHz。使用这种 PHY 时,BT=2。
- 低功耗编码 低功耗编码物理层使用 1 Msym/s 的符号速率,但数据包需要进行编码,即《链路层》中定义的前向纠错(FEC)。FEC 增加了有效传输距离,但降低了应用 数据速率。对低功耗编码 PHY 的支持是可选的。使用此 PHY 时,BT=0.5。
PHY 的比较如下:
| LE 1M | 低功耗编码 S=2 | 低功耗编码 S=8 | 低功耗2M | 低功耗 2M 2BT | |
|---|---|---|---|---|---|
| 符号率 | 1 Ms/s | 1 Ms/s | 1 Ms/s | 2 Ms/s | 2 Ms/s |
| 协议数据速率 | 1 Mbit/s | 500 Kbit/s | 125 千比特/秒 | 2 Mbit/s | 2 Mbit/s |
| 大约最大应用数据速率 | 800 kbps | 400 kbps | 100 kbps | 1400 kbps | 不适用[3] |
| 英国电讯公司 | 0.5 | 0.5 | 0.5 | 0.5 | 2.0 |
| 错误检测 | 儿童权利委员会 | 儿童权利委员会 | 儿童权利委员会 | 儿童权利委员会 | 不适用[4] |
| 纠错 | 无 | 选委会 | 选委会 | 无 | 无 |
| 范围乘数(约) | 1 | 2 | 4 | 0.8 | 0.8 |
| 要求 | 强制性 | 可选 | 可选 | 可选 | 可选 |
定义
| 学期 | 定义 |
|---|---|
| 符号率 | 在物理层传输模拟符号的速率。 |
| 协议数据速率 | 与蓝牙协议数据单元 (PDU) 有关的比特传输速率,包括应用 数据有效载荷,但不包括低功耗编码 PHY 使用时数据包中包含的 FEC 数据。 |
| 大约最大应用数据速率 | 应用 数据在通信设备上的应用程序之间传输的近似最大速率。应用数据在各种 PDU 的有效载荷部分传输,协议数据速率的其余部分由蓝牙协议数据消耗。 |
| 儿童权利委员会 | 循环冗余校验。用于检测传输错误的字段。链路层》中定义了该字段及其用途。 |
6.4 分时
Bluetooth LE 无线电设备是一种半双工设备,能够发射和/或接收,但不能同时发射和/或接收。不过,所有 PHY 都采用时分双工(TDD)方案,因此看起来像是全双工无线电。
6.5 传输功率和接收器 灵敏度
物理层定义了发射器 特性,包括输出功率要求,规范规定:最大功率设置时的输出功率水平应在 0.01 mW(-20 dBm)和 100 mW(+20 dBm)之间。
世界不同地区的监管机构[5]可能会超越这些要求,实施者必须确保设备符合当地的适用法规。
接收器灵敏度的定义是接收器 输入电平达到某一特定误码率(BER)时的灵敏度。规定的误码率随接收数据包的长度而变化,因为链路层 会在每个数据包中附加一个循环冗余校验(CRC)字段,并以此作为检测解码数据包中一个或多个错误比特的机制。由于数据包的长度各不相同,而每个数据包只有一个 CRC,因此数据包的长度会影响计算出的误码率。
在讨论Bluetooth LE 接收器 灵敏度时,通常会引用 0.1% 的误码率。这是长度不超过 37 个八位字节的数据包所允许的最大误码率。
物理层定义的其他接收器 特性包括干扰性能、带外阻塞、互调特性、最大可用输入电平和所需的接收信号强度指示(RSSI)精度。
6.6 天线切换
6.6.1方向查找
Bluetooth LE 支持两种计算接收信号传输方向的方法。第一种称为 "到达角 of Arrival),第二种称为 "出发角"(Angle of Departure)。这两种方法都涉及一个具有天线阵列的装置,以及在发射方向查找信号出发角 )或接收信号到达角 )时从一个天线切换到另一个天线的过程。方向查找信号是标准的蓝牙数据包,其中包括恒定音调扩展(CTE)字段。
天线阵列有许多不同的设计,从一个天线切换到下一个天线可以遵循一系列不同的切换模式。这是由host控制的,但物理层也定义了一些关于天线切换过程的普遍适用规则、相关的接收器 要求和一些有用的定义。
蓝牙核心规范 》第 6 卷 A 部分第 5 节更详细地介绍了这一主题。有关到达角 和出发角 方向查找 功能 的更多信息,请参阅蓝牙核心规范 5.1 版功能 概述文件。
6.6.2Bluetooth 信道探测
蓝牙信道探测 允许在一个或两个设备中使用一个以上的天线,并有关于天线选择和使用的规定。请参阅第 8.Bluetooth®信道探测 章节。
7.链路层
7.1链路层概述
链路层 规范几乎是蓝牙核心规范中最大的Bluetooth LE 部分,仅次于Host 控制器接口功能规范部分。可以说,它是最复杂的。
链路层 有许多职责。它定义了在空中传输的几种数据包类型以及相关的空中接口协议。它的运行受制于定义明确的状态 。根据状态的不同,链路层 可在各种类型的事件驱动下以多种不同的方式运行。定义了许多影响链路状态 或链路使用参数的控制程序。链路层 规范中定义了无线电信道选择和分类。
链路层 支持有连接和无连接通信,以及确定性和(轻微)随机事件计时。它既支持两个设备之间的点对点通信,也支持从一个设备并发到不限数量的接收设备的一对多通信。根据链路层 的使用方式,应用 数据的传输可能是双向的,也可能是单向的。
Bluetooth LE 的多功能性在很大程度上源于链路层的复杂性。
7.2 数据包
链路层定义了两种数据包类型。第一种由未编码 PHY(见图 7)、LE 1M 和低功耗2M PHY(见图 8)使用,第二种由低功耗编码 PHY(见图 8)使用。请注意,其他数据包类型已定义用于信道探测。
图 7 - LE 无编码 PHY 的链路层 数据包格式
图 8 -低功耗编码 PHY 的链路层 数据包
这两种数据包类型都包含前言、访问地址和CRC 字段。表 1 解释了这些常用字段。
| 链路层 包裹字段名称 | 费用项目 |
|---|---|
| 序言 | 前导码允许接收器 精确同步信号频率、执行自动增益控制和估计符号定时。 |
| 访问地址 | 接收器使用地址 来区分信号和背景噪声,并确定数据包是否与接收设备相关。例如,一对已连接的设备交换具有相同随机分配访问地址的数据包。未参与连接的设备将忽略这些数据包,因为访问地址 与它们无关。同样,所有传统广播 数据包都使用相同的访问地址 ,其值为 0x8E89BED6,这表明所有设备都可以接收这些数据包。 |
| 儿童权利委员会 | 循环冗余校验用于错误检测。其值由发射器 利用数据包中其他比特的值计算得出。接收设备在接收数据包时,也会根据数据包中除组成 CRC 字段的位之外的其他位的值计算出 CRC 值。然后,将接收器计算出的 CRC 值与数据包中 CRC 字段的值进行比较。如果两个 CRC 值匹配,则数据包接收正确。如果不匹配,则认为数据包包含一个或多个错误比特。 |
表 1 - 常用链路层 数据包字段
根据Bluetooth LE 的使用方式,链路层 数据包的 PDU 字段可能包含多种不同的协议数据单元 (PDU)。只有在使用两种方向查找 方法(Angle of Arrival 或 Angle of Departure)之一时,才会出现恒定音调扩展(CTE)。
在传输数据包之前,PDU 和 CRC 字段需要经过一个称为 "加白"的过程。加白的目的是避免数据包中出现冗长的 0 或 1 序列,因为这会导致接收器的频率锁定漂移。在检查 CRC 之前,接收器 会逆转加白过程,以恢复原始比特流。
PDU 字段可以加密,在这种情况下,它包括一个信息完整性检查字段,以防止 PDU 被篡改[6]。
当使用低功耗编码 PHY 时,比特流在传输前需要进行额外处理。前向纠错(FEC)编码器和模式映射器的应用 会产生额外的数据,这些数据由接收器 在反向应用这些处理过程时使用,并在可能的情况下纠正任何具有错误值的比特的值。
7.3状态
链路层 由状态 控制,如图 9 所示。
图 9 -链路层 状态
有关每种状态的详细信息,请参阅链路层 规格。表 2 列出了概要。请注意,本节稍后将解释一些术语。
| 国家 | 费用项目 |
|---|---|
| 备用 | 设备既不发送也不接收数据包。 |
| 启动 | 响应来自特定设备的广告数据包,请求连接。 |
| 广告 | 传输广告数据包,并可能处理其他设备响应广告数据包而发送的数据包。 |
| 连接 | 在与其他设备连接时。 |
| 扫描 | 监听来自其他设备的广告数据包。 |
| 异步广播 | 广播等时数据包。 |
| 同步 | 监听由特定设备传输的属于特定广告列车的周期性广播 。 |
表 2 -链路层 状态
在连接状态中,定义了两个重要的设备角色。它们是中心角色和外围角色。启动连接并从 "启动状态 "过渡到 "连接状态 "的设备承担中心角色。接受连接请求并从广告状态 过渡到连接状态 的设备扮演外围角色。
例如,心率监测器可将测量数据传输到智能手机,供应用。通常情况下,智能手机扮演中心角色,心率监测器扮演外围角色。智能手机通过扫描监测器的广告数据包发现监测器,然后,通常在用户的参与下,启动与监测器的连接。连接完成后,智能手机应用 会按照心率配置文件 规范中定义的附加程序,指示心率监测器开始通过连接发送测量数据。
一个状态 实例同时只能在一个状态 中运行。一个链路层 实现可同时支持多个状态 实例。
并非所有角色和状态 组合都是允许的。蓝牙核心规范 对此有更详细的说明。
7.4 频道选择
如 6.1 节所述,Bluetooth LE 将 2.4 GHz 频段划分为 40 个信道。链路层 控制这些信道的使用方式,而这反过来又取决于Bluetooth LE 整体通信方式(更正式地说,是当前的物理信道--这将在第 7.7 节数据传输架构中介绍)。
Bluetooth LE 以各种不同的方式使用扩频技术,在一段时间内通过多个信道进行数据通信。这减少了碰撞的机会,使通信更加可靠。
Bluetooth LE 中使用的扩频技术的一个众所周知的例子是自适应跳频。这涉及用于数据包通信的无线电信道定期变化。信道是通过信道选择算法和一个称为信道图 的数据表来选择的,信道图 将每个信道分为已使用 和未使用两种。实施系统可以监控每个信道的通信质量,如果发现某个信道的性能很差(可能是由于其他信源的干扰),就可以更新信道图,将该信道的分类设置为未使用 ,从而确保算法不再选择该信道。这样,信道选择算法就能适应所经历的条件,并优化出最可靠的性能。
下文讨论Bluetooth LE 逻辑传输及其相关物理信道时,将进一步说明如何使用无线电信道。
7.5 过滤器策略
链路层 能够利用各种标准过滤接收到的数据包,从而避免 LE 堆栈的高层处理无关的 PDU。在决定是过滤和丢弃数据包还是选择数据包作进一步处理时所采用的标准,是由一系列链路层 过滤策略来定义和实施的。链路层 广告、扫描、启动和定期同步建立状态都有单独的过滤策略。
过滤策略以一种模式运行,不同的链路层 状态定义了若干种模式。默认模式在任何情况下都不会过滤数据包。其他模式通常使用称为 "过滤接受列表"(Filter Accept List)的设备地址列表。在这些情况下,来自地址属于过滤接受列表成员的设备的数据包很可能不会被过滤,尽管在各种模式中应用的条件还有其他细节,但应参考蓝牙核心规范 以了解详情。不过,这是在大多数情况下起作用的基本原则。
应用程序可使用 HCI 命令填充 "过滤接受列表",并为不同的链路层 状态配置过滤策略模式。
定义了一组特殊的过滤策略模式,称为决策扫描过滤策略模式,其使用被称为基于决策的广告过滤 (DBAF)。DBAF 允许制定更复杂的过滤条件,而不仅仅是检查过滤器接受列表中的成员资格 。
DBAF 模式只适用于扫描过滤策略,并且只适用于主信道上接收到的某些类型的广告 PDU。决策扫描过滤模式可能带来的过滤只适用于扩展广播 数据包,更多相关信息请参阅第7.7.2.3.7 节 基于决策的广告过滤。
7.6监测广告设备
7.6.1 过滤和存在
广告可用作无连接通信传输,但最常见的用途可能是实现设备发现。
设备发现包括扫描广告数据包。接收广告数据包可作为广告设备存在的指示,根据广告 PDU 的类型,还可指示设备可被连接。
广告数据包由 LE 控制器处理,详情见链路层 规范。堆栈的Host 层可通过Host 控制器接口发送的事件获知广告数据包的到达及其内容。
由于每个接收到的数据包都会产生一个人机交互事件,而且每个事件都会导致调用应用中的函数,因此广告会给物理人机交互传输、Bluetooth LE Host 和应用带来很大的负担。幸运的是,有一种方法可以避免这种情况。
当广告仅以设备发现为目的时,数据包的内容通常不会改变。希望接收与广告数据包有关的呼叫的应用 可使用若干人机交互指令中的一条指令来指示控制器。这些 HCI 命令允许应用 通过设置名称恰当的 HCI 命令参数 Filter_Duplicates 来表明是否希望接收重复数据包。在指定了重复过滤后,每个广告设备只会发生一次 HCI 事件和相关的应用 调用。
不过,过滤重复数据也有潜在的弊端。在未过滤重复数据的情况下,应用 通常知道感兴趣的设备是否还在范围内。如果应用 停止接收该设备的广告数据,就可以认为它已不在范围内。但在启用重复过滤后,HCI 广告事件的缺失不再是设备已超出范围的标志。它很可能正在广播重复数据包,而这些数据包正在被过滤。
在建立连接时,这种对设备存在的不感知会成为一个特别的问题。试想一下,应用 扫描范围内的设备,并在图形用户界面上为用户提供一个列表,供用户选择。当用户做出选择时,应用 就会请求与所选设备建立连接。需要建立连接时,LE 控制器必须首先执行高占空比扫描。这样它就能接收到目标设备的广告数据包,然后再在同一信道上向其回复连接请求。高占空比是一种积极的扫描方式,能快速接收广告数据包,但耗能高。如果要连接的设备仍在范围内,这种扫描方式还可以,但如果在用户做出选择的时间内,该设备已经超出范围,那么这种相对昂贵的扫描操作就是在浪费能量。
有时,如果信号强度很低,就不值得应用 连接 到设备,因为,举例来说,这可能表明设备距离应用的用例不够近。因此,从技术上讲,设备可能仍然存在,但信号强度很低,扫描连接设备就像设备实际上不在信号范围内一样浪费能量。
监测广告设备 功能 监测广告设备 允许过滤重复的广告数据包,但不会失去跟踪设备是否仍然存在以及其信号强度是否足以保证连接 到该设备的能力。
7.6.2 使用广告监测
LE 控制器会维护一个名为 "监测广告商列表"的列表。应用程序可使用 HCI 命令将感兴趣的设备添加到列表中,并设置低 RSSI(信号强度)阈值、高 RSSI 阈值和超时值。应用 还可以使用另一条命令启用或禁用广告商监控。
表 3 解释了决定广告监控在指定设备上如何运行的参数。
| 参数(s) | 费用项目 |
|---|---|
| 地址 和地址 类型 | 要监控的设备的地址 和地址 类型。这两个参数允许控制器识别和监控设备。 |
| RSSI 低阈值 | 如果来自该监控设备的所有广告数据包的 RSSI 在 "超时 "参数 所指示的时间段内一直处于或低于该值,则表示发生了信号丢失。发生这种情况时,控制器会使用 HCI LE 监控广告商报告事件通知host 。该设备的状态 被设置为 "等待高 RSSI"。 |
| RSSI 阈值高 | 如果从该受监控设备接收到的广告数据包的 RSSI 大于或等于该值,且设备状态 为 "等待 RSSI 高",则控制器会向host 发送 HCI LE 监控广告商报告事件,通知host 该设备处于监控范围内。该设备的状态 将被清除或设置,以表明它不再等待高于高阈值的 RSSI,同时用于监控信号丢失的计时器将被重置。 |
| Time Out | 用于监测信号丢失的时间(以秒为单位)。如果在这段时间内没有任何 RSSI 测量值超过 RSSI 低阈值参数 ,则表示发生了信号丢失。 |
表 3 - 受监控的广告商参数
无论是否已指示控制器过滤重复广告,都可以使用监测广告设备 ,但在启用重复广告过滤功能 时使用显然最有好处。
图 10 描述了一个涉及监测广告设备 功能的示例场景。图的左侧部分是一个序列图,显示了接收广告数据包、使用 HCI 命令配置广告监测,以及根据配置的 RSSI 阈值使用 HCI 事件指示广告设备进入或离开范围。右侧显示的是设备信号强度变化以及由此产生的状态 变化和 HCI 事件。
图 10 -监测广告设备 示例
表 4 解释了图 10 中标注的兴趣点。
| 点 | 说明 |
|---|---|
| A | 扫描仪host 首先询问控制器可以监控多少个广告设备。然后,host 将一个设备添加到列表中,同时添加 RSSI 低值、RSSI 高值和超时值(未显示)。最后,host 告诉控制器启用广告监测。 |
| B | 此时,插图开始显示第一个设备传输的广告数据包。请注意,设备可能在此之前就已发出广告,但数据包仅从此处开始显示。接收到的数据包的 RSSI 大于配置的低阈值,因此在接收到每个数据包时都会重置受监控设备的计时器。 |
| C | C 点之后接收到的下几个数据包的 RSSI 低于低 RSSI 阈值,因此定时器最后一次重置是在 C 点,定时器从该点开始运行。 |
| D | 现在接收到一系列低 RSSI 数据包,在 D 点发生超时。控制器通过发送条件 == 0x00 的 LE Monitor Advertisers Report 事件向host 显示信号丢失状态。设备现在处于监测广告设备 列表中的 "等待高 RSSI状态 "。 |
| E | 在 E 点,接收到一系列 RSSI 高于低阈值的数据包中的第一个。每收到一个这样的数据包,定时器就重置一次。 |
| F | 在 F 点,RSSI 值超过 RSSI 高阈值。通过控制器发送的条件 == 0x01 的 LE Monitor Advertisers Report 事件,host 将获知被监控设备以足够强的信号重新回到范围内。设备不再处于 "等待高 RSSI状态"。 |
表 4 -监测广告设备 示例中的关注点
7.7 数据传输架构
蓝牙核心规范 的架构部分定义了一系列概念,这些概念共同构成了蓝牙数据传输架构。这些概念包括物理通道、物理链路、逻辑链路和逻辑传输。定义的某些组合用于支持不同的应用 类型,每种类型在拓扑、定时、可靠性和信道使用等方面都有特定的要求。
物理信道定义了使用蓝牙进行通信的几种不同方式之一。例如,两个连接设备之间可使用 LE Piconet 物理信道进行通信,该信道涉及 37 个信道的自适应跳频。另外,LE 广告物理信道可用于从一个设备向数量不限的其他设备进行广播式无连接通信。LE 周期物理信道也可用于广播数据,但要有确定的时间安排。观察者接收器)设备能够确定时间安排,并利用它来同步扫描计划。
物理链路基于单个物理信道,并规定了该链路的某些特性,如是否使用功率控制。
逻辑链路和传输具有各种参数,其目的是提供一种合适的方法,利用特定的物理信道类型,通过物理链路支持一组特定的数据通信要求。
例如,Bluetooth LE 中可靠的双向点对点通信使用 LE 异步面向连接逻辑(ACL)传输,通过基于 LE Piconet 物理通道的物理链路,使用 LE-C 链路传输控制数据,或使用 LE-U 链路传输用户数据。
另一方面,Bluetooth LE 中的不可靠单向广播通信使用 LE 广告广播 (ADVB) 逻辑传输,通过基于 LE 广告物理信道的物理链路,使用 ADVB-C 链路传输控制数据,或使用 ADVB-U 链路传输用户数据。
7.8 逻辑传输
7.8.1 LE ACL - LE 面向逻辑传输的异步连接
当两台Bluetooth LE 设备连接时,它们使用的是面向连接的异步逻辑传输(LE-ACL 或简称 ACL)。LE-ACL 是最常用的Bluetooth LE 逻辑传输类型之一,提供面向连接的数据通信。事实上,ACL 连接通常被简称为连接。
设备可以用请求连接的 PDU 响应接收到的广告数据包,从而与广告设备建立连接。请求中指定了许多参数。这些参数包括访问地址、连接间隔、外设延迟、监督超时和信道映射。
请求连接的设备从待机状态 过渡到启动状态 ,然后进入连接状态 并担任中心角色。另一个设备则从 "广告 "状态过渡到 "连接 "状态,扮演外围设备的角色。
连接时间间隔参数 定义了无线电为该连接提供服务的频率(以毫秒为单位)。每当连接时间间隔过期,连接事件就会开始,此时,连接中的中心设备就可以发送数据包。给定连接的每个连接事件都有一个 16 位标识符,它是一个计数器值,每次事件发生时都会递增。在每个连接事件开始时,使用适用的信道选择算法选择要使用的无线电信道。
监督超时参数 规定了在链路层 被认为丢失之前,收到两个链路层 数据包之间可能经过的最长时间。
外围设备拥有与中心设备相同的协议连接参数,知道何时应从中心设备接收传输的数据包以及通过哪个信道,因此可以选择在同一时间监听该信道,从而接收来自中心设备的数据包。接收到中心设备数据包的最后一位后,外设会等待一小段时间(默认为 150 微秒),然后回复中心设备。请注意,数据包传输之间的时间段称为帧间空间时间(IFS)。
然后,中心和外设轮流交替发送和接收数据包,并在连接事件中交换一定数量的数据包。外设的行为可通过非零的外设延迟参数 进行修改。
图 11 显示了两个连接事件期间的基本数据包交换,其中 C>P 表示中心设备传输数据包,P>C 表示外设传输数据包。
图 11 - LE-ACL 连接上的基本数据包交换
通过 LE ACL 连接交换的数据包包含与链路层 控制程序相关的链路层 数据 PDU 或链路层 控制 PDU。
LE-ACL 包含一个系统,可确保按正确的顺序处理数据,确认数据包的接收,并据此决定是继续处理下一个数据包,还是重新传输上一个数据包。
数据包包含三个重要字段,有助于确保通信的可靠性。这些字段被称为序列号 (SN)、下一个预期序列号 (NESN) 和更多数据字段。所有这三个字段都是单比特字段,它们的使用提供了一个确认系统和一种检查接收数据包顺序是否正确的方法。
通信开始时,中心设备(设备 A)发送一个链路层 数据包,将 SN 和 NESN 都设为 0。此后,在每次数据包交换时,如果一切正常,设备 A 设置的 SN 字段值将在 0 和 1 之间交替变化。因此,外围设备(设备 B)总是知道下一个要接收的数据包的 SN 值,并为此进行检查。
如果设备 B 从设备 A 接收到一个具有预期 SN 值的数据包,它就会响应一个链路层 数据包,该数据包的 NESN 设置为逻辑值 NOT(SN)。因此,举例来说,如果接收到的 SN 值为 1,那么响应中的 NESN 将为 0。
当设备 A 收到设备 B 的响应,其中 NESN 设置为设备 A 打算在下一个数据包中使用的 SN 值时,设备 A 就会认为这是设备 B 的确认,确认它正确接收了上一个传输的数据包。图 12 显示了这一点。
图 12 -链路层成功交换数据包
如果设备 B 收到 SN 值错误的数据包,它会假定该数据包是对上一个数据包的重传,并确认该数据包,但不会将其上传到堆栈进行进一步处理。
如果设备 A 从设备 B 的回复中收到一个意外的 NESN 值,或者根本没有收到回复,它就会用最初使用的相同 SN 值重新发送数据包。不同的控制器实现可自由实施不同的算法,以确定在通信失败前重新发送多少次。参见图 13。
图 13 -链路层 重传
每个数据包都包含一个 CRC 字段,加密数据包还包含一个 MIC 字段。链路层 接收到数据包后,会检查 CRC,如果存在,还会检查 MIC。如果其中一项检查失败,数据包就不会被确认,这通常会导致数据包的发起方重新发送数据包。见图 14。
图 14 -链路层 处理 CRC 故障
外设无需在每次连接事件中都监听中心设备的数据包。外设延迟参数 定义了外设无需监听的连续连接事件的数量。这样外设就可以节省电能。
图 15 显示了外设的行为,外设延迟 = 1,因此仅在交替连接事件期间监听。在外设未监听的事件中,中心可以发送数据包,但这些数据包将不会被接收,因此也不会被确认,从而结束连接事件。
图 15 - 外围设备延迟 = 1 的 ACL 连接
LE-ACL 采用一种称为自适应跳频的方案。在每次连接事件开始时,都会进行跳频,使用信道选择算法从可用信道集合中确定性地选择一个无线电信道。然后,连接中的每个设备都将切换到选定的信道,随着时间的推移和一系列连接事件的发生,通信将使用分布在 2.4 GHz 频带上的一系列频繁变化的不同信道,从而大大降低发生碰撞的概率。
在Bluetooth LE 定义使用的 40 个通道中,有 37 个通道(称为通用通道)可供 LE-ACL 连接使用。
在特定环境中,一些Bluetooth 无线电信道可能无法正常工作,可能是因为受到干扰的影响,而其他信道则工作可靠。随着时间的推移,可靠信道和不可靠信道的列表可能会随着环境中其他无线通信设备的出现而改变。
连接中的中央设备会维护一个通道图,将通用通道分为已使用和未使用两种。该通道图通过链路层 程序与外设共享,以便它们各自掌握相同的信息,了解哪些通道将被使用,哪些通道将不被使用。信道选择算法可确保避免指定为未使用的信道。
默认情况下,所有通用通道都被指定为已使用,但中心设备可使用特定的实施技术来监控每个通道的运行状况。如果中心设备发现一个或多个信道工作得不够好,就可以将其在信道图中的分类更新为未使用。反之,如果发现以前不好的信道现在运行良好,则可将其在信道图中的分类更新为已使用。信道图更新可与外围设备共享。
外围设备还可以执行自己的信道监控,并每隔一段时间向中心设备发送信道状态报告,将每个信道的状态分为好、坏或未知。然后,中央设备可根据自身的无线电条件和远程外围设备的无线电条件,对信道图中的信道分类做出决定。
这样,Bluetooth LE 设备就可以只使用可用信道的最佳子集 ,从而与使用静态分配信道的其他无线技术有效共存。这就是蓝牙自适应跳频系统的自 适应方面。
| 注释:监管机构对自适应跳频和相关术语的定义可能与蓝牙核心规范不同。建议在产品 生命周期的早期审查目标市场的频谱使用规范,因为这可能会为某些实施决策提供参考。参见第 18 节 。 蓝牙SIG的监管方面文件链接,其中提供了有关监管事项的指导。 |
图 16 显示了两个连接设备在测试过程中使用信道的方式,并说明了无线电使用在 ISM 2.4 GHz 频谱中的分布情况。在图表底部,您可以看到以 MHz 为单位的信道索引和频率。信道索引是无线电信道的一种间接参考方式。

图 16 - 自适应跳频跨信道分配通信
链路层 规范规定了一系列控制程序。表 5 列出了部分示例。
| 控制程序 | 费用项目 |
|---|---|
| 连接更新 | 允许中央或外围设备请求更改连接参数连接间隔、外围延迟和监控超时。 |
| 更新航道图 | 允许中央设备将其最新通道图数据传输给所连接的外设。 |
| 加密 | 允许中央或外围启用数据包加密。 |
| 功能 交流 | 允许中央或外设启动交换每个设备支持的链路层 功能,以位图字段的形式编码。 |
| 周期性广播同步传输 | 允许中央或外围设备通过 LE ACL 连接向另一台设备传输与已发现的周期性广播 [7]列车有关的同步信息。 |
| CIS 创建程序 | 允许中心设备与外设创建连接等时数据流(CIS)[8]。 |
| 电源控制请求 | 允许一个对等端请求另一个对等端调整其传输功率级别。 |
| 通道分类报告 | 允许外设向所连接的中央处理器报告通道分类数据。 |
表 5 -链路层 控制程序示例
子速率连接是 LE ACL 连接,它们具有分配给它们的附加属性,并在某些方面具有不同的行为。这些附加属性称为子速率因子、子速率基础事件和延续编号。
子集 连接属性提供了一种机制,用于指示连接设备仅主动使用特定子集 连接事件,而在其他连接事件中不使用无线电。因此,分级连接的 ACL 连接间隔可以很短,但占空比仍然很低。
图 17 说明了有关分段连接的基本概念
图 17 - 子速率系数为 5 的基本分段连接
在这里我们可以看到,每五个连接事件中只有一个被使用。其他四个都被跳过,因此在这些连接事件中没有无线电活动。已使用连接事件与跳过连接事件的比例由子速率系数 参数 决定,在本例中,该系数被设为 5。
使用无线电收发链路层 数据包的连接事件称为分级连接事件。
鉴于基本 ACL 连接参数与管理连接分级的参数之间的关系,可以认为分级连接既有控制 ACL 连接事件发生频率的连接间隔,也有在应用分级参数后决定 ACL 连接事件实际使用频率的有效连接间隔。
分级连接使用一套不同的控制程序,特别是更新分级连接参数的程序与一般控制更新程序不同。重要的是,分级连接参数的更改几乎可以在瞬间完成,而一般的参数 更改则需要相当长的时间才能生效。因此,分级连接的优势在于,可以建立低占空比和低功耗的持续连接,并可切换到高占空比、高带宽的连接,而不会出现任何用户可能注意到的延迟。这种功能尤其适用于一些低功耗音频 场景,如涉及助听器 和智能手机的场景。
蓝牙核心规范 5.3 版功能 增强》文件中有大量章节专门讨论分级连接问题,建议将其作为进一步信息的来源。
7.8.2 ADVB - LE 广告广播
LE 广告广播(或简称广告)提供了一种无连接通信模式。它可用于传输数据或指示是否可连接外围设备。
一般来说,广告数据包可被范围内的任何扫描设备接收,因此,广告可用于在一对多拓扑结构中同时向多个扫描设备传输数据。然而,有一种特殊形式的广告被定义为定向广告,它允许从一个广告设备向一个特定的扫描设备(由其蓝牙设备地址标识地址进行无连接数据通信。
适用于 ADVB 逻辑传输的广告仅支持单向应用 数据通信,即从广告设备到扫描设备的通信,但这些设备可通过 PDU 回复广告数据包,以请求进一步信息或建立连接。当扫描设备回复以获取更多信息时,则称其正在执行主动扫描。如果不这样做,则称为执行被动扫描。
广告一般被称为不可靠传输,因为接收者不会发送确认信息。
蓝牙核心规范 》定义了两类广告程序,分别是 传统广播和 扩展广播.
7.8.2.2.1 信道使用和数据包大小
使用 ADV_IND PDU 类型(见 7.8.2.2.3传统广播 及相关 PDU 类型)的传统广播 数据包长度为 37 个八进制数,有一个 6 个八进制数的报头和最多 31 个八进制数的有效载荷。广告数据包的相同副本最多可在三个专用信道(编号分别为 37、38 和 39,称为主广告信道)上传输,每次传输一个信道,并按一定顺序传输。
图 18 -传统广播 与频道使用
7.8.2.2.2 日程安排
每当发生广告事件时,就会传输广告数据包。广告事件的时间安排由定时参数控制,在基本情况下,广告事件的时间安排故意略微不规则,以避免与其他广告设备发生持续碰撞。每次广告事件发生时,都会在 0 - 10ms 范围内分配一个名为advDelay的伪随机值,并将其添加到常规广告间隔(advInterval)中,从而使广告事件在时间上受到干扰。图 19 重现了蓝牙核心规范 第 6 卷 B 部分的图 4.5,并说明了 advDelay参数的效果。
图 19 - 利用 advDelay 对广告事件进行时间扰动
以这种方式安排广告事件有助于避免碰撞,但会增加接收器有效接收广告数据包的难度,需要更高的 RX 占空比来适应广告事件的不可预测性。
7.8.2.2.3传统广播 和相关 PDU 类型
传统广播定义了几种 PDU 类型。不同类型的 PDU 用于非定向广告和定向广告,前者用于将数据包发送到任何扫描设备,后者用于将数据包发送到某个特定设备。PDU 类型还表明是否允许主动扫描,接收器是否会回复进一步的数据请求,以及是否可以连接广告设备。所有传统广播 都在一个或多个编号为 37、38 和 39 的主通道上进行,并且只能使用 LE 1M PHY。
表 6 列出了传统广播 PDU。
| PDU 名称 | 费用项目 | 信道 | PHY(s) | 转交 | 可扫描 | 可连接 |
|---|---|---|---|---|---|---|
| ADV_IND | 非定向广告 | 初级 | LE 1M | 外围设备 | Y | Y |
| ADV_DIRECT_IND | 定向广告 | 初级 | LE 1M | 外围设备 | N | Y |
| ADV_NONCON_IND | 非定向、非连接、非扫描广告 | 初级 | LE 1M | 外围设备 | N | N |
| ADV_SCAN_IND | 非定向、可扫描的广告 | 初级 | LE 1M | 外围设备 | Y | N |
| SCAN_REQ | 扫描请求 | 初级 | LE 1M | 中部 | 不适用 | 不适用 |
| SCAN_RSP | 扫描响应 | 初级 | LE 1M | 外围设备 | 不适用 | 不适用 |
| CONNECT_IND | 连接请求 | 初级 | LE 1M | 中部 | 不适用 | 不适用 |
表 6 -传统广播 PDU
蓝牙核心规范 中的 "链路层 规范 "一章第 4.4 节详细介绍了所有广告 PDU 类型。
蓝牙核心规范第 5 版对广告的执行方式作了一些重大修改。新增了八个与广告、扫描和连接 有关的 PDU,并定义了新的程序。这套新的广告功能统称为 扩展广播.
扩展广播允许广播更大量的数据,允许按照确定的时间表执行广告,允许传输由不同配置控制的多组不同的广告数据。它在争用和占空比方面也有明显改善。
ADVB 和 PADVB 逻辑传输都使用扩展广播。
7.8.2.3.1 信道使用和数据包大小
广播频道的使用方式与进行传统广播 时的使用方式不同,主要广告频道 37、38 和 39 传播的数据较少,而通用频道 0 - 36 传播的数据最多。
如 7.8.2.2传统广播所述,传统广播 在三个不同的主广告信道上最多传输三次相同的有效载荷。扩展广播只传输一次有效载荷数据,并用小标头从主频道引用。因此,传输的数据总量少于使用传统广播 的同等情况,有效占空比也因此降低。
图 20 - 减少争用和占空比
扩展广播允许数据包长达 255 个字节。这部分是通过将有效载荷卸载到 0-36 信道号范围内的一个通用信道来实现的。
图 21 -扩展广播 支持更大的广告数据包和信道卸载
执行扩展广播 时,仅在编号为 37、38 和 39 的主通道上传输报头数据。其中包括一个名为 AuxPtr 的字段。
AuxPtr 字段引用包含有效载荷的相关辅助数据包,该数据包将在编号为 0 - 36 的一组信道中的一个通用信道上传输。AuxPtr 包括通用信道索引,指示辅助数据包将在哪个信道上传输,以便接收机知道在哪里可以找到它。在通用信道上传输并由 AuxPtr 字段从主信道上的数据包中引用的数据包称为下级数据包,而引用的数据包称为上级数据包。
在 AuxPtr 中选择信道索引值是针对具体实施的,蓝牙核心规范 只建议 "使用足够的信道多样性来避免碰撞"。
7.8.2.3.2 数据包链
对于应用 需要广播更多数据(最多 1,650 字节)的使用情况,控制器可以将数据分片并将数据包链在一起,每个数据包包含该数据的一个子集 。每个链式数据包可以在不同的信道上传输,AuxPtr 头字段引用链中的下一个数据包。图 22 举例说明了这一点。
图 22 - 带有数据包链的扩展广播
7.8.2.3.3 广告套装
传统广播没有对广告有效载荷和参数的变化做出正式规定。扩展广播包括一个标准机制,用于拥有多套不同的广告数据。
广告集有一个 ID,用于指示给定数据包属于哪个广告集,每个广告集都有自己的广告参数,如广告间隔和要使用的 PDU 类型。
调度和传输不同广告集的任务落在了控制器中的链路层 上,而不是由Host来驱动,因为这样会大大降低能效。Host 最初只需将广告集及其各自的参数通知控制器,然后由链路层 接管。
7.8.2.3.4周期性广播
扩展广播包括一种使用确定性调度的广告方法,其细节可由扫描设备发现并同步。这种方法被称为 周期性广播.周期性广播 被定义为一种独特的逻辑传输,因此在第 7.8.3 节 PADVB - LE周期性广播 中进行了描述。
7.8.2.3.5扩展广播 和相关 PDU 类型
扩展广播定义了多种 PDU 类型。 表 7 列出了扩展广播 PDU。
| PDU 名称 | 费用项目 | 信道 | PHY(s) | 转交 |
|---|---|---|---|---|
| ADV_EXT_IND | 扩展广播 | 初级 | LE 1M,低功耗编码 | 外围设备 |
| 决定IND | 决定 PDU | 初级 | LE 1M,低功耗编码 | 外围设备 |
| AUX_ADV_IND | 下属扩展广播 | 通用 | le 1m,低功耗2M,低功耗编码 | 外围设备 |
| AUX_CHAIN_IND | 其他广告数据 | 通用 | le 1m,低功耗2M,低功耗编码 | 外围设备 |
| AUX_SYNC_IND | 周期性广播同步 | 定期 | le 1m,低功耗2M,低功耗编码 | 外围设备 |
| AUX_SCAN_REQ | 辅助扫描请求 | 通用 | le 1m,低功耗2M,低功耗编码 | 中部 |
| AUX_SCAN_RSP | 辅助扫描响应 | 通用 | le 1m,低功耗2M,低功耗编码 | 外围设备 |
| 辅助连接请求 | 辅助连接请求 | 通用 | le 1m,低功耗2M,低功耗编码 | 中部 |
| 辅助连接 | 辅助连接响应 | 通用 | le 1m,低功耗2M,低功耗编码 | 外围设备 |
表 7 -扩展广播 PDU
ADV_EXT_IND、AUX_ADV_IND、AUX_SCAN_RSP、AUX_SYNC_IND、AUX_CHAIN_IND 和 AUX_CONNECT_RSP 类型 PDU 的有效载荷由相同的格式定义,该格式被称为 "通用扩展广播 有效载荷格式"。这包括 AuxPtr 字段和 AdvMode 等字段。AdvMode 使用两个比特来表示广告模式的可连接和可扫描属性,而不是不同的 PDU 类型。
蓝牙核心规范 中的 "链路层 规范 "一章第 4.4 节详细介绍了所有广告 PDU 类型。
7.8.2.3.6 计划安排
扩展扩展广播 发生在扩展广播 事件中。扩展广播 事件与广告事件同时开始,包括带有 AuxPtr 字段的上级数据包和与之相关的下级数据包。
7.8.2.3.7基于决策的广告过滤
分心
当收到 ADV_EXT_IND PDU 时,扫描器将始终跟踪 AuxPtr 字段并扫描相关的下级 PDU(如 AUX_ADV_IND PDU)。对于某些应用来说,这种行为效率不高,会对主通道上的接收器 性能产生负面影响。
考虑以下情况:
- 扫描仪收到 ADV_EXT_PDU
- 扫描仪使用 AuxPtr 字段中的信息切换到指定的辅助通道上进行扫描。
- 扫描仪按预期收到 AUX_ADV_IND PDU。
- 应用 接收到扩展广播 PDU 后,检查 AdvData 有效载荷字段,却发现此时的应用 数据与应用 无关或不感兴趣。
这里发生的事情被称为 "分心"。如果不对扩展广播 PDU 中的有效载荷进行扫描,然后将其传递给应用 进行评估,就无法预先知道它是否对应用 有用。当扫描在 AuxPtr 所指示的辅助信道上进行时,主信道并没有被扫描,因此有可能遗漏了其他 ADV_EXT_IND PDU。由此可见,在这种情况下和某些应用中,分心可能会造成问题。
DBAF 解决了分心的问题。
DBAF 和广告设备
使用 DBAF 时,广告设备在主通道上传输 ADV_DECISION_IND PDU,而不是 ADV_EXT_IND PDU。
图 23 - ADV_DECISION_IND
决策数据字段在图 24 中展开。
图 24 - ADV_DECISION_IND 决策数据字段
可解决标记(Resolvable Tag)字段包含一个应用 分配的哈希值,它被用作属于该应用 PDU 的标签。这为扫描仪提供了一种简单的方法,用于识别扫描仪应遵循 AuxPtr 并扫描相关辅助 PDU 的情况。未来的配置文件将定义用于创建可解决标记哈希值的键值在设备间共享的方式。
可在任意数据字段中加入做出决定所依据的其他数据。
DBAF 和扫描设备
扫描设备上的应用 可以制定controller 必须针对 ADV_DECISION_PDU 评估的逻辑测试,以决定是否在辅助通道上扫描相关的辅助 PDU。测试可适用于 ADV_DECISION_IND PDU 的决策数据字段中的数据或其他字段,如广告模式字段 AdvMode。此外,接收信号强度指示器(RSSI)也可包括在决策测试中。
测试要求通过应用 调用的人机交互指令传达给controller 。测试可以分组,分组可以构成涉及逻辑 AND 或逻辑 OR 运算的相对复杂的复合条件元素。例如
- (第 1 组测试 1)和(第 1 组测试 2)和(第 1 组测试 3)
- (第 1 组)或 (第 2 组)或 (第 3 组)或 (第 4 组)
应用 通知controller 必须使用的决策扫描过滤策略模式。选项有
- 无决策模式。在此模式下,决策 PDU 将被忽略。
- 所有 PDU 模式。选择所有类型的广告 PDU。决定 PDU 需接受host指定的检查。其他广告 PDU 遵从基本过滤策略。
- 仅决策模式。只选择决策 PDU。这些都要经过host指定的检查。通过的 PDU 会在 HCI 广告报告中报告给host 。未通过的将被丢弃。
表 8 对传统广播 和扩展广播了汇总比较。
| 传统广播 | 扩展广播 | ||
|---|---|---|---|
| host 广告数据最大大小 | 31 个字节 | 1,650 字节 | 扩展广播支持分片,可将host 广告数据的最大大小提高 50 倍。 |
| 每个数据包的最大host 广告数据 | 31 个字节 | 254 字节 | 扩展 扩展广播 PDU 使用通用扩展广播 有效载荷格式,该格式支持 8 倍大的广告数据字段。 |
| 发射机通道 | 37,38,39 | 0-39 | 扩展广播将 37 个通用信道用作次级广告信道。但 ADV_EXT_IND PDU 类型只能在主广告信道(37、38、39)上传输。 |
| PHY 支持 | LE 1M | LE 1MLE 2M(不包括 ADV_EXT_IND PDU低功耗编码 | 除了 ADV_EXT_IND PDU 可使用 LE 1M 或低功耗编码 PHY 传输外,所有扩展广播 PDU 均可使用三个 LE PHY 中的任何一个进行传输。 |
| 最大活动广告配置 | 1 | 16 | 扩展广播包括广告集,使广告设备能够同时支持多达 16 种不同的广告配置,并根据广告集定义的时间间隔为每个广告集交错播放广告。 |
| 通信类型 | 异步 | 异步异步 | 扩展广播包括 周期性广播在发射器和接收器之间实现广告数据的时间同步通信。 |
表 8 - 传统扩展广播与扩展广播比较
7.8.3 PADVB - LE周期性广播
由 ADVB 逻辑传输(见 7.8.2 ADVB - LE 广告广播)执行的广告包括一定程度的广告数据包传输时间随机性。在广告事件的调度中会有意插入 0 到 10 毫秒的随机延迟,以帮助避免持续的数据包碰撞。在执行传统广播 时,这是广告发挥作用的唯一方式。
周期性广播涉及按照确定的时间表传送数据包,并提供一种机制,使其他设备能够根据广告设备的时间表同步扫描数据包。周期性广播始终是不可扫描和不可连接的。
周期性广播通过提供更节能的扫描方式使观察设备受益,是低功耗音频 广播解决方案的关键组成部分。
广告在称为周期性广播 间隔的固定时间段进行,广告数据有效载荷可能会发生变化。一系列 AUX_SYNC_IND 和相关的 AUX_CHAIN_IND PDU 被称为形成周期性广播 列车。
在每次周期性广播 事件中,都会传输一个 AUX_SYNC_IND PDU,随后根据host有效载荷是否需要分片,传输零个或多个 AUX_CHAIN_IND PDU。
AUX_ADV_IND PDU 包含一个名为 SyncInfo 的字段,它是通用扩展广播 有效载荷格式的一部分,包含信道和定时偏移信息。
周期性广播使用 37 个通用广告频道。在每个周期性广播 事件开始时,使用通道选择算法 #2 选择一个通道,并将名为 paEventCounter 的事件计数器字段作为输入。每次发生周期性广播 事件时,该计数器都会递增。与 AUX_SYNC_IND PDU 相关的任何辅助 AUX_CHAIN_IND PDU 都使用特定于实现的算法选择通道,并在 AuxPtr 字段中指定。参见图 25。
周期性广播 间隔决定了给定广告集的周期性广播 出现的频率。它以传输 AUX_SYNC_IND PDU 开始,并以一系列零个或多个 AUX_CHAIN_IND PDU 继续,如图 25 所示。
图 25 -周期性广播 事件
请注意,图 25 经过简化,不同主广告信道上可能有多个 ADV_EXT_IND PDU,用一个方框表示。
扫描设备可通过两种方式之一与周期性广播 列车同步。它可以扫描 AUX_ADV_IND PDU 并使用 SyncInfo 字段的内容来确定要使用的周期性广播 间隔、定时偏移和信道信息,或者通过 LE-ACL 连接从另一个设备接收这些信息,该设备本身已从 AUX_ADV_IND PDU 中确定了这些信息。这种方法称为周期性广播 同步传输程序。
7.8.4带响应的周期性广播 - LE周期性广播 带响应的周期性广播 响应
带响应的周期性广播 在几个方面与周期性广播 (PADVB)相似:
- PADVB应用 允许一个设备(广播者)向一个或多个接收设备(观察者)传输数据,形成一对多的通信拓扑结构。带响应的周期性广播也是如此。
- 带响应的周期性广播和 PADVB 都使用无连接通信方式。
- 在这两种情况下,广告数据包的传输都是周期性的,有固定的时间间隔,并且计划没有随机扰动。
- 观察者可通过 AUX_ADV_IND PDU 或使用周期性广播 同步传输(PAST)程序来确定广播者使用的周期性广播 传输时间表。
带响应的周期性广播与 PADVB 的区别如下:
- PADVB 仅支持从广播者到观察者的单向数据通信。带响应的周期性广播观察者可将响应数据包传送回广播者。带响应的周期性广播提供了一种双向、无连接的通信机制。
- 无响应的 周期性广播 (PADVB)的同步信息包含在 AUX_ADV_IND PDU 的 SyncInfo 字段中。带响应的周期性广播同步信息包含在 AUX_ADV_IND PDU的SyncInfo 字段和 ACAD 字段中。
- PADVB 广播公司在广告活动中安排广播。带响应的周期性广播 Broadcaster 将传输安排在一系列事件 和子事件中,而 Observers 则需要同步,以便只在特定的一个或多个子事件中收听。
- 带响应的周期性广播 Broadcaster 可使用传输时隙向特定设备发送连接请求(AUX_CONNECT_REQ PDU),并与其建立 LE-ACL 连接。PADVB 不具备此功能。
- 带响应的周期性广播 (PADVB),应用 数据往往只是不时变化。带响应的周期性广播在设计时预计应用 数据会经常变化。
- 有了 PADVB,同样的应用 数据会同步传送到同一广告集的所有观察者设备上。通过带响应的周期性广播,可以向每台或每组观察者设备发送不同的数据。
对周期性广播 同步传输(PAST)程序的支持在 PADVB 中是可选带响应的周期性广播,但在带响应的周期性广播中是必须的。
信道选择使用信道选择算法 #2 完成,并在每个周期性广播 子事件中进行(见 7.8.4.3 调度)。对子事件中传输的 PDU 的响应使用相同的信道。这包括为响应 AUX_SYNC_SUBEVENT_IND PDU 而发送的 AUX_SYNC_SUBEVENT_RSP PDU 和为响应 AUX_CONNECT_REQ PDU 而发送的 AUX_CONNECT_RSP PDU。
与其他广告模式一样,活动在事件中发生,在带响应的周期性广播 中称为带响应的周期性广播 事件)。这些事件以固定的时间间隔发生,在时间安排上没有随机扰动。周期性广播 事件每间隔毫秒开始一次。
每个带响应的周期性广播 事件由多个子事件组成,广告数据包正是在子事件期间传输的。Host 可配置每个事件的子事件数,最多不超过 128 个。每个周期性广播 子事件间隔ms 开始一个子事件。Host 使用名为 HCI_LE_Set_Periodic_Advertising_Parameters V2(或更高版本)的Host 控制器接口 (HCI) 命令配置每个事件的子事件数和周期性广播 子事件间隔。
请参见图 26 -带响应的周期性广播 事件和子事件。
图 26 -带响应的周期性广播 事件和子事件[9]
在每个子事件中,广播应答器传输一个数据包,该数据包通常包含一个 AUX_SYNC_SUBEVENT_IND PDU,但也可能包含一个 AUX_CONNECT_REQ PDU。经过称为周期性广播 响应时隙延迟(周期性广播 Slot Delay)的延迟后,同一子事件中会保留一系列时隙,用于接收观察者设备的响应。对 AUX_SYNC_SUBEVENT_IND PDU 的响应在 AUX_SYNC_SUBEVENT_RSP PDU 中发送。Host 通过 HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 配置所需的响应槽数。图 27 展示了带响应的周期性广播 子事件的结构。
图 27 -带响应的周期性广播 子事件与响应槽
7.8.4.4.1 概述
同步过程为观察者设备提供所需的信息,使其能有效地扫描和接收广告设备发送的相关数据包。就带响应的周期性广播而言,这包括三个方面:
- 观察者需要知道有响应事件的周期性广播 发生的频率,以及下一次此类事件发生的时间。这些信息通过一个称为周期性广播 间隔的 参数 和一个称为syncPacketWindowOffset 的计算值提供。
- 观察者需要有关子事件的信息,包括子事件发生的频率以及每个周期性广播 事件有多少个子事件。这些信息包含在称为Subevent_Interval、Num_Subvents、Response _Slot_Delay、Response_ Slot_Spacing 和Num_Response_Slots 的参数中。
- 最后,观察者需要知道它应该扫描哪个子事件编号,应该使用哪个特定的响应时隙,以及在发送响应数据包时使用的访问地址 。
在获得了(1)中描述的事件定时信息和(2)中的子事件信息后,观察者就能完整地描述带响应的周期性广播 广告列车的事件和子事件的定时参数和结构。但是,只有当它掌握了 (3) 中的信息时,它才能安排扫描,从而只接收预计包含相关数据的数据包,并安排发送响应数据包。
(1)和(2)由蓝牙核心规范中定义带响应的周期性广播 逻辑传输处理。有两种程序可用来获取这一级别的同步信息。本文将在第 7.8.4.4.2 节扫描周期性广播 同步信息和第 7.8.4.4.3周期性广播 同步传输 (PAST) 中介绍这两种程序。
(3) 必须由应用 处理,可在适用的蓝牙配置文件 规范中定义,如电子货架标签 Shelf Label)配置文件。
7.8.4.4.2 扫描周期性广播 同步信息
带响应的周期性广播 和 PADVB 都使用类似的程序,通过扫描获取周期性广播 同步信息。
通过带响应的周期性广播 和 PADVB,观察者会扫描在次级广告信道上传送的 AUX_ADV_IND 数据包。AUX_ADV_IND 包含 SyncInfo 字段,其中包含周期性广播 间隔值和一些数据项,通过这些数据项可以计算出一个名为syncPacketWindowOffset 的变量。根据 7.8.4.4.1 一般规定(1),获得这两个值后,观察者就能计算出有响应事件的周期性广播 何时发生。
带响应的周期性广播在完成同步过程之前,还需要 7.8.4.4.1 概述(2)中有关子事件和响应时隙的信息。该信息可在获取周期性广播 间隔的同一 AUX_ADV_IND PDU 中找到,但要在称为周期性广播 响应定时信息的广告数据类型(AD 类型)中找到,该信息本身可在 PDU 的附加控制器广告信息(ACAD)字段中找到。
7.8.4.4.3周期性广播 同步传输(PAST)
使用 PAST 程序时,通过连接传递同步参数的设备有时会首先通过代表其他设备扫描来获取同步参数。不过,在带响应的周期性广播中,对 PAST 的支持是强制性的,因此带响应的周期性广播 Broadcaster 可以通过 LE ACL 连接将所需的同步数据传递给观察者。如果采用这种方法,两台设备都无需扫描 AUX_ADV_IND PDU。
7.8.4.4.4 子事件同步和响应槽分配
子事件同步主要是向观察者设备指出它应扫描的子事件。一个或多个观察者设备可同步到同一个子事件。单个观察者可在一个或多个子事件期间同步接收。
此外,观察者要想发送响应 PDU,就必须有一定的依据来确定使用哪个子事件响应时隙。
这两个问题都是应用 的责任。
7.8.5 LE BIS 和 LE CIS - 等时通信
等时通信为使用Bluetooth LE 在设备间传输有时间限制的数据提供了一种方法。它提供了一种机制,允许在不同时间从同一来源接收数据的多个汇接设备同步处理这些数据。低功耗音频使用等时通信。
在使用等时通信时,数据的有效期是有时间限制的,在有效期结束时,数据就会过期。尚未传输的过期数据将被丢弃。这就意味着,设备只能接收符合有效期规则和配置文件 可能表达的可接受延迟的数据。
数据以等时数据流传输,数据流属于等时分组。在同时处理接收到的数据包之前,设备会等待一段时间,让属于同一分组的所有数据流都有机会传送相关数据包。例如,立体声音乐可以使用两个数据流传输,一个用于传输左立体声声道,另一个用于传输右立体声声道。这两个流属于同一个群组,因此,从这两个流接收到的数据包会同时进行渲染,这样用户就能听到预期的立体声音乐。
定义了两种使用 LE Isochronous 物理通道的逻辑传输。连接等时数据流(LE CIS 或简称CIS)使用面向连接的通信,支持双向数据传输。广播等时数据流(LE BIS 或简称BIS)使用无连接广播通信,提供单向数据通信。
7.8.5.2.1 独联体概况
单个 CIS 流在两个连接的设备之间提供点对点等时通信,并在称为CIS PDU 的链路层 PDU 中传输数据。LE-CIS (CIS) 逻辑传输在图 28Figure 28 整体数据传输架构中进行了描述。
图 28 -Bluetooth 数据传输架构中的 LE-CIS
定义了两个逻辑链路,即 LE-S 和 LE-F,并为非成帧(LE-S)和成帧(LE-F)数据提供支持。等时适配层关注的是 LE-S 与 LE-F 的使用。
CIS 数据流使用 LE 异步物理信道,可使用任何Bluetooth LE PHY。
双向通信由 CIS 支持,并使用确认协议。
CIS 流是被称为 "连接等时组"(CIG)的组的成员,每个等时组可能包含 1 个或多个 CIS。见图 29。
每个 CIG 最多可有 31 个 CIS。中心设备可创建多个 CIG。不过,可用通话时间和其他实施细节通常会将这些限制 值降至更低。
图 29 - 包含两个 CIS 的 CIG
7.8.5.2.2 频道使用
连接的等时数据流使用自适应跳频和 2 号信道选择算法。
7.8.5.2.3 计划安排
CIG 及其会员 CIS 的调度由 CIG 事件、CIS 事件和子事件系统管理。
CIG 事件标志着属于 CIG 的 CIS 活动调度的开始,它发生在该组中第一个 CIS 的锚点上。CIG 事件发生的时间间隔在一个名为ISO_Interval 的参数 中指定。
每个 CIS 事件分为一个或多个子事件。使用中的子事件数量在称为NSE 的流参数 中显示。在连接的等时数据流中,如图 30 所示,在一个子事件期间,中央处理器传输(T)一次,外设响应(R)一次。子事件之间有一个持续时间间隔,其值在称为 Sub_Interval 的 CIS参数 中指定。如果每个 CIS 事件只有一个子事件,则 Sub_Interval 始终设置为零,否则至少为 400 微秒,但小于 ISO 间隔。
请注意,每个子事件都会更改通道。
在 CIG 事件期间,每个 CIS 可按顺序提供服务,也可交错处理不同 CIS 的子事件。图 30 显示了一个 CIG 实例,其中包含三个 CIS,每个 CIS 都按顺序提供服务。
图 30 - CIS 事件和子事件
除子事件数 (NSE) 外,每个 CIS 都有一些重要参数,包括刷新超时 (FT) 和突发数 (BN)。
每个有效载荷(例如,由 LC3[10] 等音频编解码器输出的音频数据块)最多可在多少个 CIS 事件中成功传输(由确认表示),这在 FT参数中规定。可在每个 CIS 事件的每个子事件中进行尝试,如果在 FT 参数事件中未成功传输,数据包将被刷新(丢弃)。有时,包含不同数据(即有效载荷)的多个 PDU 同时可用,CIS 允许在同一 CIS 事件中传输多个不同的 PDU。在每个 CIS 事件中可提供服务的不同 PDU 的数量在突发数(BN)参数中指定。
7.8.5.2.4 处理同步
一个 CIG 有一个相关的时序参数 ,称为CIG_Sync_Delay。同一 CIG 中的每个 CIS 都有一个名为CIS_Sync_Delay 的定时参数 ,用于同步组内所有流中接收器的等时数据处理(通常是音频渲染)。接收器在渲染接收到的数据前会等待该参数 中指示的时间。
图 31 - CIG 中 CIS 数据的同步渲染
如图 31 所示,每个数据流都有不同的 CIS_Sync_Delay 值。对于 CIG 中的第一个 CIS 流,它被设置为组级参数 CIG_Sync_Delay。对于组中的其他数据流,CIS_Sync_Delay 会被设置为一个逐渐降低的值。这意味着,与接收在组的 CIS 事件处理中较晚传输的数据包的设备相比,接收来自组中较早提供服务的数据流的设备在呈现接收到的数据包内容之前需要等待更长的时间。更高层次的规范(如配置文件)可能会规定使用进一步的呈现延迟来计算数据呈现的时间,以便考虑本地处理延迟。这种分层延迟系统的净结果是,每个汇接设备将在同一时间处理接收到的数据。
7.8.5.2.5 创建 CIS 数据流
建立连接的等时数据流首先需要创建 ACL 连接。该连接有两个作用。首先,它允许交换链路层 控制 PDU。其次,它提供了一个时间参考点,一旦建立了链路,就可以据此安排 CIS 事件。
中央设备总是启动创建 CIS 的程序。为此,中心设备会发送一个名为 LL_CIS_REQ PDU 的链路层 控制 PDU。在一切正常的情况下,外设回复一个 LL_CIS_RSP PDU,当中心发送一个 LL_CIS_IND PDU 时,就表示数据流已经建立。该 PDU 包含决定 CIS 事件发生时间和渲染前延迟的重要参数。具体来说,CIS_Offset 提供了 ACL 锚点(连接事件中发送第一个数据包的时间)与数据流的第一个 CIS 事件之间的偏移量(以微秒为单位)。CIG_Sync_Delay 包含以微秒为单位的 CIG 整体同步延迟值,而 CIS_Sync_Delay 则包含该数据流要使用的同步延迟值。
数据流创建后,将独立于用于创建数据流的 ACL 连接运行。如果 ACL 连接关闭,相关的 CIS 也必须终止。
7.8.5.2.6 CIS 加密
如果两台对等设备已配对,则 CIS 使用的链接可以加密。
7.8.5.3.1 BIS 概述
BIS 数据流在一个发射器 和多个接收器 设备之间提供广播式等时通信。数据在称为BIS 数据 PDU 的链路层 PDU 中传输。控制信息在BIS 控制 PDU 中传输。
图 32 显示了 LE-BIS (BIS) 逻辑传输在整个数据传输架构中的情况。
图 32 -Bluetooth 数据传输架构中的 LE-BIS
通过 BIS 广播的数据可以是有框或无框的,逻辑链路类型为 LE-S 和 LE-F。LEB-C 逻辑链路传输控制信息。
BIS 数据流使用 LE 异步物理信道,可使用任何Bluetooth LE PHY。
BIS 流是称为广播异步组 (BIG) 的组的成员,每个广播异步组可能包含 1 个或多个 BIS。见图 33。
图 33 - 包含两个 BIS 的 BIG
每个 BIG 最多可有 31 个 BIS。中心设备可创建多个 BIG。不过,可用通话时间和其他实施细节通常会将这些限制 值降至更低。
BIS 仅支持单向通信。
与 CIS 不同,BIS 不包含确认协议。这使得 BIS 传输本质上是不可靠的。不过,为了解决这个问题,使用了无条件数据包重传系统。由于通信是单向的,因此 BIS 无需为外设响应预留时隙(如 CIS 的情况)。因此,在给定的通话时间内,可以安排两倍的子事件进行传输,这样就有更多的机会进行这些增强可靠性的重传。此外,由于重传是在不同的子事件中发送的,因此它们在不同的信道上传输。所选信道必须与上次传输的信道相距至少 6 MHz,这有助于减少因特定信道上的干扰而可能造成的数据包丢失。
7.8.5.3.2 频道使用
广播等时数据流使用自适应跳频和 2 号信道选择算法。
7.8.5.3.3 计划安排
BIG 及其成员 BIS 的调度由 BIG 事件、BIS 事件和子事件系统管理。此外,还定义了一个特殊的控制子事件,用于传输与整个 BIG 有关的控制 PDU。
BIG 事件标志着属于 BIG 的 BIS 活动调度的开始。BIS 事件开始的时间间隔是 BIG参数 (称为BIS_Spacing,即BIG 锚点)从 BIG 开始指定值的倍数。
每个 BIS 事件分为一个或多个子事件。使用中的子事件数量在称为 NSE 的流参数 中显示。在一个子事件中,广播者传输一个数据包。通信是单向的,不要求接收数据包。子事件之间有一个持续时间间隔,其值在名为 Sub_Interval 的 BIG参数 中指定。
根据连接的等时分组,BIG 内 BIS 事件的调度可以是连续的,也可以是交错的。
BIG 事件可能包括一个控制子事件,该子事件总是作为 BIG 的最后一个子事件安排。
请注意,每个子事件都会更改通道。
图 28 显示了按顺序排列的 BIG 和 BIS 事件和子事件的示例。请注意,BIG 控制子事件(指定为 Tc)在 BIG 事件 #1 结束时发送。
图 34 - BIG/BIS 事件日程安排
7.8.5.3.4 处理同步
在 BIG 中,跨广播等时数据流的同步处理是通过与连接等时通信中使用的方法类似的方式实现的。接收器拥有关于 BIG 及其总体参数的信息,并知道自己选择接收哪些数据流。BIG 的定时参数统一适用于所有数据流。利用 BIG_Sync_Delay 总值和 BIS_Spacing参数,接收器能够计算出在处理接收到的数据之前需要等待多长时间,以便与其他数据流同步。
7.8.5.3.5 创建 BIS 数据流
为使设备能够接收在 BIS 内广播的数据包,并与接收属于同一 BIG 的其他数据流的其他设备同时呈现或处理这些数据包的内容,设备必须首先发现 BIG 和定义 BIG 的参数,如 BIG 所包含的数据流数量、与每个数据流相关的事件之间以及子事件之间的间隔,以及用于计算定时锚点的定时偏移信息。为此,广播公司使用周期性广播 来传达所需的参数。在 ACAD(附加控制器广告数据)字段内的 AUX_SYNC_IND PDU 中广播一个称为 BIGInfo 的复合字段,其中包含所需的数据。
接收 BIGInfo 有两种方式。在第一种情况下,接收器 必须使用定义的程序直接与周期性广播 列车同步(见 7.8.3.1 基础知识),接收 AUX_SYNC_IND PDU 并从 ACAD 内部提取 BIGInfo。不过,扫描周期性广播 列车并与之同步可能会耗费大量电能。因此,在第二种情况下,设备可以将发现并与周期性广播 列车同步的工作委托给另一个设备,通常是拥有更多电力资源的设备。获得 BIGInfo 后,负责扫描的设备就会通过更高效的 ACL 连接将该信息传递给希望接收广播等时串流的设备。这一过程称为周期性广播 同步传输(PAST)。
7.8.5.3.6 BIG 加密
BIG 可以加密。这并不要求接收其 BIS 的设备已与广播设备配对。相反,必须分发用于推导加密密钥的广播代码 参数 。这可以在带外进行,也可以按照更高级别的配置文件中描述的程序进行。
7.8.5.4 重传和可靠性
通过在 BIS 或 CIS 数据流的连续子事件中重传相同的数据包,可以提高可靠性。在 BIS 情况下,重传是无条件的,而在 CIS 情况下,当外设未确认传输时,就会发生重传。
就 BIS 而言,由于不需要为外设响应预留时隙(如 CIS 的情况),在一定的通话时间内,可以安排两倍的子事件进行传输,因此有更多的机会进行可靠性增强的重传。
重传由于占用不同的子事件,因此在不同的信道上传输,所选信道必须与上次传输的信道相距至少 6 MHz。这有助于减少因特定信道受到干扰而可能造成的数据包丢失。
8.蓝牙®信道探测
8.1 介绍Bluetooth 信道探测
蓝牙信道探测 是Bluetooth LE 控制器的一项可选功能 。使用时,应用 会生成数据,据此计算当前与远程设备的距离。远程设备也会使用信道探测 功能,并与第一台设备进行一系列无线电信号交换。
Bluetooth 信道探测 比使用信号强度(接收信号强度指示器或 RSSI)作为距离代理的方法更准确、更可靠、更安全。Bluetooth 信道探测 早期实施已经证明,在 100 米的距离内,其精确度可达到 +/- 20 厘米。当距离超过几米时,基于 RSSI 的距离估算尤其不可靠。此外,RSSI 本身也不安全,因此在使用时必须格外小心。
需要注意的是,蓝牙核心规范 并不提供使用蓝牙信道探测生成的数据计算距离的算法。这属于应用 的职责(参见第 8.14 节 "距离测量应用")。
Bluetooth 信道探测 的设计目的是为无钥匙进入和点火系统等应用实现安全的距离计算,这些应用需要足够强大的安全性来保护汽车等贵重物品。
8.2 设备角色
蓝牙信道探测 定义了两个设备角色。启动器(Initiator)是启动信道探测 程序的设备,并最终将其生成的数据传递给应用 ,由应用 计算距离值。另一个设备称为反射器。在所有情况下,信道探测 都是由启动器发射信号,反射器用自己的信号进行回复。
图 35 - CS 期间启动器 和反射器 之间的信号交换
事实上,正如我们将要看到的,在一个完整的信道探测 程序中,会涉及一系列不同类型和不同顺序的传输。
8.3Bluetooth 信道探测 数据传输架构
Bluetooth LE 数据传输架构在第 7.7 节 "数据传输架构 "中作了介绍。蓝牙信道探测 由物理信道和物理链路组成,如图 36 所示,并附有其他传输方式的示例。
图 36 - 数据传输架构中的Bluetooth 信道探测
8.4 两种Bluetooth 信道探测 方法
蓝牙信道探测 之所以有趣,原因有很多。蓝牙核心规范 》定义了两种截然不同的测距方法,应用 可以使用其中一种方法,或者为了最大程度地保证安全,将两种方法结合使用。这两种方法分别称为PBR PBR PBR 和往返RTT法,接下来将介绍这两种方法的基本理论。关于安全性的更多内容将在第 8.13 节 "安全性 "中阐述。
8.4.1PBR
PBR利用了这样一个事实,即无线电传输是由一系列波组成的,而每个完整的波被称为一个波周期,其物理长度是一个常数,前提是传输的频率不发生变化。
图 37 - 两个波浪周期,每个波浪周期的波长相同
波长的一部分用一个称为相位的量来表示。相位用角度表示,单位为度或弧度。信号的波长和相位是PBR 工作原理的核心。
图 38 标出了一个波周期内的若干点,并以弧度为单位标出了该位置对应的相位值。
图 38 - 相位值示例
仅凭信号波长和启动器设备中的接收器 测得的相位值,无法计算两个设备之间的距离。因此,PBR 是通过交换两个不同的信号来实现的,每个信号的频率(f1 和 f2)不同,因此波长也不同。
启动器以频率 f1 发送信息。反射器设备接收这一传输,并以相同频率将其发回给启动器。启动器测量响应传输的相位 (p1) 并记录下来。然后,启动器以频率 f2 发送另一个信道探测 信号。反射器再次以相同的频率 f2 发送类似的信号,启动器测量收到响应信号时的相位 (p2)。
图 39 - 频率 f1 时的首次PBR 信号交换
图 40 - 频率 f2 下的第二次PBR 信号交换
利用两个信道探测 信号的相位差(p2 - p1),可以通过一些简单的数学计算推算出两个设备之间的距离。
实际上,蓝牙使用PBR 方法比这里的描述要复杂一些,但其核心是这种基本方法。
但使用相位值计算距离有一个复杂的问题。当沿着信号的多个波周期测量相位值时,相位值是循环的。在一个波周期内测量时,相位值会经过从 0 弧度到 2π 弧度(0 - 360 度)的所有值。但在信号的下一个波周期,相位又从 0 弧度开始,再次经过所有值到 2π 弧度。每个波周期都是如此。图 41 描述了这种循环模式。
图 41 - 相位值的周期性
在PBR中,这会产生后果。相位值会随着设备之间的距离变化而变化。但到了一定的物理距离,相位值就会开始重复。因此,相同的相位差值可能意味着多个距离。这就是所谓的距离模糊性。幸运的是,蓝牙信道探测 的design 确保在实践中不会出现这种问题,详见 8.10 信道和信道选择。
8.4.2 往返计时
无线电信号以光速传播。RTT 法是指测量信号从发射器到反射器再返回所需的时间,同时考虑反射器处理接收到的信号并作出反应和发射信号所需的时间。然后,将测量到的设备间往返时间乘以光速,再将结果除以二,即可计算出距离。
图 42 -RTT 传输和定时点
图 42 描述了一次RTT 数据包的交换。绿色虚线 ( ---- ) 代表两个信号都不在空中的时间。时间轴上标注了四个点,表 9 对此进行了说明。
| 时间瞬间 | 说明 |
|---|---|
| ToDA | 从设备 A 出发的时间:这是设备 A 在空中传输信号的时间。 |
| ToAB | 到达设备 B 的时间:这是信号到达设备 B 天线的时间。 |
| ToDB | 离开设备 B 的时间:设备 B 在空中传输的时间。 |
| ToAA | 到达设备 A 的时间:这是设备 B 的信号被设备 A 的天线接收到的时间。 |
表 9 -RTT 计时瞬时
图 42 所示的RTT、RTT 可表示如下:
RTT = 2 * ToF = (ToAA-ToDA) - (ToDB-ToAB)
该术语是反射器的周转时间。启动器 从发送信号到收到反射器回复的时间中减去这个值。但是,反射器 如何知道它花了多长时间来处理来自启动器 的信号并作出回应呢?
答案很简单。反射器所需的时间是固定的,在信道探测 开始前由两个设备商定。
事实上,在信道探测 开始之前,必须执行一系列程序。链路层规范定义了一系列控制程序,其中一些与配置和启动信道探测有关。
8.5Bluetooth 信道探测 链路层控制程序
要启动信道探测,两台设备必须首先建立 LE-ACL 连接(见 7.8.1 LE ACL - LE 异步面向连接的逻辑传输)。必须在链路上启用加密,信道探测 控制程序才能使用该连接,因此两台信道探测 设备必须配对。
一旦两个设备之间建立了加密连接,就会执行以下链路层 控制程序:
- 信道探测 安全启动
- 信道探测 能力交流
- 信道探测 配置
- 模式 0 FAE 表请求
- 信道探测 开始
8.5.1信道探测 安全启动
蓝牙信道探测 具有许多独特的安全功能,这些功能在Bluetooth LE 的其他方面是找不到的。其中一些取决于三个数字参数,即初始化向量(CS_IV)、实例化唯一性数据 (CS_IN)和个性化向量(CS_PV)。
在信道探测 安全启动过程中,两台设备中的每一台都会为三种安全参数类型中的每一种类型生成一个值,并通过加密的 LE-ACL 连接将其传递给另一台设备。然后,每台设备将这三种类型的每对值串联起来,这样,在整个过程结束时,每台设备都拥有相同的 128 位 CS_IV、64 位 CS_IN 和 128 位 CS_PV 值。
8.5.2信道探测 能力交换
并非所有信道探测 设备都具有相同的功能。例如,支持的信道探测 方法(参见第 8.4 节 两种蓝牙信道探测 方法)可能会有所不同。共定义了 22 个信道探测 功能参数。
为了使两台设备都能获得都能支持的信道探测 配置,它们必须首先交换有关其能力的信息。链路层为此定义了 LL_CS_CAPABILITIES_REQ 和 LL_CS_CAPABILITIES_RSP PDU。
8.5.3信道探测 配置
根据每个设备的信道探测 能力信息,使用链路层 LL_CS_CONFIG_REQ 和 LL_CS_CONFIG_RSP PDU 交换它们都能支持的选定配置。
在此过程中,通过驱动进程在 LL_CS_CONFIG_REQ PDU 中发送其选择的应用 来确定信道探测 发声的启动器或反射器角色,其他设备对此作出响应。
8.5.4 模式 0 FAE 表请求
所有设备在设置传输频率时都会表现出一定程度的不准确性,这可能因所需频率所在的射频信道而异。
分频偏移执行误差 (FAE) 是设备设定传输频率的不准确度。它表示为预定频率与实际产生频率之间的差值,单位为百万分之一(ppm)。
信道探测 启动器需要执行一些校准,将反射器的 FAE 考虑在内,并需要反射器的 FAE 数据表才能完成校准。它通过链路层模式-0 FAE 表请求控制程序获取该数据。这包括启动程序传送一个 LL_CS_FAE_REQ PDU,反射程序回复一个包含其 FAE 表的 LL_CS_FAE_RSP PDU。请注意,设备的 FAE 表是在制造过程中设置的。
模式 0将在第 8.8 节 "步骤和模式 "中解释。
8.5.5信道探测 启动
在交换安全材料、商定配置和共享 FAE 数据(如有)后,启动程序可指示 LEcontroller 开始信道探测。这需要交换链路层控制 PDU LL_CS_REQ、LL_CS_RSP 和 LL_CS_IND。
信道探测 是通过一连串不同的操作进行的,这些操作被称为CS 步骤,并受一些定时参数的限制。这些参数在信道探测 开始时进行交换。
8.6 时间划分
7.8 逻辑传输中解释过的逻辑传输都是以事件(有时是子 事件)的形式来构建活动发生的时间线。信道探测 活动的排序和时间安排更为复杂多变,为此定义了四级时间划分。
当信道探测 执行时,它是在一系列一个或多个CS 程序中完成的。CS 程序分为CS 事件,每个 CS 事件又分为CS 子 事件。在每个 CS 子事件中,会安排一系列两个或多个CS 步骤,而射频发射和接收活动正是在 CS 步骤中进行的。图 43 描述了这些概念在使用示例配置时可能出现的情况。
图 43 - CS 分时概念
8.7 数据包和音调
在 CS 步骤中进行的射频活动有两种形式:
- 数据包- 这些数据包包含二进制数据,使用高斯频移键控(GFSK)调制,用于空中传输。
- 音调--这是一种不含数据的无线电传输。PBR 使用无线电信号本身的属性,不需要数字域的数据。
信道探测 数据包被称为CS_Sync数据包,并定义了多种变体。CS_Sync 数据包在校准步骤和使用RTT 方法时传输。在PBR 方法中使用时,信道探测 中使用的音调称为CS 音调。
8.8 步骤和模式
CS 步进是蓝牙信道探测所使用的时间划分和调度方案的最底层。步进有相关的模式,其中定义了四种模式。
| 模式 | 费用项目 |
|---|---|
| 0 | 模式-0 用于校准。 |
| 1 | mode-1 涉及RTT 法。 |
| 2 | 模式-2 涉及PBR 。 |
| 3 | mode-3 支持在单步双方法中同时使用RTT 和PBR 。 |
8.8.1 模式-0
步进模式-0 的目的是让启动器 计算一个称为分数频率偏移 (FFO) 的值。
鉴于频率、波长和相位之间的关系,信道探测 设备产生的信号频率是Bluetooth 信道探测 工作原理的关键组成部分。但是,所生成信号的频率与预期频率的匹配程度会有差异,因此存在一定程度的误差也是意料之中的。
FFO 是用来衡量反射器 与启动器 在产生特定目标频率时的差异程度。FFO 的计算涉及从启动器 接收到的 CS 音频率和启动器 在 8.5.4 模式-0 FAE 表请求控制程序中获得的启动器 模式-0 FAE 表。
计算中使用 FFO 来补偿启动器 和反射器 之间的差异,最终提高计算结果的准确性。
图 44 显示了启动器 和反射器 在模式-0 阶段传输的数据包和音频。
图 44 - 0 模式下的数据包和音频传输
蓝牙核心规范 定义了图中显示和标注的时隙。标签及其含义如表 10 所示。
| T_SY | 同步序列的时间。 |
| T_RD | 传输斜坡下降时间。该时间为 5 μs,用于发射器 消除射频信道中的能量。 |
| T_IP1 | 从启动器传输结束到反射器开始传输之间的间歇时间。持续时间从 10 μs 到 145 μs 不等,由能力交换程序决定。 |
| T_GD | 保护时间。持续时间始终为 10 μs。 |
| T_FM | 频率测量时间。对于步进模式-0,持续时间始终为 80 μs。 |
表 10 - CS 步长时隙
每个 CS 子事件至少以一个模式 0 步骤开始。
8.8.2 模式-1
模式-1 步骤涉及 CS_Sync 数据包的交换,目的是测量RTT。图 45 显示了这种步进模式的数据包交换和定义的时隙。
图 45 - 模式-1 中的数据包交换RTT
为了计算RTT,启动程序在发送 CS_Sync 数据包时捕获一个时间戳,在从反射程序接收 CS_Sync 数据包时捕获另一个时间戳。蓝牙核心规范 定义了多种时间戳方法,每种方法的精确度各不相同。
8.8.3 模式-2
模式-2 步骤涉及使用PBR 测量距离。启动器和反射器交换 CS 音调,每个设备在相同频率上传输。使用PBR 时,可能涉及多个天线,这反映在图 46 所示的时隙含义中。
图 46 - 模式 2 中的 CS 提示音交换PBR
图 46 显示了一些额外的时隙标签,表 11 对此进行了说明。
| T_SW | 为天线切换预留的时间段。 |
| T_PM | 传输相位测量音的时间。 |
| T_IP2 | CS 音调之间的间歇时间。 |
| N_AP | 天线路径数量。 |
表 11 - 附加PBR 时隙标签
8.8.4 模式-3
模式-3 步进为启动程序提供了PBR RTT 计算和PBR 计算的基础,所有这些都在一个步进中完成。图 47 显示了在这种步进模式下 CS_Sync 数据包和 CS 音调的交换情况。
图 47 - 在模式 3 步骤中交换的数据包和音频
8.9 模式排序
CS 程序总是由多个 CS 步骤组成,并混合使用两种或三种不同的模式。一般来说,执行的步骤越多,用于距离计算的数据就越多,结果也就越好。执行的希尔思程序、希尔思事件、希尔思子事件和希尔思步骤的数量,以及所使用的步骤模式的组合,均由应用程序配置。这就是所谓的模式排序。
所有 CS 子事件必须从一个、两个或三个连续的模式-0 步开始。在一个步进序列中,必须至少有一种、至多有两种其他模式。但并非所有组合都是允许的,蓝牙核心规范 对这些组合进行了定义。在给定的配置中,所选的非模式 0 模式之一被指定为主模式(Main_Mode),另一种模式(如果有的话)被指定为子模式(Sub_Mode)。有关这些术语的意义及其对模式排序影响的更多信息,请参阅蓝牙核心规范 。
表 12 列出了允许的非模式 0 组合。
| 主要模式 | 子模式 |
|---|---|
| 模式-1 | 无 |
| 方式-2 | 无 |
| 模式-3 | 无 |
| 方式-2 | 模式-1 |
| 方式-2 | 模式-3 |
| 模式-3 | 方式-2 |
表 12 - 允许的非模式 0 模式组合。
一般来说,步进模式排序遵循这种模式:
- 一个或多个模式 0 步骤启动一个子事件。
- 随后是一连串的 n 个主要模式步骤,其中 n 是随机选择的,并在信道探测 配置过程中指定的范围内。
- 在 n 个主模式步骤序列之后是一个子模式步骤。
图 48 显示了一个示例。
图 48 - 带有配置参数的步进模式序列示例
8.10 信道和信道选择
第 6.1 节 Frequency Band 介绍Bluetooth LE 如何将 2.4 GHz 频段划分为 40 个信道,每个信道宽 2 MHz。第 7.8 节 逻辑传输解释了链路层规范定义的各种逻辑传输如何选择信道。蓝牙信道探测 在这两方面都采用了不同的方法。
8.10.1 射频通道
Bluetooth 信道探测 使用链路层逻辑传输时一样,在 2.4GHz 非授权频段内运行。但该频段被划分为 79 个 1 MHz 宽的信道,其中 72 个信道探测可用于信道探测。这些信道的安排可确保避开 LE 一级广告信道。
表 13 列出了信道探测 信道、其信道索引值以及每个信道在信道探测期间是否可用。
| CS 渠道指数 | 射频中心频率 | 允许 |
|---|---|---|
| 0 | 2402 兆赫 | 不 |
| 1 | 2403 兆赫 | 不 |
| 2 | 2404 兆赫 | 是 |
| … | … | … |
| 22 | 2424 兆赫 | 是 |
| 23 | 2425 兆赫 | 不 |
| 24 | 2426 兆赫 | 不 |
| 25 | 2427 兆赫 | 不 |
| 26 | 2428 兆赫 | 是 |
| … | … | … |
| 76 | 2478 兆赫 | 是 |
| 77 | 2479 兆赫 | 不 |
| 78 | 2480 兆赫 | 不 |
表 13 - CS 信道索引和射频物理信道
使用 1 MHz 而非通常的 2 MHz 信道宽度,可确保在 150 米左右PBR 距离 内不会出现距离模糊 (如 8.4.1PBR中所述)。这对于蓝牙信道探测 所设计的应用类型来说绰绰有余。
8.10.2 信道过滤
自适应跳频(AFH)在第 7.4 节 "信道选择 "中作了说明。自适应跳频涉及设备测量每个射频信道的性能,并在通信设备之间共享有关是否应使用特定信道的信息。这样,设备就能适应所处的射频环境,避免使用干扰水平过高的信道。
出于同样的原因,蓝牙信道探测 维护一个信道索引滤波器位图。映射中的每个信道都被标记为包含或排除。信道选择过程确保不会选择标记为排除的信道。启动器和反射器使用链路层信道信道探测 信道图更新程序相互共享射频信道性能信息。
8.10.3 信道选择和跳频
如图 49 所示,在执行每个 CS 步骤之前,会直接选择一个通道。
图 49 - 在执行步骤之前跳频
蓝牙核心规范 定义了三种专用于蓝牙信道探测的声道选择算法。它们被称为 CSA #3a、CSA #3b 和 CSA #3c。
CSA #3a 仅用于选择在模式-0 步骤中使用的信道。
CSA #3b 和 CSA #3c 都设计用于非模式 0 步骤,但在 CS 程序中只能使用其中之一。
CSA #3a 和 CSA #3b 的工作方式非常相似。这两个系统都使用一个通道列表,其中包含标注在通道图中的所有通道的索引。信道探测 开始时,通道列表会被洗牌,然后通道选择只需使用洗牌列表中的每个通道,每次使用一个,每个通道只能使用一次。CSA #3a 的规则是,当洗牌列表中的所有频道索引都已使用完毕,其相关的频道列表将重新生成、重新洗牌并重新开始使用。CSA #3b 允许其洗牌列表在重新生成之前重复使用多次。
CSA #3c 与 CSA #3b 有很大不同,而且更为复杂,但在某些情况下可能在检测反射信号路径方面具有一些优势。详情请查阅蓝牙核心规范 。CSA #3c 支持为可选项。
8.11 天线切换和天线路径
PBR,设备最多可有四个天线阵列。从一个设备的一个天线传输到另一个设备的一个天线构成一个天线路径。最多允许 4 个天线路径,这就将启动器和反射器中每个天线阵列大小的排列限制在 8 个列表中,如表 14 所示。
| 天线配置指数 (ACI) | 设备 若干天线 | 设备 B 的天线数量 | 天线路径数 (N_AP) |
|---|---|---|---|
| 0 | 1 | 1 | 1 |
| 1 | 2 | 1 | 2 |
| 2 | 3 | 1 | 3 |
| 3 | 4 | 1 | 4 |
| 4 | 1 | 2 | 2 |
| 5 | 1 | 3 | 3 |
| 6 | 1 | 4 | 4 |
| 7 | 2 | 2 | 4 |
表 14 - 天线阵列尺寸排列和天线路径
下图显示了两种不同天线配置及其相关天线路径的示例。
CS 提示音在模式-2 和模式-3 阶段的传输过程中会发生天线切换。这反映在图 46 和图 47 所示时隙持续时间公式中的 N_AP(天线路径数)项中。
8.12RTT 和准确性
真空中的光速为每秒 299,792,458 米。这意味着,在短短的一微秒内,光就能传播近 300 米。当然,无线电波也以光速传播。
因此,在使用RTT 法时,捕捉启动器 ToD 和 ToA 时间戳的准确性至关重要。捕捉到的时间戳中一个很小的误差就会导致距离计算中出现很大的误差。
如何获取足够精确的时间戳用于距离估算,是工程师面临的重大挑战。蓝牙核心规范 介绍了几种方法。
- 访问地址:访问地址 是 CS_Sync 数据包的第一个字段,长度为 32 比特。其中一种时间戳方法是捕捉接收到访问地址 的时间,但具体如何操作,还有待具体实施。
- 分段时间估计:有两种方法可以得出小数时序估计值,其中任何一种都可能比访问地址的到达更为精确。一般来说,小数方法涉及对一个字段的分析,该字段可放在 CS_Sync 数据包的末尾,以确定非常小的定时误差。为此,可在 CS_Sync 数据包中附加两个字段中的一个。
- 随机序列:接收信号的采样不可能与接收信号的相位同步,这可能是造成微小定时误差的原因。对随机序列字段的分析可以揭示实际采样点与最佳采样点之间的差异。这可以用来提高时间戳值的准确性。
- 发声序列:这是一个 1 和 0 的交替序列。当使用 GFSK 调制并传输时,代表 1 和 0 的符号具有不同的频率,可视为构成两个不同的音调。通过分析两个音调之间的相位差,可以测量出时间误差,从而改进时间戳。
一般来说,通过对数值分布的分析,对一系列步骤进行测量有助于提高时间戳的准确性。
8.13 安全
距离测量系统的安全性面临着一些新的挑战。一般来说,需要防范的威胁是恶意设备以某种方式欺骗两个受信任设备中的一个(特别是Bluetooth 信道探测中的启动器),使其认为另一个受信任设备比实际距离更近,从而造成明显的潜在后果,如汽车被盗。
在接下来的两节中,将简要说明两种类型的攻击。在第 8.13.3 节 "蓝牙信道探测 安全功能 "中,将总结蓝牙信道探测 可抵御上述(及其他)类型攻击的功能。
8.13.1 欺骗
其中一类攻击是攻击设备模仿其中一个受信任设备。重放攻击就是这样一个例子,它涉及恶意设备记录受信任设备在正常、成功对话期间交换的数据包。随后,恶意设备使用记录的部分数据包发送响应,使受信任设备的行为看起来就像是在与合法设备进行对话。
在图 52 中,Alice 和 Bob 代表一个安全性较差的专有无线测距系统中的两个可信设备。攻击者是一个恶意设备,在攻击的第一阶段,它只是监听 Alice 和 Bob 之间的数据交换并记录数据包。
在图 53 中,攻击的第 2 阶段利用第 1 阶段记录的数据包欺骗 Alice,使其误以为交换对象是受信任的设备 Bob。
图 52 - 重放攻击第 1 部分
图 53 - 重放攻击第 2 部分
Bluetooth 信道探测 具有多重保护功能,可抵御此类攻击。
8.13.2 中继攻击
另一种潜在攻击叫做中继攻击。这是一种在物理层工作的中间人攻击 ,它将信号从一个受信任设备中继到另一个受信任设备,但以某种方式实时操纵信号,从而给人一种设备比实际距离更近的印象。
图 54 - 中继攻击
Bluetooth 信道探测 具有多重保护功能,可抵御此类攻击。
8.13.3Bluetooth 信道探测 安全功能
Bluetooth 信道探测 包含一套广泛的安全功能,通用访问配置文件 定义了适用于信道探测四个安全级别。
为Bluetooth 信道探测 定义的全部安全功能可分为四类。
蓝牙信道探测 支持PBR 和往返计时法。步进模式排序的灵活性意味着应用程序可以选择同时使用这两种方法。这样就可以对这两种截然不同的方法产生的数据进行交叉检查。
安全专家认为,同时攻击这两种方法,使信道探测 信号的相位和计算出的RTT都被操纵,从而得出误导性的一致结果,其复杂程度非常高。仅这一点就足以成为检测攻击的强大机制。
Bluetooth 信道探测 安全包括一个称为确定性随机比特发生器(DRBG)的函数规范。重复调用该函数可生成一串数值,对旁观者而言,这些数值是随机的、不可预测的。
但 DRBG 使用的是初始化矢量 (CS_IV)、实例化唯一性数据 (CS_IN) 和个性化矢量 (CS_PV) 值,这些值是由两个设备在信道探测 安全启动过程中确定的。因此,对于拥有这三个 DRBG 参数的设备而言,输出序列是确定的,但对于不拥有这三个 DRBG 参数的设备(如攻击者)而言,输出序列则是不可预测的。CS_IV、CS_IN 和 CS_PV 在每次进行信道探测 时都有不同的值,鉴于它们是通过加密的 LE-ACL 连接交换部分值创建的,因此可以有把握地假设攻击者不会知道使用中的 DRBG 参数值。
DRBG 用于随机化比特流内容和整体传输模式。蓝牙核心规范 规定,在两种情况下都要使用 DRBG 随机选择信道探测 比特流的区域,然后将其设置为随机生成的比特模式。此外,为模式 2 和模式 3 步骤定义的时隙称为音调扩展时隙,在这些时隙内是否进行传输取决于 DRBG 呼叫。
以这两种方式使用 DRBG 意味着启动者和反射者都可以随机化其传输内容,以及在音调扩展槽中是否存在传输音调。由于 DRBG 的定义是确定性的,因此发起方和反射方(各自拥有 CS_IV、CS_IN 和 CS_PV)都知道会发生什么,而攻击者则不知道。如果任一信道探测 设备发现意外的比特值或意外的传输(或意外的无传输),这将被视为潜在的攻击。
重放攻击不可能得逞,因为每次两台设备进行信道探测 时,传输的数据包和音调的顺序都会发生变化,如果简单地重放之前一系列交换的记录,很容易就会被检测到。
有许多已知的物理层攻击涉及中间人(MITM)预测从合法发射设备接收到的部分无线电符号的值,并提前转发这些符号的完整版本,从而操纵时间,使合法接收者错误计算RTT 和距离。攻击者的信号通常会被放大,这样目标设备就会将被操纵的信号视为主要信号,而不是较弱的原始信号,后者可能会被假定为多路径传播引起的反射,并被忽略。这种攻击利用符号通常的完整持续时间来实现定时提前,持续时间较长的符号比持续时间较短的符号更容易受到这种攻击。
带宽位周期产品 值为 2.0 的低功耗2M 2BT PHY 所产生的符号脉冲持续时间短于其他 PHY 的相关脉冲,从而降低了此类攻击的风险。
另一种可用于防范中继攻击的功能 称为SNR 控制。
信噪比控制(SNR Control)允许启动器 和接收器 在某些信号中混入预先商定的随机噪声量。符号操纵中继攻击依赖于攻击者能够在比一个符号的整个持续时间短得多的时间内迅速分离和操纵合法信号。通过向信号中注入噪声,攻击者完成分析的难度和速度都会降低,从而降低此类攻击成功的可能性。另一方面,启动器 和反射器 设备预先商定了信噪比,能够轻松过滤人为添加的噪声。
蓝牙信道探测 规范包括对攻击检测系统的描述,以及用于报告攻击发生概率的标准化度量标准,称为归一化攻击检测度量标准(NADM)。 如表 15 所示,NADM 采用滑动量表和相关形容词。
| NADM 值 | 费用项目 |
|---|---|
| 0x00 | 攻击的可能性极小 |
| 0x01 | 攻击的可能性很小 |
| 0x02 | 袭击的可能性不大 |
| 0x03 | 攻击是可能的 |
| 0x04 | 袭击很可能发生 |
| 0x05 | 攻击很有可能发生 |
| 0x06 | 攻击极有可能发生 |
| 0xFF | 未知 NADM.默认值用于没有随机序列或发声序列的RTT 类型。 |
表 15 - NADM 值
可能受到攻击的迹象包括意外的位值或相位调整,以及参考信号的属性,可通过蓝牙核心规范进行比较。
8.14 距离测量应用
Bluetooth 信道探测 本身并不计算距离值。相反,它为应用程序提供了原材料,包括定时信息、振幅和相位值(IQ 样本),可用于专有的距离计算算法。由于不影响互操作性,因此没有定义标准算法,制造商可通过其算法所能达到的结果质量自由地进行区分。
使用Bluetooth 信道探测 的应用程序有许多职责,包括但不限于
- 实施一种算法,利用Bluetooth 信道探测 提供的数据来计算距离测量值。
- 选择适合应用需求和优先事项的配置,包括应用的步进模式及其排序和定时参数。这将包括平衡延迟与要生成的信道探测 测量数据量等问题。
- 使用Host 控制器接口 (HCI) 命令来启动和执行第 5 节蓝牙信道探测 链路层控制程序中所述的控制程序。
- 选择 GAP 中定义的信道探测 安全级别之一,并根据安全要求配置信道探测 。
- 以适合应用的方式处理由 NADM 值表示的攻击检测信息。
Bluetooth 信道探测 规范为精确、安全的距离测量应用提供了一个严格、标准和可互操作的框架,同时也为开发人员提供了根据其特定优先事项优化应用的灵活性。
9.等时适配层
9.1 基本知识
等时适配层(ISOAL)的主要目的是地址 一个可能影响音频设备连接和广播等时通信的潜在问题。它可能会应用 于等时通信的其他用途。
9.1.1 音频采样 101
数字音频的工作原理是对模拟音频信号进行采样,并对采样音频应用编解码器对数字采样数据进行压缩和其他处理,然后再进行存储或蓝牙低功耗音频传输。在读取或接收已编码的数字音频数据时,编解码器会对数据进行解码,产生一系列数字采样,然后用来(近似)重现原始模拟音频。图 55 展示了音频信号的采样、编码和传输步骤,以及接收编码音频数据、解码和最终渲染的反向步骤。
图 55 - 音频处理步骤
音频编解码器的关键目标之一是减小音频数据的大小,以便在带宽有限(而且宝贵!)的链路上高效传输。采样是指定期测量和记录信号的振幅。记录采样的频率称为采样率。图 56 中的垂直线代表连续变化的音频信号的采样,用曲线表示。这一系列采样可以近似表示原始模拟信号。采样的频率越高(即采样率越高),近似信号就越接近原始信号。
采样的另一个维度是比特深度。采样时信号的振幅需要用整数值来表示。一种方法是将可能的振幅值范围划分为 256 个不同的振幅带,每个振幅带用 0 至 255 之间的数字表示。在这种方案中,单个采样只需要一个字节(8 位)来记录采样振幅值所在的频带,因此比特深度为 8 位。将可能的振幅范围划分为更多的频段,可以提供一个更精细的系统来表示采样值,因此可能获得更高质量的结果。例如,24 位的比特深度可以用 0 到 16,777,215 之间的整数来表示可能的振幅值范围。然而,每个采样需要 3 个字节,因此,使用这种增加的位深度采样所产生的数据量是原来的三倍。
数字采样可产生大量数据。以一首三分钟的歌曲为例,采样率为 44.1 kHz(CD 音质),比特深度为 24。如果我们计算一下,就会发现以数字形式近似表示整首歌曲所需的原始采样数据量接近 24 兆字节。如果我们只想将这些数据存储在电脑的 4 TB 硬盘中,我们就不会担心这个问题,但在带宽有限的任何通信链路上传输这些数据时,这就成了一个问题。这就是编解码器的作用所在。
图 56 - 离散采样表示连续模拟信号
9.1.2 编解码器和帧
像蓝牙低功耗音频 使用的编解码器 这样的编解码器 可以将原始数字采样数据压缩到原始大小的 25% 以下(但请注意,实际结果在很大程度上取决于原始音频内容)。这是一笔可观的节省。
编解码器通常通过识别和利用一系列连续样本中的模式来工作。举一个非常简单的例子来说明这一原理:如果数据集包含一系列连续的 100 个样本值,所有样本值都相同,例如 50,那么假设比特深度为 8 位,编解码器可能会将其表示为包含 [100,50] 的两个字节,而不是包含单个样本列表 [50,50,50...50] 的原始 100 个字节系列。显然,编解码器需要对一系列样本进行分析和编码,而不是一次只对一个样本进行分析和编码(单个样本中可找到的模式并不多!)。
编解码器一次分析的样本集合称为一帧。帧有固定的持续时间,通常以毫秒为单位,包含的样本数由采样率决定。例如,如果采样率为 44.1 KHz,10 毫秒的帧包含 4410 个样本。
不同的音频产品可能使用不同的帧持续时间。常见的有 10ms 和 7.5ms。当一个设备(音源)使用一种帧持续时间来制作音频,而另一个设备(音源)使用不同的帧持续时间来消费音频时,就会出现一个需要解决的问题。这就是 ISOAL 的作用所在。
9.2 有框与无框
当设备使用等时通信时,发送设备和接收设备使用的帧持续时间不必相同。这可能导致两种情况:
- 第一个设备使用的帧持续时间是另一个设备使用的帧持续时间的精确倍数。
- 第一个设备使用的帧持续时间不是另一个设备使用的帧持续时间的精确倍数。
在第一种情况下,较大的帧持续时间与较小的帧持续时间之间的关系很简单,在两者之间转换数据也是一个简单的操作。在一个或多个所需链路层 PDU 的有效载荷中发送的数据被称为非成帧数据,不包括支持在两种要求之间调整帧持续时间的附加数据。
在第二种情况下,链路层 PDU 可能包含较大有效载荷的某些部分,并带有简短的标头字段,标明某部分是帧的开始、延续还是帧的结束。这样格式化的数据被称为帧数据。
连接等时 PDU 和广播等时 PDU(由链路层定义)都包含一个名为LLID 的字段。LLID 表示链路层 PDU 的有效载荷包含有帧数据还是无帧数据。ISOAL 会根据数据是否成帧对从链路层 接收到的数据进行不同处理。同样,是否需要成帧也会影响 ISOAL 对在上层 SDU 中接收到的数据的处理,并将其传递给链路层 ,以便在链路层 ISO PDU 中传输。
9.3 分裂与重组
如果数据没有成帧,那么重组就会从包含在一个或多个链路层 PDU 的有效载荷中的一系列一个或多个片段创建一个服务 数据单元(SDU)。然后,ISOAL 将 SDU 传递给上层。如图 57 所示。
图 57 - 未成帧 ISO PDU 的重组
当需要将上层 SDU 分割成更小的有效载荷以便在链路层 PDU 中传输,且不需要成帧时,这一过程称为分片。如图 58 所示。
图 58 - 分片创建未成帧的 ISO PDU
非成帧的 PDU 有一个标头,标头包含的字段表明后面的数据要么是 SDU 的开始,要么是前一个 SDU 的继续,要么是本 SDU 的结束。PDU 只包含未成帧 SDU 的一个片段。
9.4 分割和重新组装
如果数据是成帧的,那么重新组装就会从一个或多个链路层 PDU 的有效载荷中包含的一系列一个或多个段中创建一个服务 数据单元(SDU)。然后,ISOAL 将 SDU 传递给上层。如图 59 所示。
图 59 - 重新组装有框架的 ISO PDU
当需要将上层 SDU 分割成更小的有效载荷以便在链路层 PDU 中传输并需要成帧时,这一过程称为分段。如图 60 所示。
图 60 - 分段创建成帧 ISO PDU
有帧 PDU 中的数据段有一个标头,标头包含的字段表示后面的数据是一个 SDU 的开始、前一个 SDU 的继续或本 SDU 的结束以及定时偏移信息。PDU 可能包含多个有帧 SDU 的片段。
10.Host Controller 接口
10.1 基础知识
Host Controller 接口(HCI)定义了一个标准化接口,host 可通过该接口向controller 命令,controller 也可通过该接口与host通信。该规范分为几个部分,第一部分仅从功能角度定义接口,不考虑具体的实施机制,其他部分则定义在使用四种可能的物理传输方式之一时如何实施 HCI。
Bluetooth LE 和Bluetooth BR/EDR 都使用 HCI。
10.2 人机交互功能规范
功能接口是根据命令和事件定义的。它们基本上是host 和控制器之间可以交换的信息。命令由host 发送至控制器,事件则由控制器发送至host。事件可以是对命令的响应,也可以是主动发送的信息。参见图 61。
图 61 - HCI 命令和事件
10.3 HCI 运输
四种 HCI 传输类型是
- UART
- USB
- 安全数字(SD)
- 三线制 UART
10.3.1 UART 传输
当host 和controller 在同一印刷电路板上使用 UART 连接时,HCI UART 传输可用于使用 UART 实现 HCI 通信。该协议基于 5 种数据包类型。它们是 HCI 命令包、HCI ACL 数据包、HCI 同步数据包、HCI 事件包和 HCI ISO 数据包。
规定了 RS232 配置要求。总之,UART 传输使用 8 个数据位、无奇偶校验、1 个停止位和 RTS/CTS 流量控制。
10.3.2 USB 传输
USB 可通过两种方式用作人机交互传输。蓝牙控制器可在 USB 加密狗中实现。另外,也可以在产品 内部使用 USB 来连接host 和控制器。
USB 标准将可发送数据或接收数据的缓冲区称为端点。HCI USB 传输规范指出了预期存在的端点及其所需或建议的属性。
10.3.3 安全数字
用于 HCI SD 传输的协议由安全数字协会(SDA)定义和拥有。蓝牙核心规范中关于 HCI SD 传输的部分主要是对 SDA 所拥有的外部规范的引用,以及对通信架构的概述。
10.3.4 三线制 UART
三线制 UART 人机交互传输规范描述了在两个三线制连接的 UART 之间传输人机交互命令和事件的架构和协议。它涉及可靠性、数据完整性、链接建立、电源管理和硬件配置。
10.4 人机交互示例
下面的一些例子展示了人机交互功能界面的实际应用。
10.4.1 无连接到达角
图 62 显示了host 在配置控制器过程中交换 HCI 命令和事件的情况,以便为使用到达到达角)或出发角 of departure)技术传输支持方向查找 的数据包做好准备。
图 62 - 无连接到达角控制器配置
10.4.2 LE 路径损耗监测
LE 路径损耗监控是低功耗功率控制 功能的一部分。如果设备希望管理连接的对等设备所使用的传输功率,使其保持在接收器 的最佳功率范围内,则可以使用此功能。
图 63 显示host 发送配置并启用 LE 路径损耗监控所需的 HCI 命令。启用监控后,控制器会向host发送包含路径损耗数据的 LE 路径损耗阈值事件。
图 63 - LE 路径损耗监控
10.4.3 主动扫描
使用传统广播 外设支持主动扫描,这些外设需要传输的数据量超过了单个广告数据包的容量。有关这方面的更多信息,请参阅第 14.3 节 "发现"。
图 64 显示了设备(设备 A)中的host 组件配置其控制器以执行主动扫描,然后在另一条命令中启用扫描。当设备 A 的链路层 从另一个设备接收到 ADV_IND 等可扫描广告数据包时,由于它已被配置为执行主动扫描,因此会通过发送 SCAN_REQ PDU 和接收另一个设备返回的 SCAN_RSP PDU 来做出响应。然后,原始广告数据包的内容和扫描响应将通过一系列 HCI LE 广告报告事件传递到设备 A 的Host 。
图 64 - 正在扫描
11.逻辑链路控制和适配协议
11.1 基本知识
逻辑链路控制和适配协议(L2CAP)负责协议复用、流量控制以及服务 数据单元(SDU)的分段和重新组装。
L2CAP 使用通道的概念来分隔堆栈各层之间传递的数据包序列。固定通道无需设置,可立即使用,并与特定的高层协议相关联。通道也可以动态创建,并通过指定的协议服务 多路复用器(PSM)值与协议关联。
图 65 说明了 L2CAP 的主要功能。
图 65 - L2CAP 主要功能
11.2 L2CAP 和协议复用
在堆栈中,L2CAP 的上层是使用不同协议的层,如属性协议(ATT)和安全管理器协议(SMP)。L2CAP 协议复用可确保 SDU 在堆栈中向上传递到相应层进行处理。
L2CAP 信道在处理属性协议时,要么使用为 ATT 预留的固定信道,在这种情况下被称为非增强 ATT 承载,要么使用一系列一个或多个动态信道,每个信道作为增强 ATT 承载。非增强型 ATT 承载支持一次一个依次执行的 ATT 交易。增强型 ATT 承载支持在并行 L2CAP 信道内顺序执行的并行 ATT 事务。请参见 12.属性协议》了解更多详情。
11.3 L2CAP 和流量控制
流量控制的目的是确保堆栈中某一层产生数据包的速度不超过同一堆栈中或远程设备上某一层处理这些数据包的速度。如果没有流量控制,就有可能出现缓冲区溢出等问题。
基于信用的流量控制是多种可能的流量控制方法之一。其工作原理大致如下:
- 发送设备知道接收设备的容量,即在不丢失数据(如缓冲区溢出)的情况下可处理的 PDU 数量。它通过配置或数据传输 开始前两个设备之间的交换来获取这一容量信息。
- 发射器 会为接收器 的容量限制设置一个计数器。每当发射器发送一个 PDU,计数器就会递减。当计数器的值为零时,发射器 知道接收器 的容量已满,因此会暂时停止发送更多的 PDU,让接收器 处理积压的 PDU。
- 当接收器 从其缓冲区中读取并处理一个或多个 PDU 后,会向发射器 发回相应数量的点数,发射器 会使用这些点数来递增计数器。当计数器的值不为零时,发射器 可继续发送更多的 PDU。
L2CAP 定义了几种主要与流量控制有关的运行模式。
例如,L2CAP 未增强 ATT 承载上的 ATT 使用基本 L2CAP 模式,该模式不提供流量控制。这使得 ATT 不可靠,应用必须考虑到接收设备可能丢失传输的 ATT PDU。对于未确认的 PDU(如通知),发送设备可以通过链路层 确认知道远程设备上的协议栈是否收到了 PDU,但却无法知道 PDU 是否已成功传送到协议栈顶部的接收应用 。
通过 L2CAP 增强 ATT 承载的 ATT 使用基于信用的增强流量控制模式,该模式提供流量控制。因此,EATT 可被视为可靠的。
11.4 L2CAP 分段和重新组装
L2CAP 上下两层都受最大传输单元(MTU)大小的限制,MTU 规定了该层创建的 PDU 类型所允许的最大尺寸。例如,ATT_MTU 参数定义了 ATT PDU 的最大尺寸。
L2CAP 本身和堆栈中的上层或下层可能具有不同的 MTU 大小,因此可能需要将某些 PDU/SDU 分割成一系列相邻层可以处理的较小部分,或者反过来将一系列相关的较小部分重新组合成完整的 PDU/SDU。L2CAP 应用于上层的这些过程称为分段和重组,而与 L2CAP 及其与下层关系相关的等效过程称为分片和重组。
12.属性协议
12.1 基本知识
属性协议 (ATT) 由两台设备使用,其中一台扮演 客户端另一个则扮演服务器的角色。服务器提供一系列称为属性的复合数据项。属性由服务器整理成一个索引列表,称为属性表。
每个属性都包含一个句柄、一个通用唯一标识符(UUID)、一个值和一组权限。
- 句柄是一个唯一的索引值,ATT客户端 可以用它来引用属性表中的特定条目。
- UUID 标识属性的类型。
- 权限字段是一组标志,表示是否允许读取、写入或两种形式的访问,以及允许访问必须满足的任何其他安全条件。
- 蓝牙SIG 学习指南 了解Bluetooth LE中的安全性中有更多关于属性权限的信息。
- 属性值字段是一个包含属性值的字节数组。字节数组的数据类型和语义解释由堆栈的高层负责。
通用属性配置文件 (GATT)定义了属性如何代表更高层次的结构,即服务、特征和描述符。通常情况下,需要在一个连续的句柄值范围内使用一组属性来表示更复杂的类型,因此属性协议支持使用由句柄值范围标识的属性组。参见第 13 节。有关这方面的更多信息,请参阅第 13 节 "通用属性配置文件 "。
ATT客户端 使用 ATT 来发现 ATT 服务器中属性表的详细信息,包括感兴趣的属性或属性类型的句柄值。当知道句柄值时,就可以将它们与某些 PDU 类型一起使用,以识别表中的特定属性,然后对其采取行动。例如,ATT_READ_BY_GROUP_TYPE_REQ PDU 可用于查找主服务定义中所有属性的句柄和 UUID。更简短的表述方式是,ATT_READ_BY_GROUP_TYPE_REQ PDU 可用来查找属性表定义的所有 GATT 主服务。
当使用 ATT_READ_BY_GROUP_TYPE_REQ 等支持发现操作的 PDU 时,会指定一个句柄范围,并指出要搜索的属性表中条目子集 (可能是整个表)和要查找的属性类型。图 66 举例说明了这一过程,所有主服务都被搜索到,响应显示了包含与被发现的主服务相关的属性的句柄值范围。

图 66 - 按组类型读取请求和响应
ATT 是连接Bluetooth LE 设备的应用程序之间进行交互的主要机制之一,它使用协议定义的 PDU 和更高级规范(如通用属性配置文件 (GATT))中定义的程序。
ATT 定义了两种变体,即基本 ATT 和较新的增强属性协议 (EATT)。
Bluetooth LE 和Bluetooth BR/EDR 均可使用 ATT。本文件只考虑Bluetooth LE 使用的 ATT。
12.2 ATT PDU
属性协议》定义了 31 个不同的 PDU,每个 PDU 都基于六种方法中的一种。
12.2.1 命令
ATT 命令 PDU 由客户端 发送到服务器,但服务器没有响应。图 67 所示的 ATT_WRITE_CMD 就是一个命令示例。
图 67 - ATT_WRITE_CMD
12.2.2 申请和答复
客户端 向服务器发送 ATT 请求 PDU。服务器应在 30 秒内回复相应类型的响应 PDU 或错误响应 PDU (ATT_ERROR_RSP)。如果未能在 30 秒内响应,则构成超时。
图 68 所示的 ATT_WRITE_REQ 和 ATT_WRITE_RSP PDU 就是请求/响应 PDU 配对的一个示例。
图 68 - ATT_WRITE_REQ
12.2.3 通知
通知是类型为 ATT_HANDLE_VALUE_NTF 的非请求 PDU,由服务器发送给客户端。未定义回复 PDU。请参见图 69。
图 69 - ATT_HANDLE_VALUE_NTF
12.2.4 指示和确认
服务器向客户端发送 ATT 指示 PDU。客户端 在 30 秒内回复相应类型的确认 PDU 或错误响应 PDU (ATT_ERROR_RSP)。如果未能在 30 秒内响应,则构成超时。
图 70 - 指示和确认中显示的 ATT_HANDLE_VALUE_IND 和 ATT_HANDLE_VALUE_CFM PDU 就是指示/确认 PDU 配对的一个例子。
图 70 - 指示和确认
12.2.5 PDU 格式
所有 ATT PDU 都具有相同的结构,包括一个标识 PDU 类型的操作码、一组参数和一个可选的应用密钥 签名。需要注意的是,当属性协议在加密链路层 上运行时,签名字段很少使用,而且是多余的,因为链路层 的所有加密数据包都包含应用密钥 数据。
12.2.6 最大传输单元
ATT PDU 的最大长度取决于已建立的最大传输单元(MTU)值。根据 ATT 使用的承载[11],可以使用两种机制之一来建立 MTU。
12.3 交易
ATT 定义了事务的概念。来自客户端 请求PDU 预计将在 30 秒内由服务器返回响应PDU。服务器发送的指示应由客户端 在 30 秒内回复一个确认PDU。每个请求/响应对或指示/确认对构成一个事务。如果交易超时,则视为交易失败,不得再使用当前承载发送任何类型的 PDU。
ATT 采用顺序事务模式。这意味着,如果 ATT 事务已启动,则在当前事务完成之前,同一承载实例不得处理其他 ATT PDU。当收到远程设备的预期响应或确认 PDU 时,或当交易等待 30 秒后超时时,交易即被视为已完成。
12.4 承载者
ATT 由下面的 L2CAP 层以两种方式之一处理,每种方式称为承载。这两种 ATT 承载是非增强 ATT 承载和增强 ATT 承载。使用哪种承载会影响 ATT 的使用方式,在某些情况下还会影响协议的可靠性。通用属性配置文件 》涉及 ATT 的使用方式,例如规定:
未经强化的 ATT 承载者
- 使用固定的 L2CAP 信道,因此该承载可能只有一个实例。
- 无论有多少应用 客户在使用 ATT,事务都是严格按顺序进行的。这就意味着,一个应用 启动的事务可能会延迟另一个应用 希望启动的事务。
- 可以交换 ATT_EXCHANGE_MTU_REQ 和 ATT_EXCHANGE_MTU_RSP PDU,以影响在未增强 ATT 承载上使用的 ATT MTU 的选择。
- 由于缓冲区溢出等问题而无法处理的客户端 接收到的任何通知都将被丢弃。因此,在非增强 ATT 承载上使用 ATT_HANDLE_VALUE_NTF PDU 时被认为是不可靠的。
- 使用未增强 ATT 承载时,对 ATT_MULTIPLE_HANDLE_VALUE_NTF、ATT_READ_MULTIPLE_VARIABLE_REQ 和 ATT_READ_MULTIPLE_VARIABLE_RSP 等 PDU 类型的支持是可选的。
- 支持未增强 ATT 承载的 L2CAP 信道可以是未加密的,也可以是加密的。
增强型 ATT 承载器
- 使用动态 L2CAP 信道和多个信道,因此允许多个承载实例。
- 交易是按顺序处理的,但以每个承载为基础。因此,在一个堆栈中,可以进行并行交易,每个交易由一个单独的增强 ATT 承载实例处理。这样做的好处显而易见,可以避免一个应用ATT 时被另一个应用阻塞。
- ATT MTU 被设置为 L2CAP 层自动使用的 MTU 值,并且 ATT_EXCHANGE_MTU_REQ 和 ATT_EXCHANGE_MTU_RSP PDU 不允许通过增强 ATT 承载。
- 增强 ATT 承载使用一种称为 "基于信用的增强流量控制模式 "的 L2CAP 流量控制方法。其效果是,在非增强 ATT 承载上使用时不可靠的 PDU,在使用增强 ATT 承载时可被视为可靠的 PDU。
- 使用增强 ATT 承载时,必须支持某些 PDU,如 ATT_MULTIPLE_HANDLE_VALUE_NTF、ATT_READ_MULTIPLE_VARIABLE_REQ 和 ATT_READ_MULTIPLE_VARIABLE_RSP。
- 支持增强 ATT 承载的 L2CAP 信道必须是加密信道。
12.5 发现对 EATT 的支持
已定义的通用属性配置文件 服务 客户端 可确定所连接的服务器是否支持 EATT,反之,也可让客户端 通知服务器它支持 EATT。
如果服务器支持 EATT,则必须在 "通用属性配置文件 服务 中包含名为 "服务器支持的功能 配置文件 特性 。该特性 值的第一个八位位 0 设为 1 表示支持 EATT。GATT/ATT客户端 可通过读取该特性来确定服务器是否支持 EATT。
客户端 支持的功能特性 值由表示是否支持某些功能的比特组成。比特 1 表示增强 ATT 承载器是否受客户端支持。比特 2 表示是否支持 ATT_MULTIPLE_HANDLE_VALUE_NTF PDU。客户端 必须向该特性 写入适当的值,以告知服务器它所支持的功能。
图 71 - EATT功能 支持发现
13.通用属性配置文件
13.1 基本知识
通用属性配置文件 (GATT)根据属性表中的属性定义了更高级别的数据类型(见 12.属性协议)。这些数据类型称为服务、特征和描述符。它还定义了通过属性协议 (ATT) 使用这些数据类型所涉及的一系列程序。应用程序通常使用映射到这些程序的平台 API。
服务是一种分组机制,它提供了使用服务所含特性的环境,并具有确定的类型。服务通常与设备的主要功能 或能力相对应。
特性是状态 数据的单个项目,有一个类型、一个相关值和一组属性,这些属性表明数据如何在相关的 GATT 程序集中使用。例如,可以规定连接的对等设备可以读取特定特性 的值,但不能写入。
特征属于一种服务。同一特性 类型可以是多个服务的成员,根据这些服务 提供的不同语境,使用特性 的规则可能会有所不同。服务 规范将提供这些细节。
描述符属于某些特性,可以包含元数据,如对特性 的文字描述,也可以提供一些控制特性行为的方法。特性有零个或多个附加描述符。例如,GATT 定义了一种称为 "特性 值通知"的操作,它涉及一个设备向连接的对等设备异步发送一个包含特性 值的 ATT PDU,而不要求对方设备做出响应。如果特性 支持通知,通常会在特性 值发生变化时或由定时器控制定期发送通知。但只有当对等设备提出请求时,才会发送通知,而这是通过在一种称为 "客户端 特性 配置描述符"的特殊描述符中设置一个标志来实现的。
服务、特征和描述符的层次结构如图 72 所示。
图 72 - 服务、特征和描述符
GATT 定义了两种角色。GATT客户端 向 GATT 服务器发送 ATT 命令和请求。GATT 服务器接受并处理从 GATT客户端 收到的命令和请求,并向 GATT客户端 发送 ATT 通知、指示和响应。
所有 GATT 服务器都必须提供两项特殊服务。它们是通用访问服务和通用属性服务。
13.2Bluetooth SIG vs Custom
一些服务、特性和描述符由蓝牙SIG (BluetoothSIG 定义,并有 16 位 UUID 值来标识其类型。蓝牙技术SIG 的各定义类型列表可从specifications/assigned-numbers 获取。实施者可通过https://support.bluetooth.com/hc/en-us/articles/360062030092-Requesting-Assigned-Numbers 购买 16 位 UUID 和其他类型的分配号码。
实施者可定义自定义服务、特性和描述符。自定义服务、特性和描述符可以由实施者分配的 128 位 UUID 值来标识,也可以从Bluetooth SIG购买 16 位 UUID 值。16 位 UUID 也有等效的 128 位值,其形式为 0000XXXX-0000-1000-8000-00805F9B34FB,其中 XXXX 为 16 位 UUID 值。除了从Bluetooth SIG(Bluetooth SIG)购买的 UUID 之外,实施者不得使用此范围内的 UUID。
GATT 服务器可能只包含Bluetooth SIG 定义的服务、特征和描述符(属性),也可能包含Bluetooth SIG 定义的属性和自定义属性的混合物。
13.3 程序
GATT 规程包括服务 发现、特性 发现、描述符发现、读写特性 值以及通知和指示特性 值等。GATT 规范在其程序和这些程序必须使用的 ATT 基础协议之间提供了清晰的映射。
13.4 示例
13.4.1Bluetooth SIG 仅定义属性
图 73 显示了一组服务及其特性的示例。一个特性 有一个相关描述符。本示例中的每个属性都由蓝牙SIG(BluetoothSIG定义。
图 73 - 一套服务、特征和描述符示例
图中显示的服务是实现了标准近距离配置文件 的设备可能具有的服务(即时警报和TX 功率服务不是强制性的)。请注意警报级别 特性 出现了两次,一次出现在链路丢失 服务 中,一次出现在即时警报 服务中。每次的 UUID 都是一样的。这就是将特性 识别为警报级别 特性的原因。但是,将 "特性 归为一组的服务 提供了一个不同的环境,而与警报级别"特性 "有关的规则和行为在这两种服务中也有所不同。
由于特性 支持通知,因此已更改的服务 特性 具有相关的客户端 特性 配置描述符。任何支持通知或指示的特性 都必须有一个客户端 特性 配置描述符,因为其值(客户可写入)控制着当前是否启用了通知或指示。
13.4.2Bluetooth SIG 和自定义属性的混合物
图 74 显示了一个 GATT 服务器,它混合了蓝牙SIG 定义的 GATT 属性和一个自定义服务 ,其中包含一个自定义特性。自定义服务 称为近距离监控服务 ,其 UUID 类型标识符值为 0x 3E099910-293F-11E4-93BD-AFD0FE6D1DFD。其特性 被称为客户端 临近特性,UUID 值为 0x 3E099911-293F-11E4-93BD-AFD0FE6D1DFD。请注意,在教育开发人员资源《蓝牙低功耗开发入门》的项目工作中使用了该服务 和特性 。请参见 18。更多详情,请参阅 18.
图 74 -Bluetooth SIG 定义和自定义属性的混合体
14.通用接入配置文件
14.1 基础知识
蓝牙核心规范 通用访问配置文件 (GAP)部分定义了与设备发现和在两个设备之间建立连接有关的程序。如何进行一般的无连接数据通信、如何使用周期性广播 (见 7.8.3 PADVB - LE周期性广播 )以及如何建立等时通信(见 7.8.5 LE BIS 和 LE CIS - 等时通信)也是 GAP 涵盖的主题。
此外,核心规范的这一部分还涵盖了一些关键的用户界面标准和Bluetooth LE 安全的某些方面。
广告数据包(广告)的传输和通过扫描接收是 GAP 运行的核心。链路层定义了多种不同的广告和扫描数据包类型。需要注意的是,有效载荷字段称为 AdvData,并非所有 PDU 类型都有该字段。如果存在该字段,其中包含的数据将被编码为一系列长度/标记/值结构(称为 AD 类型)。AD 类型在核心规范补充(CSS)文件中进行了定义,可从 bluetooth.com 的规范页面获取。
GAP 与Bluetooth LE 和Bluetooth BR/EDR 都有关系。在本节的其余部分中,只介绍适用于Bluetooth LE GAP。此外,需要注意的是,虽然广告和扫描等活动与 GAP 息息相关,但这些程序实际上是由链路层 执行的,所涉及的 PDU 类型也是如此。
14.2 角色
GAP 定义了四种设备角色。表 16 列出并解释了这些角色。
| 角色 | 费用项目 |
|---|---|
| 广播员 | 使用某种广告形式以无连接方式传输数据的设备。这包括传统广播、扩展广播 和周期性广播。广播机构也可传送广播等时码流。广播者有一个发射器 ,但拥有一个接收器 是可选的。广播者不接受来自中心设备的连接(除非它也扮演外设角色)。 |
| 观察员 | 观测器接收广告数据包或广播等时数据流数据包。它不与其他设备连接,包含一个接收器 ,也可能不包含一个发射器。观察者能以无连接方式接收广播数据。 |
| 外围设备 | 外围设备可与中心设备连接。它包含一个发射器 和一个接收器。 |
| 中部 | 中央处理器可以启动与外围设备的连接。它包含一个发射器 和一个接收器。 |
表 16 - 全球行动计划的作用
请注意,"中央"和 "外围"这两个角色名称也被链路层使用。这两个不同语境中的术语含义并不相同。
14.3 发现
广播设备或外围设备要么处于不可发现模式,要么处于 GAP 定义的两种可发现模式之一。在非可发现模式下发布广告时,传输的数据包在空中是可见的(这不是安全功能),但执行一般可发现程序或有限可发现程序的扫描设备将忽略这些数据包。
可被发现设备既可以处于一般可被发现模式,也可以处于有限可被发现模式。在一般可发现模式下,设备的可发现时间不确定,而在有限可发现模式下,设备的可发现时间最长为三分钟。
发现设备可以通过检查 AdvData 字段(称为 "标志")中的 AD 类型来识别广告设备所处的可发现模式。有限可发现模式通常用于优先处理用户最近进行过交互的设备,例如按下按钮或拿起并移动设备。
当中心设备或观察者设备试图发现其他设备时,可以使用被动扫描或主动扫描。允许使用这两种方式中的哪一种,取决于设备是试图在一般可发现模式下发现设备,还是在有限可发现模式下发现设备。
被动扫描包括接收广告 PDU,但不发送任何扫描 PDU。主动扫描包括接收广告 PDU,并通过发送扫描 PDU 请求更多信息。各种 PDU 类型由《链路层 》定义,在 7.8.2 ADVB - LE 广告广播中进行了概述。
蓝牙核心规范 指出,有些设备只使用传统广播 ,而有些设备则可能使用扩展广播 或交错两种广告形式。建议执行其中一种发现程序的设备交错扫描两种类型的广告。此外,还建议设备对其支持的所有 PHY 进行扫描。
图 75 显示了结合其他相关变量的 GAP 发现模式。
14.4 连接模式
广告设备可通过所使用的 PDU传统广播)或 AdvMode 字段扩展广播)的值来表明是否可与之连接。
图 75 显示了 GAP 连接模式与其他相关变量的关系。
设备可通过执行 GAP 定义的其中一个连接相关程序来请求与另一个设备建立连接。这通常涉及发送 CONNECT_IND PDU传统广播)或 AUX_CONNEXT_REQ PDU扩展广播),作为对接收到的 PDU扩展广播允许发送的几种类型之一)的响应。链路层 定义了广告和连接请求 PDU 类型,以及有关可发送连接请求作为响应的 PDU 类型的规则。请参阅 7.8.2.2.3传统广播 及相关 PDU 类型和 7.8.2.3.5扩展广播 及相关 PDU 类型。
14.5 定向与非定向
GAP 使用的广告既可以是非定向的,即 PDU 适用于任何接收到这些 PDU 的观察者或中心设备;也可以是定向的,即只有特定的设备才能处理这些 PDU。定向广告涉及的 PDU 包括 TargetA 字段,其中包含目标接收设备的蓝牙地址 。在非定向广告中,则不包含 TargetA 字段。
图 75 显示了 GAP 发现和连接模式下的定向和非定向广告。
图 75 - GAP 发现和连接模式
请注意,AD 类型标志会出现在主广告信道接收到的传统广播 数据包中。然而,当使用扩展广播 时,在主通道上接收到的 ADV_EXT_IND PDU 中不会出现 AdvData 字段。当 Flags 与扩展广播一起使用时,它会出现在通用通道上的辅助 AUX_EXT_IND PDU 中。
14.6 可扫描与不可扫描
某些广告 PDU 类型是可扫描的。这意味着接收此类 PDU 的设备可以用适当类型的扫描请求 PDU 进行响应,以请求更多广告数据。广告 PDU 由链路层定义。详见 7.8.2.2.3传统广播 及相关 PDU 类型和 7.8.2.3.5扩展广播 及相关 PDU 类型。
14.7 GAP 和 LE 安全
GAP 规范定义了许多安全术语、模式和程序。一般来说,GAP 安全程序涉及堆栈的其他层,如安全管理器协议(SMP)和链路层 ,但使用这些层来实现某些结果的高级程序在蓝牙核心规范第 3 卷 C 部分(通用访问配置文件)中有定义,详情请查阅该规范。
14.8周期性广播
周期性广播(有响应和无响应)由链路层 执行(见 7.8.3 PADVB - LE 周期性广播),但 GAP 规定了进入周期性广播模式和观察者与周期性广播列车同步的程序。3 PADVB - LE周期性广播 ),但 GAP 规定了广播员进入周期性广播 模式和观测员与周期性广播 列车同步的程序。此外,GAP 还定义了周期性广播 同步传输(PAST)程序,该程序允许观察者从广播者获取周期性广播 同步参数,并通过 ACL 连接将其传递给另一设备。
14.9 等时广播
使用广播等时码流和连接等时码流的等时通信由链路层 执行(见 7.8.5 LE BIS 和 LE CIS--等时通信),但《全球行动计划》规定了广播者和观察者在进行这种形式的通信时必须遵循的程序。
15.安全管理器协议
15.1 基本知识
安全管理器协议(SMP)是堆栈安全管理器组件的一部分。它支持执行与安全相关的程序,如配对、绑定和密钥分配。
安全管理器组件为其他层可以使用的安全功能提供了一个加密工具箱,并定义了配对算法。
第16节.Bluetooth LE中的安全性》中有更多关于一般安全性的内容。
15.2 示例
图 76 显示了两台设备配对时使用的 SMP。请注意在 SMP 配对功能 交换过程中输入/输出功能 和其他标志的交换。这是一个重要步骤,它决定了选择哪种配对算法,以及如何将应用密钥 等步骤纳入程序。

图 76 - 配对过程中使用的 SMP
16.Bluetooth LE的安全性
安全是一个关键问题,需要认真考虑和理解。
Bluetooth LE 提供了一系列安全功能和特性,其中大部分是可选的。您应将其视为一个工具箱,其中包含安全工具,可用于地址 特定的安全问题和满足特定的安全要求。在确定产品的安全要求后,产品 团队有责任满足这些要求。在适当的情况下,应通过使用选定的Bluetooth LE 安全功能来实现这一点。
鉴于这一主题的重要性,蓝牙SIG 专门为这一主题创建了一个教育资源,其内容在此不再赘述。请参阅第18节。附加资源以获取更多信息。
17.应用
其他章节中介绍的Bluetooth LE 功能最终都是通过应用程序来实现的。但并非最新蓝牙核心规范 的所有功能都能为应用程序所用。出现这种情况的主要原因如下
- 蓝牙核心规范 中的新功能需要时间才能在组件中实现,并出现在电脑、智能手机等普通产品中。
- 许多Bluetooth LE 功能都是可选的,实施者可自行决定包含哪些功能,省略哪些功能。实施者可能是控制器芯片的制造商,也可能是包含蓝牙Host 组件的操作系统的开发者。因此,仅仅因为一个应用 要开发的设备表明它支持蓝牙核心规范的某个版本,并不一定就支持该版本的所有功能。
- 即使设备上的蓝牙协议栈支持某个特定功能,也并不意味着应用 开发人员可以使用它。应用开发人员使用的是应用程序接口(API),而不是直接使用协议栈。如果没有蓝牙功能 的应用程序接口,那么即使蓝牙控制器支持该功能,也无法从应用中使用它。
这里的教训是,在承诺开发应用之前要做一些研究。特别是要查看应用程序接口(API)文档,以确定对所需功能的支持,并检查应用 打算运行的硬件和操作系统中Bluetooth 堆栈组件的规范。
18.额外资源
本节列出了支持从不同角度学习Bluetooth LE 其他资源。
| 资源 | 费用项目 | 地点 |
|---|---|---|
| 蓝牙核心规范 | 关键技术规范。定义了蓝牙堆栈的所有层以及相关协议和程序。涵盖Bluetooth LE 和Bluetooth BR/EDR。 | 规格/规范/ |
| 配置文件和服务 规格 | 服务 规范定义了单个 GATT服务 及其包含的特征和描述符。配置文件 规范定义了相关设备所承担的角色,特别是定义了客户端 设备的行为以及它应与状态 配合的连接服务 上的数据。 | 规格/规范/ |
| 编解码器 | 定义低功耗音频使用的低复杂度通信编解码器。 | 规格/规范/ |
| 学习指南 - 蓝牙低功耗开发入门 | 这是一份教育资源,供希望学习智能手机和外围设备连接型场景软件开发的开发人员使用。包括一系列附带解决方案的实践项目。 | bluetooth-resources/bluetooth-le-developer-starter-kit/ |
| 学习指南 - 蓝牙网格软件开发入门 | 为希望了解蓝牙网格和在微控制器中实施网格模型的开发人员提供的教育资源。包括一系列附带解决方案的实践项目。 | bluetooth-resources/bluetooth-mesh-developer-study-guide/ |
| 学习指南 - 蓝牙网格代理功能简介 | 为希望学习如何为智能手机等设备创建图形用户界面应用程序的开发人员提供的教育资源,这些应用程序可与蓝牙网状网络中的节点进行交互。包括一系列附带解决方案的实践项目。 | bluetooth-resources/bluetooth-mesh-proxy-kit/ |
| 论文 - 蓝牙网格网络--开发人员简介 | 为有兴趣了解蓝牙网格关键概念和功能的人提供的教育资源。 | bluetooth-resources/bluetooth-mesh-networking-an-introduction-for-developers/ |
| 论文 - 蓝牙网格模型 - 技术概览 | 该教育资源可供有兴趣更好地了解蓝牙网格产品中可用的标准模型的人员使用。 | bluetooth-resources/bluetooth-mesh-models/ |
| 学习指南 - 了解Bluetooth LE 安全性 | 该教育资源解释并说明了Bluetooth LE (不包括蓝牙网格)安全性的各个方面。既适合安全领域的初学者,也适合有相关经验的人员。包括一系列实践项目和解决方案。 | 蓝牙资源/安全研究指南/ |
| 文件 - 蓝牙安全与隐私最佳实践指南 | 该指南旨在帮助实施者更好地理解为什么某些可用的安全和隐私选择在特定应用中优于或劣于其他选择,以及规范中还存在哪些风险和隐患。 | 蓝牙资源/蓝牙安全与隐私最佳实践指南/ |
| 学习指南 - 面向 Linux 开发人员的蓝牙技术 | 为希望了解如何开发使用 Linux 蓝牙协议栈 BlueZ 的软件的 Linux 开发人员提供的教育资源。包括一系列附带解决方案的实践项目。 | bluetooth-resources/bluetooth-for-linux/ |
| 学习指南 - 设计和开发蓝牙互联网网关 | 该教育资源介绍了用于从互联网访问Bluetooth LE 和蓝牙网格设备的蓝牙互联网网关。说明了可能的架构和实施方法。包括一系列附带解决方案的实践项目。 | bluetooth-resources/bluetooth-internet-gateways/ |
| 学习指南 - 网络蓝牙入门 | 为希望了解如何使用 JavaScript Web Bluetooth API 开发网络应用程序的开发人员提供的教育资源。包括一系列附带解决方案的实践项目。 | bluetooth-resources/web-bluetooth-tutorial/ |
| 学习指南 - 蓝牙信标简介 | 为希望了解蓝牙信标的开发人员提供的教育资源。包括一系列附带解决方案的实践项目。 | 蓝牙资源/信标-智能启动器套件/ |
| Paper -蓝牙核心规范 5.0 版本功能 增强 | 解释蓝牙核心规范 5.0 版中发布的新功能和其他更改。包括低功耗2M PHY、低功耗编码 PHY 和扩展广播。 | bluetooth-resources/bluetooth-5-go-faster-go-further/ |
| 文件 -蓝牙核心规范 版本 5.1功能 概述 | 解释蓝牙核心规范 5.1 版中发布的新功能和其他更改。包括到达角 和出发角 方向查找。 | bluetooth-resources/bluetooth-core-specification-v5-1-功能-overview/ |
| 文件 -蓝牙核心规范 版本 5.2功能 概述 | 解释蓝牙核心规范 5.2 版发布的新功能和其他变更。包括增强属性协议、低功耗功率控制 和 LE等时通道。 | bluetooth-resources/bluetooth-core-specification-version-5-2-功能-overview/ |
| 文件 -蓝牙核心规范 版本 5.3功能 概述 | 解释蓝牙核心规范 5.3 版中发布的新功能和其他更改。包括使用分级和低功耗信道分类 LE 增强连接更新。 | bluetooth-resources/bluetooth-core-specification-version-5-3-功能-增强/ |
| 蓝牙核心规范 5.4 版 - 技术概览 | 解释蓝牙核心规范 5.4 版中发布的新功能和其他更改。包括带回复和加密广播数据的周期性广播 加密广播数据。 | bluetooth-resources/bluetooth-core-specification-version-5-4-technical-overview/ |
| Bluetooth®Core Specification v6.0功能 概述 | 解释蓝牙核心规范 6.0 版发布的新功能和其他更改。包括蓝牙信道探测、基于决策的广告过滤和监测广告设备。 | 核心规范-6-功能-概览/ |
| 蓝牙信道探测 技术概述 | 详细介绍蓝牙信道探测技术。 | bluetooth-resources/bluetooth-channel-sounding-a-technical-overview/ |
| 电子书 - 蓝牙介绍低功耗音频 | 这本书由 Nick Hunn 撰写,清楚地介绍了蓝牙低功耗音频的功能和技术。 | 蓝牙资源/音频书籍/ |
| 监管方面文件 | 提供与Bluetooth LE 技术相关的指导和支持信息,以及蓝牙技术SIG对适用于不同地区的射频法规的理解。 | bluetooth-resources/bluetooth-low-energy-regulatory-aspects-document-rad/ |
[1]第 4 节介绍了蓝牙规格
[2]服务、特征和描述符在《通用属性配置文件 》一节中说明。
[3] 低功耗2M 2BT 仅用于蓝牙信道探测 ,不用于一般数据通信
[4]蓝牙信道探测 是一种特殊情况,在 8.Bluetooth® 信道探测中有所介绍。
[5]有关Bluetooth LE 和射频法规的更多信息,请参见 18。监管方面文件的其他资源
[6]第 15 节更详细地介绍了Bluetooth LE 安全性
[7] [8] 周期性广播 和异步流在 7.8 逻辑传输中解释。
[9]#nse - 1 表示子事件数减去 1
[10] 低功耗音频使用的低复杂度通信编解码器
[11]见 12.4 持票人