Hi,
I am currently working on a project to transfer data from a computer to an embedded device. During the implementation, I encountered problems to achieve the required data throughput. I noticed that the measured 20kB/s did not come close to the expectations as shown under the following link:
Bluetooth 5 speed: How to achieve maximum throughput for your BLE application
I have done some investigations and will explain them here briefly before my actual question comes. Figure below shows an overview of my setup. I use a USB dongle from Nordic to make the laptop BLE capable. On the embedded device, there is an nRF52832 in use. Also shown are the used software components from Nordic and the roles on BLE level.
The used BLE connection parameters:
- Used PHY -> LE 1M (sd_api_v3 not support LE 2M)
- Connection interval of 20ms
- Data Length Extension enabled
- The MTU size 227 bytes
The application procedure is as follows. The PC application checks how many packets can be buffered in the softdevice (in this case six). The six packets (write commands) are transferred to the softdevice. At each TX_COMPLETE event, a new packet is loaded into the softdevice. This approach ensures that there are always enough packets ready for transmission. However, I found that the number of packets per connection interval influences the data throughput (as mentioned in the link above).
The problem is that I cannot find any information about the amount of packets allowed per connection interval. During my research, I have varied the MTU sizes and found that the number of packets per connection interval may depend on this parameter. I have the following two sniffer recordings.
The first one is taken with an MTU size of 227 bytes. As shown in figure below, two packets are transmitted each connection interval. In the last packet on each connection interval even the “More Data” flag is set.
A second measurement was made with increased MTU size of 247 bytes. The recording of the sniffer shows only one packet per connection interval despite the “More Data” flag being set in the respective packet.
My question is what the number of packets per connection interval depends on? If I look at all the measurements on the Internet, there should definitely be more packets per interval. Did I possibly miss a parameter?
Best regards,
Benjamin