This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Bluetooth Mesh options for increasing or changing radio range

Hi, I would like to know all of my possible options for improving the communication range between 2 nodes in ble mesh. I am working with the nrf5 17.0.2 SDK and the nrf5 SDK for Mesh 5.0.0 on the nrf52840

From my research, one option I saw is to increase the transmit power of the radio, however from reading other answers online I am not sure what is the best way to go about this. I hope someone can give me a clear answer about this as most of the questions about this are quite old. Also I would like to know what the default transmit power of set by the SDK.

The other option is to try to use Bluetooth 5.0's coded PHY alongisde Bluetooth Mesh which, if I am not wrong, not part the specification which means it cannot be certified. So that option is out of the table.

I hope someone can shed light on other options to improve radio range, advise me how to increase tx power and let me know about the default tx power used in the SDK.

PS: Does Nordic's Instaburst feature improve the radio range? I also took at https://www.bluetooth.com/learn-about-bluetooth/key-attributes/range/#estimator, and wonder if there is a gain to modify the transmitter and receiver antenna gains through the SDK

  • Hi,

    From my research, one option I saw is to increase the transmit power of the radio, however from reading other answers online I am not sure what is the best way to go about this. I hope someone can give me a clear answer about this as most of the questions about this are quite old. Also I would like to know what the default transmit power of set by the SDK.

    Yes, you can increase the transmit power to increase the range of the nodes. Have a look at this post. The default transmit power set in our examples is 0dBm.

    The other option is to try to use Bluetooth 5.0's coded PHY alongisde Bluetooth Mesh which, if I am not wrong, not part the specification which means it cannot be certified. So that option is out of the table.

    Yes, you are correct. Bluetooth Mesh is based on the Bluetooth 4.0 specification so it doesn't support Coded PHY.

    PS: Does Nordic's Instaburst feature improve the radio range? I also took at https://www.bluetooth.com/learn-about-bluetooth/key-attributes/range/#estimator, and wonder if there is a gain to modify the transmitter and receiver antenna gains through the SDK

    No, Instaburst will help you get higher throughput but not longer range. You can only modify the TX power to get a better range through the SDK. 

    Note that one of the benefits by using mesh is that you can get a better coverage by having mulitple relay nodes in your network.

  • Thank you for your response.

    Actually, before your response I was able to figure out how to change the radio tx power, but only upon initialization.

    Initially, I tried changing the file, advertiser.c, where I noticed a function static inline void set_default_broadcast_configuration(broadcast_t * p_broadcast), where it contained the line p_broadcast->params.radio_config.tx_power = RADIO_POWER_NRF_0DBM;. Initially I set that to another value but the TXPOWER register of the RADIO peripheral did not change. So then I changed another file, which is scanner.c, in function void scanner_init(bearer_event_flag_callback_t packet_process_cb), on the line containing m_scanner.config.radio_config.tx_power = RADIO_POWER_NRF_0DBM;. When I changed RADIO_POWER_NRF_0DBM to another value, the TXPOWER Register of the RADIO peripheral changed to the value I specified, so that is a possible solution.

    But I think this also shows a gap of my of understanding about SDK and bluetooth mesh. Can you explain to me the what scanner.c and advertiser.c does in the SDK and the difference between the two? Since they both seem to use the radio.

    However, I am also interested in setting the power throughout runtime, so I would still need to go with your suggested solution. For your information, I am modifying the Dimming Example of the Mesh SDK.

    I am not quite sure how or where to use the functions sd_ble_gap_tx_power_set() and advertiser_tx_power_set() in the context of the Dimming Example. For sd_ble_gap_tx_power_set(), I am not what role to pass as the argument and the handle if applicable. For advertiser_tx_power_set(), I am not sure how to get the advertiser_t instance to pass to the function on the level of my main application. Do you have any suggestions?

  • Hi,

    Jeffe said:
    But I think this also shows a gap of my of understanding about SDK and bluetooth mesh. Can you explain to me the what scanner.c and advertiser.c does in the SDK and the difference between the two? Since they both seem to use the radio.

    It is as the names suggest one file is for scanner APIs and the other is for advertising APIs. Yes, they both use the radio. The difference is when advertising the radio will be in TX mode and will be affected by the TX power setting(will help increasing/decreasing the range). While when scanning the radio will be in RX mode and will not be affected by the TX power setting(at least for mesh). Have a look at this.

    Jeffe said:
    For sd_ble_gap_tx_power_set(), I am not what role to pass as the argument and the handle if applicable.

    Have a look at this for what to pass the the arguments.

    Jeffe said:
    For advertiser_tx_power_set(), I am not sure how to get the advertiser_t instance to pass to the function on the level of my main application. Do you have any suggestions?

    You can try using this instead mesh_opt_core_tx_power_set. Calling this will set the TX power during runtime,and the configuration will be stored in the flash.

  • Thank you for your help. This has cleared things up.


Related