GAPC_PAIRING_FAILED reason?

My firmware is getting GAPC_PAIRING_FAILED with reason=0x45.

According to the documentation,

Unfortunately, 0x45 is not listed in the SMP Errors (e.g. Bluetooth Core_v5.0 p.2346).
Could you please give more details about this reason code?

@darrew

Which CMSIS (_bond) example is your firmware based on?

ble_peripheral_server_bond.

@darrew

There is no error code reason =0x45 for pairing failed.

  1. Based on Core_v5.0, (p2346), table reveals these values.

  1. Based on our RW-BLE-HOST-ERR-CODE-IS.pdf , we have:

Therefore we could see they are matched.

For example:
Core_v5.0. 0x01 (passkey Entry Failed) <-----> 0x61RW-BLE-HOST-ERR-CODE-IS.pdf

Therefore 0x45 is not for SMP protocol Error reason.

It could be GAP error code as you can see in the table below:

image

As already mentioned, data.reason is a field in struct gapc_bond_ind (union gapc_bond_data) when info=GAPC_PAIRING_FAILED, and the documentation says “see SMP error codes”.

GAP_ERR_TIMEOUT does not make sense to me as there is no requested operation; reason=0x45 is the result of a failed pairing request triggered by the peer device.

This reason=0x45 is something that the RW-BLE stack defines and it is not accessible to me. If you could have a look at the source code of the stack that would help for sure.

@darrew

It is true to have timeout (0x45) for pairing procedure.
Our team will create a internal ticket for this to ask update the document.

Thank you for using our community forum!

Now, the following question arises:

Let us assume that the RW-BLE stack sends to the application a GAPC_BOND_IND with info=GAPC_PAIRING_FAILED and reason=0x45. If 0x45 means GAP_ERR_TIMEOUT, then,

why does the stack get into a timeout? what is missing?

@darrew

Here 0x45 does not mean GAP_ERR_TIMEOUT. It is for SMP timeout.
Our document should explain 0x45 for SMP timeout error code. → We will update our document in next release.

If there is no response after using gapc_smp_pairing_start(), the timeout flag will be set.
When starting smpc_security_req_send(), if this timeout is set, this 0x45 will be put into status
and you will see error code (0x45).

Note: Once a timeout has occurred, no security procedure can be initiated until a new physical link has been established.

Thank you for using our community forum!