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

Increasing Throughput

Hello

According to BLE Specifications we should be able to get 125kbits/s over the air transmission i cannot seem to get anything remotely close to this.

Is there something special that needs to be done to achieve this type of throughput?

 

I am sending 100 packets each 10 bytes long and this will take as long as 10 seconds to send / receive all packets.

and takes 40 seconds if i wait for BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE and BLE_GATTS_EVT_HVN_TX_COMPLETE events before transmitting the next packet

 

Regards,

David Hutchinson

Parents
  • Hi David

    Are the devices on both sides Nordic devices, or do you have some other device on one side?

    Do you know the connection parameters used for the BLE link?

    In general you want to keep the connection interval short for quicker BLE transmission.

    Also, if you send more data in each packet you should be able to speed things up. Are you able to buffer multiple 10 byte updates into a single packet before you send it?

    Best regards
    Torbjørn

  • Both devices are NRF5832 dev boards.

    SDK 15.2

    NRF_BLE_SCAN_MIN_CONNECTION_INTERVAL = 7.5
    NRF_BLE_SCAN_MAX_CONNECTION_INTERVAL = 7.5
    SLAVE_LATENCY = 0
    CONNECTION_SUPERVISED_TIMEOUT = 4000

    NRF_SDH_BLE_PERIPHERAL_LINK_COUNT = 4
    NRF_SDH_BLE_CENTRAL_LINK_COUNT = 4

    NRF_SDH_BLE_GATT_MAX_MTU_SIZE = 200
    NRF_SDH_BLE_GAP_DATA_LENGTH = 204

    ADV_INTERVAL = 5000
    BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED

    NRF_BLE_SCAN_SCAN_INTERVAL = 160
    NRF_BLE_SCAN_SCAN_DURATION = 0
    NRF_BLE_SCAN_SCAN_WINDOW = 80

    The scenario:
    I have multiple boards that i want to all be connected into a Mesh (i don't want to use BLE 5 Mesh because the throughput is terrible).

    each board is running the same code:
    It will send out its own advertisements and scan for other devices that are the same and initiate connections to them.

    I managed to get up to 250 kbit/s but only after i stopped advertising and scanning, and that's only with 2 boards connected to each other (so 1 connection each) however this isn't really going to work.

    I need a solution whereby the devices will still advert and scan (but maybe only every so often) so that they can see new devices to connect too. but also have reasonable throughput during the connections.

    what would you suggest as good Scanning / Advertising configurations so that they can still see each other if they need too but only do it every now and then?

    And also be able to still maintain up to 8 connections with reasonable throughput lets say 1Mbit/s?

    Thanks,

    David Hutchinson

  • Hi David

    The problem in this case is that you have to divide the total radio time between all the different roles: Central, peripheral, advertiser and scanner. 

    What is your NRF_SDH_BLE_GAP_EVENT_LENGTH parameter in sdk_config.h set to?
    You might get a higher data throughput by increasing this parameter, as it increases the allocated time for each connection. 

    Also, with so much going on I would try using a slightly longer connection interval (try 15-30ms and see if it improves the overall performance). 

    Utilizing larger packets will be critical to improving throughput in this scenario. 

    What on air bitrate are you using? 1 or 2 Mbps?

    When you say 1Mbit/s throughput I assume you mean aggregate throughput over all the 8 links?
    Either way I think this is optimistic, as there is quite a bit of overhead when managing multiple links, and you will lose throughput to the advertising and scanning operations. 
    The absolute maximum data throughput when you have a single link running is 1360kbps, but when running multiple links the total throughput will be reduced. 

    Best regards
    Torbjørn

  • I have increased the MTU to 247
    and have set Connection_interval to 100
    and an Event Length of 12.5 
    The throughput has improved to about 16 kbps but only for some of the connections 
    what is the optimal configurations for 8 connections (4 central and 4 peripheral) with a MTU of 247?

Reply Children
Related