viewtool 发表于 2018-11-12 10:06:27

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


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

2.关键字:Hollong BLE 侦听仪,低功耗蓝牙嗅探器, BLE 分析仪,BLE 数据抓取
Keyword: Hollong BLE Sniffer, BLE Data Analyzer,BLE Capture

3.抓取连接数据包的准备工作
* 硬件:一个BLE设备(从设备)及对应的主设备(如智能手机里面的相关应用程序,或者通用BLE 工具软件);
         一台HOLLONG BLE SNIFFER (Hollong BLE 侦听仪)
* 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件
      
4. SCAN_REQ 包
   1)完整包

http://www.52bluetooth.com/data/attachment/forum/201810/30/143157tbonjv4y4qyrqoy6.jpg.thumb.jpg

2) 存取地址 (Access Address)   对于广播包,这是一个固定长度(4个字节)及固定内容(0x8e89bed6)的主从设备识别广播包的存取地址。
http://www.52bluetooth.com/data/attachment/forum/201810/30/143200ghjaobl8au8ay6bh.jpg.thumb.jpg

3)头信息 (Header Info)   固定为2个字节:分解为16个位来使用
   位:P广播包(PDU) 类型,总共有6个类型:

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

   位:保留
   位:RxAdd
   位:TxAdd
   位:广播数据长度 (最大为37 字节)
   位:保留
http://www.52bluetooth.com/data/attachment/forum/201810/30/143202w59twuaf1y5vyglu.jpg.thumb.jpg

4) 主设备地址
http://www.52bluetooth.com/data/attachment/forum/201810/30/143205bvve5a92qjy7dyeo.jpg.thumb.jpg

5)从设备地址
http://www.52bluetooth.com/data/attachment/forum/201810/30/143207id6ahmq3mchzhw6a.jpg.thumb.jpg

6)CRC
http://www.52bluetooth.com/data/attachment/forum/201810/30/143210x1fj0k011jd4hyya.jpg.thumb.jpg


4. SCAN_RSP 包
    1)存取地址
          定义同上
http://www.52bluetooth.com/data/attachment/forum/201810/30/143212xh12b9o0l3fuub49.jpg.thumb.jpg

    2)头信息
          定义同上
http://www.52bluetooth.com/data/attachment/forum/201810/30/143215zgngdgvb8ccbmlmz.jpg.thumb.jpg

    3)从设备地址
         固定6个字节的从设备地址(MAC ADDRESS)
http://www.52bluetooth.com/data/attachment/forum/201810/30/143217jxrluuqvr48xh8wb.jpg.thumb.jpg

    4)响应数据(广播数据)
      格式同广播数据格式(详见文“1分钟读懂低功耗蓝牙广播数据”), 在这个包里面,数据为0(没有数据)
http://www.52bluetooth.com/data/attachment/forum/201810/30/143220j6h55vhk6vnxqj65.jpg.thumb.jpg
   
    5)CRC
    固定为3个字节
http://www.52bluetooth.com/data/attachment/forum/201810/30/143222vkiozichz4czguhz.jpg.thumb.jpg

5. CONNECT_REQ 包
   1)存取地址
      固定4个字节和内容(0x8e89bed6)的存取地址,BLE 芯片使用这个固定的地址作为广播通道的BLE数据接收。
http://www.52bluetooth.com/data/attachment/forum/201810/30/143225dstaq2tq2lrws2rb.jpg.thumb.jpg

    2)头信息
      二个字节的头信息(解析格式同上)
http://www.52bluetooth.com/data/attachment/forum/201810/30/143227bcuoouerbbitbo6b.jpg.thumb.jpg

    3)主设备地址
   http://www.52bluetooth.com/data/attachment/forum/201810/30/143230n634lzt4hhhxt4lc.jpg.thumb.jpg

   4)从设备地址
   http://www.52bluetooth.com/data/attachment/forum/201810/30/143232s92y5h0jvf5v101k.jpg.thumb.jpg

   5)存取地址
          在此指定连接后使用的存取地址(BLE 数据通道),这个地址是由内部指定的非确定的4个字节长度的地址,不像广播数据通道使用固定内容的存取地址。
      http://www.52bluetooth.com/data/attachment/forum/201810/30/143235a664zz0p4av66vnb.jpg.thumb.jpg

   6)CRC INIT
          初始化的CRC 值,以后被使用于数据CRC 校验
      http://www.52bluetooth.com/data/attachment/forum/201810/30/143237v2pv6us9j00wv7gy.jpg.thumb.jpg

   7)窗口时间 (Win Size)
         http://www.52bluetooth.com/data/attachment/forum/201810/30/143240vgro9kgnl67okn87.jpg.thumb.jpg

   8) 窗口偏移
         http://www.52bluetooth.com/data/attachment/forum/201810/30/143242eops6knqiqy9ygo6.jpg.thumb.jpg

   9)数据间隔时间 (CONNECTION INTERVAL)
          发送两个数据包(或者空包)的间隔时间。
          计算公式为:24 (0x18) * 1.25ms = 30ms, 在抓取的数据包中可以看到,每两个包之间的间隔是30MS。 下载此数据包需要注册。
         http://www.52bluetooth.com/data/attachment/forum/201810/30/143245a795et7ha4zc6lhj.jpg.thumb.jpg








页: [1]
查看完整版本: 一分钟读懂低功耗蓝牙连接数据包