蓝牙相关知识
蓝牙技术
蓝牙是一种无线通讯技术,蓝牙到目前为止一共发展了多代规范。从蓝牙4.0开始提出了BLE技术(Bluetooth Low Energy,蓝牙低功耗),一般把蓝牙4.0称为BLE,把之前的版本称为经典蓝牙(BR/EDR)或传统蓝牙。
以下列出了各代蓝牙技术
| 技术 | 规范 | 版本 |
|---|---|---|
| BR | 1.1(2003) | Basic Rate (1 Mbit/s) |
| EDR | 2.0(2004) | Enhance Data Rate (2-3 Mbit/s) |
| HS | 3.0(2009) | High Speed (Alternate MAC/PHY) |
| LE | 4.0(2010) | Low Energy (1 Mbit/s ultra low power) |
- BR,基础速率(Basic Rate),1.1版本,传输率约在1Mbit/s,因为是早期设计,容易受到同频率的产品干扰,影响通讯质量。
- EDR,增强速率(Enhanced Data Rate),大大提高了蓝牙数据传输速率,达到了2-3Mbit/s 。除了音频流传输更稳定和耗电量更低之外,还可充分利用带宽优势同时连接多个蓝牙设备。
- HS,High Speed。能利用WiFi作为数据传输方式,传输速度最高可达24Mbps。其核心是在802.11的基础上,通过集成802.11协议适配层,使得蓝牙协议栈可以根据任务和设备的不同,选择正确的射频。
- LE,低能耗(Low Energy),是蓝牙4.0版本提出的特性,特点是低功耗、短距离、可互操作,工作在免许可的2.4GHz ISM射频频段。
蓝牙host和蓝牙controller
蓝牙controller一般指蓝牙芯片控制部分,位于蓝牙技术的下层
蓝牙host一般指蓝牙协议栈,位于蓝牙技术的上层
经典蓝牙(BR/EDR)
蓝牙地址
经典蓝牙地址,长度48位(6字节),每个设备的经典蓝牙地址是唯一的,需要由企业向IEEE申请购买。
CoD(Class of Device,设备类型)
长度24位(3字节),用来表明设备类型
低功耗蓝牙(BLE)
地址类型
public地址:和经典蓝牙地址一样,是固定的
random地址:随机地址,会经常变化(15分钟变一次)
广播和扫描
广播包发出后,可被其他设备扫描到,扫描分为主动扫描和被动扫描,被动扫描只是单纯地接收广播包,主动扫描会给发广播的设备发送扫描请求包,发送广播的设备会回复扫描响应包
广播包的payload由一个个data section组成,data section是一种key-value结构,常见的key有0x09(local name),0x16(service uuids)
GATT(Generic Attribute Profile)
GATT(Generic Attribute Profile)是一种蓝牙通讯规范,用于在BLE连接上发送和接受短数据段。GATT是一种一对一的通信方式。
GATT通信的双方是C/S关系。外设作为GATT服务端(Server),维持ATT的查找表以及service和characteristic的定义。中心设备是GATT客户端(Client),负责向Server发起请求。
GATT从逻辑上由Profile、Service和Characteristic嵌套组成,一个Profile包含多个Service,一个Service包含多个Characteristic,Service和Characteristic都由唯一的UUID标识。
UUID长度为128位(16个字节),官方预先指定了一些UUID作为通用Service和Characteristic,形式是0000xxxx-0000-1000-8000-00805f9b34fb,只靠第96~111位这16位区分,其他位都是相同的。因此在官方文档中,UUID都是以类似0x1800的形式出现。
一个Service通常对应一种通信协议。
Characteristic是GATT的最小通信单位,一个Characteristic包含一个Characteristic declaration,一个Characteristic value和多个Characteristic descriptor。
GATT基于ATT(attribute protocol)协议进行通信。
包长度限制
ble广播包和扫描响应包长度是31字节,ble 5.0 提出了Extented Advertising机制,即扩展广播机制,可以将广播包数据最大长度提升到255字节
gatt包长度(MTU)也有限制,通常是512字节,两台设备建立连接之前会进行MTU协商
蓝牙配对方案
根据蓝牙规范5.3,蓝牙安全架构中有三种配对方案
- BR/EDR Legacy Pairing
- BR/EDR Secure Simple Pairing
- LE Legacy Pairing
Secure Simple Pairing (SSP) 有四种认证模式,Just Works, Numeric Comparison, Passkey Entry and Out-Of-Band。
- Numeric Comparison,两个设备都给用户展示一个6位的数字,然后让用户判断两个数字是否相同。和 BR/EDR Legacy Pairing 的输入PIN码有个很大的区别,Numeric Comparison的6位数字是由算法生成的,而不是由用户输入的。使用这种模式的典型的有手机和PC之间配对。
- Just Works,这个模式的设计目的是防止有设备不能展示数字和让用户输入确认,典型的是手机和耳机之间配对。Just Works模式使用的也是Numeric Comparison协议,但是不给用户展示数字,只会让用户确认配对。
- Out-Of-Band,例如NFC,交互过程根据不同的OOB方案而有所差异。
- Passkey Entry,这个模式是针对其中一个设备只能输入不能展示,交互过程是让一个设备给用户展示6位数字,然后让用户在另一个设备上输入6位数字。
LE Legacy Pairing,和 SSP 类似有四种模式,功能一样,底层的算法有所差异
BR/EDR security mode
BR/EDR 有四种 security mode,分别是 security mode 1,security mode 2,security mode 3,security mode 4,数字越大安全等级越高。
同一个设备有可能同时支持两种安全模式,一个是security mode 2,用来作为对端设备不支持SSP的兼容方案,一个是security mode 4,针对支持SSP的设备
- Legacy security modes,security mode 1~3的统称
- security mode 1,不安全
- security mode 2
- 只能作为对端设备不支持 mode 4时的兼容模式。
- mode 2设备把service的安全需求分为三类attributes,即Authorization required(授权)、Authentication required(认证)、Encryption required(加密)
- mode 1可以看作是mode 2的一种特殊情况,即没有service注册这些attribute
- security mode 3
- security mode 4
- 把service的安全需求分为三类attributes,即Authenticated link key required、Unauthenticated link key required、Security optional; limited to specific services。
- 分为level 0~4,数字越大越安全
LE security mode
有三种,分别是LE security mode 1, LE security mode 2, and LE security mode 3
工具
- NORDIC的调试工具nRF Connect,可用于调试ble
设备分类
- cell phone,手机
- headsets,耳机
- mono headset,单声道耳机