I have been successfully using nRF Connect v2.5.0 on Windows with a PCA10056 v0.9.2 to communicate with our target device, a nRF52840 using S140 v6.0.0, nRF5 SDK 15.0.0. We're using bonded connection with passcode entry (without LE Secure Connections).
We recently introduced a change in the target device to increase the BLE throughput by modifying NRF_SDH_BLE_GAP_DATA_LENGTH from the default of 27 to 50. With this change in place on the target, we can successfully bond the PCA10056 with the target, but as soon as an attempt is made to read a secured characteristic the following error occurs in nRF Connect with a subsequent BLE disconnect: BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE
I understand that a MIC failure is a result of a failed message integrity check for encrypted connections however there is no reason that I can see that would cause this condition.
Some other observations:
- The target firmware with updated NRF_SDH_BLE_GAP_DATA_LENGTH works correctly when used with a PCA10040 v1.1.1, a Samsung S6 and Samsung J3.
- If NRF_SDH_BLE_GAP_DATA_LENGTH is set to 27 everything works as expected. This issue appears to be relate to Data Length Extension support.
- nRF52840_xxAA_ENGA is reported as the MCU on PCA10056.
- When the connectivity firmware version from PCA10056 is read back using nRF Connect v2.5.0 Programmer, the SoftDevice detected is id 0x91 (S132, v3.1.0). This is surprising since this appears to be quite an old SoftDevice and I'm not sure that S132 is supported on the nRF52840? I would have expected the connectivity firmware for PCA10056 to include SoftDevice S140.
- I tested connectivity to to another PCA10056 running the ble_app_hrs example which uses NRF_SDH_BLE_GAP_DATA_LENGTH of 251 and the connection worked as expected. For this test pairing was performed but not bonding.
This only seems to be an issue with this specific combination of DLE, PCA10056, bonding and nRF Connect Desktop.
Any ideas on what could be wrong?