Power-on reset will require pairing again.
I found this happening by doing bt_id_reset().
Is there a problem with the way the BD address is initialized?
How to initialize BD address:
bt_enable(NULL); if (IS_ENABLED(CONFIG_BT_SETTINGS)) { settings_load(); } bt_addr_le_t get_addr[CONFIG_BT_ID_MAX]; size_t count = CONFIG_BT_ID_MAX; memset(&get_addr, 0, sizeof(get_addr)); bt_id_get(get_addr, &count); if(get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[5] == 0 && get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[4] == 0 && get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[3] == 0 && get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[2] == 0 && get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[1] == 0 && get_addr[BD_ADDRESS_INDEX_RANDOM].a.val[0] == 0){ bt_id_create(&addr, nullptr); }else{ bt_id_reset(BD_ADDRESS_INDEX_RANDOM, &addr, nullptr); }
Build Option:
CONFIG_BT_SMP=1 CONFIG_BT_ID_MAX=2 CONFIG_BT_SETTINGS=1 CONFIG_BT_KEYS_OVERWRITE_OLDEST=1