Packet loss due to interference in ble.

Board: nRF52810

SoftDevice: s112

SDK version: 17.0.2

I've developed a BLE application where nRF52810 as peripheral and nRF52833 as central. The peripheral continuously sends data to the central and mostly operated in a very close range. While testing my application in a crowded environment I'm experiencing data loss ( I suspect it's due to external interference ). I've checked the RSSI then, it is around -45 dBm ( I think the signal strength is good ). How can I overcome the problem?

Thank you in advance.

  • If you look at the peripheral BLE examples you can find that most of them use gatt_init(), which will upon connection exchange max MTU sizes, you can get the result of the max supported MTU size by looking at the callback handler: gatt_evt_handler() and the events NRF_BLE_GATT_EVT_ATT_MTU_UPDATED (max attribute size) and NRF_BLE_GATT_EVT_DATA_LENGTH_UPDATED (max on air size, a long attribute may be split across several of these). Example of implementation is shown in this reply:
    RE: BLE5 - Make payload size 200 bytes - the right way 

    Typically you want the data sent to be as close as possible to the max data length (NRF_BLE_GATT_EVT_DATA_LENGTH_UPDATED) for most efficient transfers.

    In a perfect world with no packet loss having a slow connection interval can give the highest throughput, but considering we don't live in a perfect world I would claim you should have a fast connection interval, this will reduce the max peak throughput, but allow stable throughput.

    Best regards,
    Kenneth

Related