Reputation: 128
I am trying to send around 10 MB of data through BLE
from Android device
, currently able to achieve 17Kbps, is this the best throughput through BLE
or can it be improved by any means.
Upvotes: 0
Views: 1324
Reputation: 531
17KBps is not very bad throughput. From the Android application side, the BLE throughput can be modified by two ways. You can try these methods.
(1) Use BLE write data without acknowledgement and do error checking of data from the application layer. This will improve the data transfer speed compare to write with response.
(2) Use the Data length extension feature in BLE 4.2. This can be used to increase the throughput if the host and controller of both devices support this feature. Normally when initializing a BLE connection both devices will negotiate to set maximum data length supported by both devices. If you want to manually set Data length in Android devices, use set MTU function. Data length will be set to “new MTU + 4 bytes”. 4 bytes are L2CAP overhead.
Upvotes: 1
Reputation: 844
There are many factors that go into controlling BLE throughput. The theoretical max you can achieve using GATT based APIs (and no LE Data Packet Length Extension) is 37.6 kilobytes / sec. In practice the best numbers you can achieve on an Android phone (with a good BLE chip) are going to be in the ~20kBps range
If you are interested in more details about the different factors controlling throughput check out this article
Upvotes: 2