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

Coded PHY on a mesh of BLE devices to improve range

I have an existing BLE project that works as a mesh but does not use nRF SDK for Mesh. Using sdk 17.0.2, s140 7.2.0 on nrf52840s and visualGDB.

It works well for most clients but the effective range is only 20-30 meters indoors in reinforced concrete buildings with noisy RF conditions. I have one place where devices in opposing hotel rooms have difficulty connecting to each other over a distance of less than 10 meters.

Currently a peripheral is set up using BLE_GAP_PHY_1MBPS and advertises using BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED to connect to a central and then starts scanning for more peripherals using the same PHY. I am thinking of switching to BLE_GAP_PHY_CODED to improve range however, I note that there is no GAP advertising type for being extended, connectable and scannable at the same time. I use the scannable feature to do DFU OTA using nrfConnect for Android as well as to check on-site whether a device is not connected to the mesh.

Is there an elegant solution for this use case to use coded PHY?

Parents
  • Switching the link to CODED_PHY for indoors connected solutions will required some testing as indoor performance of CODED_PHY is a bit lower than outdoor performance. I would suggest that we examine some of the existing situation in 1Mbps before you consider switching to CODED_PHY

    Can you share more information on the

    1. IC that you are using
    2. TX power level you are using
    3. The type of antenna that you are using
    4. How are you getting the channel map information of the WiFi interferers in the hotel to your mesh ?
    5. Can you measure on the sniffer the weakest link that cannot go more than 10meters.

    Increasing your link budget with an external antenna can equal or better the gain that comes from the CODED_PHY.
    If you have not pushed the channel map info into the mesh then you will see reduced performance, it would be interesting to see the sniffer capture of the weakest link 

    Thanks

  • The implementation I have now is non-extended 1Mbps and is performing as stated in my second paragraph. Adequate but expensive because I have to add relay nodes so often. Hence the current investigation into extended advertising using CODED_PHY.

    1. Custom NRF52840

    2. +8dbm

    3. External PCB antenna tuned for 50ohm impedance as per nRF guidelines

    4. I use a smartphone app. Not scientific but I know that 2.4Ghz channels tend to be saturated. 

    5. Sure, but what can I do with this info? I'll get back to you on this one.

    Not sure how to implement wifi channel mapping info into the mesh. Can you provide a link to a guide?

    So far, I've implemented the mesh using CODED_PHY and it functions well but there is little to no improvement in range. I've read this paper: Thesis BLE 5 (diva-portal.org) that details the range of the different PHYs indoors in a concrete house, and it seems to agree with my findings. Seems like I'm stuck installing relays to fix these connectivity issues.

    Thanks for the help.

  • - Previous measurements that were done have some basis to say  that coded phy performance indoor is not as good as outdoor. The improvements compared to 1M are mainly in the reduced re-transmissions but the range increase may be marginal. Placing the unit close to toilet WCs and bathrooms also reduced range during the test and may impact performance in the hotel scenario.

    - Can you use an external ufl antenna, as that will give you better performance compared to the PCB antenna, in , external ufl antennae have provided better performances in indoor scenarios compared to PCB antennae, the other option would be a external PA/LNA. Would any of these options be possible ?

    - Channel map (I think you are already doing this, I am placing this here for completeness):
    You can use the smartphone app, turn ON WiFi on the smartphone and connect to BLE peripheral device, after connection and link establishment, use the sd_ble_opt_get() and use the option BLE_GAP_OPT_CH_MAP  to extract the channel map that the phone is sending to the BLE Peripheral. Make sure that the smartphone app is connected to the closest WiFi access point. Use this channel map and use the  sd_ble_opt_set() and use the option BLE_GAP_OPT_CH_MAP to set the channel map on the central.

    You may have to get channel map on different points on the mesh especially if your system spans a large building, you may also need to propagate the channel map in your mesh.

    - Measuring on the sniffer for the weakest link was to look at the packet losses and see if the channel map settings had be applied or the link budget needs to be improved.I am assuming that you are already using SD 140 v7.2.0 for this build so you will be using channel map algorithm v2 which provides better WiFi resistance.

    Hope this helps. Please upvote my answer if it helpful

Reply
  • - Previous measurements that were done have some basis to say  that coded phy performance indoor is not as good as outdoor. The improvements compared to 1M are mainly in the reduced re-transmissions but the range increase may be marginal. Placing the unit close to toilet WCs and bathrooms also reduced range during the test and may impact performance in the hotel scenario.

    - Can you use an external ufl antenna, as that will give you better performance compared to the PCB antenna, in , external ufl antennae have provided better performances in indoor scenarios compared to PCB antennae, the other option would be a external PA/LNA. Would any of these options be possible ?

    - Channel map (I think you are already doing this, I am placing this here for completeness):
    You can use the smartphone app, turn ON WiFi on the smartphone and connect to BLE peripheral device, after connection and link establishment, use the sd_ble_opt_get() and use the option BLE_GAP_OPT_CH_MAP  to extract the channel map that the phone is sending to the BLE Peripheral. Make sure that the smartphone app is connected to the closest WiFi access point. Use this channel map and use the  sd_ble_opt_set() and use the option BLE_GAP_OPT_CH_MAP to set the channel map on the central.

    You may have to get channel map on different points on the mesh especially if your system spans a large building, you may also need to propagate the channel map in your mesh.

    - Measuring on the sniffer for the weakest link was to look at the packet losses and see if the channel map settings had be applied or the link budget needs to be improved.I am assuming that you are already using SD 140 v7.2.0 for this build so you will be using channel map algorithm v2 which provides better WiFi resistance.

    Hope this helps. Please upvote my answer if it helpful

Children
No Data
Related