USRP IQ Imbalance and How to Self-Calibrate It

Updated Mar 30, 2023

Reported In


  • USRP-2950


  • LabVIEW



Issue Details

I have observed something interesting with my USRP. Judging from the received signal as well as the IQ plot, I suspect there might be an IQ imbalance. Is there a way of checking this and/or correcting it?


Regarding which driver you are using (NI-USRP or NI-USRP RIO), you have 2 possibilities: Running the IQ imbalance calibration utilities and/or turning on/off the built-in IQ imbalance correction.

IQ calibration files
NI-USRP comes with several self-calibration utilities for minimizing IQ imbalance and DC offset. These utilities are typically located in

C:\Program Files (x86)\National Instruments\NI-USRP\utilities 

The utilities of interest for you are:
  • uhd_cal_rx_iq_balance: minimizes RX IQ imbalance vs. LO frequency. 
  • uhd_cal_tx_dc_offset: minimizes TX DC offset vs. LO frequency. 
  • uhd_cal_tx_iq_balance: minimizes TX IQ imbalance vs. LO frequency. 
For more information on these files, please see the Self-Calibration section of the USRP Hardware Driver and USRP Manual. 

Turning on/off IQ imbalance correction
If you are using the NI-USRP RIO driver, to enable the built-in correction you must run the IQ Imbalance VI seen below.
You still have to run the utilities cited above if you want this VI to have an effect.

For an example of how to do this, please see the "NI-USRP Simple Streaming" project. The IQ Imbalance subVI can be found if you open up the following VIs in a subsequent order. 

1) Tx and Rx Streaming (Host) VI 
2) Open and Configure device subVI 
3) Open and Configure device core subVI  
4) Configure Rx subVI  
5) Configure Signal (Gain) subVI  
6) Configure Signal (Common) subVI, here you will see the Calculate IQ Imbalance subVI, as shown below:

In the false case, the IQ imbalance correction and correction gain takes on predefined values.