Data length update not correct.

Hello DevZone,

I am using a nRF52840 with sdk 17.0.2 with Windows 10

I am trying to setup a connection to my Windows PC but I noticed data fragmentation and a queue buildup.

I changed the data length and MTU in the sdk config, data length to 251 and MTU to 500.

I am trying to transmit roughly 250 bytes each connection interval at 10 ms interval. Most of the times this works perfectly out of the box but sometimes I notice a buildup in the notification queue.

After using the nRF BLE sniffer and wireshark I saw that in the data length negotiation, the correct amount of bytes is negotiated (251) but the amount of time I get does not.

My request is RX 251B & 2120us TX 251B & 2120us and my response is TX 251B 9576us RX 251B 328us.

I do not know why Im only allowed to have 328us communication time to transmit my payload. Seeing the datastream in wireshark I notice that my 250 byte payload is fragmented in 4 frames to not exceed this time.


I started my project based on the blinky example so I thought nothing further about setting up the Bluetooth connection correctly.
I also noticed other BLE Periphertal examples having the same issue where the request is done for  RX 251B & 2120us TX 251B & 2120us  and the response always has the 328us time, limiting my thoughput.

This same behavior is seen on Windows 11, android phone and a macbook. Only Linux allows our request.


Is there a configuration set I am missing or how do I tackle this.

Kind regards

Related