ask for advice on how to evaluate and improve the connection quality

Hi,

I am writing to ask for your advice on how to evaluate and improve the connection quality of an application that uses two Bluetooth modules.
Each Bluetooth module transmits 210 bytes (MTU) per second via notify to an Android app that is currently using the
https://github.com/NordicSemiconductor/Android-BLE-Library.

The current connection quality between the device and nrf52832s is worse than that of commercial tablets with Bluetooth 5.0 specifications,
and it is prone to disconnections and packet loss.

The devices we are using are purchased from an external supplier. The Bluetooth chip used is AP6256, and the specifications we found using nrf connect are as follows.

They show me the HCI log, as shown below 
The supplier insists that they are using the Bluetooth 5.2 specification. 



We have limited control over this supplier, so we have already increased the TX power, which has improved the RSSI.

err_code = sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV,m_advertising.adv_handle,4);

In addition to hardware improvements, we are not sure what else we can do to improve connection quality.
At the same time, I am also curious about other ways to evaluate the quality of a connection.

SDK17.0.2
module nrf52832
segger embedded studio 5.42a

We would appreciate your suggestions.

Thank you,

Parents Reply
  • Hi!

    A lot of packet retransmits are happening in the log. If you are in a noisy RF environment this could happen. Could also be that the Sleep Clock Accuracy of the AP6256 is not entirely correct. Not sure if you have control over this on the AP6256 side, but you could try to "compensate" for this on the nRF52 side, by setting NRF_SDH_CLOCK_LF_ACCURACY to 1 in sdk_config.h

Children
  • Hi,

    We only can control the Android app, 
    Could you teach us how to use wireshark evaluate the connection quality?

  • Hi!

    Yes.

    Here is a screenshot of the Wireshark trace.

    Under Bluetooth Low Energy Link Layer ->  Data Header -> Sequence Number, you can see if the packet is a Retransmit or not. I have applied this field as a column, so that I can easily see what packets are retransmissions. 

    In the trace you have uploaded, the central is often sending retransmissions, meaning it did not receive the packet from the peripheral. But the sniffer sees that the peripheral actually did send the packet, so it looks like it's the central that is having issues with receiving packets it should have received.

Related