1 2 3 Previous Next 32 Replies Latest reply on Jun 30, 2020 1:44 AM by DaKo_4725181

    CYW43455 - seems losing BLE packets

    DaKo_4725181

      I'm using RPi4 (which utilizes CYW43455) for communicating with a BLE peripherial devices via gatttool:

       

      # gatttool -b OTHERWORKINGDEVICE --characteristics
      handle = 0x0002, char properties = 0x0a, char value handle = 0x0003, uuid = 00002a00-0000-1000-8000-00805f9b34fb
      ...

       

      I have at least 3 peripherial devices which I can query with gatttool.

      But there is one device which timeouts 9 times of 10 during connection:

      # gatttool -b NOTWORKINGDEVICE --characteristics
      connect error: Connection timed out (110)

      Now I could consider the "notworkingdevice" faulty. But "unfortunately" it is working from other devices (phones, with nRF Connect application) without any issues.

      So I have hooked up a Bluetooth Link Layer Sniffer and took some measurements during the Pi tries to connect:M5jV2.png

      Some legend:

      • Orange-filled box is the "faulty" device (BLE Peripherial)
      • Red-filled box is the Pi (BLE Central)
      • Red rectangles: marks channel change

       

      I believe those Client Rx MTU requests are coming from the Peripherial (based on their Signal dBm).

      However I tried running btmon on the Pi during the connection and it is simply not showing these MTU Requests. It seems Pi sends out a "LE Read Remote Used Features" and timeouts while waiting for the answer (I also tried increasing the timeout, but it did not help):

      < HCI Command: LE Read Remote Used... (0x08|0x0016) plen 2 #11 [hci0] 7.477210
        Handle: 64
      > HCI Event: Command Status (0x0f) plen 4 #12 [hci0] 7.479342
        LE Read Remote Used Features (0x08|0x0016) ncmd 1
        Status: Success (0x00)
      > HCI Event: Command Complete (0x0e) plen 14 #13 [hci0] 7.479357
        LE Read Remote Used Features (0x08|0x0016) ncmd 1
        Status: Success (0x00)
        00 00 00 00 00 00 00 00 00 00 .......... 
      > HCI Event: LE Meta Event (0x3e) plen 12 #14 [hci0] 7.993969
        LE Read Remote Used Features (0x04)
        Status: Connection Timeout (0x08)
        Handle: 64
        Features: 0x2d 0x00 0x00 0x00 0x00 0x00 0x00 0x00
        LE Encryption
        Extended Reject Indication
        Slave-initiated Features Exchange
        LE Data Packet Length Extension

      I also tried to put the peripherial very close (<1.5m) to the Pi and nothing has changed.

      RPi's firmware is updated, it's on 5.4.47-v7l+.

      I took multiple sniffs and the communication is always the same: only requests, no response. The periperial tries to ask for MTU change but never gets reply. And the Pi is waiting for LE Read Remote Used Features but never gets reply and timeouts.

      Given the above facts, what are my options to further investigate what causes the problem?

      Is it possible to update the Cypress module itself? Or query it's version?

       

      Thank you.

        1 2 3 Previous Next