diff --git a/samples/bluetooth/broadcaster_multiple/overlay-bt_ll_sw_split.conf b/samples/bluetooth/broadcaster_multiple/overlay-bt_ll_sw_split.conf new file mode 100644 index 0000000000000..399fdedeff9e8 --- /dev/null +++ b/samples/bluetooth/broadcaster_multiple/overlay-bt_ll_sw_split.conf @@ -0,0 +1,30 @@ +# Increased to 4 gives one each of legacy, 2M, 1M and Coded PHY advertising sets +CONFIG_BT_EXT_ADV_MAX_ADV_SET=4 + +# Use Zephyr Bluetooth Low Energy Controller +CONFIG_BT_LL_SW_SPLIT=y + +# Enable Coded PHY support in Zephyr Controller, if testing 4 advertising sets +CONFIG_BT_CTLR_PHY_CODED=y + +# Zephyr Bluetooth LE Controller will need to use chain PDUs when AD data +# length > 191 bytes +# - 31 bytes will use 22 bytes for the default name in this sample plus 9 bytes +# for manufacturer data +# - 191 bytes will use 22 bytes for the default name in this sample plus 169 +# bytes for manufacturer data +# - 277 bytes will use 22 bytes for the default name in this sample plus 255 +# bytes for manufacturer data +CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=192 + +# Increase Advertising PDU buffers to number of advertising sets times the +# number of chain PDUs per advertising set when using Zephyr Bluetooth LE +# Controller +CONFIG_BT_CTLR_ADVANCED_FEATURES=y +CONFIG_BT_CTLR_ADV_RESERVE_MAX=n +CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 +CONFIG_BT_CTLR_ADV_DATA_CHAIN=y + +# Code size reduction +CONFIG_ISR_TABLES_LOCAL_DECLARATION=y +CONFIG_LTO=y diff --git a/samples/bluetooth/broadcaster_multiple/prj.conf b/samples/bluetooth/broadcaster_multiple/prj.conf index 65248db319116..145a373a60c17 100644 --- a/samples/bluetooth/broadcaster_multiple/prj.conf +++ b/samples/bluetooth/broadcaster_multiple/prj.conf @@ -1,23 +1,13 @@ CONFIG_BT=y CONFIG_BT_BROADCASTER=y -CONFIG_BT_EXT_ADV=y -CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 CONFIG_BT_DEVICE_NAME="Broadcaster Multiple" - CONFIG_LOG=y -# Zephyr Bluetooth LE Controller will need to use chain PDUs when AD data -# length > 191 bytes -# - 31 bytes will use 22 bytes for the default name in this sample plus 9 bytes -# for manufacturer data -# - 191 bytes will use 22 bytes for the default name in this sample plus 169 -# bytes for manufacturer data -# - 277 bytes will use 22 bytes for the default name in this sample plus 255 -# bytes for manufacturer data -# CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=192 +# Require Bluetooth Advertising Extensions Feature +CONFIG_BT_EXT_ADV=y -# Increase Advertising PDU buffers to number of advertising sets times the -# number of chain PDUs per advertising set when using Zephyr Bluetooth LE -# Controller -# CONFIG_BT_CTLR_ADVANCED_FEATURES=y -# CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=2 +# Two advertising sets should be supported by most Controller implementations with Advertising +# Extensions support. +# Increasing to 4 should gives one each of legacy, 2M, 1M and Coded PHY advertising sets, when +# supported by Controller implementation. +CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 diff --git a/samples/bluetooth/broadcaster_multiple/sample.yaml b/samples/bluetooth/broadcaster_multiple/sample.yaml index 96e274f5514a4..995c97ad2a062 100644 --- a/samples/bluetooth/broadcaster_multiple/sample.yaml +++ b/samples/bluetooth/broadcaster_multiple/sample.yaml @@ -1,14 +1,24 @@ sample: name: Bluetooth Multiple Extended Advertising Broadcaster +common: + harness: bluetooth + tags: + - bluetooth tests: - sample.bluetooth.multiple_broadcast: - harness: bluetooth + sample.bluetooth.broadcaster_multiple: platform_allow: - qemu_cortex_m3 - qemu_x86 + integration_platforms: + - qemu_cortex_m3 + sample.bluetooth.broadcaster_multiple.bt_ll_sw_split: + extra_args: + - EXTRA_CONF_FILE=overlay-bt_ll_sw_split.conf + platform_allow: - nrf51dk/nrf51822 - nrf52_bsim - nrf52dk/nrf52832 - tags: bluetooth + - nrf52840dk/nrf52840 integration_platforms: - - qemu_cortex_m3 + - nrf52dk/nrf52832 + - nrf52840dk/nrf52840 diff --git a/samples/bluetooth/broadcaster_multiple/src/broadcaster_multiple.c b/samples/bluetooth/broadcaster_multiple/src/broadcaster_multiple.c index 63834fa3852c0..c38e1d2868a0a 100644 --- a/samples/bluetooth/broadcaster_multiple/src/broadcaster_multiple.c +++ b/samples/bluetooth/broadcaster_multiple/src/broadcaster_multiple.c @@ -54,7 +54,7 @@ */ static uint8_t mfg_data[BT_MFG_DATA_LEN] = { 0xFF, 0xFF, }; -static const struct bt_data ad[] = { +static const struct bt_data ad_long[] = { BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, sizeof(mfg_data)), #if CONFIG_BT_CTLR_ADV_DATA_LEN_MAX > 255 BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, sizeof(mfg_data)), @@ -62,36 +62,87 @@ static const struct bt_data ad[] = { BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1), }; +static const struct bt_data ad_short[] = { + BT_DATA(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME, sizeof(CONFIG_BT_DEVICE_NAME) - 1), +}; + static struct bt_le_ext_adv *adv[CONFIG_BT_EXT_ADV_MAX_ADV_SET]; int broadcaster_multiple(void) { - struct bt_le_adv_param adv_param = { - .id = BT_ID_DEFAULT, - .sid = 0U, /* Supply unique SID when creating advertising set */ - .secondary_max_skip = 0U, - .options = BT_LE_ADV_OPT_EXT_ADV, - .interval_min = BT_GAP_ADV_FAST_INT_MIN_2, - .interval_max = BT_GAP_ADV_FAST_INT_MAX_2, - .peer = NULL, - }; int err; + /* Create and start Advertising Sets */ for (int index = 0; index < CONFIG_BT_EXT_ADV_MAX_ADV_SET; index++) { + struct bt_le_adv_param adv_param = { + .id = BT_ID_DEFAULT, + .sid = 0U, /* Supply unique SID when creating advertising set */ + .secondary_max_skip = 0U, + .options = BT_LE_ADV_OPT_EXT_ADV, + .interval_min = BT_GAP_ADV_FAST_INT_MIN_2, + .interval_max = BT_GAP_ADV_FAST_INT_MAX_2, + .peer = NULL, + }; + const struct adv_param_config { + uint32_t options; + const struct bt_data *ad; + size_t ad_size; + } param_config[] = { + { /* Use 1M legacy PDU */ + .options = BT_LE_ADV_OPT_NONE, + .ad = ad_short, + .ad_size = ARRAY_SIZE(ad_short), + }, + { /* Use 2M auxiliary PDU */ + .options = BT_LE_ADV_OPT_EXT_ADV, + .ad = ad_long, + .ad_size = ARRAY_SIZE(ad_long), + }, + { /* Use 1M auxiliary PDU */ + .options = BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_NO_2M, + .ad = ad_long, + .ad_size = ARRAY_SIZE(ad_long), + }, + { /* Use Coded PHY */ + .options = BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_CODED, + .ad = ad_long, + .ad_size = ARRAY_SIZE(ad_long), + }}; + const struct bt_data *ad; + size_t ad_size; + /* Use advertising set instance index as SID */ adv_param.sid = index; + /* Advertising set options, AD and AD array size */ + const struct adv_param_config *config = + ¶m_config[index % ARRAY_SIZE(param_config)]; + + adv_param.options = config->options; + ad = config->ad; + ad_size = config->ad_size; + +ext_adv_create_retry: /* Create a non-connectable advertising set */ err = bt_le_ext_adv_create(&adv_param, NULL, &adv[index]); if (err) { - printk("Failed to create advertising set %d (err %d)\n", - index, err); + /* Failed creating Coded PHY advertising set? */ + if ((adv_param.options & BT_LE_ADV_OPT_CODED) != 0U) { + printk("Failed to create advertising set %d with Coded PHY " + "(err %d), retry without...\n", index, err); + + /* Retry with non-Coded PHY advertising set */ + adv_param.options &= ~BT_LE_ADV_OPT_CODED; + + goto ext_adv_create_retry; + } + + printk("Failed to create advertising set %d (err %d)\n", index, err); return err; } /* Set extended advertising data */ - err = bt_le_ext_adv_set_data(adv[index], ad, ARRAY_SIZE(ad), - NULL, 0); + err = bt_le_ext_adv_set_data(adv[index], ad, ad_size, NULL, 0); if (err) { printk("Failed to set advertising data for set %d " "(err %d)\n", index, err); diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_bis-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_bis-bt_ll_sw_split.conf index 2827eeeeab23b..8ead11b4de178 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_bis-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_bis-bt_ll_sw_split.conf @@ -70,12 +70,24 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n +CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y +CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN=y +CONFIG_BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX=n +CONFIG_BT_CTLR_SYNC_ISO_RESERVE_MAX=n +CONFIG_BT_CTLR_CENTRAL_RESERVE_MAX=n +CONFIG_BT_CTLR_PERIPHERAL_RESERVE_MAX=n +CONFIG_BT_CTLR_PERIPHERAL_ISO_RESERVE_MAX=n +CONFIG_BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX=y +CONFIG_BT_CTLR_SLOT_RESERVATION_UPDATE=n CONFIG_BT_CTLR_SCAN_UNRESERVED=y CONFIG_BT_TICKER_NEXT_SLOT_GET_MATCH=y +CONFIG_BT_TICKER_EXT=y +CONFIG_BT_TICKER_EXT_SLOT_WINDOW_YIELD=y # Control Procedure CONFIG_BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM=6 @@ -85,6 +97,8 @@ CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_SYNC_TRANSFER_SENDER=y CONFIG_BT_CTLR_ADV_ISO=y +CONFIG_BT_CTLR_ADV_ISO_SEQUENTIAL=y +CONFIG_BT_CTLR_ADV_ISO_INTERLEAVED=y CONFIG_BT_CTLR_ADV_ISO_SET=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_COUNT=4 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 @@ -95,6 +109,8 @@ CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_SYNC_PERIODIC=y CONFIG_BT_CTLR_SYNC_TRANSFER_RECEIVER=y CONFIG_BT_CTLR_SYNC_ISO=y +CONFIG_BT_CTLR_SYNC_ISO_SEQUENTIAL=y +CONFIG_BT_CTLR_SYNC_ISO_INTERLEAVED=y CONFIG_BT_CTLR_SCAN_SYNC_ISO_SET=1 CONFIG_BT_CTLR_SYNC_ISO_STREAM_COUNT=2 CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2 diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_cis-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_cis-bt_ll_sw_split.conf index 1f652ddbeb585..9d24fff8edc02 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_cis-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_cis-bt_ll_sw_split.conf @@ -38,7 +38,7 @@ CONFIG_BT_ISO_MAX_CHAN=4 # is used in the context of IPC which falls into a "Newton's Cradle" effect # where probably (CONFIG_BT_CTLR_ISO_TX_BUFFERS - CONFIG_BT_ISO_TX_BUF_COUNT) # buffers get throttled. Hence, always have the value equal or greater. -CONFIG_BT_ISO_TX_BUF_COUNT=12 +CONFIG_BT_ISO_TX_BUF_COUNT=6 CONFIG_BT_ISO_RX_BUF_COUNT=1 # Controller @@ -67,11 +67,16 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n +CONFIG_BT_CTLR_SCAN_AUX_SYNC_RESERVE_MIN=y +CONFIG_BT_CTLR_SYNC_PERIODIC_SKIP_ON_SCAN_AUX=n CONFIG_BT_CTLR_CENTRAL_RESERVE_MAX=n +CONFIG_BT_CTLR_PERIPHERAL_RESERVE_MAX=n +CONFIG_BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX=y CONFIG_BT_CTLR_SLOT_RESERVATION_UPDATE=n CONFIG_BT_CTLR_SCAN_UNRESERVED=y CONFIG_BT_TICKER_NEXT_SLOT_GET_MATCH=y @@ -92,7 +97,7 @@ CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y # ISO Transmissions CONFIG_BT_CTLR_ISOAL_SOURCES=2 -CONFIG_BT_CTLR_ISO_TX_BUFFERS=12 +CONFIG_BT_CTLR_ISO_TX_BUFFERS=6 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255 CONFIG_BT_CTLR_ISO_TX_SDU_LEN_MAX=247 diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_df-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_df-bt_ll_sw_split.conf index 7a6f8544986b0..6138d36978f45 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_df-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_df-bt_ll_sw_split.conf @@ -55,6 +55,7 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=1 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y # CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso-bt_ll_sw_split.conf index 950d1476e121d..098e4e1a66220 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso-bt_ll_sw_split.conf @@ -86,7 +86,7 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 CONFIG_BT_CTLR_SCAN_AUX_SET=3 CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_broadcast-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_broadcast-bt_ll_sw_split.conf index 015a0e102f711..b2572768b4a35 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_broadcast-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_broadcast-bt_ll_sw_split.conf @@ -35,6 +35,8 @@ CONFIG_BT_HCI_VS_FATAL_ERROR=y CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191 CONFIG_BT_CTLR_ADV_ISO=y +CONFIG_BT_CTLR_ADV_ISO_SEQUENTIAL=y +CONFIG_BT_CTLR_ADV_ISO_INTERLEAVED=y CONFIG_BT_CTLR_ADV_ISO_SET=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_COUNT=4 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 @@ -47,3 +49,4 @@ CONFIG_BT_CTLR_ISO_TX_SDU_LEN_MAX=247 CONFIG_BT_CTLR_ADVANCED_FEATURES=y CONFIG_BT_CTLR_ADV_RESERVE_MAX=n +CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_central-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_central-bt_ll_sw_split.conf index 6f84bc3d7cfe7..f5e2ae0ebaec5 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_central-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_central-bt_ll_sw_split.conf @@ -35,7 +35,7 @@ CONFIG_BT_ISO_MAX_CHAN=2 # is used in the context of IPC which falls into a "Newton's Cradle" effect # where probably (CONFIG_BT_CTLR_ISO_TX_BUFFERS - CONFIG_BT_ISO_TX_BUF_COUNT) # buffers get throttled. Hence, always have the value equal or greater. -CONFIG_BT_ISO_TX_BUF_COUNT=12 +CONFIG_BT_ISO_TX_BUF_COUNT=6 CONFIG_BT_ISO_RX_BUF_COUNT=1 # Controller @@ -56,7 +56,7 @@ CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y # ISO Transmissions CONFIG_BT_CTLR_ISOAL_SOURCES=2 -CONFIG_BT_CTLR_ISO_TX_BUFFERS=12 +CONFIG_BT_CTLR_ISO_TX_BUFFERS=6 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255 CONFIG_BT_CTLR_ISO_TX_SDU_LEN_MAX=247 diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_peripheral-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_peripheral-bt_ll_sw_split.conf index 3629ee8c9176e..268e1f0bd9035 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_peripheral-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_peripheral-bt_ll_sw_split.conf @@ -35,7 +35,7 @@ CONFIG_BT_ISO_MAX_CHAN=2 # is used in the context of IPC which falls into a "Newton's Cradle" effect # where probably (CONFIG_BT_CTLR_ISO_TX_BUFFERS - CONFIG_BT_ISO_TX_BUF_COUNT) # buffers get throttled. Hence, always have the value equal or greater. -CONFIG_BT_ISO_TX_BUF_COUNT=12 +CONFIG_BT_ISO_TX_BUF_COUNT=6 CONFIG_BT_ISO_RX_BUF_COUNT=1 # Controller @@ -56,7 +56,7 @@ CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y # ISO Transmissions CONFIG_BT_CTLR_ISOAL_SOURCES=2 -CONFIG_BT_CTLR_ISO_TX_BUFFERS=12 +CONFIG_BT_CTLR_ISO_TX_BUFFERS=6 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255 CONFIG_BT_CTLR_ISO_TX_SDU_LEN_MAX=247 @@ -66,3 +66,7 @@ CONFIG_BT_CTLR_ISO_RX_BUFFERS=4 CONFIG_BT_CTLR_ADVANCED_FEATURES=y CONFIG_BT_CTLR_ADV_RESERVE_MAX=n +CONFIG_BT_CTLR_PERIPHERAL_RESERVE_MAX=n +CONFIG_BT_CTLR_PERIPHERAL_ISO_RESERVE_MAX=n +CONFIG_BT_CTLR_EVENT_OVERHEAD_RESERVE_MAX=y +CONFIG_BT_CTLR_SLOT_RESERVATION_UPDATE=n diff --git a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_receive-bt_ll_sw_split.conf b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_receive-bt_ll_sw_split.conf index 1b2e85e7a6049..71fefc95ba0db 100644 --- a/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_receive-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_ipc/nrf5340_cpunet_iso_receive-bt_ll_sw_split.conf @@ -27,6 +27,8 @@ CONFIG_BT_HCI_VS_FATAL_ERROR=y CONFIG_BT_CTLR_SYNC_PERIODIC=y CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=191 CONFIG_BT_CTLR_SYNC_ISO=y +CONFIG_BT_CTLR_SYNC_ISO_SEQUENTIAL=y +CONFIG_BT_CTLR_SYNC_ISO_INTERLEAVED=y CONFIG_BT_CTLR_SCAN_SYNC_ISO_SET=1 CONFIG_BT_CTLR_SYNC_ISO_STREAM_COUNT=2 CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2 diff --git a/samples/bluetooth/hci_uart/overlay-all-bt_ll_sw_split.conf b/samples/bluetooth/hci_uart/overlay-all-bt_ll_sw_split.conf index 2b07f2d8bff1a..253aa5956c494 100644 --- a/samples/bluetooth/hci_uart/overlay-all-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_uart/overlay-all-bt_ll_sw_split.conf @@ -67,8 +67,9 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y diff --git a/samples/bluetooth/hci_uart_3wire/overlay-all-bt_ll_sw_split.conf b/samples/bluetooth/hci_uart_3wire/overlay-all-bt_ll_sw_split.conf index 48a48893dc8c2..bbacfffb0d027 100644 --- a/samples/bluetooth/hci_uart_3wire/overlay-all-bt_ll_sw_split.conf +++ b/samples/bluetooth/hci_uart_3wire/overlay-all-bt_ll_sw_split.conf @@ -52,8 +52,9 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y diff --git a/samples/bluetooth/observer/README.rst b/samples/bluetooth/observer/README.rst index ca59be89b5dbf..eeb518bbc192c 100644 --- a/samples/bluetooth/observer/README.rst +++ b/samples/bluetooth/observer/README.rst @@ -16,6 +16,13 @@ If the used Bluetooth Low Energy Controller supports Extended Scanning, you may enable :kconfig:option:`CONFIG_BT_EXT_ADV` in the project configuration file. Refer to the project configuration file for further details. +Building Extended Scanning support with Zephyr Controller +********************************************************* + +.. code-block:: console + + west build -b nrf52840dk/nrf52840 . -- -DCONF_FILE='prj_extended.conf' -DEXTRA_CONF_FILE='overlay-bt_ll_sw_split.conf' + Building Extended Scanning support for BBC Micro Bit board ********************************************************** diff --git a/samples/bluetooth/observer/overlay-bt_ll_sw_split.conf b/samples/bluetooth/observer/overlay-bt_ll_sw_split.conf new file mode 100644 index 0000000000000..1ed3bce6129f3 --- /dev/null +++ b/samples/bluetooth/observer/overlay-bt_ll_sw_split.conf @@ -0,0 +1,20 @@ +# Zephyr Bluetooth LE Controller needs 16 event buffers to generate Extended +# Advertising Report for receiving the complete 1650 bytes of data +CONFIG_BT_BUF_EVT_RX_COUNT=16 + +# Use Zephyr Bluetooth Low Energy Controller implementation +CONFIG_BT_LL_SW_SPLIT=y + +# Enable Coded PHY support in Zephyr Controller, if testing 4 advertising sets +CONFIG_BT_CTLR_PHY_CODED=y + +# Set maximum scan data length for Extended Scanning in Bluetooth LE Controller +CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650 + +# Increase Zephyr Bluetooth LE Controller Rx buffer to receive complete chain +# of PDUs +CONFIG_BT_CTLR_RX_BUFFERS=9 + +# Code size reduction +CONFIG_ISR_TABLES_LOCAL_DECLARATION=y +CONFIG_LTO=y diff --git a/samples/bluetooth/observer/prj_extended.conf b/samples/bluetooth/observer/prj_extended.conf index cab86c38d1493..22a765ad51c82 100644 --- a/samples/bluetooth/observer/prj_extended.conf +++ b/samples/bluetooth/observer/prj_extended.conf @@ -4,14 +4,3 @@ CONFIG_BT_OBSERVER=y # Enable Extended Scanning CONFIG_BT_EXT_ADV=y CONFIG_BT_EXT_SCAN_BUF_SIZE=1650 - -# Zephyr Bluetooth LE Controller needs 16 event buffers to generate Extended -# Advertising Report for receiving the complete 1650 bytes of data -CONFIG_BT_BUF_EVT_RX_COUNT=16 - -# Set maximum scan data length for Extended Scanning in Bluetooth LE Controller -CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650 - -# Increase Zephyr Bluetooth LE Controller Rx buffer to receive complete chain -# of PDUs -CONFIG_BT_CTLR_RX_BUFFERS=9 diff --git a/samples/bluetooth/observer/sample.yaml b/samples/bluetooth/observer/sample.yaml index c568dc74e7f8c..c8402cc2133f7 100644 --- a/samples/bluetooth/observer/sample.yaml +++ b/samples/bluetooth/observer/sample.yaml @@ -1,9 +1,11 @@ sample: - name: observer + name: Bluetooth Observer +common: + harness: bluetooth + tags: + - bluetooth tests: sample.bluetooth.observer: - harness: bluetooth - tags: bluetooth platform_allow: - qemu_cortex_m3 - qemu_x86 @@ -12,20 +14,22 @@ tests: - qemu_cortex_m3 - nrf52840dk/nrf52840 sample.bluetooth.observer.extended: - harness: bluetooth - tags: bluetooth extra_args: - CONF_FILE="prj_extended.conf" platform_allow: - qemu_cortex_m3 - qemu_x86 - - nrf52840dk/nrf52840 integration_platforms: - qemu_cortex_m3 + sample.bluetooth.observer.extended.bt_ll_sw_split: + extra_args: + - CONF_FILE="prj_extended.conf" + - EXTRA_CONF_FILE="overlay-bt_ll_sw_split.conf" + platform_allow: + - nrf52840dk/nrf52840 + integration_platforms: - nrf52840dk/nrf52840 sample.bluetooth.observer.extended.bbc_microbit.bt_ll_sw_split: - harness: bluetooth - tags: bluetooth extra_args: - CONF_FILE="prj_extended.conf" - EXTRA_CONF_FILE="debug.conf;overlay_bbc_microbit-bt_ll_sw_split.conf" diff --git a/samples/bluetooth/observer/src/observer.c b/samples/bluetooth/observer/src/observer.c index ac9a857e1ef7a..09a84f811428f 100644 --- a/samples/bluetooth/observer/src/observer.c +++ b/samples/bluetooth/observer/src/observer.c @@ -9,8 +9,6 @@ #include #include -#define NAME_LEN 30 - static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type, struct net_buf_simple *ad) { @@ -22,6 +20,8 @@ static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type, } #if defined(CONFIG_BT_EXT_ADV) +#define NAME_LEN 30 + static bool data_cb(struct bt_data *data, void *user_data) { char *name = user_data; @@ -86,7 +86,7 @@ static struct bt_le_scan_cb scan_callbacks = { }; #endif /* CONFIG_BT_EXT_ADV */ -int observer_start(void) +static int scan_start(void) { /* 30 ms continuous active scanning with duplicate filtering. */ struct bt_le_scan_param scan_param = { @@ -98,16 +98,45 @@ int observer_start(void) int err; #if defined(CONFIG_BT_EXT_ADV) - bt_le_scan_cb_register(&scan_callbacks); - printk("Registered scan callbacks\n"); + scan_param.options |= BT_LE_SCAN_OPT_CODED; #endif /* CONFIG_BT_EXT_ADV */ +scan_start_retry: + printk("Starting scanning...\n"); err = bt_le_scan_start(&scan_param, device_found); if (err) { + if ((scan_param.options & BT_LE_SCAN_OPT_CODED) != 0U) { + printk("Failed to start scanning with Coded PHY (err %d), retrying " + "without...\n", err); + + scan_param.options &= ~BT_LE_SCAN_OPT_CODED; + + goto scan_start_retry; + } + printk("Start scanning failed (err %d)\n", err); + + return err; + } + + printk("success.\n"); + + return 0; +} + +int observer_start(void) +{ + int err; + +#if defined(CONFIG_BT_EXT_ADV) + bt_le_scan_cb_register(&scan_callbacks); + printk("Registered scan callbacks\n"); +#endif /* CONFIG_BT_EXT_ADV */ + + err = scan_start(); + if (err != 0) { return err; } - printk("Started scanning...\n"); return 0; } diff --git a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_vendor.h b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_vendor.h index f8a2be9c77a71..cafe06c8a28fb 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_vendor.h +++ b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_vendor.h @@ -16,26 +16,26 @@ /* Measurement based on drifting roles that can overlap leading to collision * resolutions that consume CPU time between radio events. * Value include max end, start and scheduling CPU usage times. - * Measurements based on central_gatt_write and peripheral_gatt_write sample on - * nRF52833 SoC. + * Measurements based on central_gatt_write, peripheral_gatt_write, observer and + * broadcaster_multiple samples on nRF52833 SoC. */ #if defined(CONFIG_BT_CTLR_ADV_EXT) #if defined(CONFIG_BT_OBSERVER) #if defined(CONFIG_BT_CTLR_PHY_CODED) -/* Active connection in peripheral role with extended scanning on 1M and Coded - * PHY, scheduling and receiving auxiliary PDUs. +/* Simultaneous 3 extended advertising sets with extended scanning on 1M and Coded PHY, scheduling + * and receiving auxiliary PDUs. */ #define EVENT_OVERHEAD_START_US 733 /* 24 RTC ticks */ #else /* !CONFIG_BT_CTLR_PHY_CODED */ -/* Active connection in peripheral role with extended scanning on 1M only, - * scheduling and receiving auxiliary PDUs. +/* Active connection in peripheral role with extended scanning on 1M only, scheduling and receiving + * auxiliary PDUs. */ #define EVENT_OVERHEAD_START_US 428 /* 14 RTC ticks */ #endif /* !CONFIG_BT_CTLR_PHY_CODED */ #else /* !CONFIG_BT_OBSERVER */ -/* Active connection in peripheral role with legacy scanning on 1M. +/* Simultaneous 3 extended advertising sets calculating aux offsets. */ -#define EVENT_OVERHEAD_START_US 275 /* 9 RTC ticks */ +#define EVENT_OVERHEAD_START_US 367 /* 12 RTC ticks */ #endif /* !CONFIG_BT_OBSERVER */ #else /* !CONFIG_BT_CTLR_ADV_EXT */ /* Active connection in peripheral role with additional advertising state. diff --git a/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c b/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c index 8701f3f65fa9c..46cea2e5926bd 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c +++ b/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c @@ -3179,21 +3179,26 @@ void ull_adv_aux_lll_auxptr_fill(struct pdu_adv *pdu, struct lll_adv *adv) } #else /* !CONFIG_BT_TICKER_EXT_EXPIRE_INFO */ + +/* Maximum retries when ticks_current can change, example, when 3 extended advertising sets + * configured, and 1 advertising set is calculating the aux_offset, 2 other advertising sets and 2 + * scanning instances can expire changing the ticks_current value while we are querying for + * aux_offset value. + */ +#define MAX_RETRY_TICKS_CURRENT_CHANGE ((CONFIG_BT_CTLR_ADV_AUX_SET) - 1U + 2U) + static void mfy_aux_offset_get(void *param) { struct pdu_adv_aux_ptr *aux_ptr; struct lll_adv_aux *lll_aux; struct ll_adv_aux_set *aux; uint32_t ticks_to_expire; - uint32_t ticks_to_start; uint8_t data_chan_count; uint8_t *data_chan_map; uint32_t ticks_current; - uint32_t ticks_elapsed; struct ll_adv_set *adv; uint16_t chan_counter; struct pdu_adv *pdu; - uint32_t ticks_now; uint32_t remainder = 0U; uint32_t offset_us; uint8_t ticker_id; @@ -3209,7 +3214,7 @@ static void mfy_aux_offset_get(void *param) id = TICKER_NULL; ticks_to_expire = 0U; ticks_current = adv->ticks_at_expire; - retry = 1U; /* Assert on first ticks_current change */ + retry = MAX_RETRY_TICKS_CURRENT_CHANGE; do { uint32_t volatile ret_cb; uint32_t ticks_previous; @@ -3323,11 +3328,16 @@ static void mfy_aux_offset_get(void *param) data_chan_map, data_chan_count); /* Assertion check for delayed aux_offset calculations */ + uint32_t ticks_to_start; + uint32_t ticks_elapsed; + uint32_t ticks_now; + ticks_now = ticker_ticks_now_get(); - ticks_elapsed = ticker_ticks_diff_get(ticks_now, ticks_current); - ticks_to_start = HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_XTAL_US) - - HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_PREEMPT_MIN_US); - LL_ASSERT_ERR(ticks_elapsed < ticks_to_start); + ticks_elapsed = ticker_ticks_diff_get(ticks_now, adv->ticks_at_expire); + ticks_to_start = HAL_TICKER_US_TO_TICKS(EVENT_OVERHEAD_START_US); + LL_ASSERT_MSG((ticks_elapsed <= ticks_to_start), "%s: overhead = %u (%u) us.", + __func__, HAL_TICKER_TICKS_TO_US(ticks_elapsed), + HAL_TICKER_TICKS_TO_US(ticks_to_start)); } static void ticker_op_cb(uint32_t status, void *param) diff --git a/tests/bsim/bluetooth/audio/overlay-bt_ll_sw_split.conf b/tests/bsim/bluetooth/audio/overlay-bt_ll_sw_split.conf index 502feb63f94be..c018539717d08 100644 --- a/tests/bsim/bluetooth/audio/overlay-bt_ll_sw_split.conf +++ b/tests/bsim/bluetooth/audio/overlay-bt_ll_sw_split.conf @@ -24,8 +24,9 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_ADV_ISO_RESERVE_MAX=y diff --git a/tests/bsim/bluetooth/host/adv/chain/prj.conf b/tests/bsim/bluetooth/host/adv/chain/prj.conf index 82eb16e5db0eb..fac717b87c6a4 100644 --- a/tests/bsim/bluetooth/host/adv/chain/prj.conf +++ b/tests/bsim/bluetooth/host/adv/chain/prj.conf @@ -1,12 +1,14 @@ CONFIG_BT=y + +# Broadcaster CONFIG_BT_BROADCASTER=y -CONFIG_BT_OBSERVER=y CONFIG_BT_EXT_ADV=y -CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 +CONFIG_BT_EXT_ADV_MAX_ADV_SET=4 CONFIG_BT_DEVICE_NAME="Broadcaster Multiple" # Enable Advertising Data chaining in Zephyr Bluetooth LE Controller CONFIG_BT_CTLR_ADVANCED_FEATURES=y +CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_ADV_DATA_CHAIN=y # Zephyr Bluetooth LE Controller will need to use chain PDUs when AD data @@ -22,19 +24,36 @@ CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=1650 # Increase Advertising PDU buffers to number of advertising sets times the # number of chain PDUs per advertising set when using Zephyr Bluetooth LE # Controller -CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=2 +CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 + +# Enable Coded PHY +CONFIG_BT_CTLR_PHY_CODED=y + +# Observer +CONFIG_BT_OBSERVER=y +CONFIG_BT_EXT_ADV=y # Maximum Extended Scanning buffer size CONFIG_BT_EXT_SCAN_BUF_SIZE=1650 -# Set maximum scan data length for Extended Scanning in Bluetooth LE Controller -CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650 - # The Zephyr Controller does not combine all the 1650 bytes before # fragmenting into 8 HCI reports, if a PDU has 255 bytes, # it will generate 2 HCI reports and so we need to reserve 16 buffers CONFIG_BT_BUF_EVT_RX_COUNT=16 +# Set maximum scan data length for Extended Scanning in Bluetooth LE Controller +CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650 + # Increase Zephyr Bluetooth LE Controller Rx buffer to receive complete chain # of PDUs CONFIG_BT_CTLR_RX_BUFFERS=9 + +# Enable scanning interleaved extended advertising in Zephyr Bluetooth LE +# Controller +CONFIG_BT_CTLR_ADVANCED_FEATURES=y +CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y +# CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 +CONFIG_BT_CTLR_SCAN_UNRESERVED=y +# CONFIG_BT_TICKER_EXT_EXPIRE_INFO=y diff --git a/tests/bsim/bluetooth/host/adv/chain/src/main.c b/tests/bsim/bluetooth/host/adv/chain/src/main.c index 4feb20b87c1fe..98157604c4fec 100644 --- a/tests/bsim/bluetooth/host/adv/chain/src/main.c +++ b/tests/bsim/bluetooth/host/adv/chain/src/main.c @@ -17,16 +17,21 @@ #include "babblekit/testcase.h" #define NAME_LEN 30 -#define BT_AD_DATA_NAME_SIZE (sizeof(CONFIG_BT_DEVICE_NAME) - 1U + 2U) -#define BT_AD_DATA_MFG_DATA_SIZE (254U + 2U) +#define AD_DATA_NAME_SIZE (sizeof(CONFIG_BT_DEVICE_NAME) - 1U + 2U) +#define AD_DATA_MFG_DATA_SIZE (254U + 2U) /* * for testing chaining the manufacturing data is duplicated, hence DATA_LEN needs to * add twice the size for this element */ -#define DATA_LEN MIN((BT_AD_DATA_NAME_SIZE + \ - BT_AD_DATA_MFG_DATA_SIZE + BT_AD_DATA_MFG_DATA_SIZE), \ +#define DATA_LEN MIN((AD_DATA_NAME_SIZE + \ + AD_DATA_MFG_DATA_SIZE + AD_DATA_MFG_DATA_SIZE), \ CONFIG_BT_CTLR_ADV_DATA_LEN_MAX) +/* One less extended advertising set as first one is legacy advertising in the broadcaster_multiple + * sample. + */ +#define MAX_EXT_ADV_SET (CONFIG_BT_EXT_ADV_MAX_ADV_SET - 1) + static K_SEM_DEFINE(sem_recv, 0, 1); static void test_adv_main(void) @@ -76,7 +81,7 @@ static bool data_cb(struct bt_data *data, void *user_data) static void scan_recv(const struct bt_le_scan_recv_info *info, struct net_buf_simple *buf) { - static uint8_t sid[CONFIG_BT_EXT_ADV_MAX_ADV_SET]; + static uint8_t sid[MAX_EXT_ADV_SET]; static uint8_t sid_count; char name[NAME_LEN]; uint8_t data_status; @@ -84,12 +89,13 @@ static void scan_recv(const struct bt_le_scan_recv_info *info, data_status = BT_HCI_LE_ADV_EVT_TYPE_DATA_STATUS(info->adv_props); if (data_status) { + printk("Received data status: %u\n", data_status); return; } data_len = buf->len; if (data_len != DATA_LEN) { - printk("Received datalength: %d\n", data_len); + printk("Received data length: %u\n", data_len); return; } @@ -110,8 +116,9 @@ static void scan_recv(const struct bt_le_scan_recv_info *info, sid[sid_count++] = info->sid; - if (sid_count < CONFIG_BT_EXT_ADV_MAX_ADV_SET) { - printk("Received advertising sets: %d\n", sid_count); + printk("Received advertising sets: %d\n", sid_count); + + if (sid_count < MAX_EXT_ADV_SET) { return; } @@ -145,8 +152,11 @@ static void test_scan_main(void) return; } - /* Let the recv callback verify the reports */ - k_sleep(K_SECONDS(10)); + /* Let the recv callback verify the reports; increase the wait to receive one each of + * legacy, Extended 2M, 1M and Coded PHY advertising reports. Depending on random seed + * and scan window, it may take some time to have all advertising report received. + */ + k_sleep(K_SECONDS(30)); err = k_sem_take(&sem_recv, K_NO_WAIT); if (err) { diff --git a/tests/bsim/bluetooth/host/adv/chain/tests_scripts/adv_chain.sh b/tests/bsim/bluetooth/host/adv/chain/tests_scripts/adv_chain.sh index 3f1d5c20fb87e..712487979e20a 100755 --- a/tests/bsim/bluetooth/host/adv/chain/tests_scripts/adv_chain.sh +++ b/tests/bsim/bluetooth/host/adv/chain/tests_scripts/adv_chain.sh @@ -18,6 +18,6 @@ Execute ./bs_${BOARD_TS}_tests_bsim_bluetooth_host_adv_chain_prj_conf\ -v=${verbosity_level} -s=${simulation_id} -d=1 -testid=scan Execute ./bs_2G4_phy_v1 -v=${verbosity_level} -s=${simulation_id} \ - -D=2 -sim_length=11e6 $@ + -D=2 -sim_length=31e6 $@ wait_for_background_jobs diff --git a/tests/bsim/bluetooth/ll/cis/sysbuild/hci_ipc/nrf5340_cpunet_iso_acl_group-bt_ll_sw_split.conf b/tests/bsim/bluetooth/ll/cis/sysbuild/hci_ipc/nrf5340_cpunet_iso_acl_group-bt_ll_sw_split.conf index be19c24777c28..a047b2d957776 100644 --- a/tests/bsim/bluetooth/ll/cis/sysbuild/hci_ipc/nrf5340_cpunet_iso_acl_group-bt_ll_sw_split.conf +++ b/tests/bsim/bluetooth/ll/cis/sysbuild/hci_ipc/nrf5340_cpunet_iso_acl_group-bt_ll_sw_split.conf @@ -63,8 +63,9 @@ CONFIG_BT_CTLR_ADV_DATA_BUF_MAX=6 # Increase the below to receive interleaved advertising chains CONFIG_BT_CTLR_SCAN_AUX_SET=3 +CONFIG_BT_CTLR_LOW_LAT_ULL=y # CONFIG_BT_CTLR_SCAN_AUX_USE_CHAINS=y -# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=1 +# CONFIG_BT_CTLR_SCAN_AUX_CHAIN_COUNT=3 CONFIG_BT_CTLR_ADV_RESERVE_MAX=n CONFIG_BT_CTLR_CENTRAL_RESERVE_MAX=n