Why Am I Getting Coerced Reference Levels for My USRP RIO?

Updated Nov 12, 2018

Reported In



Issue Details

When I set my reference levels for my USRP RIO device in LabVIEW, they are automatically coerced to different values. For example, setting reference levels to -10 dBm and -10 dBm, they are coerced to +23 dBm and -7 dBm in the RX Streaming sample project:
Why is this happening, and how can I fix this?


A bug in the RX Reference Level correction algorithm was discovered. It produces incorrect Rx Reference Level configuration that is off by 7 to 20 dB, depending on the local oscillator (LO) frequency. 

The entire Rx Gain and Reference Level test routine has been corrected in the manufacturing process. New USRP RIO units will be characterized with the updated algorithms. However, if your device was manufactured before December 2014, it may be affected. You can install the NI-USRP driver, which includes a utility VI that corrects the data which causes the incorrect Reference level configuration. Once the NI-USRP driver is installed, the utility VI will be in the following path: 
<LabVIEW>\vi.lib\LabVIEW Targets\FPGA\USRP\niusrprio_tools.llb\Update Device Correction Data.vi

If you are using LabVIEW Communications please go to the following article, Why Is My USRP-294x/295x Channel 1 Rx Level Not Accurate in LabVIEW Communications?  The equivalent utility for LabVIEW Communications is stored in the following path:
<LV Comms>\Resources\vi.lib\Native\Update Device Correction Data.gvi

When you run Update Device Correction Data.vi, you cannot specify the RIO alias that you have assigned your device. You must manually type in the RIO resource, i.e. RIOx, rather than selecting it from the drop-down menu of the Select USRP RIO Device control. Otherwise the VI will error out with an Internal software error, please contact NI support message.

Note: Remove all external cabling from the RF, Ref, PPS, and GPS ports before running this VI.


Not Helpful