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

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协议监控分析仪 软件

        下载链接:

        http://www.viewtool.com/index.php/22-2016-07-29-02-11-32/205-hollong-4-0-4-1-ble

4. SCAN_REQ 包

   1)完整包


  2) 存取地址 (Access Address)   对于广播包,这是一个固定长度(4个字节)及固定内容(0x8e89bed6)的主从设备识别广播包的存取地址。


  3)  头信息 (Header Info)   固定为2个字节:分解为16个位来使用

   位[0:3]: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

   位[4:5]:保留

   位[6]:RxAdd

   位[7]:TxAdd

   位[8:13]:广播数据长度 (最大为37 字节)

   位[14:15]:保留


  4) 主设备地址


  5)从设备地址


  6)CRC


4. SCAN_RSP 包

    1)存取地址

          定义同上


    2)头信息

          定义同上


    3)从设备地址

         固定6个字节的从设备地址(MAC ADDRESS)


    4)响应数据(广播数据)

        格式同广播数据格式(详见文“1分钟读懂低功耗蓝牙广播数据”), 在这个包里面,数据为0(没有数据)



    5)CRC

    固定为3个字节


5. CONNECT_REQ 包

     1)存取地址

      固定4个字节和内容(0x8e89bed6)的存取地址,BLE 芯片使用这个固定的地址作为广播通道的BLE数据接收。


    2)头信息

      二个字节的头信息(解析格式同上)


    3)主设备地址


     4)从设备地址


     5)存取地址

          在此指定连接后使用的存取地址(BLE 数据通道),这个地址是由内部指定的非确定的4个字节长度的地址,不像广播数据通道使用固定内容的存取地址。


     6)CRC INIT

          初始化的CRC 值,以后被使用于数据CRC 校验


     7)窗口时间 (Win Size)


     8) 窗口偏移


     9)数据间隔时间 (CONNECTION INTERVAL)

          发送两个数据包(或者空包)的间隔时间。

          计算公式为:24 (0x18) * 1.25ms = 30ms, 在抓取的数据包中可以看到,每两个包之间的间隔是30MS。 下载此数据包需要注册。


      10)时延(Latency)



       11) 中断连接最大时延(TIME OUT)

          当主从双方有一方在大于此时间后没有接收到任何数据包或者空包,则由连接状态转为非连接状态(主设备可以重新开始

扫描, 从设备也可以重新开始广播,具体做什么由应用程序决定)。

          计算方法: 最大时延 = TIME_OUT * 10MS, 在此为:72 (0X48) * 10 = 720 MS, 也就是说,如果双方在0.72秒期间没有收到任何数据包或者空包,则视为连接中断,由连接状态转为非连接状态,开始做应用程序要求做的事情。


       12)跳频通道图(CHANNEL MAP)

         这个跳频图是由BLE 芯片根据周围环境中可以使用的BLE 通道而制定出来,根据扫描测试的环境不同(指被占用的频谱资源不同)而不同,当这个图(表)通过CONNECT_REQ 包发送给从设备后,主从双方都会根据这个图来同步跳频(HOPPING),低功耗蓝牙设备通过这个方法能够有效避开拥堵的频道,使用比较“干净”,无(少)干扰的频道来交换数据,从而大幅提升传输数据的稳定可靠性。


       由于这个是在比较干净(周围几乎没有任何BLE 设备或者其它工作在2.4G频段,类似频道的强信号设备)的环境下面工作的主从设备,所以可以看出,它使用了所有频道(除了广播专用频道37,38,39)作为跳频图。


      13) HOP 及CLOCK

       0xAF (10101111)

       HOP: 10101

  CLOCK: 111 => 对应晶体精度 为0-20PPm  

       一个字节的前5个位指定HOP(跳频)算法中需要的数据(HOPINCREMENT),另外三个位指定晶体的精度等级(可以有多少PPM的误差)

       SCA masterSCA, 三个位对应的晶体精度等级如下:       000: 251 ppm to 500 ppm

       001: 151 ppm to 250 ppm

       010: 101 ppm to 150 ppm

       011: 76 ppm to 100 ppm

       100: 51 ppm to 75 ppm

101: 31 ppm to 50 ppm 

       110: 21 ppm to 30 ppm

       111: 0 ppm to 20 ppm



14)CRC 

      同上

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容