一分鐘讀懂低功耗藍芽連線資料包
阿新 • • 發佈:2018-11-09
一分鐘讀懂低功耗藍芽(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.ph ... 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
同上
Core_V4.0_LE.pdf (818.21 KB, 下載次數: 169)
em9304 fineme 071117.zip (19.05 KB, 下載次數: 101)
原文連結:
http://www.viewtool.com/bbs/foru ... e=1&extra=#pid71204
微信公眾號: 緯圖物聯