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
  • UPDATE
    The issue was due to the fact that my application has

    CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 as it needs 2 adv sets - one for mesh and one for beacon advertising
    However the code that set the tx power only updated tx power in the first adv set
    struct bt_hci_cp_vs_write_tx_power_level *cp;
    cp->handle = sys_cpu_to_le16(0);
    So the second adv set ( which is used for beacon advertising ) was never updated.
    cp->handle = sys_cpu_to_le16(1); does the trick
     
    Thanks for help!
Reply
  • UPDATE
    The issue was due to the fact that my application has

    CONFIG_BT_EXT_ADV_MAX_ADV_SET=2 as it needs 2 adv sets - one for mesh and one for beacon advertising
    However the code that set the tx power only updated tx power in the first adv set
    struct bt_hci_cp_vs_write_tx_power_level *cp;
    cp->handle = sys_cpu_to_le16(0);
    So the second adv set ( which is used for beacon advertising ) was never updated.
    cp->handle = sys_cpu_to_le16(1); does the trick
     
    Thanks for help!
Children
No Data
Related