Dynamic BLE TX Power Config Fails (nRF5340-DK)

Hello everyone,

I’m working on a project using two nRF5340-DK boards to measure throughput and RSSI while dynamically changing the PHY and TX power. I started from the official throughput example and added:

  • RSSI measurement (I think this works)

  • A shell command config pwr <value in dBm> to adjust the transmit power, implemented similarly to the PHY-change command

The problem is that power adjustment only works at the default 0 dBm. If I try any other value, the command runs but returns an error, so it looks like my implementation isn’t actually applying the new power setting.

When I set the transmit power to anything other than 0 dBm, I get this output:

Here’s what I’ve changed (all code is available on GitHub):

  1. cmds.c

    • Added a default TX power of 0 dBm

    • Registered the config pwr subcommand in SHELL_STATIC_SUBCMD_SET_CREATE

    • Implemented the pwr_cmd function to parse and store the dBm value

  2. main.h / main.c

    • Declared extern int8_t g_tx_power; in main.h and defined it in main.c

    • Modified connection_configuration_set() to apply g_tx_power to the BLE connection

You can find the full code here:
https://github.com/diegonovo02/prueba_ble

Does anyone know why only 0 dBm works, and how I can get other power levels to apply correctly? Any pointers or fixes would be hugely appreciated!

Thanks in advance,
Diego

Related