bt_hci_core: No ID address. App must call settings_load()

Hi, i'm trying to modify the thread coap_server sample by adding bluetooth configurationg following this webinar https://www.youtube.com/watch?v=hY_tDext6zA&t=2199s

I'm facing with this log error message: bt_hci_core: No ID address. App must call settings_load() that it doesn't permit the enabling of the bluetooh.

how can i fix it?

this is th log file:

uart:~$ *** Booting Zephyr OS build v3.1.99-ncs1 ***
[00:00:00.265,716] <inf> ieee802154_nrf5: nRF5 802154 radio initialized
[00:00:00.341,217] <inf> fs_nvs: 2 Sectors of 4096 bytes
[00:00:00.341,247] <inf> fs_nvs: alloc wra: 0, fe8
[00:00:00.341,247] <inf> fs_nvs: data wra: 0, 0
[00:00:00.346,405] <inf> coap_server: Start CoAP-server sample
[00:00:00.346,405] <inf> LOGM_MODULE_NAME: inizializing bluetooth
[00:00:00.347,045] <err> LOGM_MODULE_NAME: couldn't start advertising (err = -11
[00:00:00.347,076] <err> coap_server: Could not initialize Bluetooth
[00:00:00.368,804] <inf> bt_hci_core: No ID address. App must call settings_load()
[00:00:00.265,716] <inf> ieee802154_nrf5: nRF5 802154 radio initialized
[00:00:00.341,217] <inf> fs_nvs: 2 Sectors of 4096 bytes
[00:00:00.341,247] <inf> fs_nvs: alloc wra: 0, fe8
[00:00:00.341,247] <inf> fs_nvs: data wra: 0, 0
[00:00:00.346,405] <inf> coap_server: Start CoAP-server sample
[00:00:00.346,405] <inf> LOGM_MODULE_NAME: inizializing bluetooth
[00:00:00.347,045] <err> LOGM_MODULE_NAME: couldn't start advertising (err = -11
[00:00:00.347,076] <err> coap_server: Could not initialize Bluetooth
[00:00:00.368,804] <inf> bt_hci_core: No ID address. App must call settings_load()
uart:~$

this is my project code

1273.coap_server.zip

