This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

What parameters to use to send more packets per connection interval?

It seems that I can send 2 packets per connection interval but not more on the Nexus 4. When I try to send 4 packets per connection interval, it seems that I run out of TX buffers. But according to the following discussion, it seems that Ole Morten is able to send 4 packets per connection interval: devzone.nordicsemi.com/.../how-do-i-calculate-throughput-for-a-ble-link

Some of my parameters are as follows:

  • Connection interval: 7.5ms - 10.0ms
  • Slave latency: 6
  • Connection supervisory timeout: 300

My questions are the following:

  1. What parameters should I consider using to get 4 (or more) packets per connection interval?
  2. It has been suggested that we send 20 bytes per packet to get maximum throughput. What are the reasons for 20 bytes? Can we send more than 20 bytes per packet? How?
  3. It seems that a BLE data packet may have up to 37 bytes for the payload. Are we limited to 20 bytes because some of the bytes are used for link layer control info? Are there trade-offs to minimize that so that we can send more data per packet?
  4. When there are multiple nRF51822 peripherals connecting to a central (Nexus 4), are the connection intervals on the individual peripherals occurring simultaneously or sequentially? For example, during a 10ms connection interval, is the throughput on the central X or 2*X, where X is the throughput on each peripheral?

Regards, Vinh

  • I've resolved Questions 1-3. The main fix is setting the min and max connection interval params to the same value that matches my data rate. Prior to that, the Nexus 4 sometimes accepted the 7.5ms connection interval which resulted in a higher data rate and caused the TX buffers to be run out.

    I still have not figured out my own Question 4, and I'd appreciate input from anyone knowledgeable about it:

    1. When there are multiple nRF51822 peripherals connecting to a central (Nexus 4), are the connection intervals on the individual peripherals occurring simultaneously or sequentially? For example, during a 10ms connection interval, is the throughput on the central X or 2*X, where X is the throughput on each peripheral?
Related