Login

Your Position: Home > Agriculture > Hardware - GNU Radio Wiki

Hardware - GNU Radio Wiki

Hardware - GNU Radio Wiki

A Quick Guide to Hardware and GNU Radio

Can't Buy Hardware? No problem!

GNU Radio can be used on its own, without any hardware, as a simulation & development environment. GNU Radio has several blocks that can generate data or read/write files in different formats, such as binary complex values or even WAV-files. A lot of prerecorded examples exist that can be used to develop applications without the need for hardware. If you are looking for a particular waveform to develop with and don't have a capture, ask on the mailing list and someone can likely help!

Highmesh supply professional and honest service.

Additionally, GNU Radio is a powerful tool for hardware simulation. You can simulate complete transmitter and receiver chains, including RF, analog, and other relevant impairments that you would encounter in 'real-world' operation.

Ready for that first step with real hardware? A very low cost (US $10.00+) receive only hardware option is an RTL-SDR described below will allow you to sample (Rx Only) live signals.

Commercially Available SDR Platforms

If you want to use real hardware, you have a number of options. The list of hardware vendors that provide GNU Radio support for their products is growing quickly. Hardware ranges from very expensive measurement-quality systems, to very cheap RTL receive only hardware that you can get for less than $50.

There was a detailed Evaluation_of_SDR_Boards-1.0.pdf Evaluation of SDR Boards and Toolchains in by Alexandru Csete and Sheila Christiansen for the European Space Agency and the Libra Space Foundation, This instrument based review covers the RTL-SDR Blog V3, Airspy Mini, SDRplay RSPduo, LimeSDR Mini, BladeRF, Ettus USRP B210 and Analog Device's Pluto SDR.

This is not a complete list, but rather provides a rundown of some of the more common options. Manufacturers may currently have more versions and options than those shown here. Specifications are summary and may not reflect the performance across the spectrum - read current full specs from the manufacturer! Some of the designs are open source hardware or have been cloned. Some of the clones are available with improved specs such as improved clocks. Keep in mind that clones do not support the creators of the systems and may not have the same quality control or customer support, if any - caveat emptor. The systems described here top out at around $1k, but there are higher-end/higher-cost SDR systems available. In addition to a SDR, you will need an antenna and depending on your application you may need filters, LNA/PA amplifiers, etc. to make a functioning transceiver.

To understand the capabilities and performance of a SDR it is often helpful to review the datasheets of the RF IC that is used to understand the best case limits of what the board design can achieve. In designing the particular board the design may be optimized for cost or for a particular frequency that that may result in the RF performance of the board being less than what the RF IC can support. Generally, the boards listed on this page are built on inexpensive consumer grade FR4 material that has reduced performance above a few GHz. "Professional" RF equipment above a few GHz tends to be built on very expensive impedance controlled PCB material such as that manufactured by Rogers. With very good engineering and/or slightly improved FR4-like alternatives, consumer PCB technology can be extended to 7 GHz. As WiFi 6E starts to extends into the 5.7-7 GHz range in the US we can expect to see support for lower cost RF ICs and manufacturing at these higher frequencies. Demand for self-driving car radar is driving development of lower cost RF ICs in the 60-80 GHz range.

Summary Of Features For Some SDRs

XTRX CS XTRX Pro USRP B2x0 bladeRF bladeRF Micro 2.0 LimeSDR LimeSDR Mini Red Pitaya SDRlab122-16 RTL-SDR R820T2 RTL-SDR E ADALM-Pluto New Horizons Hack RF One Tuning range 30 MHz - 3.7 GHz 30 MHz - 3.7 GHz 70 MHz - 6 GHz 300 MHz - 3.8 GHz 47 Mhz - 6 Ghz 100 kHz - 3.8 GHz 10 MHz - 3.5 GHz 300 kHz - 60 MHz (550 MHz) 22 MHz - 2.2 GHz 65 MHz - MHz, gap@ MHz 325 MHz - MHz 70 MHz - 6 GHz 1 MHz - MHz Duplex Full MIMO Full MIMO Full MIMO Full SISO Full MIMO Full MIMO Full SISO Full 2x2 MIMO RX only Rx only Full SISO Full MIMO SISO Half Duplex ADC/DAC resolution 12-bit 12-bit 12-bit 12-bit 12-bit 12-bit 12-bit 16-bit 8-bit 8-bit 12-bit 12-bit 8-bit Max RF bandwidth 120 MHz 120 MSPS SISO / 90 MSPS MIMO 56 MHz 28 MHz 56 Mhz 61.44 MHz 30.72 MHz 550 MHz 3.2 Mhz 20 MHz *limited by USB 2.0 and software to ~4Mhz 56 MHz / CH Rx Noise Figure dB <3.5 Channels 2 2 1 (2 for B210) 1 2 2 1 2 RX + 2 Tx 1 Rx only 1 Rx only 1 2 1 Half Duplex Transmit power 0 to 10dBm 0 to 10dBm 10dBm+ 6dBm 8dBm 0 to 10dBm 0 to 10dBm ±0.5V / +4 dBm none none 7 dBm 9.7 0 - 15 dBm freq dependent RF chipset LMSM LMSM AD or AD LMSM AD LMSM LMSM LTC + AD R820T2 E AD AD MAX /Max FPGA Xilinx Artix7 35T Xilinx Artix7 50T Xilinx XC6SLX75 Altera 40KLE/115KLE Intel Cyclone V Altera 40KLE Altera MAX 10 Xilinx Zynq none None Xilinx Zynq Zync- XC2C64A-7VQ100C CPLD FPGA Gates, DSP slices 33k, 90 DSP 52k, 120 DPS 75k, 132 DSP 40K, 58 DSP opt 115k 49-301k, 66-342DSP 40K, 58 DSP 16k, 45 mult 85K Logic Cells (~1.3M Gates) 0, 0 0, 0 35K 85k 64 Macro cell Industrial temperature range no yes no Optional Optional no no 0 - 55 C no no 10-40C Temperature sensors yes yes no no yes yes no yes no No Frequency stability ±0.5 w/o <±0.01 ppm w/GPS ±0.1 w/o <±0.01 ppm w/GPS ±2 ppm ±1 ppm ±2.5 ppm ±2.5 ppm ±2.5 ppm up to ±12.00 or ext. ck option ±0.5-25 ppm options ±0.5-25 ppm options ± 25 ppm ± 15 ppm TCXO VCTCXO VCTCXO 122.88 MHz 14bit Optional Optional VCTCXO 40MHZ (W/16bit DAC 0.2PPM max) opt. 0.5ppm TXCO GPS synchronization on board on board Addon (+$636) no no no no no no no No optional expansion No Bus/interface PCIe, opt USB 3 adapter $85 PCIe, opt USB 3 adapter $85 USB 3 USB 3 USB 3 USB 3 USB 3 Gbit Ethernet + opt. WiFi USB 2 USB 2 USB 2.0 OTG USB 2.0+ETH USB 2.0 HS CPU/Bus Interface Cypress FX3 CY - RTLU RTLU Dual A9,667MHz, LPC Raw bus bandwidth 10 Gbit/s 10 Gbit/s 5 Gbit/s 5 Gbit/s 5 Gbit/sec 5 Gbit/s 5 Gbit/s - 480 Mbit/s 480 Mbit/s 480 Mbits/s 480 MBit/s MB/s (ETH) 480 MBit/s Dimensions 30 × 51 mm 30 × 51 mm 97 x 155 mm 87 x 131 mm 63 x 102 mm 100 x 60 mm 69 x 31.4 mm 110 x 67 mm 40 x 60 mm typical 40 x 60 mm typical 117 x 79 mm 75mm*102mm Extra features GPIO, GPS, SIM card GPIO, GPS, SIM card GPIO GPIO GPIO GPIO 16GPIO, SD Card, LinuxOS, USB SMA optional SMA optional optional LCD, GPS GPIO, RTC, opt case LCD Clock Sync Yes Yes Yes Yes Yes, In/Out, Ref Yes, In/Out Yes, In Optional No No connector In/Out Time stamp Sync Yes Yes Yes Yes Yes No No No No No Bias T No No No Yes Optional No No Optional Optional No ANT/CLK Connectors 2Rx/2Tx + 3CLK U.FL 6 Rx/4Tx+2CLK U.FL 2 SMA, 1 U.FL Clk 2 RX + 2 TX SMA Chip optional SMA Chip optional SMA SMA x 2 4 SMA (1 SMA opt GPS) 1 ANT + 2 CLK SMA Price - typical US$ $260 $490 $686 - $1,119 2 CH clones ~$715 $415 $480-$720 $299 $139 700$ $10 - $40 $10 - $40 $249 $642+$220 expansion $300 official, down to ~$90 PCBA clones

