BLE throughput under load, QOS #ble #nrf52840


After implementing a throughput test for BLE using Nordic nrf52840 hardware and Zephyr 1.14-rc1, notice some curious behavior in data we are collecting.   The test is to evaluate maximum throughput in a 1 to many and many to 1 scenario. Testing seems to show that when sending data from the central (client) to peripheral (server), the throughput performance is relatively balanced per connection but one peripheral seems to get less data and one peripheral get more than the others.  In data flow from the peripherals to the central, it is much more unbalanced with one or two peripherals having all the throughput and the others having none.

The central to peripheral is 1:N where the central is a single point source.  The many peripherals to central is an N:1 with many sources.  In my case N is 1 up to 5, but would like to be greater.  The overall aggregate throughput is constant, just not evenly distributed among the BLE devices or comm directions.  Using DLE and 2M PHY and data is transferred using bt_gatt_write_without_response on client and bt_gatt_notify and the server.

There doesn't seem to be any QOS but I would not have expected such unbalanced behavior.  Any thoughts to why this is and how to diagnose/resolve to produce consistent and balanced throughput among the BLE devices?    Do I have something misconfigured in my devices?  Can share if that will help.

Join to automatically receive all group messages.