Changing tx power has no effect under Zephyr

Hello
I don't see any change in RSSI with different TX power values under Zephyr. 1.9.1

It used to work with Nordic SDK 3.2.0  (see table below)
The HCI  API in Zephyr  that is used to set TX power does not return any errors and query reports the saved tx power, but there is no measurable RSSI difference

API used

bt_hci_cmd_send_sync(BT_HCI_OP_VS_WRITE_TX_POWER_LEVEL,...)
to write and 
bt_hci_cmd_send_sync(BT_HCI_OP_VS_READ_TX_POWER_LEVEL,...) 
to read
The functions return no errors
Under Nordic SK 3.2.0 the  following RSSI was reported at 1m 

TX Power 

Measured Power
(1 M RSSI -dBM)

Max,Average

0 (default)

55,61

8

52,54

7

52,54

6

52,55

5

52,56

4

53,57

3

53,59

2

53,60

-4

60,60

-8

63,62

-12

68,65

-16

73,69

-20

76,72

-40

Not detected,Not detected

In Zephyr it stays the same, around -55 regardless of TX power setting

Any ideas?

Thanks

Parents Reply
  • Our code is based on that sample. No errors are returned but the RSSI levels do not change. Verified that in the nRF connect mobile app on Android

    What are the alternatives?

    I could disable Zephyr BT stack  and use the SDK SoftDevice controller -if I'm not mistaken, CONFIG_BT_LL_SW_SPLIT controls that

    Is this a possibility? If so - could you point me to the API to set TX power using SoftDevice controller?

    Thanks

Children
  • Hi,

    The HCI Power Control example already uses the SoftDevice Controller. Does the unchanged example as delivered through nRF Connect SDK also not work?

    Testing the example here, on an nRF52 DK, I confirm both through power measurement (Power Profiler Kit II) and thorugh nRF Connect on Android, that TX power decreases step-wise (5 seconds on each step) then repeating that pattern indefinitely.

    Regards,
    Terje

  • The sample does work.

    NOTE 

    The sample proj.conf has 

    CONFIG_BT_CTLR_ADVANCED_FEATURES enabled. That gives a warning that a 
    CONFIG_BT_LL_SW_SPLIT dependency is missing
    But it builds and works with and without  CONFIG_BT_LL_SW_SPLIT 
    The problem is somewhere else. Our program uses mesh. I'll investigate and update.
    If you have any pointers that would be appreciated.
    Question
    What's the advantage of using ( or not using ) SoftDevice Controller vs Zephyr BT stack ( CONFIG_BT_LL_SW_SPLIT  =y)?
    Thanks
  • Hi,

    I am happy to see you solved the main issue, through addressing both advertising sets.

    When it comes to Bluetooth Controller, the SoftDevice Controller (SDC) is our proprietary BLE controller based on the link layer of our SoftDevice BLE stack. The SoftDevice Controller is the preferred controller to use with nRF Connect SDK. It is specially tailored for nRF SoCs, and this is also the controller we qualify with the Bluetooth SIG for use with our SDK, resulting in a QDID you can use for the qualification of your product. If using the Zephyr Controller then you must do the corresponding qualification yourself or rely on a third party having already done so. Regardless of which controller you use, the host layer will be the Zephyr BLE host which we also qualify for nRF Connect SDK releases.

    Regards,
    Terje

Related