USRP Hardware Driver and USRP Manual  Version: 3.14.0.0.rc1-19-ga56185c6f UHD and USRP Manual
Device Calibration

# Self-Calibration

UHD software comes with several self-calibration utilities for minimizing IQ imbalance and DC offset. These utilities perform calibration sweeps using transmit leakage into the receive path (special equipment is not required). The results from a calibration are written to a CSV file in the user's home directory. UHD software will automatically apply corrections at runtime when the user re-tunes the daughterboard LO. Calibration results are specific to an individual RF board.

Note: When a calibration table is present, and the user wishes to override the calibration settings through the API: the user should re-apply the desired setting every time the LO is re-tuned.

UHD software comes with the following calibration utilities:

• 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

The following RF frontends are supported by the self-calibration utilities:

• RFX Series transceiver boards
• WBX Series transceiver boards
• SBX Series transceiver boards
• CBX Series transceiver boards
• UBX Series transceiver boards

## Calibration Utilities

UHD software installs the calibration utilities into <install-path>/bin. Disconnect any external hardware from the RF antenna ports, and run the following from the command line. Each utility will take several minutes to complete:

uhd_cal_rx_iq_balance --verbose --args=<optional device args>
uhd_cal_tx_iq_balance --verbose --args=<optional device args>
uhd_cal_tx_dc_offset --verbose --args=<optional device args>


See the output given by --help for more advanced options, such as manually choosing the frequency range and step size for the sweeps.

Note: Your daughterboard needs a serial number to run a calibration utility. Some older daughterboards may not have a serial number. If this is the case, run the following command to burn a serial number into the daughterboard's EEPROM:

<install dir>/lib/uhd/utils/usrp_burn_db_eeprom --ser=<desired serial> --args=<optional device args>


## Calibration Data

By default, calibration files are stored in the user's home/application directory:

• Linux: ${HOME}/.uhd/cal/ • Windows: APPDATA%\.uhd\cal\ If you would like to specify a custom directory, you can do so with the $UHD_CONFIG_DIR environment variable:

• Custom (any OS): \${UHD_CONFIG_DIR}/.uhd/cal/

Calibration files can easily be moved from one machine to another by copying the "cal" directory. Re-running a calibration utility will replace the existing calibration file. The old calibration file will be renamed so it may be recovered by the user.

## Ignoring Calibration Files

At runtime, the user can choose to ignore a daughterboard's calibration file by adding "ignore-cal-file" to the arguments. With the UHD API, it can be done as follows:

hint["type"] = "usrp1";
hint["ignore-cal-file"] = "";

Using tx_waveforms as an example, the user can apply this argument as follows:

tx_waveforms --args="addr=192.168.10.2,ignore-cal-file" --freq=100e6 --rate=1e6