Impossible to scan extended advertising data when the data size is bigger than 31 Bytes.

Hello,

I need to scan the advertising data of my peripheral wich advertise with extended advertsing and LE coded PHY.

I use zephyr 3.7, and I work if I use the BLE controller from Zephyr but that doesn't work with SoftDevice controller... I'm limited to 31 Bytes.

If my advertising data is smaller than 32 Bytes, it works.

here my scan config.

struct bt_le_scan_param scan_param = {
.type = BT_LE_SCAN_TYPE_PASSIVE,
.options = BT_LE_SCAN_OPT_CODED,
.interval = BT_GAP_SCAN_FAST_INTERVAL,
.window = BT_GAP_SCAN_FAST_WINDOW,
};

my prj.conf for my cpunet firmware:

CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

CONFIG_MBOX=y
CONFIG_IPC_SERVICE=y

CONFIG_BT=y
CONFIG_BT_HCI_RAW=y
CONFIG_BT_CTLR_ASSERT_HANDLER=y
CONFIG_BT_MAX_CONN=16

# Enable and adjust the below value as necessary
# CONFIG_BT_BUF_EVT_RX_COUNT=16
# CONFIG_BT_BUF_EVT_RX_SIZE=255
# CONFIG_BT_BUF_ACL_RX_SIZE=255
# CONFIG_BT_BUF_ACL_TX_SIZE=251
# CONFIG_BT_BUF_CMD_TX_SIZE=255

CONFIG_BT_EXT_ADV=y
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_PHY_CODED=y
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=250
CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=255

CONFIG_ASSERT=y
CONFIG_DEBUG_INFO=y
CONFIG_EXCEPTION_STACK_TRACE=y

CONFIG_IPC_RADIO_BT=y
CONFIG_IPC_RADIO_BT_HCI_IPC=y

and my prj.conf for my cpuapp:

CONFIG_LOG=y

CONFIG_DK_LIBRARY=y
CONFIG_NCS_SAMPLES_DEFAULTS=y

CONFIG_HEAP_MEM_POOL_SIZE=4096

CONFIG_BT=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_GATT_CLIENT=n
CONFIG_BT_HRS_CLIENT=n
CONFIG_BT_GATT_DM=n

CONFIG_BT_SCAN=y
CONFIG_BT_OBSERVER=y
CONFIG_BT_SCAN_FILTER_ENABLE=y
# CONFIG_BT_SCAN_UUID_CNT=1
CONFIG_BT_SCAN_MANUFACTURER_DATA_CNT=3
CONFIG_BT_SCAN_MANUFACTURER_DATA_MAX_LEN=255


CONFIG_BT_EXT_ADV=y
CONFIG_BT_USER_PHY_UPDATE=y


Do you have an idea ?

Thanks in advance.

Best regards,

julien

Parents Reply
  • Hi Dejan,

    For my project I can't use the chained data. I need to send only one advertising data packet.

    It works if I add this config in the application prj.conf:

    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


    I receive all data correctly on my scanner device.

    Thank you for your support.

    Best regards,

    Julien

Children
Related