usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

Utilizing power calibration to obtain actual received power level

TV
Tim Vancauwenbergh
Thu, Apr 3, 2025 9:27 AM

Hello

I've recently run the uhd_power_cal.py script to calibrate the RX paths of
a B200mini using a calibrated signal generator.

It generated two files, saved at /home/username/.local/share/uhd/cal:

  • b2xxmini_pwr_rx_rx2_33ECA1A#A.cal

  • b2xxmini_pwr_rx_tx+rx_33ECA1A#A.cal

Using python, I have the following code:

print(f"RX info: {usrp.get_usrp_rx_info()}")

This returns the following:

RX info: {'mboard_id': 'B200mini', 'mboard_name': 'B200mini',
'mboard_serial': '33ECA1A', 'module_serial': '33ECA1A', 'rx_antenna':
'TX/RX', 'rx_id': 'Unknown (0xffff)', 'rx_ref_power_key':
'b2xxmini_pwr_rx_tx+rx', 'rx_ref_power_serial': '33ECA1A#A',
'rx_serial': '', 'rx_subdev_name': 'FE-RX1', 'rx_subdev_spec': 'A:A'}

Running the following functions return false however.

usrp.has_rx_power_reference()
uhd.usrp.cal.database.has_cal_data('b2xxmini_pwr_rx_tx+rx', '33ECA1A#A'):

Why? How can I use the calibration file in python to obtain estimated
received power level at the RX side in dBm?
This is not clear in the
documentation. I would like to do this for the TX side as well.

Thanks!

References:
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34...
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34c
https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afb...
https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afbfb7d9
https://files.ettus.com/manual/page_power.html

Hello I've recently run the uhd_power_cal.py script to calibrate the RX paths of a B200mini using a calibrated signal generator. It generated two files, saved at /home/username/.local/share/uhd/cal: - b2xxmini_pwr_rx_rx2_33ECA1A#A.cal - b2xxmini_pwr_rx_tx+rx_33ECA1A#A.cal Using python, I have the following code: print(f"RX info: {usrp.get_usrp_rx_info()}") This returns the following: RX info: {'mboard_id': 'B200mini', 'mboard_name': 'B200mini', 'mboard_serial': '33ECA1A', 'module_serial': '33ECA1A', 'rx_antenna': 'TX/RX', 'rx_id': 'Unknown (0xffff)', 'rx_ref_power_key': 'b2xxmini_pwr_rx_tx+rx', 'rx_ref_power_serial': '33ECA1A#A', 'rx_serial': '', 'rx_subdev_name': 'FE-RX1', 'rx_subdev_spec': 'A:A'} Running the following functions return false however. usrp.has_rx_power_reference() uhd.usrp.cal.database.has_cal_data('b2xxmini_pwr_rx_tx+rx', '33ECA1A#A'): Why? *How can I use the calibration file in python to obtain estimated received power level at the RX side in dBm?* This is not clear in the documentation. I would like to do this for the TX side as well. Thanks! References: https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34... <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34c> https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afb... <https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afbfb7d9> https://files.ettus.com/manual/page_power.html
MB
Martin Braun
Tue, Apr 8, 2025 8:14 AM

Tim,

at first glance, you're doing everything right. Thanks for taking the time
and reading the docs. We'll need to look into this.

I saw you also opened https://github.com/EttusResearch/uhd/issues/842,
that's very helpful. Sorry I can't give you the right answer immediately!

--M

On Thu, Apr 3, 2025 at 11:28 AM Tim Vancauwenbergh <
tim.vancauwenbergh13@gmail.com> wrote:

Hello

I've recently run the uhd_power_cal.py script to calibrate the RX paths of
a B200mini using a calibrated signal generator.

It generated two files, saved at /home/username/.local/share/uhd/cal:

  • b2xxmini_pwr_rx_rx2_33ECA1A#A.cal

  • b2xxmini_pwr_rx_tx+rx_33ECA1A#A.cal

Using python, I have the following code:

print(f"RX info: {usrp.get_usrp_rx_info()}")

This returns the following:

RX info: {'mboard_id': 'B200mini', 'mboard_name': 'B200mini', 'mboard_serial': '33ECA1A', 'module_serial': '33ECA1A', 'rx_antenna': 'TX/RX', 'rx_id': 'Unknown (0xffff)', 'rx_ref_power_key': 'b2xxmini_pwr_rx_tx+rx', 'rx_ref_power_serial': '33ECA1A#A', 'rx_serial': '', 'rx_subdev_name': 'FE-RX1', 'rx_subdev_spec': 'A:A'}

Running the following functions return false however.

usrp.has_rx_power_reference()
uhd.usrp.cal.database.has_cal_data('b2xxmini_pwr_rx_tx+rx', '33ECA1A#A'):

Why? How can I use the calibration file in python to obtain estimated
received power level at the RX side in dBm?
This is not clear in the
documentation. I would like to do this for the TX side as well.

Thanks!

References:

https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34...
https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34c

https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afb...
https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afbfb7d9
https://files.ettus.com/manual/page_power.html


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

Tim, at first glance, you're doing everything right. Thanks for taking the time and reading the docs. We'll need to look into this. I saw you also opened https://github.com/EttusResearch/uhd/issues/842, that's very helpful. Sorry I can't give you the right answer immediately! --M On Thu, Apr 3, 2025 at 11:28 AM Tim Vancauwenbergh < tim.vancauwenbergh13@gmail.com> wrote: > Hello > > > > I've recently run the uhd_power_cal.py script to calibrate the RX paths of > a B200mini using a calibrated signal generator. > > It generated two files, saved at /home/username/.local/share/uhd/cal: > > > > - b2xxmini_pwr_rx_rx2_33ECA1A#A.cal > > - b2xxmini_pwr_rx_tx+rx_33ECA1A#A.cal > > > > Using python, I have the following code: > > print(f"RX info: {usrp.get_usrp_rx_info()}") > > This returns the following: > > RX info: {'mboard_id': 'B200mini', 'mboard_name': 'B200mini', 'mboard_serial': '33ECA1A', 'module_serial': '33ECA1A', 'rx_antenna': 'TX/RX', 'rx_id': 'Unknown (0xffff)', 'rx_ref_power_key': 'b2xxmini_pwr_rx_tx+rx', 'rx_ref_power_serial': '33ECA1A#A', 'rx_serial': '', 'rx_subdev_name': 'FE-RX1', 'rx_subdev_spec': 'A:A'} > > Running the following functions return false however. > > usrp.has_rx_power_reference() > uhd.usrp.cal.database.has_cal_data('b2xxmini_pwr_rx_tx+rx', '33ECA1A#A'): > > Why? *How can I use the calibration file in python to obtain estimated > received power level at the RX side in dBm?* This is not clear in the > documentation. I would like to do this for the TX side as well. > > Thanks! > > References: > > https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34... > <https://files.ettus.com/manual/classuhd_1_1usrp_1_1multi__usrp.html#a1dadf323c5f00ac4f93b231adc13e34c> > > https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afb... > <https://files.ettus.com/manual/classuhd_1_1usrp_1_1cal_1_1database.html#a5605b43f778efc10f29cb616afbfb7d9> > https://files.ettus.com/manual/page_power.html > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >