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

nRF Connect for Desktop max throughput

Hi,

I'm trying to get the maximum possible throughput from a peripheral device, sending notifications to a central. I compare the throughput between 2 PCA10040 boards running example FW ble_app_att_mtu_throughput and between 2 PCA10040 boards running ble_app_att_mtu_throughput and the connectivty FW used in nRF Connect for desktop v2.4.0 with the Bluetooth Low Energy app v2.2.0 (on Windows 10). With nRF Connect and connection interval of 50ms, the throughput is much lower.

When using the ble_app_att_mtu_throughput example from SDK 14.0.0 (S132 SD V5.0), a throughput  of ~260Kbps can be archived with following parameters:

==== Current test configuration ====
Board role:             tester
ATT MTU size:           247
Connection interval:    6 units
Data length ext:        on
Connection length ext:  on
Preferred PHY:          1 Mbps

When increasing the connection interval to 50ms, a throughput of ~740Kbps can be archived (still at 1Mbps, 247 bytes);

Connection interval:    40 units

When then changing the preferred PHY to 2Mbps, the throughput becomes ~1300Kbps:

==== Current test configuration ====
Board role:             tester
ATT MTU size:           247
Connection interval:    40 units
Data length ext:        on
Connection length ext:  on
Preferred PHY:          2 Mbps

So far so good. 

I then used only 1 board for this att_mtu_throughput example and used nRF Connect for Desktop with the other board. In order to make this work I hardcoded m_gap_role in button_evt_handler() to make sure the tester board is advertising as peripheral.

In case of BOARD_TESTER_BUTTON, m_gap_role = BLE_GAP_ROLE_PERIPH

In case of BOARD_DUMMY_BUTTON, m_gap_role = BLE_GAP_ROLE_CENTRAL

In case of 7.5ms connection interval, the throughput is 250Kbps (using the same settings as above)

In case of 50ms connection interval, the throughput drops dramatically to 32Kbps (instead of 740Kbps without nRF connect).

So the throughput just decreases when the connection interval increases from 7.5ms to 50ms, while with the example application, it increases. Also the softdevice specification states higher a throughput with 50ms. Is this a known limitation of the connectivity FW/UART speed ? I would like to see the 1300 kBps using nRF Connect.

A second problem is that the 2Mbps PHY is seems not to be supported by the connectivity FW/nRF Connect, BLE app.

Regards,

Marten

Parents
  • Hi Marten,

    It's unlikely that the nRF Connect for Desktop will be able to achieve high throughput. The short reason is due to the way all events and commands are ack'ed on the transport layer between the PC and the connectivity firmware on the nRF52. This cause delays that prevent high throughput.

    I believe 2Mbps is planned later this autumn.

    Best regards,
    Kenneth

Reply
  • Hi Marten,

    It's unlikely that the nRF Connect for Desktop will be able to achieve high throughput. The short reason is due to the way all events and commands are ack'ed on the transport layer between the PC and the connectivity firmware on the nRF52. This cause delays that prevent high throughput.

    I believe 2Mbps is planned later this autumn.

    Best regards,
    Kenneth

Children
  • Hi Kenneth,

    Thanks for the answer. I will modify the ble_app_att_mtu_throughput  central part to test the max throughput of my peripheral device instead of using nRF Connect.

    Any idea what the max throughput is with nRF Connect ? It seems like ~250Kbps is the max. Is it somewhere documented ? Also the 1Mbps limit is not mentioned in the documentation I believe.

    Regards,

    Marten

  • Hi Marten,

    Don't have any max throughput numbers with nRF Connect no. But presuming they can achieve 1 packet (247byte) in each connection interval, then the throughput with 7.5ms interval will be approx: 263kbps, while 50ms will be approx 40kbps.

    Best regards,
    Kenneth

  • Hi Kenneth,

    Please let me know, does the latest version support 2M phy for serial port?

    Info: 

    nRF Connect for Desktop v3.9.3

    Bluetooth Low Energy v3.0.0

    Best regards,
    Lam

  • I'm not sure you are talking about connecting to PC BT adapter but by this configuration in C# I could achieve more than 800K :

    Laptop BT adapter:

    LMP 10

    Bluetooth Core Specification 5.1

    ** : before that I'd been using Lirad BT820-2 dongle  It didn't work more than 220K 

    ATT MTU size: 247
    hvn_tx_queue_size = 32
    #define NRF_SDH_BLE_GAP_EVENT_LENGTH MSEC_TO_UNITS(30, UNIT_1_25_MS)
    #define MIN_CONN_INTERVAL MSEC_TO_UNITS(30, UNIT_1_25_MS)
    #define MAX_CONN_INTERVAL MSEC_TO_UNITS(30, UNIT_1_25_MS)
    .tx_phys = BLE_GAP_PHY_2MBPS,
    .rx_phys = BLE_GAP_PHY_2MBPS
    opt.common_opt.conn_evt_ext.enable = 1;

    TX Buffer size increased to 32 has very high effect on speed(couldn't set more because of memory error but I believe we can fix this problem)

    The BT adapter 

    you can see more information <<here>>

Related