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

CONFIG_BT_CTLR_TX_PWR_PLUS_8 has no effect while advertising

Hi,

I just noticed that setting any of the CONFIG_BT_CTLR_TX_PWR has no effect on the range and RSSI while advertising. Does this config actually do something? I tested CONFIG_BT_CTLR_TX_PWR_PLUS_8 vs BT_CTLR_TX_PWR_MINUS_40 on 15 meters distance in building and I saw literally no improvement.

Steps to reproduce:

  • Pick any Bluetooth advertising sample from NCS
  • Add CONFIG_BT_CTLR_TX_PWR_PLUS_8=y to prj.conf
  • Flash nRF52840 DK with the sample
  • Run nRF Connect on mobile
  • Place a mobile phone and DK at an appropriate fixed distance with around -95 dBm RSSI
  • Run scanning in nRF Connect and plot RSSI graph
  • Comment out the CONFIG_BT_CTLR_TX_PWR_PLUS_8=y and add BT_CTLR_TX_PWR_MINUS_40=y instead
  • Flash nRF52840 DK with the modified sample and TX value
  • Run scanning in nRF Connect and plot RSSI graph
  • Observe that BT_CTLR_TX_PWR has no effect on RSSI

This is an RSSI graph on 15m distance in my flat with CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

And this one is with BT_CTLR_TX_PWR_MINUS_40=y

Any thoughts on this please?

Parents
  • Hey,

    I think by setting CONFIG_BT_CTLR_TX_PWR_PLUS_8=y you are just enabling the supported maximum TX power level for the BLE controller. If you want to set the actual power level you probably need to set CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y and send an HCI command to the BLE controller the way it is done in this sample.

  • Hi Hakon, I think I figured out what happened.

    I think by setting CONFIG_BT_CTLR_TX_PWR_PLUS_8=y you are just enabling the supported maximum TX power level for the BLE controlle

    This is not true, CONFIG_BT_CTLR_TX_PWR_PLUS_8 should work as described. However, there is an issue with the SoftDevice controller that ignores this kconfig. To change the TX power with Nordic's controller, you need to change it via HCI command. On the other side, this kconfig works when using Zephyr BLE Controller (enabled via CONFIG_BT_LL_SW_SPLIT=y).

    Unfortunately, the SoftDevice controller is set as default and this is rather confusing. I bet most people are not aware that setting TX power differs depending on the controller. I think this should be better documented or fixed at kconfig level for Nordic's controller.

Reply
  • Hi Hakon, I think I figured out what happened.

    I think by setting CONFIG_BT_CTLR_TX_PWR_PLUS_8=y you are just enabling the supported maximum TX power level for the BLE controlle

    This is not true, CONFIG_BT_CTLR_TX_PWR_PLUS_8 should work as described. However, there is an issue with the SoftDevice controller that ignores this kconfig. To change the TX power with Nordic's controller, you need to change it via HCI command. On the other side, this kconfig works when using Zephyr BLE Controller (enabled via CONFIG_BT_LL_SW_SPLIT=y).

    Unfortunately, the SoftDevice controller is set as default and this is rather confusing. I bet most people are not aware that setting TX power differs depending on the controller. I think this should be better documented or fixed at kconfig level for Nordic's controller.

Children
Related