''This list is in alphabetical order. Please maintain that order if you add new devices.''

Analog Device ADALM-PLUTO

Analog Device's ADALM-PLUTO AD single channel based SDR with a range of 325- MHz and a Zynq Z- FPGA.

Ettus Research USRP™ Devices

The Ettus Research USRP™ platform is designed for RF applications from DC to 6 GHz, and provides a wide range of devices. The USRP™ product line spans from affordable hobbyist SDRs to high-end high-bandwidth radios. There are also options for GPS-disciplined synchronization, MIMO configurations, and embedded / headless devices.

For information regarding the USRP™ product line, see the Ettus Research website.

All USRPs use the USRP Hardware Driver (UHD™) software to provide device drivers, which can be used in GNU Radio through the `gr-uhd` component. The UHD source code is available on GitHub.

Fairwaves XTRX

Fairwaves offers the small form-factor dual channel XTRX that has a sample rate of up to 120 MSPS SISO / 90 MSPS MIMO and a tuning range of 30 MHz - 3.8 GHz with a PCIe interface and optional PCIe to USB interface for development. Based on the Lime Microsystems LMSM with a Xilinx Artix 7 35T/50T FPGA. Also offered is a pro version with a larger fpga and extended temperature range.

Fairwaves UmTRX

UmTRX is an open hardware dual-channel wideband transceiver that covers 300MHz to 3.8GHz. It includes a TCXO and GPS for frequency stability, and is designed for use with mobile base stations, but can easily be used with many other applications.

Host connection is via gigabit Ethernet and a special version of UHD provides a host driver, along with FPGA and ZPU firmware. An alternate version of the firmware, 4xDDC, can be used to provide double the number of receive signal paths (4), for receive-only applications.

Expansion via mezzanine cards is possible and the UmSEL daughter board can be used for improved performance with GSM use.

Funcube Pro+ Dongle

The Funcube Pro+ Dongle is a small and inexpensive device for reception only. It covers a frequency range from 150kHz to 240MHz and 420MHz to 1.9GHz. and plugs into a USB port. There are special blocks available on CGRAN.

KerberosSDR

The KerberosSDR 4 Channel Coherent RTL-SDR For Direction Finding & Passive Radar is based on four R820T2 RF ICs. Status of GnuRadio drives is unknown.

Great Scott Gadgets HackRF

HackRF One, designed and manufactured by Great Scott Gadgets, is an open source hardware platform for Software Defined Radio. Operating from 1 MHz to 6 GHz, HackRF One is a half-duplex transceiver peripheral with a Hi-Speed USB 2.0 connection. It is bus-powered, portable, and has a maximum quadrature sample rate of 20 Msps. GNU Radio integration is provided via the integrated gr-soapy or via gr-osmosdr. As the hardware design is open source there are 3rd parties selling board, kits, enclosures and fully systems integrated with host CPU/LCD that are available on multiple Internet sites including Amazon, eBay, banggood and other China direct websites starting at about $90 each or two for $150 for just the finished boards.

Lime SDR

Lime Micro offers a one and two channel versions (1x1 and 2x2) of their USB powered SDR that has a sampling bandwidth of 61 MHz and a frequency range of 100 kHz to MHz. It is available from Crowd Supply

Microtelecom Perseus

The Microtelecom Perseus is a USB 2.0-connected receiver targeted for amateur radio SDR, with a frequency range of 10 kHz to 40 MHz and appropriate preselect filters. See http://www.microtelecom.it/perseus/ for more information.
Andrea Montefusco wrote GNU Radio integration that is provided via gr-microtelecom.

