Hi,
We are currently developing a product using the MSP430BT5190 MCU and the CC2564 Bluetooth controller which we currently use only for BLE with the bluetopia stack.
We experience a strange behaviour in a very specific case. When using our device with most of Samsung smartphones, we connect the first time correctly and remain connected with no trouble. If we get away from our device with the smartphone in order to trigger a disconnection, both devices get a disconnection event (0x05) from their controller with for disconnection reason 0x08 = Connection Supervision Timeout which is pretty normal. On a disconnection, our device starts advertising again and when we come back closer, the smartphone scans and connects to the device.
Exactly 46s later, the smartphone displays a disconnection without doing anything, both devices being on a table next to each other. On HCI traces, we noticed that on the smartphone side was experienced again a Connection Supervision Timeout (0x08), but on the device, the cause is different and is 0x22 = LL Response Timeout. Those error codes, explains the 46 seconds, as our connection supervision timeout is 6s and Bluetooth Core Spec v4.2, Vol 6, Part B, Section 5.2 says the following, explaining the 40 seconds remaining:
---------------------------------------------------------------------------------------------------------------
This section specifies procedure timeout rules that shall be applied to all the
Link Layer control procedures specified in Section 5.1, except for the
Connection Update and Channel Map Update procedures for which there are
no timeout rules.
To be able to detect a non-responsive Link Layer Control Procedure, both the
master and the slave shall use a procedure response timeout timer, TPRT.
Upon the initiation of a procedure, the procedure response timeout timer shall
be reset and started.
Each LL Control PDU that is queued for transmission resets the procedure
response timeout timer.
When the procedure completes, the procedure response timeout timer shall be
stopped.
If the procedure response timeout timer reaches 40 seconds, the connection is
considered lost. The Link Layer exits the Connection State and shall transition
to the Standby State. The Host shall be notified of the loss of connection.
--------------------------------------------------------------------------------------------------------------------------
This brings me to my question, why do we encounter such a case? I have been checking all the HCI traces and all the messages seem to be somehow acknowledged. Moreover, when doing this operation with another smartphone which uses the TI WG7311-0AA chipset, this does not occur.
Another issue I have noticed in the HCI traces which does not seem related is that after receiving a LE Connection complete event, the stack tries to send Set Advertising Enable with 0 as argument, which should not be done and receives a Command Complete Event with an error argument 0x0C = Command Disallowed.
Thank you for your support.