天天看點

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

--------------------------------------------------------------------------------------------------------

文章版權歸為微信公衆号 無線技術聯盟,轉載請注明出處.

作者:XCODER

--------------------------------------------------------------------------------------------------------

關注"無線技術聯盟", 提供有價值的市場資訊和最新的技術分析

今天Xcoder就嘗試理論結合實踐,講一講藍牙協定的廣播部分和beacon協定流程。(全文無一行代碼...: ))

實驗用到的工具:

藍牙主機:TI BTool + CC2540 dongle

藍牙從機:CC2541

抓包工具:TI Sniffer + CC2540 dongle

手機工具:BLE調試工具箱  (無線技術聯盟微信公衆号關聯的藍牙測試工具)

廣播流程(理論過程)

藍牙有三個廣播信道37,38和39,主機在這個三個信道上掃描是否存在從機廣播廣播資料,并可以提出掃描請求,流程圖如下:

ADV_IND;廣播資料

SCAN_REQ: 掃描請求,由主裝置(MASTER DEVICE)向從裝置(SLAVE DEVICE)發出,目的是為了獲得從裝置的響應以得到更多的從裝置廣播資料資訊(包括裝置名字,或者服務UUID,及其它如廠家特定格式的資訊(如硬體版本,軟體版本号,裝置系列号等等)。

SCAN_RSP:  從裝置對就主裝置發起的SCAN_REQ的響應,作為廣播包的補充,從裝置可以給主裝置更多的廣播資料,比如說,有些裝置在廣播包裡面沒有裝置名字,這個時候就可以把裝置名字放在這個包裡面發給主裝置。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

廣播流程(實際資料)

打開 Btool (TI官方主機調試工具,下一篇文章會用到))或者  BLE調試工具箱 (無線技術聯盟微信小程式,适用所有安卓和IOS系統)掃描從機裝置:

打開微信公衆号,點選 BLE調試工具箱,開啟掃描功能。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

利用TI抓包工具抓取空中藍牙藍牙資料包:

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

廣播裝置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資料需要進行白化抗噪聲處理,白化進行中在一段用原始資料亦或運算通路位址字元串,在另一端亦或運算還原資料。

3.Adv PUD type 廣播類型,詳細類型如下表所示。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

4.Adv PUD Header  廣播資料頭,負責管理說明廣播資料。

5.Adv A 從裝置MAC位址。

公共位址由兩部分組成,如下圖。公共位址由制造商從IEEE申請,由IEEE注冊機構為該制造商配置設定的機構唯一辨別符OUI(Organizationally Unique  Identifier)。這個位址是獨一無二,不能修改的。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

還有一種随機位址,不是藍牙MAC位址,是藍牙4.2協定棧規定,防止裝置被追蹤設計的一直AdvA位址,但使用的很少。

6.AdvData 從裝置廣播資料,資料類型自行定義,ibeacon和eddystone有對該廣播資料的格式有特定要求。

7. CRC效驗。

上面是使用抓包工具抓出來的分析資料,真實資料我們可以通過工具下面的子菜單欄看到:

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

到此,就可以看到藍牙廣播的真實空中資料格式如下所示::

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】
  1. Preamble 前導碼。前導是一個8比特的交替序列。他不是01010101就是10101010,取決于接入位址的第一個比特。若接入位址的第一個比特為0:01010101,若接入位址的第一個比特為1:10101010。接收機可以根據前導的無線信号強度來配置自動增益控制。

   2, Length 資料包長度 整個藍牙一包廣播資料的長度。

   3. Access Address,通路位址  0x8E89BED6。

   4. BLE Header  廣播資料標頭,解釋說明該條資料為廣播資料還是掃描資料,廣播資料是可連接配接廣播還是不可連接配接廣播,還是定向廣播類型。

   5. Paylod 廣播資料。

   6. CRC效驗。

是以真實的主從資料互動流程如下:

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

藍牙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位元組的資料。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

藍牙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 資料。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

是以藍牙5主從的廣播互動流程可以用以下框圖描述:

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

結論

無論是藍牙4還是藍牙5,廣播的流程都是一樣,廣播,掃描請求,掃描相應的資料包格式也是一模一樣,隻是藍牙5可以在非廣播信道發送資料,藍牙4.x隻能在廣播信道發送資料,藍牙4.2廣播資料隻有31位元組,藍牙5廣播有255位元組,好啦,下一篇開始講精彩的連接配接部分協定分析。

無線技術聯盟微信公衆号,提供有價值的市場資訊和最新的技術分析,歡迎關注交流,轉載請注明出處。

誠邀各大藍牙晶片原廠入群!

誠邀各大藍牙頂級代工廠、方案廠入群!

誠邀各大藍牙品牌廠商産品經理入群!

還不快上車~

千呼萬喚始出來,無線技術聯盟終于準備把大家召集到一起,幫助有需要的人打通藍牙無線相關的技術,市場,晶片管道,商務對接,一群在手,藍牙無憂。

「Bluetooth5 堂 微信交流群」

申請流程:

① 因群人數已超過限制人,請先微信掃描以下小編微信二維碼或添加小編微信号(blecoder),添加微信時請将您的個人資訊進行備注,以便小編登記。

② 由小編逐個邀請入群,請大家耐心等待!謝謝了解與支援!

加小編請記得備注内容:您的姓名、公司名稱、職位

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

無線技術聯盟微信公衆号,提供有價值的市場資訊和最新的技術分析,歡迎關注交流,轉載請注明出處。

從空中截獲BLE資料包看藍牙5協定流程【第一部分:beacon廣播】

繼續閱讀