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

Slow BLE throughput with Nexus 5X

Hi,

I am trying to transfer large amounts of data over BLE, to a large amount of devices so speed is critical.

So far, i am able to send the nRF51422 (S110 V8.0.0) a 48Kbyte chunk of data in 12.6 seconds which is roughly 32kBits a second if i am right, which is far from the value of 125kbits i have seen in another thread.

Writes in the app are queued, so whenever onCharacteristicWrite is called, another 20 byte packet is sent to the device. Also i use the BluetoothGatt#requestConnectionPriority to get a better connection interval prior to the transfer.

To my understanding, via this method of transferring, the nexus 5 should transfer 6 packets per interval, which should be around 10mS, resulting in much faster speed than i have now.

At the minute packets seem to be going to the device at a rate of around 5mS which would indicate that there are multiple packets being sent during the interval, as i think it cannot be lower than 7.5mS (if it was sending 6, then the interval would be 32mS).

The nRF51 is configured to accept a connection interval between 7.5 and 100mS.

Is there a different method i should be using in the app, or some missed config on the nRF51?

Parents
  • That is in 1.25ms units, so then you start off with a connection interval of 36 * 1.25ms = 45 ms, and then it gets updated to 58 * 1.25ms = 72.5ms. With 6 packets with 20 bytes in each you end up with a maximum throughput of:

    6 * 20 * 8 / 0.0725 = 13.241 kbps.

  • Here is what i think to be the connection interval update,

    "386","13.985244","host","controller","HCI_CMD","18","Sent LE Connection Update" 0000 01 13 20 0e 02 00 24 00 24 00 00 00 d0 07 00 00 0010 00 00 "387","13.993223","controller","host","HCI_EVT","7","Rcvd Command Status (LE Connection Update)" 0000 04 0f 04 00 01 13 20 "388","14.054963","controller","host","HCI_EVT","13","Rcvd LE Meta (LE Connection Update Complete)" 0000 04 3e 0a 03 00 02 00 24 00 00 00 d0 07

    But i also saw this,

    313 19.140125 remote () LgElectr_90:15:dd (Nexus 5X) ATT 14 Rcvd Error Response - Attribute Not Found, Handle: 0x0007, Handle: 0x0007 (Generic Access Profile: Peripheral Preferred Connection Parameters)

    Could this be causing an issue on the android side of things? I think this may be because i am missing something like the device info service on the nRF so i will check that too.

Reply
  • Here is what i think to be the connection interval update,

    "386","13.985244","host","controller","HCI_CMD","18","Sent LE Connection Update" 0000 01 13 20 0e 02 00 24 00 24 00 00 00 d0 07 00 00 0010 00 00 "387","13.993223","controller","host","HCI_EVT","7","Rcvd Command Status (LE Connection Update)" 0000 04 0f 04 00 01 13 20 "388","14.054963","controller","host","HCI_EVT","13","Rcvd LE Meta (LE Connection Update Complete)" 0000 04 3e 0a 03 00 02 00 24 00 00 00 d0 07

    But i also saw this,

    313 19.140125 remote () LgElectr_90:15:dd (Nexus 5X) ATT 14 Rcvd Error Response - Attribute Not Found, Handle: 0x0007, Handle: 0x0007 (Generic Access Profile: Peripheral Preferred Connection Parameters)

    Could this be causing an issue on the android side of things? I think this may be because i am missing something like the device info service on the nRF so i will check that too.

Children
No Data
Related