Topics

Problem with sending longer HCI messages with DLE enabled NRF52840 #ble #nrf52480 #hci


kristian.kajak@...
 

Hi,

I am having some problems with getting two NRF52840 USB dongles to communicate with each other with extended data ACL data lengths. I have flashed both the dongles with the Zephyr HCI-USB samples (slightly modified configurations to enable Data Length Extension).

Problem:
Without the DLE configurations, I was able to send 27B of data (including L2CAP length + CID headers) within one transmission so that I can actually receive the "Number of completed packets" event and see that the remote device receives this data. With the DLE enabled, I can only send up to 68B of data (again, headers included), whereas I was expecting to be able to send up to 251B. If the data length is 69 or more, I will not receive the "Number of completed packets" event and the data is not seen on the remote device.

What I have tried:
Different CTRL & HOST config modifications (including CONFIG_BT_HCI_ACL_FLOW_CONTROL=y/n, CONFIG_BT_L2CAP_TX/RX_MTU=247, CONFIG_BT_RX_BUF_LEN=258, and more...) and validated that all of them get set properly with menuconfig.
Also tried using the HCI_Host_Buffer_Size command to set the buffer size to 251 of both of the systems.
Tried increasing the Connection interval to 30ms.
Tried increasing the TX times to 17040 with HCI_LE_Set_Data_length.

Setup:
Host #1: Linux Mint Tina 19.2
Host #1: Linux Mint Tina 19.2, running on VM
Controllers #1 & #2: Zephyr HCI-USB with the following config modifications:

    CONFIG_BT_HCI_ACL_FLOW_CONTROL=y

    CONFIG_BT_RX_BUF_LEN=258

    CONFIG_BT_CTLR_PHY=y

    CONFIG_BT_CTLR_PHY_2M=y

    CONFIG_BT_CTLR_RX_BUFFERS=10

    CONFIG_BT_CTLR_TX_BUFFERS=10

    CONFIG_BT_CTLR_TX_BUFFER_SIZE=251

    CONFIG_BT_CTLR_DATA_LENGTH_MAX=251

 

    CONFIG_BT_CTLR_ADVANCED_FEATURES=y


I can of course provide additional information if requested. Hope someone can provide some ideas!

With regards,
Kristian


kristian.kajak@...
 

Hello!

I have had some progress so far. I tried the same configuration setup on the NRF52-PCA10040 dev kit with the HCI-UART sample and everything seems to work as expected. Although I do not necessarily need to use the dongles any further, it would be fascinating to understand why does it behave differently on the nrf52840 dongle. This is probably due to differences in the HCI implementation, but if anyone could point out the exact reason, I would be grateful.

With regards,

Kristian