USB840X Fanstel dongle (enable PA/LNA) with ble_connectivity does not guarantee throughput.

Hi Nordic team,

I'm using the USB840X dongle with ble_connectivity firmware (nRF5_SDK_15.3.0_59ac345\examples\connectivity\ble_connectivity\pca10059\ser_s140_usb_hci with hex/nRF5_SDK_15.3.0_connectivity.patch). On my PC, I communicate with the dongle using pc-ble-driver through the softdevice API.

  • PC + USB840X: Acts as center
  • Device (nRF52840): Acts as peripheral.

The USB840X has a BT840X module (nRF52840+Sky66112) with a SKY66112 power amplifier.


When the SKY66112 operates in bypass mode, the Device streams data to the PC, ensuring good throughput. However, enabling SKY66112 Control Codes for LNA seems to affect throughput negatively.

Is there a relationship between throughput and enabling LNA?

Parents
  • Hi,

    How do you monitor the throughput?

    I'm assuming the nRF52840 + LNA is on a custom board, can you share the design file (schematic + layout)?

    I can make the case private first if you prefer it.

    regards

    Jared 

  • Thanks for your help.

    1. How do you monitor the throughput?

    I can verify throughput using the packet counter (for example, N packets/second). It ensures functionality with the bypass mode, but in LNA mode, I'm not receiving an adequate amount of requested packets.

    2. I'm assuming the nRF52840 + LNA is on a custom board, can you share the design file (schematic + layout)?

    It's the Fanstel BT840X, unfortunately, we only have the documentation provided by the manufacturer here.


    3. I can make the case private first if you prefer it.

    The public is okay with this ticket.



    Thanks.

Reply
  • Thanks for your help.

    1. How do you monitor the throughput?

    I can verify throughput using the packet counter (for example, N packets/second). It ensures functionality with the bypass mode, but in LNA mode, I'm not receiving an adequate amount of requested packets.

    2. I'm assuming the nRF52840 + LNA is on a custom board, can you share the design file (schematic + layout)?

    It's the Fanstel BT840X, unfortunately, we only have the documentation provided by the manufacturer here.


    3. I can make the case private first if you prefer it.

    The public is okay with this ticket.



    Thanks.

Children
  • Hi,

    I see, and when you enable the LNA you see more packets being dropped? 

    What rate of packets drop do you see when you enable the LNA? How much is the difference? 

    lammobile said:
    2. I'm assuming the nRF52840 + LNA is on a custom board, can you share the design file (schematic + layout)?

    It's the Fanstel BT840X, unfortunately, we only have the documentation provided by the manufacturer here.

     SW wise I can't think of anything that would cause a higher packet loss since you use PPI + GPIOTE to setup the radio events so that the PA/LNA is enabled automatically. Which is correct,

    regards

    Jared 

  • Hi Jared,

    When I enable LNA on the Fanstel dongle (which acts as the Center device with ble_connectivity firmware), if I place the peripheral device and the Fanstel dongle close to each other, it works well, with a sample rate of 256 data packets/second (= 128 ble packets/second - combining 2 data packets for transmission at once).

    However, when I move the device further away, the throughput gradually decreases, and even at a distance of 50cm, it disconnects.

    We are using the Fanstel dongle as a Bluetooth adapter compatible with pc-ble-driver, which provides C/C++ libraries for Bluetooth Low Energy nRF5 SoftDevice serialization. Rather than relying on built-in Bluetooth and OS parameters.

    According to this documentation, the Fanstel dongle acts as a Connectivity chip and is loaded with connectivity firmware (<InstallFolder>\examples\connectivity).

    Here, in the original code, we only need to call the nrf_sdh_enable_request function, but to initialize the PA/LNA, it needs to be called after the ble_stack_init function, which we have added. We are unsure whether this is the correct flow and suitable for the application?

    #ifdef APP_PA_LNA
    
    #define APP_BLE_CONN_CFG_TAG                1                                       /**< A tag identifying the SoftDevice BLE configuration. */
    #define APP_BLE_OBSERVER_PRIO               3                                       /**< Application's BLE observer priority. You shouldn't need to modify this value. */
    
    
    static void ble_stack_init(void)
    {
        ret_code_t err_code;
    
        err_code = nrf_sdh_enable_request();
        APP_ERROR_CHECK(err_code);
    
        // Configure the BLE stack using the default settings.
        // Fetch the start address of the application RAM.
        uint32_t ram_start = 0;
        err_code = nrf_sdh_ble_default_cfg_set(APP_BLE_CONN_CFG_TAG, &ram_start);
        APP_ERROR_CHECK(err_code);
    
        // Enable BLE stack.
        err_code = nrf_sdh_ble_enable(&ram_start);
        APP_ERROR_CHECK(err_code);
    
        // Register a handler for BLE events.
        NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL);
    }
    #endif 
    
    
    
    
    int main(void) {
    
    
    ...
    
    #ifdef APP_PA_LNA
      ble_stack_init();
    
      nrf_gpio_cfg_output(APP_CPS_PIN);
      nrf_gpio_cfg_output(APP_CHL_PIN);
      nrf_gpio_pin_set(APP_CHL_PIN);
      nrf_gpio_pin_clear(APP_CPS_PIN); //enable
      pa_lna_init(APP_PA_PIN, APP_LNA_PIN);
    #else
        err_code = nrf_sdh_enable_request();
        APP_ERROR_CHECK(err_code);
    #endif 
    ...
    }

  • On the USB840X, I conducted an experiment to measure the signals of 4 GPIOs (APP_PA_PIN, APP_LNA_PIN, APP_CHL_PIN, and APP_CPS_PIN), which control the SKY66112-11 chip. Since direct wire soldering to Pins (P0.17, P0.19, P0.06, and P0.08) was not possible, I switched to (P0.02, P0.03, P0.11, and P0.13) - and we can also perform this experiment with the nRF52840-DK.


    • [PA - TX] When running the heart rate experiment (`nRF5_SDK_15.3.0_59ac345\examples\ble_peripheral\ble_app_hrs\pca10059`) and adding the PA/LNA control block, I could observe signals on the PA_PIN and LNA_PIN, indicating that GPIOTE and PPI were operational.

    • [LNA - RX] When running the experiment with ble_connectivity (`nRF5_SDK_15.3.0_59ac345\examples\connectivity\ble_connectivity\pca10059\ser_s140_usb_hci`), I didn't see any signals output on the PA_PIN and LNA_PIN.

    Could you let me know if the softdevice in ble_connectivity is activated?


    ble_connectivity.rar

    2273.ble_app_hrs.rar

    6740.pca10059.h

Related