Measured Android to nrf52 maximum throughput over BLE 5.0

Hi

What is your maximum throughput experienced with Android devices over Bluetooth 5.0+?

On my side, I can reach 340 kbps from Android to a nrf52 based device while transferring a 3.4 MBytes file. In the other direction (i.e. nrf52 to Android), I can reach about 700 kbps but I believe it could be much faster as we have a limiting factor independent of the nrf52.

Did you achieve better performance?

Thanks for your feedback!

Parents
  • Hello Sir, I hope you will be fine. Sir, can you help me with how you achieved that much throughput? I am trying to increase throughput but I am unable to increase it. I can only send 55kbps to the mobile app. I have a large file of size 240MB and I want to send it to the mobile app in the fastest possible way. Can you please recommend me? I will be very thankful to you.

    Best Regards,

    Sami 

Reply
  • Hello Sir, I hope you will be fine. Sir, can you help me with how you achieved that much throughput? I am trying to increase throughput but I am unable to increase it. I can only send 55kbps to the mobile app. I have a large file of size 240MB and I want to send it to the mobile app in the fastest possible way. Can you please recommend me? I will be very thankful to you.

    Best Regards,

    Sami 

Children
  • Hi Sami,

    As mentionned, the capabilities of the phones differ greatly, and it also depends on what the phone is doing. However, the general way to send long packets is to use DLE and large ATT MTU, and send large notifications. You can see a demonstration of this seen from the nRF in the throughput sample.

  • Hello Einar, thanks for the reply.

    Sir, I have the NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247. My phone is just receiving the data I have sent from NRF52.  I  have a file on the SD card that has different sensor data and its size is about 240MB I want to send this file to the mobile App in the fastest possible way. Can you please help me which will be the fastest possible way to transfer the file? I am using this example.

    I will be very thankful to you.

    Kind Regards,

    Sami Ul Haq

  • Hi Sami,

    I see, so you are using the nRF5 SDK. Then I suggest you take a look at the BLE UART example which demonstrates a sensible configuration for high throughout. The main things to note are these:

    • NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247 (which you have already commented)
    • NRF_SDH_BLE_GAP_DATA_LENGTH 251
    • NRF_SDH_BLE_GAP_EVENT_LENGTH 6

    The last one is special. The event length could be longer, perhaps up to 100 ms if the RF environment is good (not much packet loss). The key point here is that the event length should be as long as the connection interval, so that you can send packets continuously.

  • Hi Einar, thanks again. 

    Yes Sir, I am using the ble_app_uart example with the SD card read functionality added. Yes Sir, I have changed NRF_SDH_BLE_GAP_EVENT_LENGTH 100 (of course by changing the RAM start address). by doing this I have increased the rate of chunks/second(throughput), but still, I can't increase the throughput greater than 50Kbps.

    Also, I have another issue with reading large file (234MB) from the SD card, I can only read 220000 bytes from the SD card and when I am trying to increase the FILE_SIZE_MAX then 220000 bytes or when I change static uint8_t file_buffer[FILE_SIZE_MAX] (which is storing the read data from SD card) to uint16_t, then I am getting an error as shown in the attached snippet. how can I read the 234MB file from the SD card? 

    Kind Regards,

    Sami 

Related