I work on NORDIC nrf connect sdk v2.2.0 (base on zephyr 3.2.0) BDADDR does not change even if bt_le_adv_param.id is changed in bt_le_ext_adv_update_param().
I checked the source code.(I think you are wrong.) ------------------------------------------------------------------------------
zephyr/subsys/bluetooth/host/adv.c int bt_le_ext_adv_update_param() ... le_ext_adv_param_set() ... //////////////////////////////////// It looks like are setting BDADDR //////////////////////////////////// err = bt_id_set_adv_own_addr(adv, param->options, dir_adv, &cp->own_addr_type); ... /* Set which local identity address we're advertising with */ /////////////////////////////////////////////// BDADDR is not new addr but old(current) addr? /////////////////////////////////////////////// id_addr = &bt_dev.id_addr[adv->id]; ... if (options & BT_LE_ADV_OPT_USE_IDENTITY) { if (id_addr->type == BT_ADDR_LE_RANDOM) { err = bt_id_set_adv_random_addr(adv, &id_addr->a); }