一分钟读懂低功耗蓝牙(BLE)连接数据包

VT****物联 UID.2978442
2018-09-30 发表

[font=Tahoma, Helvetica, SimSun, sans-serif]1.概述[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] BLE 连接过程中有三个重要的数据包:SCAN_REQ, SCAN_RSP 和 CONNECT_REQ。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] SCAN_REQ: 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是为了获得从设备的响应以得到更多的从设备[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 广播数据信息(包括设备名字,或者服务UUID,及其它如厂家特定格式的信息(如硬件版本,软件版本号,设备系列号等等)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] SCAN_RSP: 从设备对就主设备发起的SCAN_REQ的响应,作为广播包的补充,从设备可以给主设备更多的广播数据,比如说,有些设备在广播[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 包里面没有设备名字,这个时候就可以把设备名字放在这个包里面发给主设备[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] CONNECT_REQ:主设备向从设备发出连接请求。至此连接建立完成(从设备不会响应这个请求),如果从设备没有连接上面的问题的话,以后[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 主从双方会开始相互交换有效数据(基于GAP,GATT及SMP协议)或者交换空包。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 以下对这三个数据包进行详细解读[/font]

[font=Tahoma, Helvetica, SimSun, sans-serif]2.关键字:Hollong BLE 侦听仪,低功耗蓝牙嗅探器, BLE 分析仪,BLE 数据抓取[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture[/font]

[font=Tahoma, Helvetica, SimSun, sans-serif]3.抓取连接数据包的准备工作[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] * 硬件:一个BLE设备(从设备)及对应的主设备(如智能手机里面的相关应用程序,或者通用BLE 工具软件);[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 一台HOLLONG BLE SNIFFER (Hollong BLE 侦听仪)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] * 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 下载链接:[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font][font=Tahoma, Helvetica, SimSun, sans-serif]http://www.viewtool.com/index.php/22-2016-07-29-02-11-32/205-hollong-4-0-4-1-ble[/font]

[font=Tahoma, Helvetica, SimSun, sans-serif]4. [/font][font=Tahoma, Helvetica, SimSun, sans-serif]SCAN_REQ 包[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 1)完整包[/font]

***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 2) 存取地址 (Access Address) 对于广播包,这是一个固定长度(4个字节)及固定内容(0x8e89bed6)的主从设备识别广播包的存取地址。[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 3) 头信息 (Header Info) 固定为2个字节:分解为16个位来使用[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 位[0:3]:P广播包(PDU) 类型,总共有6个类型:[/font]

[font=Tahoma, Helvetica, SimSun, sans-serif] PDU Type[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] b3b2b1b0 Packet Name[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0000 ADV_IND: 可连接通用连接广播[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0001 ADV_DIRECT_IND:可连接定向连接(指定设备)广播[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0010 ADV_NONCONN_IND:不可连接通用广播[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0011 SCAN_REQ:扫描请求[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0100 SCAN_RSP:扫描响应[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0101 CONNECT_REQ:连接请求[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0110 ADV_SCAN_IND:可扫描通用广播[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0111-1111 Reserved[/font]

[font=Tahoma, Helvetica, SimSun, sans-serif] 位[4:5]:保留[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 位[6]:RxAdd[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 位[7]:TxAdd[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 位[8:13]:广播数据长度 (最大为37 字节)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 位[14:15]:保留[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 4) 主设备地址[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 5)从设备地址[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 6)CRC[/font]
***图片停止解析***


[font=Tahoma, Helvetica, SimSun, sans-serif]4. [/font][font=Tahoma, Helvetica, SimSun, sans-serif]SCAN_RSP 包[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 1)存取地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 定义同上[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 2)头信息[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 定义同上[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 3)从设备地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 固定6个字节的从设备地址(MAC ADDRESS)[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 4)响应数据(广播数据)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 格式同广播数据格式(详见文“[/font][font=Tahoma, Helvetica, SimSun, sans-serif][font="]1分钟读懂低功耗蓝牙广播数据[/font][/font][font=Tahoma, Helvetica, SimSun, sans-serif]”), 在这个包里面,数据为0(没有数据)[/font]
***图片停止解析***
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 5)CRC[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 固定为3个字节[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif]5. CONNECT_REQ 包[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 1)存取地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 固定4个字节和内容(0x8e89bed6)的存取地址,BLE 芯片使用这个固定的地址作为广播通道的BLE数据接收。[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 2)头信息[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 二个字节的头信息(解析格式同上)[/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 3)主设备地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 4)从设备地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 5)存取地址[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 在此指定连接后使用的存取地址(BLE 数据通道),这个地址是由内部指定的非确定的4个字节长度的地址,不像广播数据通道使用固定内容的存取地址。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 6)CRC INIT[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 初始化的CRC 值,以后被使用于数据CRC 校验[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 7)窗口时间 (Win Size)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 8) 窗口偏移[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 9)数据间隔时间 (CONNECTION INTERVAL)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 发送两个数据包(或者空包)的间隔时间。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 计算公式为:24 (0x18) * 1.25ms = 30ms, 在抓取的数据包中可以看到,每两个包之间的间隔是30MS。 下载此数据包需要注册。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 10)时延(Latency)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 11) 中断连接最大时延(TIME OUT)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 当主从双方有一方在大于此时间后没有接收到任何数据包或者空包,则由连接状态转为非连接状态(主设备可以重新开始[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif]扫描, 从设备也可以重新开始广播,具体做什么由应用程序决定)。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 计算方法: 最大时延 = TIME_OUT * 10MS, 在此为:72 (0X48) * 10 = 720 MS, 也就是说,如果双方在0.72秒期间没有收到任何数据包或者空包,则视为连接中断,由连接状态转为非连接状态,开始做应用程序要求做的事情。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 12)跳频通道图(CHANNEL MAP)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 这个跳频图是由BLE 芯片根据周围环境中可以使用的BLE 通道而制定出来,根据扫描测试的环境不同(指被占用的频谱资源不同)而不同,当这个图(表)通过CONNECT_REQ 包发送给从设备后,主从双方都会根据这个图来同步跳频(HOPPING),低功耗蓝牙设备通过这个方法能够有效避开拥堵的频道,使用比较“干净”,无(少)干扰的频道来交换数据,从而大幅提升传输数据的稳定可靠性。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]***图片停止解析***
[font=Tahoma, Helvetica, SimSun, sans-serif] 由于这个是在比较干净(周围几乎没有任何BLE 设备或者其它工作在2.4G频段,类似频道的强信号设备)的环境下面工作的主从设备,所以可以看出,它使用了所有频道(除了广播专用频道37,38,39)作为跳频图。[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 13) HOP 及CLOCK[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 0xAF (10101111)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] HOP: 10101[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif]  CLOCK: 111 => 对应晶体精度 为0-20PPm [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 一个字节的前5个位指定HOP(跳频)算法中需要的数据(HOPINCREMENT),另外三个位指定晶体的精度等级(可以有多少PPM的误差)[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] SCA masterSCA, 三个位对应的晶体精度等级如下: 000: 251 ppm to 500 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 001: 151 ppm to 250 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 010: 101 ppm to 150 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 011: 76 ppm to 100 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 100: 51 ppm to 75 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 101: 31 ppm to 50 ppm [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 110: 21 ppm to 30 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 111: 0 ppm to 20 ppm[/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] [/font]
***图片停止解析***

[font=Tahoma, Helvetica, SimSun, sans-serif] 14)CRC [/font]
[font=Tahoma, Helvetica, SimSun, sans-serif] 同上[/font]

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报