Dear support team and community
After some days where it worked perfectly, our nRF52840 suddently stopped connecting anymore to a Motorola G4 plus running Android 7.1.1.
The same firmware running on a different nRF52840 can pair, bond, and connect well to the same smartphone.
We are running SDK v2.3.0 with ZephyrOS, and are using the default configuration here. The bonding information are saved in the flash memory (CONFIG_BT_SETTINGS=y), and this works perfectly on multiple other devices. For your information, the BT_LL_SOFTDEVICE flag is set in kconfig (I did not set it manually).
The logs with the info level are :
/* By spec, SMP "pairing process" completes successfully when the last * key to distribute is acknowledged at link-layer. */ remote_already_completed = (atomic_test_bit(smp->flags, SMP_FLAG_KEYS_DISTR) && !smp->local_dist && !smp->remote_dist); if (atomic_test_bit(smp->flags, SMP_FLAG_PAIRING) || atomic_test_bit(smp->flags, SMP_FLAG_ENC_PENDING) || atomic_test_bit(smp->flags, SMP_FLAG_SEC_REQ)) { /* reset context and report */ smp_pairing_complete(smp, reason); } if (remote_already_completed) { LOG_WRN("SMP does not allow a pairing failure at this point. Known issue. " "Disconnecting instead."); /* We are probably here because we are, as a peripheral, rejecting a pairing based * on the central's identity address information, but that was the last key to * be transmitted. In that case, the pairing process is already completed. * The SMP protocol states that the pairing process is completed the moment the * peripheral link-layer confirmed the reception of the PDU with the last key. */ bt_conn_disconnect(smp->chan.chan.conn, BT_HCI_ERR_AUTH_FAIL); return 0; }
I don't understand the meaning of this issue, can you help me with some unlightening ? Would deleting the bonding information for this specific device in the nRF52 flash memory be a fix ? If yes, how to proceed ?