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

How to reduce pakets loss on BLE Mesh

Hello everyone.

I am working on an RTLS application that uses BLE's RSSI measurement method (Using nRF52840 dongle) to locate a human. The system has 3 components:

  1. Beacon: tags are attached to people. These tags broadcast advertisioning according to iBeacon standard with a frequency of 1 time / second.
  2. Access point (AP): BLE devices are fixed at indoor locations. The AP receives the broadcast message from Beacon, then takes 6 bytes of data in the broadcast message and sends these 6 bytes to the Gateway via the BLE mesh network.
  3. Gateway: is a device connected via Ethernet. It is also a component of the BLE Mesh network. The gateway receives Data from the APs to send to the server. Data is a byte array [6] 

Currently I have done some tests to check the loss rate in the mesh network. I use light_switch example from BLE Mesh v320 SDK. I added simple model to send array bettwen nodes. The following results:

  1. If a Beacon broadcasts advertisioning (ADVERTISIONING_INTERVAL = 20 ms) and an AP receives it, the rate of receiving the packet is 80 - 85% -> Loss of 15% but does not understand the reason because the devices are placed close together. Especially, if increases ADVERTISIONING_INTERVAL the rate of receiving the packet is only 70 - 73%
  2. If I increase the number of beacons, the drop rate increases.
  3. If there are 9 beacon, 1 Access Point, and 1 GATEWAY, then the rate of gateway receiving packet is 40%.
  4. But if there are 6 Beacon and 4 AP and 1Gateway, the success rate is only 20%.

I want to ask, what am I wrong and how i can improve my solution?

Parents
  • Hi. 

    Some packet loss is to be expected, due to RF interference or similar. Increasing the advertising interval, increasing the number of nodes etc. will also increase the packet loss. However, the packet loss you are seeing is quite high!
    You could try testing in an environment with less air traffic (WiFi for example). 

    You say that the gateway is receiving ~40% with 9 beacons and 1 AP. Have you done any tests to figure out if the packet loss is between the Beacon - AP or between AP - Gateway?

    You are using the nRF52940 Dongle as the beacons. Which HW are you using for the AP and the gateway?

    If you want to have more reliable communication you could try to use set with acknowledge message so that when there is a timeout the stack will re-transmit the data. 


    Regards, 
    Joakim

  • Thanks! 

    How to you verify that the messages is in fact sent from the beacon/AP?

    Could you test using one of the BLE examples if you get the same bad performance?

    Joakim Jakobsen said:
    If you want to have more reliable communication you could try to use set with acknowledge message so that when there is a timeout the stack will re-transmit the data. 

    Have you tried this?

    Regards, 
    Joakim 

  • I modify the light_switch_example, then add simple_message_model to transmit character array. 

    For test success rate, I modify ble_beacon_example with the minor value increase + 1 each advertisioning. In the AP code, I will check current minor value and previous value. If  current minor value = previous minor value + 1 => success, if current minor value > previous minor value + 1 => loss some packet

    I haven't try use reliable communication. 

Reply
  • I modify the light_switch_example, then add simple_message_model to transmit character array. 

    For test success rate, I modify ble_beacon_example with the minor value increase + 1 each advertisioning. In the AP code, I will check current minor value and previous value. If  current minor value = previous minor value + 1 => success, if current minor value > previous minor value + 1 => loss some packet

    I haven't try use reliable communication. 

Children
No Data
Related