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:
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
My Pi's details:
RPi4 Model B 1.1 (1GB RAM), Q2 2019 (Mfg by Sony)
PRETTY_NAME=“Raspbian GNU/Linux 10 (buster)”
NAME=“Raspbian GNU/Linux”
VERSION_ID=“10”
VERSION=“10 (buster)”
I also tried to put the peripherial very close (<1.5m) to the Pi and nothing has changed.
As last resort I tried to update the firmware but nothing has changed (I'm on 634e380a4d041492f859712bd2c81112a535b515).
Given the above facts, what are my options to further investigate what causes the problem?
Is it possible to update the Cypress module itself?
This repo is only designed for distributing binary firmware updates.
Can you create this issue here: https://github.com/raspberrypi/linux/issues
where it's more likely to be found by interested people.
I'm using RPi4 for communicating with a BLE peripherial devices via gatttool:
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:
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:
Some legend:
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):
My Pi's details: RPi4 Model B 1.1 (1GB RAM), Q2 2019 (Mfg by Sony) PRETTY_NAME=“Raspbian GNU/Linux 10 (buster)” NAME=“Raspbian GNU/Linux” VERSION_ID=“10” VERSION=“10 (buster)”
I also tried to put the peripherial very close (<1.5m) to the Pi and nothing has changed.
As last resort I tried to update the firmware but nothing has changed (I'm on 634e380a4d041492f859712bd2c81112a535b515).
Given the above facts, what are my options to further investigate what causes the problem? Is it possible to update the Cypress module itself?