1. Home
  2. Featured Articles
  3. Measurements of IP3 and P1dB for Spectrum Monitoring with Software Defined Radios

Measurements of IP3 and P1dB for Spectrum Monitoring with Software Defined Radios


by Mike McNulty, Dazhen Gu, Daniel G. Kuester, National Institute of Standards and Technology, and Payam Nayeri, Colorado School of Mines

Software-defined radios (SDRs) are widely used for spectrum measurements that identify and characterize signals and perform real-time spectrum monitoring, detection, and location of interference sources. Like all types of transceivers, non-linearities in RF components can cause spectral regrowth that can interfere with signals in adjacent frequencies. As a result, it’s necessary to characterize this behavior.

However, because of the highly-integrated architecture of the SDR, even though device manufacturers provide detailed specifications on front-end parameters, data on fully assembled SDRs may be limited. This information is required to capture the impacts of front-end amplification, filtering, and firmware-controlled transceiver configuration and calibration parameters. With this in mind, the authors have delved into the measurement of SDR linearity within the context of spectrum measurement.

Other researchers have investigated various properties of commercial SDRs using automation platforms, including characterizing the transmitted power versus output frequency and gain. Using this data, they were able to produce an empirical model to describe the results (1). Galal et al. (2) evaluated the tuning time versus the tuning setting to find settings that met hopping requirements for multiple communications protocols. Zitouni et al. (3) compared the advertised frequency bandwidth and the true frequency bandwidth. They found that the measured bandwidth was smaller than the advertised bandwidth. Corum et al. [4] measured the phase error between multiple SDRs used in a sensor network and used these measurements to correct the phase error. However, our literature review did not find any authors who investigated various receiver characteristics such as P1dB and IIP3 at different SDR settings. This motivated us to begin our study.

Using an automated testbed for 1 dB compression point (P1dB) and third-order input-intercept point (IIP3) revealed some surprising deviations from the expected slope of 3 dB/dB in the power response of third-order intermodulation distortion (IMD3). So, we developed a measurement technique based on linear regression that accounts for the actual slope.

Our study compares this technique with an existing one for IIP3 measurement of spectrum monitoring receivers. In consideration of the increase in IMD3 model complexity, we also proposed an alternative parameter to simplify the quantitative evaluation of spectral regrowth near the receiver noise floor. This equivalence point provides a designer with more valuable information than an IIP3 point for spectrum monitoring applications.

The Importance of P1dB and IMD3

Engineers often summarize RF receiver linearity performance with the P1dB and IIP3 figures of merit. The principal reason that IMD3 products receive the most attention is that they tend to produce output distortion with the highest power at the lowest level of input power. These products are most likely to cause problems for receivers operating in channels that are freqency-adjacent to a powerful transmission, or wideband spectrum monitoring receivers that simultaneously receive powerful signals in two different bands or channels.

Two-tone IIP3 testing is the most common way to evaluate the IMD3 properties of a device under test (DUT). The tones can be injected inside or outside of the band of interest to understand receiver-blocking characteristics at different tone spacings. The ITU recommends test procedures for manufacturers to test IIP3 in spectrum monitoring receivers and recommends obtaining IIP3 values under a wide range of conditions. The IIP3 specification from the DUT is then the lowest “worst case” result across the tested range of conditions.


As an example of widely-available consumer products, we selected an Ettus USRP B200mini for testing. It is a 1×1 SDR/cognitive radio the size of a business card that operates between 70 MHz and 6 GHz. The test hardware comprised two independent RF CW signal generators, an RF average power sensor, a two-way resistive power splitter, and a directional coupler. Together, test hardware supported 300 MHz to 6.6 GHz, covering the SDR’s tuning range. The power sensor measured the average power of the input signals at the coupled arm of the coupler and the SDR to the output. Reference outputs from the signal generator’s reference outputs synchronized baseband time and LO phase in the USRP. A schematic illustrates this in Figure 1.

Figure 1: Experimental setup

To characterize the operating characteristics of an SDR, a test platform was developed to control the SDR and the instruments. We used GNU Radio as a software abstraction to automate a wide range of SDRs, including the USRP Hardware Driver (UHD). As the test setup required multiple workstations, the platform required the ability to communicate with connected devices. Flask is a WSGI web application framework that can provide HTTP endpoints for the automation of each device.

The test software consisted of three components: the choreographer, generator devices, and data acquisition devices. The choreographer was a single piece of software that maintained the states of all the generators and data acquisition devices on the test platform. The choreographer for this study was designed using a Python Flask server. Its function was to execute the test procedure by performing operations for each device in the proper sequence. The test procedure can be repeated for a set of parameters that comprise the settings for the generator and SDR data acquisition. In addition to the endpoints required to maintain orchestration, the Flask server provided an easy HTTP interface to monitor the state of a test and reset the platform.

