This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Maximum data throughput.

I wanted to know what's the maximum data throughput if one device has both roles (Client/Server) working at the same time. I already saw the tables for the different SoftDevices (s110, s120 and s130) but not sure if the maximums they display are for one way only or for the two. I want to use this so I'm able to full duplex audio transfer over BLE, but want to know what's the maximum data I can send/receive on both sides (Central/Peripheral). thanks in advance for your answers

  • HI,

    I used the ble_app_uart_c and ble_app_uart, for central and peripheral. The intervals that I used are: 7.5ms on min and max interval connection, and slave latency 0. I then started a timer with one second and just printed a counter that is counting every time a transfer is completed. I was using two nrf51-dk with the SD130v2. If you need something else just say. Or maybe make a question and post the link here, so I can answer you there.

  • I also used the ble_app_uart_c and ble_app_uart, for central and peripheral. The intervals that I used are: 7.5ms on min and max interval connection, and slave latency 0.

    I used two nRF52 boards: one as transmitter T, one receiver R. I modified the sample application of nRF5_SDK_11.0.0_89a8197\examples\ble_peripheral\ble_app_uart as T, examples\ble_central\ble_app_uart_c as R.

    When R sends one char 's' to T, T will start to transmit 250 packets at a regular interval i. The packet size is of 20 bytes, one of them is packet sequence from 1 to 250. At receiving side, R will count how many packets it receives.

    During my experiment, interval i can be as small as 3 ms, R has no problem receiving all 250 packets within .766 second, even T and R are 3 to 4 meters away.

    So the achieved data rate is 20 bytes/pkt * 8 bits/byte * 250 pkt/second * (1/.766) = 52 kbps.

    If interval below 3 ms, packet drop started to happen.

    I wonder how you achieve > 100 kbps. My HW and SW are newer than yours. The softdevice i used is S132.

  • I'm always sending, I didn't put a interval to send. How you are putting this interval? timer, delay?

    What I did is a while on the main function that always sends data. But when I'm counting the packets I only count the ones that return SUCCESS. I got some packets lost but that it is not taking in count for the throughput measure.

  • And the measure I got is the minimum throughput I measured. I'm now doing fullduplex (sending both ways at the same time) and I can achieve 123kpbs (63kpbs on both sides). Not sure what could be your problem.

  • yes, I am using timer, which I copied from sample code ble_app_hrs.

    I care about packet loss, because my application at PC side will have problem if packet loss is more than 10%. Can you do a simple estimation on success ratio (success packets)/(total tx attempts)?

Related