Integrating Software Defined Radio with USRP

Integrating Software Defined Radio with USRP

Ehsan Sheybani (College of Business, University of South Florida, Sarasota, FL, USA) and Giti Javidi (College of Business, University of South Florida, Sarasota, FL, USA)
DOI: 10.4018/IJITN.2017070101
OnDemand PDF Download:
No Current Special Offers


The USRP1 is the original Universal Software Radio Peripheral hardware (USRP) that provides entry-level RF processing capability. Its primary purpose is to provide flexible software defined radio development capability at a low price. You can control the frequency you receive and transmit by installing different daughter-boards. The authors' USRP model had been configured to receive a signal from local radio stations in the DC, Maryland metropolitan area with the BasicRX model daughterboard. The programmable USRP was running python block code implemented in the GNU Radio Companion (GRC) on Ubuntu OS. With proper parameters and sinks the authors were able to tune into the radio signal, record the signal and extract the in-phase (I) and quadrature phase (Q) data and plot the phase and magnitude of the signal. Using the terminal along with proper MATLAB and Octave code, they were able to read the I/Q data and look at the Fast Fourier Transform (FFT) plot along with the I/Q data. With the proper equations, you could determine not only the direction of arrival, but one would also be able to calculate the distance from the receiver to the exact location where the signal is being transmitted. The purpose of doing this experiment was to gain experience in signal processing and receive hands on experience with the USRP and potentially add a tracking system to the authors' model for further experiments.
Article Preview


We programmed an FM receiver in GRC using the RFX2400 daughterboard

Figure 1.

Basix RX board


As shown in Figure 2, the USRP could receive clear radio signals from the targeted radio station.

Then we switched the RFX2400 daughterboard to the FLEX900 daughterboard, and we started receiving radio signals. The FLEX900 daughterboard receives frequencies around 750MHz; whereas, FM radio frequencies only range from 88MHz to 108MHz. Then we took out the FLEX900 daughterboard and put in the BasicRX daughterboard because it is supposed to read frequencies that are actually in the range. The BasicRX receives frequencies ranging from 1MHz to 250MHz. We found that the BasicRX works with our program and received radio signals and outputted them to the soundcard like we expected. The FFT plots of the radio signals without the antenna and with the antenna are shown in Figures 3 and 4. The Google Doc shown in Figure 5 explains what each block did and how it worked.

The next step was to get the I/Q data from the signals we were receiving. I/Q data show the changes in amplitude and phase of a sine wave. These changes can then be used to encode information upon a sine wave, which is a process called modulation. We saved the I/Q data as a binary file. We opened the file in Ubuntu using the terminal and programmed Octave, to plot the I/Q file and the FFT of the data (Figure 5). We then sampled the I/Q data from different radio playbacks. We plotted the I/Q data showing their slow response time and the peaks (Figures 6 and 7, 8).

Figure 2.

Layout of the GRC program

Figure 3.

FFT plots of the radio signals with the antenna

Figure 4.

FFT plots of the radio signals without the antenna


Complete Article List

Search this Journal:
Open Access Articles
Volume 14: 4 Issues (2022): Forthcoming, Available for Pre-Order
Volume 13: 4 Issues (2021): 2 Released, 2 Forthcoming
Volume 12: 4 Issues (2020)
Volume 11: 4 Issues (2019)
Volume 10: 4 Issues (2018)
Volume 9: 4 Issues (2017)
Volume 8: 4 Issues (2016)
Volume 7: 4 Issues (2015)
Volume 6: 4 Issues (2014)
Volume 5: 4 Issues (2013)
Volume 4: 4 Issues (2012)
Volume 3: 4 Issues (2011)
Volume 2: 4 Issues (2010)
Volume 1: 4 Issues (2009)
View Complete Journal Contents Listing