Parents
  • Hi Simon,

    Our Coap Client sample has multiprotocol support.

    Before I start debugging your issue, could you compare your Coap Server with this Coap Client?

    Hopefully you can find some inspiration from the Coap Client to help you fix this issue.

    Regards,
    Sigurd Hellesvik

  • yes i've done this yet... I tried to add this part of code:

    if (IS_ENABLED(CONFIG_SETTINGS)) {
            settings_load();
        }
    after the bt_enable function in ble.c file, but it seems it doesn't work
    this is what it returns in logs:
    uart:~$ *** Booting Zephyr OS build v3.1.99-ncs1 ***
    ASSERTION FAIL @ WEST_TOPDIR/zephyr/kernel/work.c:667
    [00:00:00.455,352] <inf> ieee802154_nrf5: nRF5 802154 radio initialized
    [00:00:00.455,352] <inf> ieee802154_nrf5: nRF5 802154 radio initialized
    uart:~$ [00:00:00.530,914] <inf> fs_nvs: 2 Sectors of 4096 bytes
    [00:00:00.530,914] <inf> fs_nvs: 2 Sectors of 4096 bytes
    uart:~$ [00:00:00.530,914] <inf> fs_nvs: alloc wra: 0, fe8
    [00:00:00.530,914] <inf> fs_nvs: alloc wra: 0, fe8
    uart:~$ [00:00:00.530,944] <inf> fs_nvs: data wra: 0, 0
    [00:00:00.530,944] <inf> fs_nvs: data wra: 0, 0
    uart:~$ [00:00:00.536,193] <inf> coap_server: Start CoAP-server sample
    [00:00:00.536,193] <inf> coap_server: Start CoAP-server sample
    uart:~$ [00:00:00.536,224] <inf> LOGM_MODULE_NAME: inizializing bluetooth
    [00:00:00.536,224] <inf> LOGM_MODULE_NAME: inizializing bluetooth
    uart:~$ [00:00:00.538,604] <wrn> bt_id: Read Static Addresses command not available
    [00:00:00.538,604] <wrn> bt_id: Read Static Addresses command not available
    uart:~$ [00:00:00.538,635] <err> bt_settings: Unable to setup an identity address
    [00:00:00.538,635] <err> bt_settings: Unable to setup an identity address
    uart:~$ [00:00:00.538,696] <err> LOGM_MODULE_NAME: couldn't start advertising (err = -11
    [00:00:00.538,696] <err> LOGM_MODULE_NAME: couldn't start advertising (err = -11
    uart:~$ [00:00:00.538,696] <err> coap_server: Could not initialize Bluetooth
    [00:00:00.538,696] <err> coap_server: Could not initialize Bluetooth
    uart:~$ [00:00:00.547,302] <err> os: r0/a1: 0x00000004 r1/a2: 0x0000029b r2/a3: 0x00000000
    [00:00:00.547,302] <err> os: r0/a1: 0x00000004 r1/a2: 0x0000029b r2/a3: 0x00000000
    uart:~$ [00:00:00.547,332] <err> os: r3/a4: 0x2001473d r12/ip: 0x00000000 r14/lr: 0x0002b359
    [00:00:00.547,332] <err> os: r3/a4: 0x2001473d r12/ip: 0x00000000 r14/lr: 0x0002b359
    uart:~$ [00:00:00.547,332] <err> os: xpsr: 0x61100000
    [00:00:00.547,332] <err> os: xpsr: 0x61100000
    uart:~$ [00:00:00.547,363] <err> os: s[ 0]: 0x00000000 s[ 1]: 0x00000000 s[ 2]: 0x00000000 s[ 3]: 0x00000000
    [00:00:00.547,363] <err> os: s[ 0]: 0x00000000 s[ 1]: 0x00000000 s[ 2]: 0x00000000 s[ 3]: 0x00000000
    uart:~$ [00:00:00.547,393] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000
    [00:00:00.547,393] <err> os: s[ 4]: 0x00000000 s[ 5]: 0x00000000 s[ 6]: 0x00000000 s[ 7]: 0x00000000
    uart:~$ [00:00:00.547,393] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000
    [00:00:00.547,393] <err> os: s[ 8]: 0x00000000 s[ 9]: 0x00000000 s[10]: 0x00000000 s[11]: 0x00000000
    uart:~$ [00:00:00.547,424] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000
    [00:00:00.547,424] <err> os: s[12]: 0x00000000 s[13]: 0x00000000 s[14]: 0x00000000 s[15]: 0x00000000
    uart:~$ [00:00:00.547,424] <err> os: fpscr: 0x00000000
    [00:00:00.547,424] <err> os: fpscr: 0x00000000
    uart:~$ [00:00:00.547,424] <err> os: Faulting instruction address (r15/pc): 0x00052a64
    [00:00:00.547,424] <err> os: Faulting instruction address (r15/pc): 0x00052a64
    uart:~$ [00:00:00.547,454] <err> os: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
    [00:00:00.547,454] <err> os: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
    uart:~$ [00:00:00.547,485] <err> os: Current thread: 0x20002538 (BT_LW_WQ)
    [00:00:00.547,485] <err> os: Current thread: 0x20002538 (BT_LW_WQ)
    uart:~$ [00:00:00.923,675] <err> fatal_error: Resetting system
    [00:00:00.923,675] <err> fatal_error: Resetting system
  • Aeneas said:
    Was there ever a solution to this "No ID address" problem ?

    You need to call the function "settings_load()" at the start of your application, as explained in Bluetooth Stack Architecture: Persistent Storage:
    "Once enabled, it is the responsibility of the application to call settings_load() after having initialized Bluetooth (using the bt_enable() API)."

    Aeneas said:
    Rather than  settings_load() , is there a settings_store() functionality
    to initialize whatever data fields are defined ?

    For more information on settings, see Settings.

    Regards,
    Sigurd Hellesvik

  • When positioned immediately after the bt_enable() call,

    the "No ID address" message does still display in the the boot term display,

    but then is followed  by an Identity line with a legit number,

    so maybe it does work.

    ===============================================

    [00:00:00.010,040] <inf> bt_hci_core: bt_init: No ID address. App must call settings_load()
    Bluetooth initialized
    [00:00:00.010,650] <inf> bt_hci_core: bt_dev_show_info: Identity: AA:BB:CC:DD:EE:FF (random)

    ===============================================

  • Aeneas said:
    When positioned immediately after the bt_enable() call,

    Try to position settings_load() before bt_enable().

    Regards,
    Sigurd Hellesvik

  • Placing settings_load () before bt_enable () will not work properly

  • Hi Owen,

    If you face issues with this, please create a new ticket.

    Thanks

    Regards,
    Sigurd Hellesvik

Reply Children
No Data
Related