The three primary endpoints implemented by the choreographer were the individual state request (ISR), group state request (GSR), and the parameters request. The ISR was an HTTP POST request and allowed each device to update its state on the server. Each time the ISR endpoint was accessed, the server checked the other devices’ states to see if they were in a common state. If either group (generators, data acquisition) was in a common state, the server updated that group’s status to reflect the shared state.

The “group state request” was implemented as an HTTP GET. This endpoint provided the status of the entire system (running or finished), the status of the generators (ready, transmitting, or done), and the status of the data acquisition devices (ready, reading, or done) in JSON format. The last endpoint was the “parameters endpoint,” represented as a JSON file. The current parameter incremented when every device on the test platform posted a “done” state to the ISR endpoint.

The check for “done” was carried out every time a device requested the parameter endpoint. A single GNU Radio block designated the “stepper” was used to manage the SDR’s settings and inform downstream blocks about the parameter settings used to collect the samples. The stepper began collecting samples once all generators indicated “transmitting.”

During the settling period, a user-defined number of samples were discarded. Following the settling period, the stepper moved to the dwell period, when the first sample was marked with a “start” tag and additional tags for each setting returned by the parameter request. Once the user-defined number of dwell samples were collected, the stepper marked the final sample with an “end” tag. Finally, the stepper waited for a new parameter to be supplied by the Flask server, and the process would repeat until samples for all parameters were captured.

The stepper was designed with real-time data processing in mind, although all the data collected was raw in-phase and quadrature (IQ) data. A GNU Radio block “IQ Separation” was designed to manage the output file of the file sink block. The file sink block takes a file name as an input parameter and allows the user to update the file name in real time. Each time the IQ separation block received an end tag, a new file was created to allow for easy identification of each test parameter. The file name contained a trailing number that was incremented with each successive parameter until a folder was full of files for each parameter. Figure 2 shows the simple flow graph that was used to collect the SDR data.

Figure 2: GNU Radio flow graph for acquisition of IQ waveforms

Baseband Power Spectrum

We estimated the power spectral density (PSD) per tone in the baseband following Welch’s method (4). This power spectrum estimate is a result of fast Fourier transforms (FFTs) of overlapping windowed time domain waveforms and applying power averaging. The first step was to acquire a discrete complex-valued time series 5 × 106 long. This was split into 76 FFT windows of 216 samples before Blackman-Harris windows were applied. The uncalibrated output power spectrum was determined by the bin-wise average of linear power across the 76 modified periodograms with no time overlap.

The two input tones together act as the fundamental. The average input power per tone was measured from the power sensor, de-embedded with S-parameter measurements to the network plane at the SDR input, and the output power was determined from the PSD. To determine P1dB, we used linear regression to establish the ideal linear response Figure 3. This was the reference used to estimate the 1 dB compression value.

Figure 3: Underlying model of summary parameters for receiver linearity

IIP3 Measurements

We focused in some detail on the IIP3 test methodology and considered an alternative measurement technique that is compared with the ITU method. The existing ITU recommendation, for comparison, is to compute IIP3 from test data as:

IIP3 (ITU) =Pin + a/2

where Pin is the average power per input tone in dBm, and a is the ratio of output power at the strongest IIP3 tones to the average at the input tones in dB.

This measurement is to be repeated across a range of different test conditions, including input tone frequency separations, Pin values, center frequencies, and physical temperatures.

The general approach was to extrapolate IIP3 through statistical regression of the power response of the fundamental and IMD3 tones. The starting assumption was that the slopes of these regression lines would match those in Figure 3, at least at low power levels. Thus, in order to avoid errors at the edges of the dynamic range, we limited the domain of the fit to the range of input power levels that produced an output slope nearest to 1 dB/dB or 3 dB/dB. This was performed by minimizing the mean-squared error in the slope and was performed for each SDR (sample rate, settling time).

Figure 4: In-band power response of the DUT at 40 dB gain measured at 701.5 MHz

Some experimental data demonstrating this procedure is illustrated in Figure 4. A surprising aspect of this response is that the slope of the IMD3 power response was not 3 dB/dB. To extrapolate the intercept point, we used the slope, though this has implications for the application of IIP3. The same test data can also be used to determine the 1 dB compression point of the device. Under the same subset of input power levels as with IIP3, the P1dB was calculated by locating the 1 dB drop in output power compared to the linear regression. The output power between measurement points was estimated using a cubic interpolation function. Both IIP3 and P1dB specifications are graphically explained in Figure 3.

Measurement Examples

To demonstrate the test system and compare the IIP3 measurement techniques, we performed preliminary experiments on the Ettus USRP B200-mini. In these tests, the SDR was operated with sample rate = 5 Ms/s, settling time = 0.3 s, and dwell time = 1.0 s. There were two frequency configurations in these tests, “in-band” and “out-of-band,” referring to the location of the input tones relative to the sampling band of the SDR.

