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

MTU Throughput test on custom board

Good day,

When testing our own board with a module (BT840) for communication range, we obtained the following results:
1. removal for a distance of 1m: 55-70 kB / s
2. removal for a distance of 3m: 15-30 kB / s
3. distance removal 5m: 5-12 kB / s

the experiment is as follows:

Settings:

mtu = 247;

Gap Event Length = 251;

Connection Inerval = 100 ms; (tried and 50, but did not notice the difference);

Power Level: +8 dbm

At the same time, your demo example (ble_app_att_mtu_throughput) shows a stable result at a distance of up to 10m (about 45 - 50 kB / s).

The code that performs the sending of notifications was taken from the example and adapted to our project. But the essence remains the same: adding data to the internal queue before receiving an error (NRF_ERROR_RESOURCES). After receiving an error, waiting for an event: data was sent (BLE_GATTS_EVT_HVN_TX_COMPLETE).

This means that the problem is either in our board or in the dongle. To check our board, I would like to use it in your demo example instead of one of the DCs.

in this connection questions:
- how to adapt the sample code so that it can run in the correct configuration on the user board. (that is, without additional button presses)?
- maybe there is another way to check the quality of communication on the user fee?

thanks, Max

Parents
  • Hi,

    There is really no code difference that may explain why the throughput is better at short range, the time of flight is speed of light, and the software will not be able to differentiate whether the boards are 1m or 5m apart. Based on this I can not see any code change that may explain your behavior. I think you have a marginal link budget here (maybe some reduction of a few dB due to layout, ground layer, antenna, obstructions, casing or similar..) and when you move the boards away from each other, then you get more influenced by interference source. In specific when you have large packets the risk of packet loss due to interference is increased. Also when you have a 100ms connection interval, if any packet is lost, the peers will wait until next interval before it will proceed, this means that the throughput rapidly is reduced if you have even a small increase in packet loss. 

    Best regards,
    Kenneth

  • Hello ,

    Regarding the scheme: tracing was done according to the recommendations of the module manufacturer. The case is currently not taken into account, as it is not ready yet).

    The fact that the device in case of error will wait for the new connection interval, we know, thanks to the topics on this forum and the specification 5.0. Not very convenient, but it seems to be done for the sake of small power consumption ...

    In our case, even with a small connection interval (10/25/50/100 ms), the situation does not change: traffic is not stable and the average throughput is small. In our case, you need to ensure a stable flow of at least 25 kB / s.

    I wanted to know if it is possible to run your demo (ble_app_att_mtu_throughput)  on a user card? (i.e. use one PDK nrf52840 as a “master” and a custom board as a “slave”).
    Maybe there is a code porting guide? I can do it myself, but I'm afraid I will spend too much time understanding how the project works.

    best regards, Max

Reply
  • Hello ,

    Regarding the scheme: tracing was done according to the recommendations of the module manufacturer. The case is currently not taken into account, as it is not ready yet).

    The fact that the device in case of error will wait for the new connection interval, we know, thanks to the topics on this forum and the specification 5.0. Not very convenient, but it seems to be done for the sake of small power consumption ...

    In our case, even with a small connection interval (10/25/50/100 ms), the situation does not change: traffic is not stable and the average throughput is small. In our case, you need to ensure a stable flow of at least 25 kB / s.

    I wanted to know if it is possible to run your demo (ble_app_att_mtu_throughput)  on a user card? (i.e. use one PDK nrf52840 as a “master” and a custom board as a “slave”).
    Maybe there is a code porting guide? I can do it myself, but I'm afraid I will spend too much time understanding how the project works.

    best regards, Max

Children
Related