Start advertisement hci error

Hey,
after starting advertisement I see this error log from hci_core

[00:00:00.029,815] <wrn> bt_hci_core: opcode 0x2027 status 0x12
[00:00:00.029,846] <err> bt_id: Failed to add IRK to controller

The advertisement startet successfully, what means that error message?

Parents Reply Children
  • Yes this example works on board.

    The other application also works, but at start of my application at the end the ble advertisement will be startet and the the hci error occures.opcode 0x2027 status 0x12

  • Hi,

    Can you share your projct config file and your code where you start the ble advertisement?

    regards

    Jared 

  • CONFIG_BT_L2CAP_TX_MTU=498
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_BUF_ACL_TX_SIZE=502
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
    
    CONFIG_MCUMGR_TRANSPORT_BT=y
    CONFIG_MCUMGR_TRANSPORT_BT_AUTHEN=y
    CONFIG_MCUMGR_TRANSPORT_BT_CONN_PARAM_CONTROL=y
    
    CONFIG_BASE64=y
    CONFIG_SHELL=y
    CONFIG_SHELL_BACKEND_SERIAL=n
    CONFIG_MCUMGR_TRANSPORT_SHELL=y
    
    CONFIG_MCUMGR_TRANSPORT_BT_REASSEMBLY=y
    CONFIG_MCUMGR_GRP_OS_MCUMGR_PARAMS=y
    CONFIG_MCUMGR_TRANSPORT_WORKQUEUE_STACK_SIZE=4608
    
    CONFIG_FILE_SYSTEM=y
    CONFIG_FILE_SYSTEM_LITTLEFS=y
    
    CONFIG_MCUMGR_GRP_FS=y
    
    CONFIG_MCUMGR_GRP_ZBASIC=y
    CONFIG_MCUMGR_GRP_ZBASIC_STORAGE_ERASE=y
    
    CONFIG_BT_CTLR_LE_PING=n
    
    CONFIG_BOOTLOADER_MCUBOOT=y
    CONFIG_DISABLE_FLASH_PATCH=y
    
    CONFIG_CLOCK_CONTROL_NRF_SHELL=n
    CONFIG_DEVICE_SHELL=n
    CONFIG_DEVMEM_SHELL=n
    CONFIG_FLASH_SHELL=n
    
    CONFIG_NET_BUF=y
    CONFIG_ZCBOR=y
    CONFIG_CRC=y
    CONFIG_MCUMGR=y
    CONFIG_STREAM_FLASH=y
    CONFIG_FLASH_MAP=y
    
    
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2304
    CONFIG_MAIN_STACK_SIZE=2048
    
    CONFIG_FLASH=y
    
    CONFIG_THREAD_MONITOR=y
    
    CONFIG_MCUMGR_GRP_OS_TASKSTAT=y
    
    CONFIG_IMG_MANAGER=y
    CONFIG_MCUMGR_GRP_IMG=y
    CONFIG_MCUMGR_GRP_OS=y
    
    
    CONFIG_BT=y
    CONFIG_BT_GATT_CLIENT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_SMP=y
    CONFIG_BT_FIXED_PASSKEY=y
    CONFIG_BT_MAX_PAIRED=9
    CONFIG_BT_TINYCRYPT_ECC=y
    CONFIG_BT_MAX_CONN=1
    CONFIG_BT_GATT_AUTO_UPDATE_MTU=y
    
    
    CONFIG_NRF_SECURITY=y
    CONFIG_MBEDTLS_PSA_CRYPTO_C=y
    CONFIG_MBEDTLS_ENABLE_HEAP=y
    CONFIG_MBEDTLS_HEAP_SIZE=8192
    
    
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_NVS=y
    CONFIG_MPU_ALLOW_FLASH_WRITE=y
    
    
    CONFIG_SETTINGS=y
    CONFIG_BT_SETTINGS=y
    CONFIG_BT_GATT_AUTO_RESUBSCRIBE=n
    
    CONFIG_BT_BONDABLE=y
    CONFIG_BT_GATT_AUTO_SEC_REQ=y
    CONFIG_BT_SMP_APP_PAIRING_ACCEPT=y
    CONFIG_BT_SMP_ALLOW_UNAUTH_OVERWRITE=y
    
    #CONFIG_BT_BONDING_REQUIRED=y
    CONFIG_BT_SMP_SC_ONLY=y
    CONFIG_BT_SMP_SC_PAIR_ONLY=y
    
    CONFIG_BT_FILTER_ACCEPT_LIST=y
    CONFIG_BT_ID_UNPAIR_MATCHING_BONDS=y
    CONFIG_BT_CTLR_FAL_SIZE=9
    CONFIG_BT_HCI_ACL_FLOW_CONTROL=n
    
    CONFIG_BT_PRIVACY=n
    
    
    CONFIG_SERIAL=y
    CONFIG_PINCTRL=y
    CONFIG_NRFX_UARTE0=y
    CONFIG_NRFX_UARTE1=y


    and here start advertisement

    static const struct bt_data advertisement_data[] = {
    	BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
    	BT_DATA_BYTES(BT_DATA_UUID128_ALL,BT_UUID_CUSTOM_SERVICE_VAL)
    };
    
    static void startAdvertisement()
    {
    	LOG_DBG("Advertisment was stopped");
    	 // Stop advertisement for changing parameters.
    	int err = bt_le_adv_stop();
    	errorCheck(ERRORCODE_BLE, err);
    	err= bt_le_filter_accept_list_clear();
    	errorCheck(ERRORCODE_BLE, err);
    	LOG_DBG("Filter accept list was cleared");
    	adv_param.id = BT_ID_DEFAULT;
    	adv_param.sid = 0;
    	adv_param.secondary_max_skip = 0;
    	if (current_pairing_mode == PAIRING)
    	{
    		adv_param.options = BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_NAME;
    		adv_param.interval_min = BT_GAP_ADV_SLOW_INT_MIN;
    		adv_param.interval_max = BT_GAP_ADV_SLOW_INT_MAX;
    		adv_param.peer = NULL;
    		err = bt_le_adv_start(&adv_param, advertisement_data, ARRAY_SIZE(advertisement_data), NULL, 0);
    		errorCheck(ERRORCODE_BLE, err);
    		LOG_DBG("Advertisment was started without filter");
    	}
    	else
    	{
    		bt_foreach_bond(BT_ID_DEFAULT, add_bonded_addr_to_filter_list, NULL);
    		// Start advertisement with filter for only bonded devices.
    		adv_param.options = BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_NAME | BT_LE_ADV_OPT_FILTER_CONN | BT_LE_ADV_OPT_FILTER_SCAN_REQ; // Filterung einschalten;
    		adv_param.interval_min = BT_GAP_ADV_SLOW_INT_MIN;
    		adv_param.interval_max = BT_GAP_ADV_SLOW_INT_MAX;
    		adv_param.peer = NULL;
    		err = bt_le_adv_start(&adv_param, advertisement_data, ARRAY_SIZE(advertisement_data), NULL, 0);
    		errorCheck(ERRORCODE_BLE, err);
    		LOG_DBG("Advertisment was started with filter");
    	}
    }
    
    
    K_WORK_DEFINE(adv_work, startAdvertisement);
    
    void main() {
    ...
    k_work_submit(&adv_work);
    ..
    }

  • Hi,

    Which board are you building for? What is the complete board name that you're using when you build the application?

    regards

    Jared 

Related