Increase Throughput In Multi Role, Multi Connection System

I am trying to do a throughput analysis of a potential BLE connection architecture, so I have been customizing the throughput example found in the nRF Connect SDK. The architecture consists of one dual role "master device", one single role "slave device", and 4 single role "end-devices". I am using two nRF5340 dev boards to act as the master and slave devices, and I am using 4 smartphones with the LightBlue app as the end devices.

The master device connects as a peripheral to the 4 end devices, and then connects as a central to the slave device. To stress the connections, I want to be able to send out data from the master device to all 4 end devices at roughly 20kbps (per connection). Simultaneously I want the slave device to be able to send data to the master device at a rate around 190 kbps (it would be great if we could get that up to 380 kbps). 

The test performs well with 3 end devices and hits all the desired metrics, but struggles to hit these metrics at 4 devices and I believe that it can do better. Throughput from the slave device to the master device was 310 kbps (which is acceptable, but not ideal), and throughput to the 4 end devices was around half (around 10kbps). Attached is a screenshot of a packet sniffer running during the throughput test with 4 end devices. The top row is the connection between the master and slave devices and the bottom 4 rows are the connections between the master device and the 4 end devices. 

The following are the connection parameters used in the test:

Master-to-slave connection parameters:

Connection Interval: 7.5ms

Data Length: 251 bytes

PHY: 2M

Master-to-end-device connection parameters:
MTU: 247

Connection Interval: 25ms (one of the 4 was set at 30ms)

Slave Latency: 0

Timeout: 1000

It seems as though some notifications to the end devices get lost. Is it possible that they get lost as they get queued up to be sent out? On top of that, it seems the throughput from the slave device to the master device is limited by the alignment of the connection events from the end devices. Even though the master device is acting as a slave to the end devices, is it possible to utilize the offsets in the LL_CONNECTION_PARAM_REQ packet? Any other suggestions are also appreciated.

Parents
  • I've noticed the NRF Zephyr stack is utilizing the L2CAP connection parameter update request instead of the Link Layer request. The link layer request has the benefit of requesting offset options to help better align connection events. Does the nordic stack utilize this LL feature and make use of offsets in the request payload? It looks like the stack does not by default enable this LL feature, so is there a way to enable it? 

Reply
  • I've noticed the NRF Zephyr stack is utilizing the L2CAP connection parameter update request instead of the Link Layer request. The link layer request has the benefit of requesting offset options to help better align connection events. Does the nordic stack utilize this LL feature and make use of offsets in the request payload? It looks like the stack does not by default enable this LL feature, so is there a way to enable it? 

Children
No Data
Related