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
  • Hi,

    I copied all Bluetooth Low Energy related configurations and files from our Coap Client sample to our Coap Server sample.

    The result seems to work fine, I am able to connect to it with both Thread and Bluetooth.

    Try this zip file and see if it works for you:

    coap_server_multiprotocol.zip

    Regards,
    Sigurd Hellesvik

  • Was there ever a solution to this "No ID address" problem ?

    Platform:  //nrf52840 custom pcb//segger base//ble protocol//zephyr//

    This error is occurring after adding the following to prj.conj :

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

    CONFIG_SETTINGS=y
    CONFIG_BT_SETTINGS=y
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_FLASH_MAP=y
    CONFIG_NVS=y
    ===============================================
    Rather than  settings_load() , is there a settings_store() functionality
    to initialize whatever data fields are defined ?
    My guess is this functionality is just reading uninitialized memory.
  • 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)

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

Reply
  • 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)

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

Children
Related