We are working with the CYW43340 on the Inventek ISM43340. I have the HCI interface up and running with my host and everything seems to work fine in that regard.
However, there is a strange problem where, during the connection process, the LMP layer seems to fail to respond causing an HCI TIMEOUT
I gathered some logs with the following test procedure:
1) Enable monitoring with btmon
2) Disable secure connections and simple secure pairing (this ensures the simplest pairing routine, however, the same problem happens either way)
3) Launch a pair operation with the Anker SoundCore2 Bluetooth speaker.
These logs reveal a failure to execute the “Pairing during connection Setup” outlined in Figure 3.10 from the Bluetooth Core 5.1 Spec Vol 2 part F Section 3.1 “Connection Setup”
I am able to execute the parts up until the 2nd HCI_Command_Complete confirms the HCI_PIN_Code_Request_Reply. After this, however, the controller stalls for 20 seconds before reporting Connection Timeout (Reason 0x08). After confirming that the default Link Supervisor Timeout is in fact 20 seconds, I began to suspect a problem in the LMP layer.
I gathered a log with my phone (a known working Pixel XL running Android 8) to see if anything before the timeout looks different. This showed the same lead up to the aforementioned step in Figure 3.10 (right before LMP_in_rand) however, the pariing operation is completed successfully resulting in the HCI_Link_Key_Notification which establishes paired status.
The btsnoop_hci.cap file attached has an example of connecting to the Soundcore from my phone (packet No. 6485 – 6538)
The btmon.log file attached shows the same log from the Linux Host. However, where we should be getting the HCI_Link_Key_Notification – we wait 20 seconds and timeout.
This seems to me to be a link manager interaction problem – rather than a host-controller problem. Perhaps there’s a vendor specific command required by the BCM43341 to fix this issue?
Any help with this issue would be greatly appreciated.