- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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).