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

pc-ble-driver 1.0 - maximum data throughput

Hello,

I try to achieve maximum data throughput using pc-ble-driver 1.0 and nRF51(with ble_connectivity) as BLE dongle.

First problem I encountered was the bug with setting ble_conn_bw_counts_t parameters in the sd_ble_enable() but thanks to Hung Bui it was resolved here.

Unfortunately, it is still not possible to achieve maximum data throughput (128 kbit/s). I am able to achieve only around 16,8 kbit/s - not enough for me. Of course I set minimum avaliable connection interval (7.5ms) and high bandwidth with sd_ble_opt_set(). For tests I use nRF51 device as peripheral which sends data in infinite loop and prints count of successfully sent bits. The test device seems to be working properly because it has no problem to achieve maximum data throughput with the Master Control Panel 3.10.

Here is some code:

ble_enable_params_t ble_enable_params;
ble_enable_params.gatts_enable_params.attr_tab_size    = BLE_GATTS_ATTR_TAB_SIZE_DEFAULT;
ble_enable_params.gatts_enable_params.service_changed  = false;
ble_enable_params.gap_enable_params.periph_conn_count  = 0;
ble_enable_params.gap_enable_params.central_conn_count = 1;
ble_enable_params.gap_enable_params.central_sec_count  = 0;
ble_enable_params.common_enable_params.vs_uuid_count   = 3;


ble_conn_bw_counts_t ble_conn_bw_counts;
ble_conn_bw_counts.tx_counts.high_count     = 1;
ble_conn_bw_counts.tx_counts.mid_count      = 0;
ble_conn_bw_counts.tx_counts.low_count      = 0;
ble_conn_bw_counts.rx_counts.high_count     = 1;
ble_conn_bw_counts.rx_counts.mid_count      = 0;
ble_conn_bw_counts.rx_counts.low_count      = 0;
ble_enable_params.common_enable_params.p_conn_bw_counts = &ble_conn_bw_counts;


err_code = sd_ble_enable(adapter, &ble_enable_params, NULL);

_

ble_opt_t ble_opt;
ble_opt.common_opt.conn_bw.role = BLE_GAP_ROLE_CENTRAL;
ble_opt.common_opt.conn_bw.conn_bw.conn_bw_rx = BLE_CONN_BW_HIGH;
ble_opt.common_opt.conn_bw.conn_bw.conn_bw_tx = BLE_CONN_BW_HIGH;

uint32_t err_code = sd_ble_opt_set(adapter, BLE_COMMON_OPT_CONN_BW, &ble_opt);
...

I noticed that my peripheral device in not able to send me 6 packet per every connection interval. Sometimes it sends only 3 or 1 packet.

Could you tell me if it is possible to achieve maximum data throughput with ble_connectivity and pc-ble-driver? If yes, what I have to do?

EDIT: I've attached log form nRF Sniffer: SNIFF_LOG

Parents Reply Children
No Data
Related