How to enable "LE Data Packet Length Extension"?

Hello,

I try to enable the LE Data Packet Length Extension. According to the available documentation, it should be as simple, as adding `CONFIG_BT_USER_DATA_LEN_UPDATE=y` to `prj.conf` and `sysbuild/hci_ipc.conf` (and all the other redundant configuration that has to be copied to the later, once you introduce that file to your project).

warning: BT_USER_DATA_LEN_UPDATE (defined at subsys/bluetooth/host/Kconfig:366,
subsys/bluetooth/host/Kconfig:366) was assigned the value 'y' but got the value 'n'. Check these
unsatisfied dependencies: ((BT_DATA_LEN_UPDATE && BT_CONN && BT_HCI_HOST && BT_RPC_STACK) ||
(BT_DATA_LEN_UPDATE && BT_CONN && BT_HCI_HOST && BT_HCI && BT)) (=n).

In the boolean expression above, `BT_DATA_LEN_UPDATE`, `BT_CONN`, `BT_HCI` and `BT` are set. Missing is `BT_HCI_HOST`. Which can not be set directly:

error: BT_HCI_HOST (defined at subsys/bluetooth/host/Kconfig:35, subsys/bluetooth/host/Kconfig:35) is assigned in a configuration file, but is not directly user-configurable (has no prompt). It gets its value indirectly from other symbols.

Searching for `BT_HCI_HOST:

config BT_HCI_HOST
	# Hidden option to make the conditions more intuitive
	bool
	default y
	depends on !BT_HCI_RAW
	select POLL

`So, it looks like I have to de-select `BT_HCI_RAW` to get BT_HCI_HOST set to `y` (but I'm not very comfortable with KConfig). But, neither the Zepyhr project, nor the nRF Connect SDK - 2.8.0 Documentation contain any pointer to as what that configuration is supposed to do. And as this results then, in undefined symbols when linking the application firmware (missing `bt_buf_get_tx` and `bt_buf_get_tx`), I thought, I better ask here, how to enable DLE.

best regards,

a confused user

 

Edit: Formatting build error messages`

  • Hi,

    Regarding CONFIG_BT_USER_DATA_LEN_UPDATE, this is a configuration that only apply to the Bluetooth host, so it should not be in hci_ipc.conf (network core configuration). You can refer to the Throughput sample for the configuations for DLE showing this (and other adjustments for increased throughput, such as larger event length and buffer sizes).

  • Hi Einar,

    I am using NCS 2.9.0 with the nRF5340 audio application built as a unicast_server. The ADK is not setting the LE Data Packet Length Extension bit in the LL features. See attached screenshot from Ellisys. (Note that Ellisys misnames this by not including the word "Packet.") In case you're wondering, the Central I'm using does set this bit.

    I have made these related changes to the config set and expect that's all it should take:
    Host layer:
    CONFIG_BT_DATA_LEN_UPDATE=y
    CONFIG_BT_USER_DATA_LEN_UPDATE=y

    Controller layer (ipc_radio prj.conf):
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

    These changes seem to align with the Throughput example you cited. All it has are:
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 and CONFIG_BT_USER_DATA_LEN_UPDATE=y in the application prj.conf, and...
    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251 in the ipc_radio prj.conf. (Seems odd that this is duplicated.)

    What am I missing? Can you explain why this controller feature bit isn't set? And, shouldn't LE Data Packet Length Extension be enabled by default for the audio application? I'd expect it to be required for LE Audio in general.

    Also, what's the difference between CONFIG_BT_DATA_LEN_UPDATE and CONFIG_BT_USER_DATA_LEN_UPDATE?


    Thanks,
    Chris

  • Okay, silly me. LE Audio likely doesn't need LE Data Packet Length Extension because this was an ACL feature long before the ISO channels of LE Audio came along.

    Thanks,
    Chris

Related