? ? 所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,利用"蓝牙"技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网Internet之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。
? ? 截止到目前,蓝牙共发布了 9 个版本:V1.1/1.2/2.0/2.1/3.0/4.0/4.1/4.2/5.0,以蓝牙的发射功率可再分为 Class A/Class B。
? ? Class A 用在大功率/远距离的蓝牙产品上,但因成本高和耗电量大,不适合用作个人通信产品(手机/蓝牙耳机/蓝牙Dongle 等),故多用在某些商业特殊用途上,通信距离大约为 80~100m。
? ? Class B 是目前最流行的制式,通信距离大约为 8~30m,视产品的设计而定,多用于手机/蓝
牙耳机/蓝牙 Dongle(适配器)等个人通信产品上,耗电量较少和封装较小,便于对结构空间要求
苛刻的系统的集成。
? ? 蓝牙 3.0 引入高速传输,加大带宽,客观上挤占 WiFi 的位置,增加了功耗和成本;
? ? 蓝牙 4.0(2010 年)重新找准定位,引入 BLE 概念,即 Bluetooth Low Energy 低功耗蓝牙;
? ? 蓝牙 5.0 版本主要针对 IoT 物联网做了更多优化,包括提升了低功耗模式下的传输速率以及传输距离,支持室内导航,支持 Mesh 网状网络。Mesh 网络可以将蓝牙设备作为信号中继站,从而实现更大物理区域的信号传输。蓝牙 5.1 版本加了测向功能和厘米级的定位服务,这项功能的加入使得室内的定位会变得更加精准。蓝牙 5.2 版本主要是增强 ATT 协议,同时优化连接速度和抗干扰能力。
? ? 性能方面,蓝牙 5.0 标准 LE 传输速度是之前蓝牙 4.2 LE 版本的两倍,有效距离则是上一版本的 4 倍,即蓝牙发射和接收设备之间的理论有效工作距离增至 300 米。
? ? 另外,蓝牙 5.0 还允许无需配对就能接受信标的数据,比如广告、Beacon、位置信息等,传输率提高了 8 倍。同时,蓝牙 5.0 标准还针对 IoT 物联网进行底层优化,更快更省电,力求以更低的功耗和更高的性能为智能家居服务。
? ? 蓝牙 5.0 标准的新特性如下。
2 倍 BLE 带宽提升: 在 BLE4.2 的 1Mbit/s 的 PHY 增加可选的 LE Coded 调制解调方式,支持 125Kbit/s 和 500Kbit/s,同时增加一个可选的 2Mbit/s 的 PHY。
4 倍通信距离提升:通过上述降低带宽、提升通信距离,同时保持功耗不变,且允许的最大输出功率从之前的 10 毫瓦提升至 100 毫瓦。
8 倍广播数据容量提升: 从 BLE4.2 的 31 字节提升至 255 字节,并且可以将原有的 3 个广播信道扩展到 37 个广播通道。增加通道选择算法#2。
BR/EDR 时间槽可用掩码:检测可用的发送接收的时间槽并通知其他蓝牙设备。
? ? 4.0 之前的蓝牙通常被称为经典蓝牙(Classic Bluetooth),包括1.0提出的BR(Basic Rate,基础速率)以及2.0提出的EDR(Enhanced Data Rate,增强数据速率),BR/EDR用于表示与低功耗蓝牙BLE相对的传统蓝牙。
? ? 从使用场景来看,BR/EDR主要侧重于点对点的通信,连接性和传输速率是考虑的重点,而BLE侧重于低功耗的设计,在射频层和基带层上优化了多播和广播的支持。传统上Controller芯片只支持一种射频模式,但越来越多设备中也同时支持两种系统,以覆盖尽量多的使用场景。
? ? 蓝牙的核心系统架构包含一个 Host 和一个或多个 Controller ,Host 可以理解为主核或者主板,运行主流的操作系统,例如 Linux、Windows、Macos;而 Controller 可以看做是蓝牙芯片,运行的是裸机程序或者 RTOS ,主要功能是对射频信号进行编解码。Host 和 Controller 之间通过标准的 HCI 接口(Host Controller Interface)进行通信,具体实现上可通过 UART、USB 等物理接口进行传输。核心系统中包含的组件和之间的关系如下图所示:
? ? 其中 Host 部分主要是基于 L2CAP (Logical Link Control and Adaptation Protocol)(逻辑链路控制和适配协议) 抽象出的逻辑信道实现应用层的协议和功能,涉及的关键组件和协议有:
Channel Manager(信道管理器):信道管理器负责创建、管理和结束用于服务协议和应用数据流传输的 L2CAP 信道。信道管理器通过 L2CAP 与远程(对等)设备上的信道管理器交互,以创建这些 L2CAP 信道并将它们的端点连接到对应的实体。信道管理器与本地链路管理器交互来创建新的逻辑链路(如有此需要)和配置这些链路,以提供被传输数据类型要求的质量服务(Quality of Service,QoS)。
L2CAP Resource Manager(L2CAP 资源管理器):L2CAP 资源管理器负责管理发送至基带的协议数据单元(Protocol Data Unit,PDU)片段的提交顺序以及信道间的相关调度,以确保不会因为 Bluetooth 控制器资源耗尽而导致带有 QoS 承
诺的 L2CAP 信道对物理信道的访问被拒绝。这是必须的,因为架构模型不会假设 Bluetooth 控制器拥有无限大缓冲,也不会假设 HCI 是具有无限大带宽的管道。
? ? L2CAP 资源管理器也可以执行通信量符合性管制功能,以确保这些应用在它们协商好的 QoS 设置的限制范围内提交 L2CAP 服务数据单元(Service Data Unit,SDU)。一般的 Bluetooth 数据传输模型会假设每项应用都符合相关要求,而不会定义某项具体实施应如何处理此类问题。
SMP:Security Manager Protocol(安全管理协议),实现 BLE 系统中的点对点安全认证功能,包括秘钥生成和认证等;BR/EDR系统的对应功能则在Controller的Link Manager中实现。
ATT:Atrribute Protocol(属性协议),应用层 attribute client 和 server 之间的协议。
GATT:Generic Attribute Profile(通用属性配置文件),表示 ATT server 或者 client 的功能,profile 描述了服务和属性的层级结构,主要用于 LE profile 服务发现中。
GAP:Generic Access Profile(通用访问配置文件),表示所有蓝牙设备通用的基础功能,比如传输层、协议、应用所使用的模式或流程等。GAP 服务包括设备和服务发现、连接模式、安全认证和关联模型等。
SDP:Service Discovery Protocol,即服务发现协议,是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。通过这个协议,客户端程序可以发现哪些服务可用以及服务的特性是什么。
? ? Controller 部分中更多是逻辑链路和物理链路的管理,包括:
Device Manager:设备管理器是基带(baseband)的功能块,用于控制启用 Bluetooth 的设备的一般行为。它负责 Bluetooth 系统所有与数据传输无直接关系的操作,例如查询附近是否有其他启用 Bluetooth 的设备,连接到其他启用 Bluetooth 的设备,或使本地启用 Bluetooth 的设备可被其他设备发现或连接(discoverable/connectable)。
? ? 设备管理器请求从基带资源控制器访问传输媒体,以执行它的功能。
? ? 设备管理器还控制多个 HCI 命令指示的本地设备行为,例如管理设备本地名称、任何已存储的链路密钥和其他功能。
Link Manager:链路管理器负责创建、修改和释放逻辑链路(logical links)以及与这些链路关联的逻辑传输(logical transports)(如有需要),还可以更新与设备之间的物理链路(physical links)有关的参数。在 BR/EDR 系统中,与对端的 Link Manager 通过 LMP 协议(Link Manager Protocol)进行通信;在 BLE 系统中则使用的是 LL 协议(Link Layer Protocol)。
Baseband Resource Manager(基带资源管理器):负责管理所有到射频媒介的访问。在链路层中,有两种类型的 “连接” :
Link Controller:链路控制器负责对指定物理信道(逻辑链路和逻辑传输)的蓝牙数据进行编解码。
? ? 链路控制器发出链路控制协议信令(与资源管理器的调度功能紧密结合),用于传达流控制及确认和重新传输请求信号。对这些信号进行翻译是与基带数据包相关联的逻辑传输的特征。链路控制信令的翻译和控制通常与资源管理器的调度程序相关联。
? ? 低功耗蓝牙 BLE 协议栈与 OSI 七层模型的对应关系如下图所示:
? ? BLE 相对于 BR/EDR 要简单许多,可以分为三层。最下层控制层包括 Bluetooth LE PHY、LL 以及 Controller 端的 HCI 接口。Host 层包括 Host 端 HCI 接口、L2CAP、ATT(attribute protocol)、GATT(generic attribute profile)、SMP(security manager protocol)、GAP(generic access profile)。
? ?