Android Bluetooth hci 命令分析

Android在鏈接BLE設備的時候,遇到鏈接沒多久就自動斷開的狀況。經過HCI來分析一下。linux

BLE設備發送鏈接參數更新請求
3909    15:53:01.224737 TexasIns_f0:d3:41 (Hon-RFID3)   HandHeld_e0:e5:4f (EDA) L2CAP   21  Rcvd Connection Parameter Update Request
回覆BLE發送過來的請求
3910    15:53:01.225744 HandHeld_e0:e5:4f (EDA) TexasIns_f0:d3:41 (Hon-RFID3)   L2CAP   15  Sent Connection Parameter Update Response (Accepted)
發送鏈接更新請求,host經過hci發給controller
3911    15:53:01.227044 host    controller  HCI_CMD 18  Sent LE Connection Update
更新參數操做執行成功。controller發給host。這條命令以後,協議棧會發送命令給出去,給對面的BLE設備。
3963    15:53:01.566723 controller  host    HCI_EVT 13  Rcvd LE Meta (LE Connection Update Complete)
這邊在等待BLE設備的回覆,等待超時了。後面就斷開。
5410    15:53:12.491452 controller  host    HCI_EVT 7   Rcvd Disconnect Complete

最後一個幀的內容,顯示鏈接超時。this

Frame 5410: 7 bytes on wire (56 bits), 7 bytes captured (56 bits)
    Encapsulation type: Bluetooth H4 with linux header (99)
    Arrival Time: Apr 25, 2019 23:53:12.491452000 China Standard Time
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1556207592.491452000 seconds
    [Time delta from previous captured frame: 0.001655000 seconds]
    [Time delta from previous displayed frame: 0.001655000 seconds]
    [Time since reference or first frame: 86.503400000 seconds]
    Frame Number: 5410
    Frame Length: 7 bytes (56 bits)
    Capture Length: 7 bytes (56 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    Point-to-Point Direction: Received (1)
    [Protocols in frame: bluetooth:hci_h4:bthci_evt]
Bluetooth
    [Source: controller]
    [Destination: host]
Bluetooth HCI H4
    [Direction: Rcvd (0x01)]
    HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - Disconnect Complete
    Event Code: Disconnect Complete (0x05)
    Parameter Total Length: 4
    Status: Success (0x00)
    Connection Handle: 0x0002
    Reason: Connection Timeout (0x08)

而另一個臺設備, 卻不會斷開,第一個幀顯示對面LE設備所能支持結構,其中Connection Parameters Request Procedure: False,表示不支持更新參數請求。code

第一個幀:
1408    15:57:13.490071 controller  host    HCI_EVT 15  Rcvd LE Meta (LE Read Remote Used Features Complete)
第一個幀的內容:
Frame 1408: 15 bytes on wire (120 bits), 15 bytes captured (120 bits)
    Encapsulation type: Bluetooth H4 with linux header (99)
    Arrival Time: Apr 25, 2019 23:57:13.490071000 China Standard Time
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1556207833.490071000 seconds
    [Time delta from previous captured frame: 0.002823000 seconds]
    [Time delta from previous displayed frame: 0.002823000 seconds]
    [Time since reference or first frame: 39.218678000 seconds]
    Frame Number: 1408
    Frame Length: 15 bytes (120 bits)
    Capture Length: 15 bytes (120 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    Point-to-Point Direction: Received (1)
    [Protocols in frame: bluetooth:hci_h4:bthci_evt]
Bluetooth
    [Source: controller]
    [Destination: host]
Bluetooth HCI H4
    [Direction: Rcvd (0x01)]
    HCI Packet Type: HCI Event (0x04)
Bluetooth HCI Event - LE Meta
    Event Code: LE Meta (0x3e)
    Parameter Total Length: 12
    Sub Event: LE Read Remote Used Features Complete (0x04)
    Status: Success (0x00)
    Connection Handle: 0x0002
    Supported LE Features: 0x0000000000000001, LE Encryption
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...1 = LE Encryption: True
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..0. = Connection Parameters Request Procedure: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .0.. = Extended Reject Indication: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 0... = Slave-Initiated Features Exchange: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...0 .... = Ping: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..0. .... = Data Packet Length Extension: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... .0.. .... = LL Privacy: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .... 0... .... = Extended Scanner Filter Policies: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... ...0 .... .... = LE 2M PHY: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... ..0. .... .... = Stable Modulation Index - Tx: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... .0.. .... .... = Stable Modulation Index - Rx: False
        .... .... .... .... .... .... .... .... .... .... .... .... .... 0... .... .... = LE Coded PHY: False
        .... .... .... .... .... .... .... .... .... .... .... .... ...0 .... .... .... = LE Extended Advertising: False
        .... .... .... .... .... .... .... .... .... .... .... .... ..0. .... .... .... = LE Periodic Advertising: False
        .... .... .... .... .... .... .... .... .... .... .... .... .0.. .... .... .... = Channel Selection Algorithm #2: False
        .... .... .... .... .... .... .... .... .... .... .... .... 0... .... .... .... = Power Class 1: False
        .... .... .... .... .... .... .... .... .... .... .... ...0 .... .... .... .... = Minimum Number of Used Channels Procedure: False
        0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000. .... .... .... .... = Reserved: 0x000000000000
    [Command in frame: 1393]
    [Pending in frame: 1398]
    [Pending-Response Delta: 54.527ms]
    [Command-Response Delta: 57.991ms]

雖然不支持更新參數請求,可是卻發了更新參數請求過來,這個現象比較奇怪。ci

參數更新請求。
2698    15:57:19.440508 TexasIns_f0:d3:41 (Hon-RFID3)   localhost ()    L2CAP   21  Rcvd Connection Parameter Update Request
請求回覆。
2702    15:57:19.441762 localhost ()    TexasIns_f0:d3:41 (Hon-RFID3)   L2CAP   15  Sent Connection Parameter Update Response (Accepted)
發送更新過去。
2705    15:57:19.442326 host    controller  HCI_CMD 18  Sent LE Connection Update
這條命令沒有處理,應爲沒有controller經過hci發給host的命令回覆,因此沒有處理。就不會存在後面的等待超時。
相關文章
相關標籤/搜索