New Horizons NH

The New Horizons NH from GridRF is available via Alibaba and other internet resellers is based on the AD with an rf tuning range from 70 MHZ to 6 GHz. It appears to have some features of the Analog devices CNO Reference design. This appears to be an ADI Pluto like SDR that has been upgraded to a dual channel 6 gHz AD. The GridRF website proclaims, "this product ideas from ADI PLUTO, the official name is 'New Horizons SDR Platform',as you knew 'New Horizons' is a PLUTO discover spacecraft from NASA. like New Horizons do,hope ours discover from ADI PLUTO can give you a surprise and helping you deep discover with Software Defined Radio." There is also an expansion board with GPS, LCB and navigation button available. There are open source git hub repos for firmware/HDL (no schematics or gerbers) that appears to be forked from ADI's github. Complete kits with expansion board and enclosure are available for less than US$900

Novena + Myriad-RF module

The Novena open hardware computing platform plus the companion Myriad-RF SDR module together provide a system with a quad-core ARM SoC, GPU, FPGA, dual-Ethernet and wideband transceiver that covers from 380MHz to 3.8GHz. This can be used "headless", with a HDMI monitor, or configured as an all-in-one desktop or a laptop with a flat panel display.

GNU Radio applications are supported via the SoapySDR API and gr-osmosdr blocks, and also via the UHD API and blocks thanks to a SoapySDR module for this.

Nuand BladeRF

BladeRF is a wideband transceiver that covers 300MHz to 3.8GHz, with coverage down to 10MHz made possible with the addition of a block up/down-converter.

Host connection is via USB 3.0 and Nuand support use with Linux, Windows and Mac OS X. GNU Radio integration is provided via gr-osmosdr.

Nuand BladeRF 2.0

BladeRF 2.0 Micro is a wideband MIMO transceiver that covers 47MHz to 6GHz with up to 56 Mhz of bandwidth. It has 2x2 MIMO, and can accept an external clock (GPSDO). The channels are phase coherent and can be used for beam forming applications, as well as direction-finding. It has a clock out allowing for daisy-chaining multiple boards. It has an onboard Altera Cyclone V FPGA that's user programmable.

Host connection is via USB 3.0 and Nuand support use with Linux, Windows and Mac OS X. GNU Radio integration is provided via gr-osmosdr.

rtl-sdr TV tuners

