BLE入门 13 广播

广播流程(理论过程)

蓝牙有三个广播信道37,38和39,主机在这个三个信道上扫描是否存在从机广播广播数据,并可以提出扫描请求,流程图如下:


ADV_IND 广播数据
SCAN_REQ 扫描请求,由主设备(MASTER DEVICE)向从设备(SLAVE DEVICE)发出,目的是为了获得从设备的响应以得到更多的从设备广播数据信息(包括设备名字,或者服务UUID,及其它如厂家特定格式的信息(如硬件版本,软件版本号,设备系列号等等)。
SCAN_RSP 从设备对就主设备发起的SCAN_REQ的响应,作为广播包的补充,从设备可以给主设备更多的广播数据。比如说,有些设备在广播包里面没有设备名字,这个时候就可以把设备名字放在这个包里面发给主设备。

广播流程(实际数据)

打开 Btool (TI官方主机调试工具,下一篇文章会用到))或者 BLE调试工具箱 (无线技术联盟微信小程序,适用所有安卓和IOS系统)扫描从机设备:

打开微信公众号,点击 BLE调试工具箱,开启扫描功能。

利用TI抓包工具抓取空中蓝牙蓝牙数据包:

广播设备0x6EA7C219E3C9设备处于广播模式
广播数据为02 02 1A 0A FF 4C 00 10 05 0B 10 CE 27 2F
主机扫描请求SCAN_REQ,主机MAC地址为0x13AB0B272109
从机回应SCAN_RSP,回应的数据为空。
这就是一个完整的蓝牙广播和扫描流程。

协议分析

先从Sinffer图先来讲解蓝牙广播协议的专有名词:

  1. Channel 信道 抓包工具抓到空中的哪一个信道上的数据,0x25说明是37信道(蓝牙广播信道是37,38,39)。
  2. Access Address 访问地址

所有广播信道的访问地址是 10001110100010011011111011010110b(0x8E89BED6)
访问地址是一个非常有用一串字符串
射频TX,RX数据需要进行白化抗噪声处理,白化处理中在一段用原始数据亦或运算访问地址字符串,在另一端亦或运算还原数据。

  1. Adv PUD type 广播类型

    详细类型如下表所示:
  2. Adv PUD Header 广播数据头,负责管理说明广播数据。
  3. Adv A 从设备MAC地址。

公共地址由两部分组成,如下图。

公共地址由制造商从IEEE申请,由IEEE注册机构为该制造商分配的机构唯一标识符OUI(Organizationally Unique Identifier)。这个地址是独一无二,不能修改的。

还有一种随机地址,不是蓝牙MAC地址,是蓝牙4.2协议栈规定,防止设备被追踪设计的AdvA地址,但使用的很少。
  1. AdvData 从设备广播数据,数据类型自行定义,ibeacon和eddystone有对该广播数据的格式有特定要求。

  2. CRC效验。

上面是使用抓包工具抓出来的分析数据,真实数据我们可以通过工具下面的子菜单栏看到:

我们可以看到蓝牙广播的真实空中数据格式如下所示:
  1. Preamble 前导码。

前导是一个8比特的交替序列。他不是01010101就是10101010,取决于接入地址的第一个比特。若接入地址的第一个比特为0:01010101,若接入地址的第一个比特为1:10101010。接收机可以根据前导的无线信号强度来配置自动增益控制。

  1. Length 数据包长度 整个蓝牙一包广播数据的长度。

  2. Access Address,访问地址 0x8E89BED6。

  3. BLE Header 广播数据包头

解释说明该条数据为广播数据还是扫描数据,广播数据是可连接广播还是不可连接广播,还是定向广播类型。

  1. Paylod 广播数据。
  2. CRC效验。

    所以真实的主从数据交互流程如下:

蓝牙5广播数据

蓝牙4.x协议规定蓝牙广播数据包每包数据最大只支持31字节数据传输,广播信道限制在37,38,39三个信道。在原有的用于传输广播数据的PDU(ADV_IND、ADV_DIRECT_IND、ADV_NONCONN_IND以及ADV_SCAN_IND,称作legacy PDUs)的基础上,蓝牙5增加了扩展的PDU(ADV_EXT_IND、AUX_ADV_IND、AUX_SYNC_IND以及AUX_CHAIN_IND,称作extended advertising PDUs),同时也允许蓝牙在除开37,38,39三个通道之外的其他37个信道上发送长度介于0-255字节的数据。

蓝牙5.0把广播信道抽象为两类,一种叫主广播信道(primary advertisement channels),另一种叫次广播信道,或者第二广播信道(Secondary Advertising Packets)。

主广播信道只工作在37,38,39三个信道,最大广播字节为31字节,广播的数据类型增加了一个ADV_EXT_IND指令,ADV_EXT_IND指令即为告知监听设备,我要广播大数据包广播了。

ADV_EXT_IND指令包含要在第二类次广播信道上发送的内容,第二广播信道发送广播数据的信道,物理PHY层,1M PHY,Coded PHY,2M PHY 等。

其示意如下图所示,首先在主广播信道广播ADV_EXT_IND信息,然后利用次广播信道(0-36 channel)广播255byte 数据。

所以蓝牙5主从的广播交互流程可以用以下框图描述:

结论

无论是蓝牙4还是蓝牙5,广播的流程都是一样,广播,扫描请求,扫描相应的数据包格式也是一模一样,只是蓝牙5可以在非广播信道发送数据,蓝牙4.x只能在广播信道发送数据,蓝牙4.2广播数据只有31字节,蓝牙5广播有255字节。

参考:

https://mp.weixin.qq.com/s/J1iUnG44m0vI9Tc-tmmZpA

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

推荐阅读更多精彩内容

  • 蓝牙广播 蓝牙从机设备正常工作时会以一定频率发送广播包,告知周围设备可以来连接自己(connectable),或者...
    张志中阅读 1,042评论 0 2
  • BLE广告和信标 (原文) BLE广告是蓝牙低功耗最重要的方面之一。 了解如何正确使用广告可以帮助你降低功耗,加快...
    公子小水阅读 3,366评论 1 3
  • Guide to BluetoothSecurity原文 本出版物可免费从以下网址获得:https://doi.o...
    公子小水阅读 8,001评论 0 6
  • Bluetooth SIG为了鼓励会员逐步弃用蓝牙核心规格旧版本蓝牙标准并转而使用新的蓝牙核心规格版本蓝牙标准以提...
    张志中阅读 1,111评论 0 2
  • 广播数据包是平时工作中使用BLE时最经常用到的,任何设备要发起广播,就要在RF通道上发出广播数据包,广播数据包包含...
    飞哥物联阅读 14,931评论 1 4