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

Zigbee TXPOWER change issue.

Hi,

I am trying to change the tx power of Zigbee using the following APIs : 

1) zb_set_tx_power(0x32);
2) nrf_radio_txpower_set(NRF_RADIO_TXPOWER_NEG12DBM);
3) nrf_802154_tx_power_set(NRF_RADIO_TXPOWER_NEG12DBM);

None of this API makes a significant change in the TXPOWER CPU register and similarly I cannot see any change in the Wireshark RSS. Can you suggest a proper API to see the changes in TXPOWER.

Thanks

Parents
  • Do you see the RSSI of packets in wireshark (because I can't see it when I use the sniffer).

    I use a couple of methods to check the TX power. I use nrf_802154_tx_power_get() to read the TX power from the radio driver, and then I read the TX power register using:

    uint32_t my_tx_power_register = NRF_RADIO->TX_POWER;
    NRF_LOG_INFO("my_tx_power_register: 0x%08x", my_tx_power_register);

    To print the actual value from the register. 

    Then I use the button handler (with some unused buttons) to trigger nrf_802154_tx_power_set() and print the values from the register. I see that sometimes it may take some time before the register updates, but I am fairly sure that this is only because the changes doesn't take effect before the radio is actually going to transmit something.

    So can you describe to me how you change, and what you see in wireshark? You may not see the difference between 0 and -12, but perhaps you can try some more extreme values and see if you see any change in the RSSI. E.g. +8dBm vs -40dBm. Can you show a screenshot of what the RSSI looks like on wireshark?

    Best regards,

    Edvin

Reply
  • Do you see the RSSI of packets in wireshark (because I can't see it when I use the sniffer).

    I use a couple of methods to check the TX power. I use nrf_802154_tx_power_get() to read the TX power from the radio driver, and then I read the TX power register using:

    uint32_t my_tx_power_register = NRF_RADIO->TX_POWER;
    NRF_LOG_INFO("my_tx_power_register: 0x%08x", my_tx_power_register);

    To print the actual value from the register. 

    Then I use the button handler (with some unused buttons) to trigger nrf_802154_tx_power_set() and print the values from the register. I see that sometimes it may take some time before the register updates, but I am fairly sure that this is only because the changes doesn't take effect before the radio is actually going to transmit something.

    So can you describe to me how you change, and what you see in wireshark? You may not see the difference between 0 and -12, but perhaps you can try some more extreme values and see if you see any change in the RSSI. E.g. +8dBm vs -40dBm. Can you show a screenshot of what the RSSI looks like on wireshark?

    Best regards,

    Edvin

Children
  • Hi,

    I got a same question about TX power increasing to +8dBm for nRF52840 in zigbee mode.

    1、Before reseting power value,call this function `nrf_802154_tx_power_get()`,results is 0 and `my_tx_power_register` is 0x00000000.

    2、Reseting power value 8 by calling this function `nrf_802154_tx_power_set(8)`,and call `nrf_802154_tx_power_get()`,the result is 8,but the `my_tx_power_register` still is 0x00000000

    It can be seen from this,if call `nrf_802154_tx_power_set()` can get changed TX power value by call `nrf_802154_tx_power_get()`,but the `my_tx_power_register` is same,why?

    This is part of power reset vaule code:

    NRF_LOG_INFO("Get TX Power Before Reseting:  %d", nrf_802154_tx_power_get());
    NRF_LOG_INFO("Register Valuse Before Reseting: 0x%08x", NRF_RADIO->TXPOWER);  // The actual value from the register
    nrf_802154_tx_power_set(TX_POWER_LEVEL);
    NRF_LOG_INFO("Get TX Power After Reseting:  %d", nrf_802154_tx_power_get());
    NRF_LOG_INFO("Register Valuse After Reseting: 0x%08x", NRF_RADIO->TXPOWER);

    Thanks

Related