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

Slow rate from central to peripheral

Hello,

I'm working on nrF52832 with two different Android device : Samsung Galaxy note 3 neo and HTC ONE M8.

My test :

  • Central side ( smartphone ) : each 200 ms I send 20 Bytes during 20s -> 100 * 20 Bytes
  • Peripheral side : I measure the time between the first packet and the last one.

The result :

  • HTC ONE M8 : 20.2 s to receive data
  • SAMSUNG = 43 s to receive data

We are trying to improve the data transmission because the rate is too slow on some smartphone ( ex : samsung note 3 neo ).

I think that the connection interval on ble_evt_connected return 39 -> 48,5ms ( for both smartphone )

#define MIN_CONN_INTERVAL                MSEC_TO_UNITS(10, UNIT_1_25_MS)           /**< Minimum acceptable connection interval (0.1 seconds). */
#define MAX_CONN_INTERVAL                MSEC_TO_UNITS(200, UNIT_1_25_MS)           /**< Maximum acceptable connection interval (0.2 second). 200*/
#define SLAVE_LATENCY                    0                                          /**< Slave latency. */
#define CONN_SUP_TIMEOUT                 MSEC_TO_UNITS(4000, UNIT_10_MS)            /**< Connection supervisory timeout (4 seconds). */

How can I increase the speed ?

Thank you very much.

Nabil

Parents
  • Key is what really happens in the air. Do you have any BLE sniffer to have a look? If you really transport only 20B every 200ms then there should be no excuse to have bandwidth of 20B per 400ms, all Android phones should have much lower connection interval than that and each connection even can transfer at least 20B on top of GATT. It almost looks like some application problem (meaning that you have bug in the app or protocol is having too much overhead leading to such poor performance).

Reply
  • Key is what really happens in the air. Do you have any BLE sniffer to have a look? If you really transport only 20B every 200ms then there should be no excuse to have bandwidth of 20B per 400ms, all Android phones should have much lower connection interval than that and each connection even can transfer at least 20B on top of GATT. It almost looks like some application problem (meaning that you have bug in the app or protocol is having too much overhead leading to such poor performance).

Children
No Data
Related