These are receive-only USB dongles based on the Realtek RTL, E or FC chips which are designed for DAB/DVB/FM. They can be used as SDR receivers over a frequency range that extends beyond popular television frequencies. Further information is available from osmocom. GNU Radio integration is provided via gr-osmosdr or gr-baz. These USB dongles are sold from many vendors on the internet including on Amazon and E-Bay starting at around $10, new. There are some models with improved specification versions such as those from Nooelectric and [RTL-SDR.COM that cost up to about $40+. Performance, quality and features can widely vary between different manufactures and unit to unit. Usable performance at higher frequencies may require models with heatsinks, metal cases, etc. Options include RF frequency-range/performance, bias-T, xtal tolerance, TCXO, heatsink, ESD protection, case, ANT as SMA/U.FL/On-board-chip, etc. There are three RF chipsets commonly used in these dongles, the most common is based on the R820T2 with a frequency range of upto 25 MHz ~ MHz and is often used for ADS-B monitoring. While the less common E based has an extended range of 55 MHz - MHz, but the E has a dead spot around MHZ and thus CAN NOT be used for ADS-B. The least common RF chip is the FC with an RF range of 22 MHz - MHz. There is a small ecosystem of low-cost add-on Filters, LNAs(bias-T may be required), antennas, books, videos, tutorials, bundled kits, etc that are available from multiple vendors on the Internet.

SDRplay RSP family of SDR receivers

These are 12/14bit SDRs giving up to 10MHz spectrum visibility from VLF (1kHz) up to 2GHz with no need for an upconverter. Further information is available from www.sdrplay.com. GNU Radio integration is provided via source blocks developed by HB9FXQ - these are available by following this flow: https://www.sdrplay.com/docs/gr-sdrplay-workflow.pdf

Softrock-like Radio frequency interfaces

Stemming from the amateur radio Softrock (Digital) Direct Conversion devices a family of radio front-ends evolved. The common principle is a direct conversion device that complex mixes the RF signal to base band (a.k.a. audio frequency), using a standard stereo audio interface for input and output. The I and Q channel are mapped to stereo left and right. Advanced devices offer a interface for frequency control and other parameters.

YARD Stick One

A sub 1 GHz half duplex transceiver. Status of GnuRadio drivers is unknown.

Using your Sound Card with GNU Radio

Most computers nowadays are shipped with a built-in sound interface or sound card. Modern systems universally support input and output with 16 bit resolution at 48 ksps on two channels. Virtually every operating system supports this hardware out of the box, and it's sufficient for a lot of DIY and hobby applications. Additionally, high quality sound interfaces (professional digital audio recording equipment) are available with more than a dozen channels, up to 24bit resolution and 192 ksps.

GNU Radio can use a sound card for both input and output. One way you can use this capability is to create audio interfaces. Do you remember the wonderful screeching and squawking of modems? You could use GNU Radio to experiment with similar communication techniques over audio.

Another way to take advantage of GNU Radio's audio capability is to use a hardware device that converts between audio and RF. Platforms such as SoftRock can be used, in conjunction with GNU Radio and a sound card, to implement a complete radio.

IC Manufacturer's Development Boards

Many IC makers create development boards for their ICs. Some of these are simple test fixture that just hold the IC while some are complete systems. ADI and Lime have released complete SDRs, listed above in the complete SDR section. As often the intent of these modules is to prove to customers the performance of the ICs these are often very high quality, if expensive boards that are not intended to be cost optimized solutions. These may be built on very expensive Rodgers PCB stock, while the inexpensive clones are often built on lower RF performing cheap FR4 board stock.

Analog Devices FMCOMMS2/3/4/5 FMC cards + Xilinx Zynq carrier cards.

The Analog Devices boards should not be regarded as stand alone SDR products, but as platforms that are used to either build commercial hardware products, or understand things at the lowest level. If you want to just experiment/use GNURadio, you are better off ignoring these boards, and going to Ettus section. There are commercial systems which are based on Analog Devices's chips, that may be better supported in GNURadio, like the B200 or B210 from Ettus, or the ASRP4 from Agile Solutions.

Analog Devices makes an AD based platform, which is on a evaluation board. The AD is a 1Rx / 1Tx high performance, highly integrated RF Agile Transceiver™. Its programmability and wideband capability make it ideal for a broad range of transceiver applications. The device combines an RF front end with a flexible mixed-signal baseband section and integrated frequency synthesizers, simplifying design-in by providing a configurable digital interface to a processor. The AD operates in the 70 MHz to 6.0 GHz range, covering most licensed and unlicensed bands. Channel bandwidths from less than 200 kHz to 56 MHz are supported.

  • AD-FMCOMMS4-EBZ : The AD-FMCOMMS4-EBZ board is a comes specifically tuned and optimized to 2.4 GHz and due to the limitations of the on-board discrete external components (baluns), it may exhibit diminished RF performance on some other programmed configurations.

Analog Devices makes an AD based platform, which is on a few different evaluation boards. The AD chip is ideal for a broad range of MIMO (2Rx, 2Tx)transceiver applications. Otherwise it is identical to the AD (70 MHz to 6.0 GHz tuning range, 200 kHz to 56 MHz RF bandwidth). It can be found on:

  • AD-FMCOMMS2-EBZ : The AD-FMCOMMS2-EBZ board is a comes specifically tuned and optimized to 2.4 GHz and due to the limitations of the on-board discrete external components (baluns), it may exhibit diminished RF performance on some other programmed configurations.
  • AD-FMCOMMS3-EBZ : The AD-FMCOMMS3-EBZ provides software developers and system architect who want a single platform to operates over a wider tuning range than the AD-FMCOMMS2-EBZ. RF performance expectations of this board must be tempered with the very wide band front end. It does meet the datasheet specifications at 2.4 GHz, but does not over the entire RF tuning range that the board supports. This board is primarily intended for system investigation and bringing up various waveforms from a software team before custom hardware is complete.
  • AD-FMCOMMS5-EBZ : The AD-FMCOMMS5-EBZ is a high-speed analog module designed to showcase how to sync two AD in multiple-input, multiple-output (4 Rx, 4 Tx MIMO) applications. The AD-FMCOMMS5-EBZ board has both wideband channels covering the full 6 GHz range, as well as narrowband channels matched to 2.4GHz. The AD-FMCOMMS5-EBZ also contains a calibration matrix between the two ADs. This switch matrix hardware, combined with the Analog Devices supplied API software, allow for a full digital and RF synchronization between the two ADs.
  • ADI also sells more integrated designs including the CN ADRV-PACKRF Robust Portable Radio Design which is a complete RF SOM module. Carrier and break-out boards are available. See also the Pluto in the complete SDR section, above.

The AD-FMCOMMSx series boards do not work as SDRs by themselves, and do require a some sort of FPGA platform. There are HDL designs for a few different Xilinx carriers : The ZedBoard, Xilinx ZC702, Xilinx ZC706 and Avnet's mini-itx, which are all based on Xilinx's Zynq. All of these use an externally built GNURadio block.

A number of 3rd part SDRs and devlopment boards are listed at ADI.

These platforms are built on Linux in kernel drivers using the IIO subsystems, which was reviewed with an SDR use case at FOSDEM

Building your Own Hardware

Several designs are available for electronics enthusiasts interested in assembling their own SDR hardware. Open Source Hardware designs known to work with GNU Radio include:

  • HackRF
  • UmTRX
  • various designs in the SoftRock family
  • Red Pitaya STEMlab and SDRlab boards

Other options

Comedi

comedi support is dropped as of GNU Radio 3.8.

The comedi project aims to offer drivers for many different data acquisition devices. GNU Radio includes a component that uses this library, which enables GNU Radio to use all devices support by comedi. Comedi is based on Linux kernel drivers, which results in good real time capabilities, but binds comedi to the Linux platform.

The Catch-All Clause

Every device that can be accessed from your operating system can be supported by GNU Radio. You can write your own drivers by creating source and sink blocks for your specific hardware.

A very comprehensive and structured list about Software Defined Radio and Software Radio by Christophe F4DAN can be found at http://f4dan.free.fr/sdr_eng.html (this list has not been edited or updated since even though it still contains relevant information).

If you cannot find support for your favourite device, ask at the mailing list for help. Maybe someone already got a working solution or wrote a block, or at least you can get tips and encouraging words for building a block for this hardware.

Getting Started with the Ettus USRP B205mini-i and GNU Radio

Getting Started with the USRP B205mini-i & GNU Radio

Introduction

This tutorial presents how to get started with the USRP B205mini-i, an SDR (software-defined radio) platform designed by Ettus Research™. It provides a wide frequency range (70 MHz to 6 GHz) and a user-programmable, industrial-grade Xilinx Spartan-6 XC6SLX150 FPGA. 

The USRP B205mini-i is based on the Spartan6 LX150 FPGA, which is used as a controller, and the AD transceiver, used as an analog front end. The AD is a transceiver that can acquire a frequency range from 70 MHz to 6 GHz with a sample rate of up to 61.4 MHz for both ADC and DAC with a maximum bandwidth of 56 MHz. This frequency range allows us to receive and send 3G (UMTS) and 4G (LTE) signals, wireless LAN, FM/AM Radio, and more. The board comes in a rectangular form factor with three SMA connectors: one for the transmitter, one for the receiver, and one for the frequency reference. 

Installing UHD drivers

Windows 

First, we need to download the installer for the drivers from USRP Hardware Driver and USRP Manual. Navigate to the latest releases page (under Installer Packages), select the Windows-10-x64 folder, and download the installer for your version of Visual Studio and bitness (Winx86 = 32-bit, Winx64 = 64-bit). 

When the download is complete, run the executable file. The set-up wizard pops up. 

It is important to add UHD to the system PATH variable so that commands can be run in the Windows terminal. Next, download the USB driver for Windows and unzip the file into a known location. We will refer to this as the . Open the device manager and plug in the USRP device. You will see an unrecognized USB device in the device manager. Right-click on the unrecognized USB device and select update/install driver software (may vary for your OS). In the driver installation wizard, select “browse for driver”, browse to the , and select the .inf file. Continue through the installation wizard until the driver is installed. 

We can avoid installing onto a native machine by running a docker container with all the tools already installed. To do so, we have to install Docker – from the Docker Docs site – and then download the Dockerfile provided through Ettus Github. Then, we create a docker image and a container for this image to run a virtual Ubuntu machine with all tools installed. 

Ubuntu 

To install UHD drivers on Linux, first, we need to add the Ettus repository: 

>>> sudo add-apt-repository ppa:ettusresearch/uhd 

>>> sudo apt-get update  

Once the repository is added, we need to install all drivers: 

>>> sudo apt-get install libuhd-dev libuhd003 uhd-host 

The terminal output will show something similar to the text found in the dropdown below: 

Terminal Output 

>>> sudo add-apt-repository ppa:ettusresearch/uhd 

More info: https://launchpad.net/~ettusresearch/+archive/ubuntu/uhd 

Press [ENTER] to continue or Ctrl-c to cancel adding it. 

Get:1 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic InRelease [15.9 kB] 

Hit:2 http://es.archive.ubuntu.com/ubuntu bionic InRelease 

Get:3 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] 

