cancel
Showing results for 
Search instead for 
Did you mean: 

Smart Bluetooth

NiVa_4337911
New Contributor II

Hi,

I have improved the data throughput for peripheral devices by setting the connection interval to the minimum (7.5ms). I used long_characteristic example as a peripheral and hello_client is modified for sending long characteristic similar to the http_client example. But still the throughput is less than 8kbps, whereas the following discussion suggesting Re: Maximum BLE throughput for reliable data transfer  ~85kbps. What can I do to improve data?

Does a big MTU helps?

How can I get ride of application level ack?

What is the practical limit with two CyBLE013025 devices as central and peripheral?

0 Likes
1 Solution
Owen_Zhang123
Moderator
Moderator

For client-to-server transfers, please use the API void bleprofile_sendWriteCmd(UINT16 attrHandle, UINT8 *data, INT32 len) instead of void bleprofile_sendWriteReq(UINT16 attrHandle, UINT8 *attr, INT32 len).

For server-to-client transfers, please use the API void bleprofile_sendNotification(UINT16 attrHandle, UINT8 *attr, INT32 len) instead of void bleprofile_sendIndication(UINT16 attrHandle, UINT8 *attr, INT32 len, LEATT_NO_PARAM_CB cb).

View solution in original post

0 Likes
3 Replies
Owen_Zhang123
Moderator
Moderator

If you want to maximize the throughput. Please try the following notes:

1. Minimize the connection interval. You've already used 7.5ms interval. You may ignore it.

2. Maximize the payload size for GATT transfers. A big MTU size will help.

3. Use unacknowledged transfers. For client-to-server transfers, use the "write-no-response" operation instead of "write". For server-to-client transfers, use the "notify" operation instead of "indicate".

NiVa_4337911
New Contributor II

Hi,

Thank you for the reply, but how can implement the step 3 in the software? Could you please provide the API reference or documentation

0 Likes
Owen_Zhang123
Moderator
Moderator

For client-to-server transfers, please use the API void bleprofile_sendWriteCmd(UINT16 attrHandle, UINT8 *data, INT32 len) instead of void bleprofile_sendWriteReq(UINT16 attrHandle, UINT8 *attr, INT32 len).

For server-to-client transfers, please use the API void bleprofile_sendNotification(UINT16 attrHandle, UINT8 *attr, INT32 len) instead of void bleprofile_sendIndication(UINT16 attrHandle, UINT8 *attr, INT32 len, LEATT_NO_PARAM_CB cb).

View solution in original post

0 Likes