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

What is the maximum size of data can be transferred over BLE?

Hi,

I am trying to send stream of data over BLE. I am using nRF52 development kit and in that ble_app_uart code is running. I want to send continuous data to the UART and then it should be send over BLE communication. I have checked the data rate by sending bulk of data which is 20 Bytes data in a frame. So each of the data is about 20Bytes only (20Bytes then new line then 20Bytes- this sequence continues). In this case I am not getting any issue.

While sending without newline I can send upto 220 bytes at a time. If it is more than that BLE getting disconnected from the connected device.

How to overcome this issue, if I am sending continuous data(may be around 200KB of data at instance). How to handle large amount of incoming data?

How to handle the BLE disconnecting issue in case of large incoming data?

Parents
  • There should be no limit of the amount of data, but it is indeed in throughput (amount of data per time frame). So I suspect you have some problem in flow management of your data through NUS Tx/Rx "pipes" and the limit of 220B is just artifact of e.g. running out of Tx buffers or loosing some context/overflow in your APP code. From what I see Nordic is using this in their BT 4.2/5.0 throughput demos and they transport large chunks of data (1MB) without visible problems - see here.

  • I'm afraid I don't have time to play with NUS and do any code samples. I believe that few pointers to some large buffer (keeping track where your last 20-byte or smaller block started and where should next start) and simple state machine (if packet sent then check if pointers indicate there are more data to send and if yes then cut next chunk and send it) should solve the problem.

Reply
  • I'm afraid I don't have time to play with NUS and do any code samples. I believe that few pointers to some large buffer (keeping track where your last 20-byte or smaller block started and where should next start) and simple state machine (if packet sent then check if pointers indicate there are more data to send and if yes then cut next chunk and send it) should solve the problem.

Children
No Data
Related