Get:4 https://download.docker.com/linux/ubuntu xenial InRelease [66.2 kB] 

Hit:5 http://ppa.launchpad.net/js-reynaud/kicad-5/ubuntu bionic InRelease 

Get:6 http://es.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] 

Hit:8 http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu bionic InRelease 

Get:7 http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease [15.4 kB] 

Get:9 http://es.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB] 

Get:10 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic/main amd64 Packages [1,480 B] 

Get:11 http://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [48.9 kB] 

Get:12 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic/main i386 Packages [1,484 B] 

Get:13 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic/main Translation-en [624 B] 

Get:14 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 DEP-11 Metadata [59.5 kB] 

Get:15 http://es.archive.ubuntu.com/ubuntu bionic-updates/main i386 Packages [1,142 kB] 

Get:16 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 DEP-11 Metadata [2,464 B] 

Get:17 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1,727 kB] 

Get:18 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 DEP-11 Metadata [295 kB] 

Get:19 http://es.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1,684 kB] 

Get:20 http://es.archive.ubuntu.com/ubuntu bionic-updates/universe i386 Packages [1,545 kB] 

Get:21 http://es.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 DEP-11 Metadata [288 kB] 

Get:22 http://es.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 DEP-11 Metadata [2,468 B] 

Get:23 http://es.archive.ubuntu.com/ubuntu bionic-backports/universe amd64 DEP-11 Metadata [9,288 B] 

Reading package lists… Done 

E: Repository ‘http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease’ changed its ‘Label’ valu 

N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpa 

>>> sudo apt-get update 

Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 

Hit:2 http://es.archive.ubuntu.com/ubuntu bionic InRelease 

Hit:3 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic InRelease 

Get:4 https://download.docker.com/linux/ubuntu xenial InRelease [66.2 kB] 

Hit:5 http://es.archive.ubuntu.com/ubuntu bionic-updates InRelease 

Hit:6 http://es.archive.ubuntu.com/ubuntu bionic-backports InRelease 

Hit:7 http://ppa.launchpad.net/js-reynaud/kicad-5/ubuntu bionic InRelease 

Hit:9 http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu bionic InRelease 

Get:8 http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease [15.4 kB] 

Reading package lists… Done 

E: Repository ‘http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease’ changed its ‘Label’ valu 

N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpa 

>>> sudo apt-get install libuhd-dev libuhd003 uhd-host 

Reading package lists… Done 

Building dependency tree 

Reading state information… Done 

The following packages were automatically installed and are no longer required: 

kicad-demo libboost-context1.65.1 libllvm7 libllvm9 libwxgtk3.0-0v5 

linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45 

linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-48 

python-wxgtk3.0 python-wxversion 

Next, we need to add the driver rules to the udev (userspace). To do that, first navigate to the repository where the UHD drivers are installed: 

>>> cd /lib/uhd/utils  

In that folder, the rules.d directory can be found. Next, copy rules.d into udev folder. Reload the rules. 

>>> sudo cp uhd-usrp.rules /etc/udev/rules.d/ 

>>> sudo udevadm control –reload-rules 

>>> sudo udevadm trigger  

The terminal output will look like this: 

>>> cd /usr/lib/uhd/utils 

>>> sudo cp uhd-usrp.rules /etc/udev/rules.d/ 

>>> sudo udevadm control –reload-rules 

>>> sudo udevadm trigger  

Docker on Linux Ubuntu 

To avoid all the installation steps, we can download a docker image based on Ubuntu. To do that, first download the Dockerfile from Ettus Github

Then, in the same folder that the Dockerfile was downloaded into, execute the command (sudo docker build -t uhd_container) to build the container. Example output below: 

“docker build” output 

>>> docker build -t uhd_container . 

Sending build context to Docker daemon 1.097MB 

Step 1/20 : FROM ubuntu:18.04 

—> 56def654ec22 

Step 2/20 : MAINTAINER Ettus Research 

—> Using cache 

—> 41e400e38bd5 

Step 3/20 : ENV security_updates_as_of -05-15 

—> Using cache 

—> ab51cbce 

Step 4/20 : ARG DEBIAN_FRONTEND=noninteractive 

—> Using cache 

—> d4f4aeb2 

Step 5/20 : ARG UHD_TAG=v3.14.0.0 

—> Using cache 

—> 665f579eb940 

Step 6/20 : ARG MAKEWIDTH=2 

—> Using cache 

—> e1f420d77a2a 

Step 7/20 : RUN apt-get update 

—> Using cache 

—> 3e19b7ea 

Step 8/20 : RUN apt-get -y install -q build-essential ccache 

… 

