Improving Range between Central and Peripheral

Hi folks,
I am working with custom board based on the nrf52832 as a peripheral, and using a nrf52840dongle as the central. Running on ncs2.1, we support up to 5 (maybe more in the future) peripherals talking to the central at one time but for the purpose of the below testing some of it was done with 1 central and 1 peripheral. 
During testing we noticed that the range is not as good as we would like it to be so we tried a few things. We drop a connection once the peripheral range is about 4-5 metres away from the central and its much worse if there is a person in the direct line of sight path from central to peripheral.
1. Using an nrf52840dk as the central instead of the nrf52840dongle. This had a pretty significant improvement over the dongle
2. Using an nRF52 as the peripheral; we get a decent improvement in range
3. Reducing from 2M PHY to 1M PHY; this has a marginal but noticable improvment in range
4. Adding an external antenna to the nrf52840dk; this had a minor improvment in RSSI
5. Using the fanstel ev-bt840xe as the central which contains a power amplifier; very minor improvement in RSSI over the nrf52840dk
6. Adjusting the TX power to +8dB and +4dB (using CONFIG_BT_CTLR_TX_PWR_PLUS_*) for central and peripheral respectively; this did not seem to make a discernable difference
Things we havent tried but would likely help
7. Use coded PHY; the nrf52832 does not support this
It seems the custom board offers the worst performance when compared against other nrf52832 devices (mainly a nrf52dk) as peripheral. In addition to that the dongle offers worse performance than the 52840dk as the central. This is sort of expected because the DKs likely have a much larger antenna.
Short of redesigning the antenna on the custom board, which is not something we can easily do at this time, is there anything we can try from a configuration perspective to improve the range?
Parents
  • Hi,


    Short of redesigning the antenna on the custom board, which is not something we can easily do at this time, is there anything we can try from a configuration perspective to improve the range?

    Have you tuned the antenna on your board? 

    Best regard,
    Kaja

  • My apologies as I did not word that last point correctly. To clarify, the module we are using is the BMD-350 which has a built-in chip antenna. I meant to ask if there is anything we can try before we explore doing a board redesign.

  • Hi Piotr

    Are you pushing a lot of data, or is the issue with range mostly related to the connection dropping?

    Do you know what connection parameters you are using? 
    The connection interval, slave latency and connection supervising timeout parameters can affect the reliability of the link when encountering packet loss. 

    Did you see any difference in RSSI when increasing the output power using the CONFIG_BT_CTLR_TX_PWR_PLUS_* configuration?

    Best regards
    Torbjørn

  • Thank you for getting back to me

    Are you pushing a lot of data, or is the issue with range mostly related to the connection dropping?

    Yes, we are trying to push lots of data through the links. This works fine on our benches for the 1 central and 5 peripherals (~1m distance) but as soon as the peripherals are about a couple of metres away we see a connections start to drop (usually just 1 will drop but this significantly affects the data we process). We have seen a connection drop when a person walks between the central and peripherals even at a distance of 2 metres or so. 

    Do you know what connection parameters you are using? 

    Yes, we are using the default parameters BT_LE_CONN_PARAM_DEFAULT (Connection Interval: 30-50 ms Latency: 0 Timeout: 4 s). Are there any guides on how we can optimize the parameters for our use case (5 peripherals, streaming lots of data and improved range), I have not seen any in the docs. I realize this optimizing means we have to make trade-offs, in our case we can tolerate dropped packets if it means our connections don't drop. 

    Did you see any difference in RSSI when increasing the output power using the CONFIG_BT_CTLR_TX_PWR_PLUS_* configuration?

    I will have to do some additional testing on this to make sure, we did our initial testing with NCS 1.9 which didn't yet support this config option. Although we did try to set the tx_power as per  How to set transmit power for BLE in nRF Connect SDK?  but found it did not seem to make much difference.

Reply
  • Thank you for getting back to me

    Are you pushing a lot of data, or is the issue with range mostly related to the connection dropping?

    Yes, we are trying to push lots of data through the links. This works fine on our benches for the 1 central and 5 peripherals (~1m distance) but as soon as the peripherals are about a couple of metres away we see a connections start to drop (usually just 1 will drop but this significantly affects the data we process). We have seen a connection drop when a person walks between the central and peripherals even at a distance of 2 metres or so. 

    Do you know what connection parameters you are using? 

    Yes, we are using the default parameters BT_LE_CONN_PARAM_DEFAULT (Connection Interval: 30-50 ms Latency: 0 Timeout: 4 s). Are there any guides on how we can optimize the parameters for our use case (5 peripherals, streaming lots of data and improved range), I have not seen any in the docs. I realize this optimizing means we have to make trade-offs, in our case we can tolerate dropped packets if it means our connections don't drop. 

    Did you see any difference in RSSI when increasing the output power using the CONFIG_BT_CTLR_TX_PWR_PLUS_* configuration?

    I will have to do some additional testing on this to make sure, we did our initial testing with NCS 1.9 which didn't yet support this config option. Although we did try to set the tx_power as per  How to set transmit power for BLE in nRF Connect SDK?  but found it did not seem to make much difference.

Children
  • Hi Piotr

    In general the range sounds very poor. Even with a sub-optimal antenna you should be able to get 2m of range with a person in between in an indoor scenario, because the signal will reflect off of walls etc without having to go through the body. 
    Would you say that the range you get when using standard DK's is satisfactory, or is this also too short for your application?

    It is possible that you could configure the Bluetooth stack in such a way as to be more robust when sending a lot of data from 5 devices at the same time. 

    You mention that one link typically breaks while the others remain connected. How much is the throughput going down for the links that don't disconnect? 
    In other words, will all the links be affected, or is it just the link that disconnects that seem to be affected?

    Are the 5 peripherals close together, or placed at different locations?

    Do you know if you use the SoftDevice controller or the Zephyr controller for Bluetooth?

    Could you try with a shorter connection interval, 15ms for instance, and see if you get a more robust link?

    Best regards
    Torbjørn

Related