For out-of-band tests, the slope of the fundamental was collected by injecting a single tone inside the sampling band after the IMD3 slope measurement. The wide out-of-band spacing was chosen to be significantly larger than the maximum sampling rate of the SDR. The goodness-of-fit for the linear fits is expressed in terms of root-mean-squared error (RMSE). In most cases, the small errors suggested “good” fits although some IMD3 fits (particularly out-of-band) were greater than 1 dB.

One of the most important observations is the large number of IMD3 responses that deviated from the 3 dB/dB slope. This phenomenon was most pronounced in in-band tests and typically fell under the traditional prediction. This was not always the case. For example, the 701.5 MHz and 2437 MHz out-of-band tests at 10 dB gain produced IMD3 slopes of 3.69 dB/dB and 3.49 dB/dB, respectively.

Figure 5 compares the results of the two types of IIP3 measurements, and the points labeled ITU IIP3 in this figure span all points collected inside and outside the bounds. The degree of agreement between the ITU and the proposed method is important because it could affect decision making when selecting or operating an SDR.

Figure 5: 701.5 MHz in-band IIP3 comparison

If a designer leverages IIP3 to estimate spectral regrowth from an adjacent channel, they may be surprised when the receiver underperforms if the IIP3 was measured under ITU guidance at high input power levels between -30 dBm and +10 dBm. Figure 6 shows the variation in the ITU’s IMD3 noise equivalent point depending on the input power used. This indicates an IIP3 value may need to be accompanied by the slope of the IMD3 tones to estimate an upper bound on adjacent channel power in specifying SDR dynamic range.

Figure 6: 701.5 MHz in-band noise equivalence comparison

To reduce dependence on the IMD3 slope, we considered an alternative to IIP3. This metric is the input power at which the IMD3 tones are equal to the received thermal noise. In other words, this is the input power level that results in a decrease of 3 dB in the signal-to-interference-plus-noise ratio (SINR) in the band due to the IMD3 contribution. With this data and a reasonable estimate for the slope of IMD3 tones, a designer could estimate an input power limit based on application-specific SINR requirements.


In this article, we introduced an automated RF measurement testbed designed for extended one-tone and two-tone measurements of SDR receiver linearity. With this capability, we demonstrated an exploratory study on a 1 dB compression point and on IIP3 measurements performed with input tones located inside and outside the SDR sampling bandwidth. The resulting insights are drawn from experiments by varying a large number of parameters thanks to automation. A surprising trend emerged from the test data: Power in IMD3 tones with respect to the input power was not always 3 dB/dB, even at low input power levels. This slope is important because it is used to extrapolate both upward to express IIP3 and downward to estimate maximum overload threshold levels in spectrum monitoring receivers.

Because these linear extrapolations may easily span 10s of decibels of input power, seemingly insignificant errors in the slope may be multiplied many times in dB, leading to significantly inaccurate conclusions. As a result, the basic definition of IIP3 illustrated in Figure 3 no longer applies, calling into question both the basic meaning and the applicability of IIP3 in the SDR receiver.

In response to this unexpectedly complex IMD3 behavior, we considered alternative metrics that may be better suited. We first considered specifying the small-signal slope of the IMD3 and accounting for it in calculating IIP3. This can apply when the small-signal IMD3 power response slope is linear; measurements are similar to the ITU method but with more input power sampling points. Additionally, we considered how the IMD3 performance of the receiver could be expressed instead in terms of the 2-tone power level that drives IMD3 products to equal the noise power in the band. We argue that a noise intersection point like this is more general because it gives immediate insights into practical receiver operation but with fewer assumptions about the non-linear device characteristics.


1. R. Zitouni and S. Ataman, “An empirical model of the sbx daughter board output power driven by usrp n210 and gnu radio based software defined radio,” in 2015 IEEE 12th International Multi-Conference on Systems, Signals Devices (SSD15), 2015, pp. 1–5.

2. I. Galal, M. E. A. Ibrahim, and H. E. Ahmed, “Exploring frequency tuning policies for usrp-n210 sdr platform and gnu radio,” in 2013 Conference on Design and Architectures for Signal and Image Processing, 2013, pp. 298–303.

3. R. Zitouni, S. Ataman, and L. George, “RF measurements of the RFX 900 and RFX 2400 daughter boards with the USRP n210 driven by the Gnu Radio software,” 2013 International Conference on Cyber-Enabled Distributed Computing and Knowledge Discovery, 2013, pp. 490–494.

4. S. Corum, J. D. Bonior, R. C. Qiu, N. Guo, and Z. Hu, “Evaluation of phase error in a software-defined radio network testbed,” in 2012 Proceedings of IEEE Southeastcon, 2012, pp. 1–4.

5. M. Proakis, Digital signal processing: principles algorithms and applications. Pearson Prentice Hall, 2001.