Which USPRs support running UHD usrp_power_meter.py example code?

Updated Jan 8, 2025

Reported In

Hardware

  • Ettus USRP X410
  • Ettus USRP X440

Issue Details

Background:

I want to play with usrp_power_meter.py example script, and I have the info found so far:

According to the explanation of API has_rx_power_reference

Many devices either don't have a built-in reference power API, or they require calibration data for it to work. This means that it is not clear, even when the device type is known, if a device supports setting a power reference level. Use this method to query the availability of set_rx_power_reference() and get_rx_power_reference(), which will throw a uhd::not_implemented_error or uhd::runtime_error if they cannot be used.

I understand that if one USRP is not able to support this API, it will throw its corresponding error (not_implemented or runtime) for us to be able to judge.

Question:

Do we have internally maintain a table or list which lists whether each USRP support it?

If one USRP does not support these APIs, any other example code that can achieve the same functionality? (power meter)

Solution

you can use the power meter with every USRP that is calibrated for power level. UHD searches for power calibration in this order (by serial number of the daughterboard)

  1. local to your host (UHD saves a per daugtherboard calibration table on your host)
  2. delivered by the device (not supported for an USRP yet, the device would save the same table as in 1) in some internal storage).
  3. compiled into the driver (an averaged calibration table that gives reasonable results, only supported by X410)

The has_xx_power_reference tells you whether the driver could find any of this data for the given channel.

So, out of the box only the X410 can be used with the power level script. Except for the X440 which does not have gain control, you can calibrate any device like so. You will need at least a power meter to calibrate your Tx. You might then use the calibrated Tx for Rx calibration. Also using RFSA/G to calibrate the device is supported.

Be aware, that USRP calibration is in no way as exact and reliable as device calibration of NI's RFSx devices.

 

Additional Information

Note: The NI branded USRPs of the X3xx series (NI-29xx) bring their own version of calibration. These devices are calibrated during manufacturing (per device). This calibration is not compatible with the UHD version of calibration.