Hi,
I designed a bluetooth device that stores 8kb of data. With 20ms connection interval, data is sent to the smart phone in 3 minutes which is to high for this project. Is there any solution to decrease this time.
Thank you.
Hi,
I designed a bluetooth device that stores 8kb of data. With 20ms connection interval, data is sent to the smart phone in 3 minutes which is to high for this project. Is there any solution to decrease this time.
Thank you.
Hello,
With 8000 kb transferred in 3 minutes you have an estimated throughput of 45 bps - this is much lower than what can be achieved. What other connection parameters are you using?
You could read about the different connection parameter's configuration and expected throughput here.
Are you familiar with the nRF Sniffer tool? It would be helpful to see a trace of the communication between your devices, to identify any potential bottlenecks in the communication.
Best regards,
Karl
memset(&add_char_params, 0, sizeof(add_char_params)); add_char_params.uuid = BLE_IPS_UUID_TX_CHAR; add_char_params.uuid_type = p_ips->uuid_type; add_char_params.init_len = 100; add_char_params.is_var_len=true; add_char_params.max_len = 100; add_char_params.char_props.read = 1; add_char_params.char_props.notify = 1;
I use ble_app_blinky peripheral example. And i changed max_len parameter to the 100 bytes seen above in the ble_ips.c. I send 100 bytes with 20ms interval from android phone but peripheral recevies 20 bytes at every 20ms. Actually i do not know how to increase throughput
Thank you.
memset(&add_char_params, 0, sizeof(add_char_params)); add_char_params.uuid = BLE_IPS_UUID_TX_CHAR; add_char_params.uuid_type = p_ips->uuid_type; add_char_params.init_len = 100; add_char_params.is_var_len=true; add_char_params.max_len = 100; add_char_params.char_props.read = 1; add_char_params.char_props.notify = 1;
I use ble_app_blinky peripheral example. And i changed max_len parameter to the 100 bytes seen above in the ble_ips.c. I send 100 bytes with 20ms interval from android phone but peripheral recevies 20 bytes at every 20ms. Actually i do not know how to increase throughput
Thank you.
The parameter you have changed here - add_char_params.max_len configures the maximal length of a single characteristic that is sent. So, this will increase throughout, but it is not as detrimental as which connection parameters are being used.
In general you can only set a preference on a peripheral device, because it is the central that decides which connection parameters are actually used - and smartphones are sometimes restrictive to accept the preferences of the peripherals if they are too frequent, since this leads to an increase in power consumption.
Either way, you could try to change the preferences of the peripheral device to see if the smartphones accepts them.
In most SDK BLE peripheral examples you can find the preferences for maximum connection interval, minimum connection interval, slave latency and connection supervision timeout as defines at the top of the example.
Change these to match the configuration described in the throughput document I linked in my previous reply, and see if this increases your throughput.
Which application are you using for your central device? Is it a custom smartphone application you have built?
Best regards,
Karl