how to reconnect to a device which changed its BT address (LE Privacy) ?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
MaCa_2922036
Level 3
Level 3
10 replies posted 10 sign-ins 5 replies posted

Hello,

I am using the 1LD Wifi/BT module with Wiced v6.4.

In my application, an iOs smartphone is connecting, pairing and bonding with the module. The complete secure connection seems to be done successfully.

The problem is when the smartphone changes its random BT address (LE Privacy) and try to reconnect, the module did not recognized it from the list of previously bonded devices, and a new pairing procedure must restart (with passkey confirmation).

I guess that the BT library is able to manage the LE privacy and resolving random BT address changed, but I can't find any Cypress documentation on this point.

I found that the pairing procedure must exchange the "Identity Resolution Key" (IRK) to enable resolving the random address. How to do that ?

Thanks

0 Likes
1 Solution
AnjanaM_61
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 5 questions asked

Hi MaCa_2922036 ,

You have to use API wiced_bt_dev_add_device_to_address_resolution_db to resolve the random address.

Refer to example demo example available in WICED SDK (C:\Users\...\Documents\WICED-Studio-6.4-broad\43xxx_Wi-Fi\apps\demo\ble_wifi_introducer)

For the detailed explanation of flow of these BT events I would suggest you to please go through the doc attached. WBT101-04B-BLE-Ntfy-Sec.pdf  please refer to table under 4B.7 WICED Bluetooth Firmware Architecture ...

Not sure if you are experiencing the same issue discussed here: About saving bonding information . If the issue is not fixing by wiced_bt_dev_add_device_to_address_resolution_db , I would suggest you to try the test example provided in thread  About saving bonding information (on ) which is marked as correct answer.

Please note : WICED 6.6 is the latest SDK for wifi combo chips with several bug fixes. So I would suggest you to migrate to the same.

Thanks & Regards,

Anjana

View solution in original post

0 Likes
4 Replies
AnjanaM_61
Moderator
Moderator
Moderator
5 comments on KBA First comment on KBA 5 questions asked

Hi MaCa_2922036 ,

You have to use API wiced_bt_dev_add_device_to_address_resolution_db to resolve the random address.

Refer to example demo example available in WICED SDK (C:\Users\...\Documents\WICED-Studio-6.4-broad\43xxx_Wi-Fi\apps\demo\ble_wifi_introducer)

For the detailed explanation of flow of these BT events I would suggest you to please go through the doc attached. WBT101-04B-BLE-Ntfy-Sec.pdf  please refer to table under 4B.7 WICED Bluetooth Firmware Architecture ...

Not sure if you are experiencing the same issue discussed here: About saving bonding information . If the issue is not fixing by wiced_bt_dev_add_device_to_address_resolution_db , I would suggest you to try the test example provided in thread  About saving bonding information (on ) which is marked as correct answer.

Please note : WICED 6.6 is the latest SDK for wifi combo chips with several bug fixes. So I would suggest you to migrate to the same.

Thanks & Regards,

Anjana

0 Likes

Ok I am working on it.

I have another question:

for key to define during the IO capabilities. I didn't find any documentation on which key to use, and for which usage.

p_event_data->pairing_io_capabilities_ble_request.init_keys = ???

enum wiced_bt_dev_le_key_type_e

{

    BTM_LE_KEY_PENC =   (1 << 0),                       /**< encryption information of peer device */

    BTM_LE_KEY_PID =    (1 << 1),                       /**< identity key of the peer device */

    BTM_LE_KEY_PCSRK =  (1 << 2),                       /**< peer SRK */

#if SMP_LE_SC_INCLUDED == TRUE

    BTM_LE_KEY_PLK =    (1 << 3),

    BTM_LE_KEY_LENC =   (1 << 4),                       /**< master role security information:div */

    BTM_LE_KEY_LID =    (1 << 5),                       /**< master device ID key */

    BTM_LE_KEY_LCSRK =  (1 << 6),                       /**< local CSRK has been deliver to peer */

    BTM_LE_KEY_LLK =    (1 << 7),

#else

    BTM_LE_KEY_LENC =   (1 << 3),                       /**< master role security information:div */

    BTM_LE_KEY_LID =    (1 << 4),                       /**< master device ID key */

    BTM_LE_KEY_LCSRK =  (1 << 5)                        /**< local CSRK has been deliver to peer */

#endif

};

#endif  /* BTM_LE_KEY_TYPES */

typedef uint8_t wiced_bt_dev_le_key_type_t;             /**< LE key type (see #wiced_bt_dev_le_key_type_e) */

0 Likes

Hi MaCa_2922036 ,

p_event_data->pairing_io_capabilities_ble_request.init_keys  have to be set depending upon which keys to be distributed with respect to your application security requirements.

Please go through key distribution in BT core spec.

In general , you can use

p_event_data->pairing_io_capabilities_ble_request.init_keys         = BTM_LE_KEY_PENC|BTM_LE_KEY_PID|BTM_LE_KEY_PCSRK|BTM_LE_KEY_LENC;

Regards,

Anjana