When the process is finished, we can check if the image was added to docker with the command docker image ls

>>> sudo docker image ls 

REPOSITORY TAG IMAGE ID CREATED SIZE 

uhd_container latest 044eb9fbb9db 22 minutes ago 2.02GB 

ubuntu 18.04 56def654ec22 6 weeks ago 63.2MB 

hello-world latest fce289e99eb9 22 months ago 1.84kB 

Once the image is created, we can create and run a new container. It is important to allow access to the /dev folder so that the container can communicate through USB: 

>>> sudo docker run -it –privileged -v /dev:/dev -v /proc:/proc uhd_container 

Now we can check if the container has access to the board through the command uhd_find_devices. Remember to run the command as administrator (root user): 

 uhd_device_find 

bash: uhd_device_find: command not found 

root@e2fe367a:/# uhd_find_devices 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.14.0.HEAD-release 

————————————————– 

— UHD Device 0 

————————————————– 

Device Address: 

serial: 31DDAAD 

name: B205i 

product: B205mini 

type: b200 

Now that we can use the device from within our container, we can execute a Python Fast Fourier Transform (FFT) example that can be found in /usr/lib/uhd/examples/python#

/usr/lib/uhd/examples/python# python3 curses_fft.py -f 100e6 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.14.0.HEAD-release 

[INFO] [B200] Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex… 

[INFO] [B200] Detected Device: B205mini 

[INFO] [B200] Loading FPGA image: /usr/share/uhd/images/usrp_b205mini_fpga.bin… 

[INFO] [B200] Operating over USB 3. 

[INFO] [B200] Initialize CODEC control… 

[INFO] [B200] Initialize Radio control… 

[INFO] [B200] Performing register loopback test… 

[INFO] [B200] Register loopback test passed 

[INFO] [B200] Setting master clock rate selection to ‘automatic’. 

[INFO] [B200] Asking for clock rate 16. MHz… 

[INFO] [B200] Actually got clock rate 16. MHz. 

[INFO] [B200] Asking for clock rate 32. MHz… 

[INFO] [B200] Actually got clock rate 32. MHz. 

Connecting to the Device

We can test the device by running the USRP Hardware Driver Peripheral Report Utility. Assuming that we connect the USRP B205mini-i to a Linux machine and run the utility (uhd_usrp_probe) in the terminal. If this is the first time that you are running the utility, you will get an error in the terminal: 

>>> uhd_usrp_probe 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.15.0.0-release 

[WARNING] [B200] EnvironmentError: IOError: Could not find path for image: usrp_b200_fw.hex 

Using images directory:  

Set the environment variable ‘UHD_IMAGES_DIR’ appropriately or follow the below instructions to download the i 

Please run: 

“/usr/lib/uhd/utils/uhd_images_downloader.py” 

Error: LookupError: KeyError: No devices found for —–> 

Empty Device Address  

This is caused by an empty image directory or by some images being missing from the directory. To fix that, we need to run the uhd_images_downloader.py script, which will download and copy the necessary images into the image directory. The script must be run as superuser. 

>>> sudo python /usr/lib/uhd/utils/uhd_images_downloader.py 

[INFO] Images destination: /usr/share/uhd/images 

[INFO] No inventory file found at /usr/share/uhd/images/inventory.json. Creating an empty one. 

kB / kB (100%) x3xx_x310_fpga_default-gfde2a94e.zip 

kB / kB (100%) usrp2_n210_fpga_default-g6bea23d.zip 

kB / kB (100%) usrp1_b100_fw_default-g6bea23d.zip 

Additional resources:
Skeleton Oil Seal TC 30*40*10/15 Oil Seal

The company is the world’s best USRP For Sale supplier. We are your one-stop shop for all needs. Our staff are highly-specialized and will help you find the product you need.

kB / kB (100%) n230_n230_fpga_default-gfde2a94e.zip 

kB / kB (100%) usrp1_b100_fpga_default-g6bea23d.zip 

kB / kB (100%) e3xx_e310_sg1_fpga_default-gfde2a94e.zip 

kB / kB (100%) b2xx_b200_fpga_default-gfde2a94e.zip 

kB / kB (100%) usrp2_n200_fpga_default-g6bea23d.zip 

kB / kB (100%) e3xx_e320_fpga_default-gfde2a94e.zip 

kB / kB (100%) n3xx_n310_fpga_default-gfde2a94e.zip 

kB / kB (100%) b2xx_b205mini_fpga_default-gfde2a94e.zip 

kB / kB (100%) x3xx_x300_fpga_default-gfde2a94e.zip 

kB / kB (100%) b2xx_b200mini_fpga_default-gfde2a94e.zip 

kB / kB (100%) octoclock_octoclock_fw_default-g.zip 

kB / kB (100%) usrp2_usrp2_fw_default-g6bea23d.zip 

kB / kB (100%) usrp2_n200_fw_default-g6bea23d.zip 

kB / kB (100%) usrp2_usrp2_fpga_default-g6bea23d.zip 

kB / kB (100%) e3xx_e310_sg3_fpga_default-gfde2a94e.zip 

kB / kB (100%) b2xx_common_fw_default-g2bdad498.zip 

kB / kB (100%) n3xx_n320_fpga_default-gfde2a94e.zip 

kB / kB (100%) usrp1_usrp1_fpga_default-g6bea23d.zip 

kB / kB (100%) usb_common_windrv_default-g.zip 

kB / kB (100%) usrp2_n210_fw_default-g6bea23d.zip 

kB / kB (100%) n3xx_n300_fpga_default-gfde2a94e.zip 

kB / kB (100%) b2xx_b210_fpga_default-gfde2a94e.zip 

[INFO] Images download complete.  

When the script has finished running, all images will be downloaded into the directory. The next step is to rerun the command to connect with the board, and if all is good, the board will be discovered. The output of the terminal will show the identifier of the board and the capabilities of the board, as seen in the dropdown below: 

“uhd_usrp_probe” sample results 

>>> uhd_usrp_probe 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.15.0.0-release 

[INFO] [B200] Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex… 

[INFO] [B200] Detected Device: B205mini 

