1.BTLE one packet format (Adv/Data)
1.Preamble
2.Access Address
首先是Adveristing Packet
並查看Sniffer的Raw data
- 固定廣播位址(0x8e89bed6)
- Packet Header( DVERTISING PACKET PDU TYPESPDU Type Packet Name Desc)
- Advertising Addresss
- Advertising Data (type/length and Data)
接下來,是查看master /slave之間連接時的通訊(其中Scan_req) 方向是Scanner to Advertiser
若scanner 接收到想要進行連線的device的Adv,則發出SCAN REQUEST來回應device
並且ADvertiser 也會回應Scan (SCAN_RSP)
有時,Advertiser 會將某些訊息放在SCAN_RSP(像是長local device name,及service)
CONNECTIONS
在彼此確定要連線後,由Initiator(Scaner Become from)來初始化
由上面可以得到幾項重要的資訊
- Access Address : 因central (initor become from) 可同時有八組連線. 所以slave 的位置是由central來決定.
- interval : 因BTLE 可以依藉要求(如傳送速度)設定,每隔多少需要雙方作一次交握. 這應也可用來為自適性設定
- Latency : 這裡可設定slave 容許經過幾次的interval不去回應的次數
- TimeOut : 雙方說好若經多少時間單位沒有回應時,即視為timeout
- Channel Map /Hop Interval : 雙方說好其頻道及每次跳多少
Fn+1 = (Fn + Hop Interval) mod 37 ,關於此會在Radio Sniffer -3 說明
先重新檢視前後發生什麼事
最後,是DATA Packet(L2CAP)
其中,Access Address由Initor 分配給slave. 其先是其Header / length and Paload.
在Payload中,可能包含有L2CAP的command/data and inform. 這裡可以看做是它到底要不要往上送.
如此這麼一來也可以大大地減少其CPU run time.
而其中由Header 中的 LLID來區分.
由擷取到的封包,個別來看內容
而其中Payload中,還包有 L2CAP及ATT
ATT
A.
B.
C.
我們解讀其中一個L2CAP的內容. 就依一開始我們要去找出所有的att handle and type
1.Read By Group Type Request(0x0001 ~ 0xFFFF)
而因為其L2CAP的長度關係,它不會把所的傳回. 而是一段段地傳回.直到有發生錯誤(not find handle)即找到所有的
A.(找到0x0001~0x00012),所以下列會從0x00013開始找
ref:
BLUETOOTHLOW ENERGY
TECHNOLOGY TRAININ
nRF Sniffer User Guide v1.1
沒有留言:
張貼留言