nRF52840 DK as central (hci uart) : Zephyr : how to get max throughput

Hello,

I'm using nRF52840 DK (Central) and nRF52840 Dongle(Peripheral). Dongle flashed with Simulation program which transmits data. DK flashed with hci uart controller program which receives data. We are seeing throughput value only 48.7KBps (390kbps).
Same simulator used with Broadcom controller where we are seeing more throughput 75.4KBps.

DLE enabled on nRF52840 controller, seeing below event in btmon.
> ACL Data RX: Handle 64 flags 0x02 dlen 251

1. How to identify which PHY is used by controller?

2. How can we achieve high throughput? 

Parents Reply Children
  • Hi Hieu, Thank you. Please let me know if you need any more details.

  • Hi Alaganraj,

    Could you please also elaborate how you setup your experiments?

    What is this "simulation program which transmits data?" How can you be sure it is the same when done with Nordic and with Broadcom? Do you mean you use the same Dongle? Or do you mean it is the same Zephyr firmware?

    On the Host end, how are you interacting with the HCI device?

    Best regards,

    Hieu

  • BLE simulation program is nothing but advertising packet. This is flashed in nrf52840 dongle.

    nrf52840 DK is flashed with hci_uart program and acting as central device. this is connected to host using uart, Please refer our setup here

    https://devzone.nordicsemi.com/support/297462 

    We have our own BLE test application which is running in our embedded Linux host, which is receives advertising packet and calculates throughput ie) how many packets received per sec.

    as we can't share our BLE simulation and test app. 

    Please share steps followed by Nordic on how it will calculate the throughput of nRF52840 DK using hci_uart program. 

  • Hi Alaganraj,

    I'm afraid I am a more than a little bit confused.

    So, you have a device advertising, let's call it the Broadcaster.
    And you have an embedded Linux host receiving the advertising, let's call it the Observer.

    When you test with Nordic devices, both the Broadcaster and Observer uses Nordic device and Controller. That is clear.

    When you test with Broadcom Controller, which device is using the Broadcom Controller?


    Next, are you testing BLE or Bluetooth Mesh? 
    Why are you trying to get throughput with advertising?

    As you use the terms "BLE" and "Advertising," I assume you are testing BLE. With BLE, you should get far better throughput with a connection. The only thing advertising can do better than a connection is broadcasting data to multiple observers. Even for 1-to-n transmission, a connection should still do better.

    Best regards,

    Hieu

  • Hi Hieu,

    I take back "advertising", and it's not broadcaster as it will not accept connection.

    Sorry for confusion. 

    nRF52840 DK - Central device  

    nRF52840 Dongle - Peripheral device

    BLE_Test_app - test app running on embedded linux host (on top of Bluez stack)

    central & peripheral are in connected state.

    We have 2 products

    1. Eagle - using Broadcom controller using UART HCI interface

    2. Panda - using Nordic controller using UART HCI interface

    Test 1:

    BLE Test app running in Eagle made connection to dongle and received data & Throughput calculated.

    After testing completed, Eagle was shutdown.

    Test 2:

    BLE Test app running in Panda made connection to dongle and received data & Throughput calculated. 

    In both Test 1 & 2 same test app and dongle are used.

    >> Next, are you testing BLE or Bluetooth Mesh?  

    We are testing BLE. 

    What we need from Nordic is

    1. Max throughput value on nRF52840 DK which is Flashed w/ hci_uart program.

     Please share your setup, how you tested this. so that we can replicate the steps and confirm the throughput value from our end.

     

    Hope you understand now.

Related