[INFO] [B200] Loading FPGA image: /usr/share/uhd/images/usrp_b205mini_fpga.bin… 

[INFO] [B200] Operating over USB 3. 

[INFO] [B200] Initialize CODEC control… 

[INFO] [B200] Initialize Radio control… 

[INFO] [B200] Performing register loopback test… 

[INFO] [B200] Register loopback test passed 

[INFO] [B200] Setting master clock rate selection to ‘automatic’. 

[INFO] [B200] Asking for clock rate 16. MHz… 

[INFO] [B200] Actually got clock rate 16. MHz. 

_____________________________________________________ 

| Device: B-Series Device 

| _____________________________________________________ 

| / 

| | Mboard: B205mini 

| | serial: 31DDAAD 

| | name: B205i 

| | product:  

| | revision: 3 

| | FW Version: 8.0 

| | FPGA Version: 7.0 

| | 

| | Time sources: none, internal, external 

| | Clock sources: internal, external 

| | Sensors: ref_locked 

| | _____________________________________________________ 

| | / 

| | | RX DSP: 0 

| | | 

| | | Freq range: -8.000 to 8.000 MHz 

| | _____________________________________________________ 

| | / 

| | | RX Dboard: A 

| | | _____________________________________________________ 

| | | / 

| | | | RX Frontend: A 

| | | | Name: FE-RX1 

| | | | Antennas: TX/RX, RX2 

| | | | Sensors: temp, rssi, lo_locked 

| | | | Freq range: 50.000 to .000 MHz 

| | | | Gain range PGA: 0.0 to 76.0 step 1.0 dB 

| | | | Bandwidth range: .0 to .0 step 0.0 Hz 

| | | | Connection Type: IQ 

| | | | Uses LO offset: No 

| | | _____________________________________________________ 

| | | / 

| | | | RX Codec: A 

| | | | Name: B205mini RX dual ADC 

| | | | Gain Elements: None 

| | _____________________________________________________ 

| | / 

| | | TX DSP: 0 

| | | 

| | | Freq range: -8.000 to 8.000 MHz 

| | _____________________________________________________ 

| | / 

| | | TX Dboard: A 

| | | _____________________________________________________ 

| | | / 

| | | | TX Frontend: A 

| | | | Name: FE-TX1 

| | | | Antennas: TX/RX 

| | | | Sensors: temp, lo_locked 

| | | | Freq range: 50.000 to .000 MHz 

| | | | Gain range PGA: 0.0 to 89.8 step 0.2 dB 

| | | | Bandwidth range: .0 to .0 step 0.0 Hz 

| | | | Connection Type: IQ 

| | | | Uses LO offset: No 

| | | _____________________________________________________ 

| | | / 

| | | | TX Codec: A 

| | | | Name: B205mini TX dual DAC 

| | | | Gain Elements: None  

If we only want to extract the board identifier, we can run the command below: 

>>> uhd_find_devices 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.15.0.0-release 

————————————————– 

— UHD Device 0 

————————————————– 

Device Address: 

serial: 31DDAAD 

name: B205i 

product: B205mini 

type: b200 

Now the device is connected and configured. 

Running an Example DFT

There are some examples that come with the driver. For example, we can run the real-time Discrete Fourier Transform (DFT) example. The options for the executable (./rx_ascii_art_dft) are frequency (–freq), sampling rate (–rate), gain (–gain), bandwidth (–bw), and reference level (–ref-lvl). The terminal will show the flow of execution, list the parameters, and graph the result: 

./rx_ascii_art_dft –freq 94e6 –rate 5e6 –gain 20 –bw 1e6 –ref-lvl -30 

Creating the usrp device with: … 

[INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_; UHD_3.15.0.0-release 

[INFO] [B200] Detected Device: B205mini 

[INFO] [B200] Operating over USB 3. 

[INFO] [B200] Initialize CODEC control… 

[INFO] [B200] Initialize Radio control… 

[INFO] [B200] Performing register loopback test… 

[INFO] [B200] Register loopback test passed 

[INFO] [B200] Setting master clock rate selection to ‘automatic’. 

[INFO] [B200] Asking for clock rate 16. MHz… 

[INFO] [B200] Actually got clock rate 16. MHz. 

Using Device: Single USRP: 

Device: B-Series Device 

Mboard 0: B205mini 

RX Channel: 0 

RX DSP: 0 

RX Dboard: A 

RX Subdev: FE-RX1 

TX Channel: 0 

TX DSP: 0 

TX Dboard: A 

TX Subdev: FE-TX1 

Setting RX Rate: 5. Msps… 

[INFO] [B200] Asking for clock rate 40. MHz… 

[INFO] [B200] Actually got clock rate 40. MHz. 

Actual RX Rate: 5. Msps… 

Setting RX Freq: 94. MHz… 

Actual RX Freq: 94. MHz… 

Setting RX Gain: 20. dB… 

Actual RX Gain: 20. dB… 

Setting RX Bandwidth: 1. MHz… 

Actual RX Bandwidth: 1. MHz… 

Getting Started with GNU Radio on the Ettus USRP B205mini-i

First, install GNU Radio on the Linux machine using the command add-apt-repository ppa:gnuradio/gnuradio-releases. See the dropdown below for the expected results in the terminal: 

GNU Radio Installation Results 

sudo add-apt-repository ppa:gnuradio/gnuradio-releases 

[sudo]password for root: 

PPA for GNU Radio Tagged Releases 

More info: https://launchpad.net/~gnuradio/+archive/ubuntu/gnuradio-releases 

Press [ENTER] to continue or Ctrl-c to cancel adding it. 

Hit:1 http://es.archive.ubuntu.com/ubuntu bionic InRelease 

Get:2 https://download.docker.com/linux/ubuntu xenial InRelease [66.2 kB] 

Hit:3 http://es.archive.ubuntu.com/ubuntu bionic-updates InRelease 

Hit:4 http://security.ubuntu.com/ubuntu bionic-security InRelease 

Hit:5 http://es.archive.ubuntu.com/ubuntu bionic-backports InRelease 

Hit:6 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic InRelease 

Get:7 http://ppa.launchpad.net/gnuradio/gnuradio-releases/ubuntu bionic InRelease [15.9 kB] 

Hit:8 http://ppa.launchpad.net/js-reynaud/kicad-5/ubuntu bionic InRelease 

Hit:10 http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu bionic InRelease 

Get:9 http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease [15.4 kB] 

Get:11 http://ppa.launchpad.net/gnuradio/gnuradio-releases/ubuntu bionic/main i386 Packages [7,348 B] 

Get:12 http://ppa.launchpad.net/gnuradio/gnuradio-releases/ubuntu bionic/main amd64 Packages [7,336 B] 

Get:13 http://ppa.launchpad.net/gnuradio/gnuradio-releases/ubuntu bionic/main Translation-en [4,044 B] 

Reading package lists… Done 

>>> sudo apt-get update 

Hit:1 http://ppa.launchpad.net/ettusresearch/uhd/ubuntu bionic InRelease 

Hit:2 http://security.ubuntu.com/ubuntu bionic-security InRelease 

Hit:3 http://ppa.launchpad.net/gnuradio/gnuradio-releases/ubuntu bionic InRelease 

Hit:4 http://es.archive.ubuntu.com/ubuntu bionic InRelease 

Hit:5 http://ppa.launchpad.net/js-reynaud/kicad-5/ubuntu bionic InRelease 

Get:6 https://download.docker.com/linux/ubuntu xenial InRelease [66.2 kB] 

Hit:7 http://es.archive.ubuntu.com/ubuntu bionic-updates InRelease 

Hit:9 http://es.archive.ubuntu.com/ubuntu bionic-backports InRelease 

Hit:10 http://ppa.launchpad.net/ubuntu-toolchain-r/ppa/ubuntu bionic InRelease 

Get:8 http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease [15.4 kB] 

Reading package lists… Done 

E: Repository ‘http://ppa.launchpad.net/js-reynaud/kicad-5.1/ubuntu bionic InRelease’ changed its ‘Label’ valu 

N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpa 

>>> sudo apt install gnuradio 

Reading package lists… Done 

Building dependency tree 

Reading state information… Done 

The following packages were automatically installed and are no longer required: 

kicad-demo libboost-context1.65.1 libllvm7 libllvm9 libwxgtk3.0-0v5 linux-hwe-5.4-headers-5.4.0-42 

linux-hwe-5.4-headers-5.4.0-45 linux-hwe-5.4-headers-5.4.0-47 linux-hwe-5.4-headers-5.4.0-48 python-wxgtk3.0 

python-wxversion 

Use ‘sudo apt autoremove’ to remove them. 

The following additional packages will be installed: 

blt fonts-lyx freeglut3 gnuradio-dev libboost-atomic1.65-dev libboost-atomic1.65.1 libboost-chrono1.65-dev 

… 

Note:You may encounter a compatibility error because the UHD driver version installed in the Linux machine is different from the version that comes with GNU. For instance, the version of UHD driver in GNU Radio is UHD_003.010.003.000-0 while the one we installed is 3.15.0.0-1-1ubuntu1~bionic1. To fix the error, first download the correct UHD FPGA Image from Ettus Resources Hub (Direct download: uhd-images_003.010.003.000-release.tar.xz). Then, copy the downloaded image to the directory where all images are saved. In this case, we save all images under /usr/share/uhd/images. You can also follow the Building and Installing the USRP Open-Source Toolchain to install GNU Radio. This may take longer. 

Now we can open GNU Radio and start to work with it. 

Using GNU Radio to Design a Frequency Modulation (FM) Receiver 

The FM receiver takes the modulated signal (i.e. radio waves under the VHF band) as input and produces the original audio signal ranging from 20 Hz to 20 kHz. 

First of all, run ‘gnuradio-companion‘ in the terminal to open GNU Radio Companion. Then, add the following blocks: 

  1. Two Variables, samp_rate and freq:
  • samp_rate is the sampling rate, which we set to 5 MHz (Hint: We can copy the existing variable block and paste that in Canvas. Then, we can open the copied variable and change the id and value).
  • freq is the frequency bandwidth which we set to 94.2 MHz.
  1. UHD: USRP Source – The USRP Source block will produce baseband samples by sampling RF on a selected antenna at a particular frequency, sample rate, and gain. We will configure the sample rate as 5 MHz (samp_rate) and the center frequency as 94.2 MHz (freq) and keep the default value for the rest of the parameters.
  1. QT GUI Sink – The QT GUI frequency sink displays multiple signals in frequency. We set the FFT size to samples, bandwidth to 5 MHz and update rate to 10.

Next, we will add a low pass filter. Notice that the audio signal bandwidth ranges from 200 Hz to 20 kHz. We can set the cutoff frequency to 50 kHz with a transition band down to 10 kHz and have soft filtering. The transition width will determine the number of taps. We also use this low pass filter to decimate the signal. By doing so, we can discard some samples and make the processing easier. In this case, we will perform a decimation of 20, which means the output sampling frequency will be 5 MHz / 20 ~ 250 KHz. 

Once the lowpass filter has been added, the next step is to perform the FM demodulation. To do that, add a WBFM receive block and set the quadrature rate to the input sampling frequency, 250 kHz. 

Since the output signal is audible, we can send this signal to the sound card – which is actually a digital to analog converter with a sample rate of, in general, 96 kHz. Thus, we need to decimate the output signal to obtain the 96 kHz sample rate. To do that, add a Rational resamples block that performs an x/y operation, where x (interpolation) is the output frequency, and y (decimation), is the input frequency. Finally, add an Audio sink block, so that the output signal will be played through speakers. We also add 2 QT GUI Sink blocks to visualize the input and the output signals. 

Finally, generate the python script by pushing the ‘Generate the flow graph’ button. 

Then, we send the design to the USRP B205mini-i by pushing the ‘Execute the flow graph’ button. 

The Python script will be executed. The output signal is displayed in time and frequency domain, as seen below. You can also hear the radio station selected. 

References 

USRP B205mini-i Reference Manual 

For technical support, please visit Ettus’ Support page

For more USRP for 5G Prototypinginformation, please contact us. We will provide professional answers.

84 0

Comments

Join Us