<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://kb.ettus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SiddhantDhawan</id>
		<title>Ettus Knowledge Base - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://kb.ettus.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SiddhantDhawan"/>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/Special:Contributions/SiddhantDhawan"/>
		<updated>2026-11-03T20:52:58Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=7244</id>
		<title>Instructions for System Setup and Configuration</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=7244"/>
				<updated>2026-10-19T09:27:05Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Internal use only: please do keep this updated!&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2026-01-25&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Neel Pandeya&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial Creation &lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2026-01-31&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Edits for clarity &amp;amp; language&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This document provides instructions for attendees to setup and configure their laptop or desktop computer system for use with the hands-on exercises and labs for the &amp;quot;USRP Open-Source Toolchain: UHD and GNU Radio&amp;quot; workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
Note that all of this is optional. You only have to do this if you want to use the USRP in the workshop to do the hands-on exercises and actually use the USRP radio.  If you do not want to do this and just watch the instructor's presentation, then you can skip all of this and just come to the workshop.&lt;br /&gt;
&lt;br /&gt;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may be used.&lt;br /&gt;
&lt;br /&gt;
In some sessions the radio will be provided to you; in other sessions you will need to provide your own radio.  Check this with the organizer of your session.&lt;br /&gt;
&lt;br /&gt;
Your laptop or desktop computer should be no more than around six or seven years old, with an Intel i5, i7, or i9 CPU or AMD equivalent and at least 4 cores, running at a 3.5 GHz clock speed or higher, with 8 GB memory, and at least one USB 3.0 port (for USRP B200/B210 radios) and one RJ-45 Ethernet port (for other USRP radios).  You will need about 30 GB of free disk space for the Linux installation. You will need to have internet access during the entire installation, set-up, and configuration process.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.4==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.4. Note that you may instead install Ubuntu itself, or any other Ubuntu flavor such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  However, we recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs well on older or resource-constrained hardware.  We have only tested with Ubuntu and Xubuntu.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, and not in a Virtual Machine (VM).  Please install specifically version 24.04.4.&lt;br /&gt;
&lt;br /&gt;
If you already have an existing Windows or Linux installation on your computer, then you can install Ubuntu or Xubuntu alongside your already-existing operating system, in a dual-boot configuration.  The installer will ask you about this, and it supports installing in a dual-boot configuration.  However, note that there can be some challenges when dual-booting with Windows 11, and this may not be easy to set up and may not work well.&lt;br /&gt;
&lt;br /&gt;
You can download the ISO images for Xubuntu from the links below.  Whichever version you choose: Write the ISO image to a USB 3.0 drive, and boot from it, and install it. The USB drive capacity must be a minimum of 16 GB.&lt;br /&gt;
&lt;br /&gt;
https://xubuntu.org/download/&lt;br /&gt;
&lt;br /&gt;
https://cdimage.ubuntu.com/xubuntu/releases/noble/release/&lt;br /&gt;
&lt;br /&gt;
==Step 2: Installation Settings==&lt;br /&gt;
&lt;br /&gt;
During the Xubuntu installation process, set the username to be &amp;quot;ettus&amp;quot;.  This is not strictly necessary, but if you do this, then it will make all the commands in the installation instructions and in the exercises work more easily.  The hostname does not matter.  Do not use any disk encryption.  Do not enable any volume management.&lt;br /&gt;
&lt;br /&gt;
==Step 3: Apply Updates==&lt;br /&gt;
&lt;br /&gt;
Once the installation is complete, boot into it, and open a terminal window, and apply updates. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt update&lt;br /&gt;
    sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
==Step 4: Install Dependencies==&lt;br /&gt;
&lt;br /&gt;
Install the package dependencies for UHD, GNU Radio, and other tools.  Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install openssh-server htop tree lshw meld git libfftw3-bin ncurses-bin libncurses6 libncursesw6 net-tools ethtool aptitude screen hwloc inxi wireshark wireshark-doc wireshark-dev tshark build-essential ntp doxygen gnome-disk-utility cpufrequtils libsndfile1-dev&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool g++ git inetutils-tools libboost-all-dev libncurses6 libncurses-dev libusb-1.0-0 libusb-1.0-0-dev libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools python3-ruamel.yaml libfmt9 libfmt-dev libfmt-doc libspdlog1.12 libspdlog-dev&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-gi python3-gi-cairo gir1.2-gtk-3.0 libcodec2-dev libgsm1-dev libusb-1.0-0 libusb-1.0-0-dev libudev-dev python3-setuptools python3-pygccxml python3-thrift libqwt-qt5-6 libqwt-qt5-dev python3-pyqt5.qwt python3-qwt3d-qt5 libspdlog-dev libspdlog1.12 pybind11-dev python3-cppimport python3-pybind11 python3-pybindgen&lt;br /&gt;
&lt;br /&gt;
==Step 5: Create a folder for GIT repositories==&lt;br /&gt;
&lt;br /&gt;
Create a folder to hold all the GIT repositories. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    mkdir $HOME/git&lt;br /&gt;
&lt;br /&gt;
==Step 6: Create a work area folder==&lt;br /&gt;
&lt;br /&gt;
Create a folder to hold workshop materials and for running exercises. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    mkdir $HOME/workarea&lt;br /&gt;
&lt;br /&gt;
==Step 7: Download the slides and materials==&lt;br /&gt;
&lt;br /&gt;
Download the slides and materials for the workshop from the Ettus Knowledge Base (KB). Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    wget -P $HOME/workarea https://kb.ettus.com/images/a/ab/Workshop_GnuRadio_Materials_20171212.tar.gz&lt;br /&gt;
    wget -P $HOME/workarea https://kb.ettus.com/images/f/fd/Workshop_GnuRadio_Slides_20250802.pdf&lt;br /&gt;
&lt;br /&gt;
==Step 8: Unzip the materials==&lt;br /&gt;
&lt;br /&gt;
Unzip the workshop materials file. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/workarea&lt;br /&gt;
    tar zxvf Workshop_GnuRadio_Materials_20171212.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Step 9: Install UHD 4.9==&lt;br /&gt;
&lt;br /&gt;
Install UHD version 4.9, and download all the USRP FPGA image files. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone http://github.com/EttusResearch/uhd.git&lt;br /&gt;
    cd uhd/host&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v4.9.0.0&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
==Step 10: Install VOLK 3.3.0==&lt;br /&gt;
&lt;br /&gt;
Install the VOLK library. This used to be bundled with GNU Radio, but now it's broken out as a separate library. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone --recursive https://github.com/gnuradio/volk.git&lt;br /&gt;
    cd volk&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v3.3.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    cd ../&lt;br /&gt;
    git submodule update --init --recursive&lt;br /&gt;
    ls cpu_features/CMakeLists.txt           #it should show cpu_features/CMakeLists.txt&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 11: Install GNU Radio 3.10.12==&lt;br /&gt;
&lt;br /&gt;
Install GNU Radio version 3.10.12. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone http://github.com/gnuradio/gnuradio.git&lt;br /&gt;
    cd gnuradio&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v3.10.12.0&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 12: Update the Bash RC shell file==&lt;br /&gt;
&lt;br /&gt;
Add the following lines the end of your &amp;lt;code&amp;gt; $HOME/.bashrc &amp;lt;/code&amp;gt; file.  Use your preferred editor such as the graphical ones Gedit or Mousepad or a console-based text editor such as vi or emacs.&lt;br /&gt;
&lt;br /&gt;
First, open the file using either the text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
    emacs $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file:&lt;br /&gt;
&lt;br /&gt;
    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
    export PYTHONPATH=/usr/local/lib/python3.12/dist-packages:/usr/local/lib/python3.12/site-packages:$PYTHONPATH&lt;br /&gt;
&lt;br /&gt;
Then, save the file, exit and close the text editor, exit and close the terminal window, and open a brand-new terminal window. Run the following command to verify that the PYTHONPATH variable is set:&lt;br /&gt;
&lt;br /&gt;
    python3 -c &amp;quot;import sys; print(sys.path)&amp;quot; | tr ',' '\n' | grep &amp;quot;\-packages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and both of the paths above should be listed.&lt;br /&gt;
&lt;br /&gt;
==Step 13: Apply the USB udev rules==&lt;br /&gt;
&lt;br /&gt;
Apply the USB udev rules for the USRP B200/B210. If you are not using a USRP B200/B210, but some other Ethernet-based radio, then you can skip this step, although it is still good to do. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd /usr/local/lib/uhd/utils&lt;br /&gt;
    sudo cp uhd-usrp.rules /etc/udev/rules.d/&lt;br /&gt;
    sudo udevadm control --reload-rules&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
==Step 14: Install gr-osmosdr==&lt;br /&gt;
&lt;br /&gt;
Install the gr-osmosdr Out-Of-Tree (OOT) module. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/osmocom/gr-osmosdr&lt;br /&gt;
    cd gr-osmosdr&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 15: Install gr-rds==&lt;br /&gt;
&lt;br /&gt;
Install the gr-rds Out-Of-Tree (OOT) module. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/bastibl/gr-rds&lt;br /&gt;
    cd gr-rds&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout maint-3.10&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 16: Install GQRX==&lt;br /&gt;
&lt;br /&gt;
Install GQRX. You will also need to install two more package dependencies. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install libqt5svg5 libqt5svg5-dev&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/gqrx-sdr/gqrx&lt;br /&gt;
    cd gqrx&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v2.17.7&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 17: Install gr-paint==&lt;br /&gt;
&lt;br /&gt;
Install gr-paint. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/drmpeg/gr-paint&lt;br /&gt;
    cd gr-paint&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Test the Installation==&lt;br /&gt;
&lt;br /&gt;
If you did not see any errors in any of the previous steps, then your installation and configuration should now be complete. You can run a few simple and quick tests to verify that your system is running correctly and is ready for the workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
First, run the commands below, even if you do not have any USRP radio connected to your computer.&lt;br /&gt;
&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
You should see output similar to what is listed below when there is no USRP device connected.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_find_devices &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    No UHD Devices Found&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_usrp_probe &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    Error: LookupError: KeyError: No devices found for -----&amp;gt;&lt;br /&gt;
    Empty Device Address&lt;br /&gt;
    ettus@lenovo-t480s:~$ &lt;br /&gt;
&lt;br /&gt;
You should see output similar to what is listed below when there is one USRP B200 device connected.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_find_devices &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    [INFO] [B200] Loading firmware image: /usr/local/share/uhd/images/usrp_b200_fw.hex...&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
    -- UHD Device 0&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
    Device Address:&lt;br /&gt;
        serial: 3304B90&lt;br /&gt;
        name: 4B200&lt;br /&gt;
        product: B200&lt;br /&gt;
        type: b200&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_usrp_probe &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    [INFO] [B200] Detected Device: B200&lt;br /&gt;
    [INFO] [B200] Loading FPGA image: /usr/local/share/uhd/images/usrp_b200_fpga.bin...&lt;br /&gt;
    [INFO] [B200] Operating over USB 3.&lt;br /&gt;
    [INFO] [B200] Detecting internal GPSDO.... &lt;br /&gt;
    [INFO] [GPS] No GPSDO found&lt;br /&gt;
    [INFO] [B200] Initialize CODEC control...&lt;br /&gt;
    [INFO] [B200] Initialize Radio control...&lt;br /&gt;
    [INFO] [B200] Performing register loopback test... &lt;br /&gt;
    [INFO] [B200] Register loopback test passed&lt;br /&gt;
    [INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
    [INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
    [INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
      _____________________________________________________&lt;br /&gt;
     /&lt;br /&gt;
    |       Device: B-Series Device&lt;br /&gt;
    |     _____________________________________________________&lt;br /&gt;
    |    /&lt;br /&gt;
    |   |       Mboard: B200&lt;br /&gt;
    |   |   serial: 3304B90&lt;br /&gt;
    |   |   name: 4B200&lt;br /&gt;
    |   |   product: 1&lt;br /&gt;
    |   |   revision: 5&lt;br /&gt;
    |   |   FW Version: 8.0&lt;br /&gt;
    |   |   FPGA Version: 16.0&lt;br /&gt;
    |   |   &lt;br /&gt;
    |   |   Time sources:  none, internal, external, gpsdo&lt;br /&gt;
    |   |   Clock sources: internal, external, gpsdo&lt;br /&gt;
    |   |   Sensors: ref_locked&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       RX DSP: 0&lt;br /&gt;
    |   |   |   &lt;br /&gt;
    |   |   |   Freq range: -8.000 to 8.000 MHz&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       RX Dboard: A&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       RX Frontend: A&lt;br /&gt;
    |   |   |   |   Name: FE-RX1&lt;br /&gt;
    |   |   |   |   Antennas: TX/RX, RX2&lt;br /&gt;
    |   |   |   |   Sensors: temp, rssi, lo_locked&lt;br /&gt;
    |   |   |   |   Freq range: 50.000 to 6000.000 MHz&lt;br /&gt;
    |   |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB&lt;br /&gt;
    |   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz&lt;br /&gt;
    |   |   |   |   Connection Type: IQ&lt;br /&gt;
    |   |   |   |   Uses LO offset: No&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       RX Codec: A&lt;br /&gt;
    |   |   |   |   Name: B200 RX dual ADC&lt;br /&gt;
    |   |   |   |   Gain Elements: None&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       TX DSP: 0&lt;br /&gt;
    |   |   |   &lt;br /&gt;
    |   |   |   Freq range: -8.000 to 8.000 MHz&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       TX Dboard: A&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       TX Frontend: A&lt;br /&gt;
    |   |   |   |   Name: FE-TX1&lt;br /&gt;
    |   |   |   |   Antennas: TX/RX&lt;br /&gt;
    |   |   |   |   Sensors: temp, lo_locked&lt;br /&gt;
    |   |   |   |   Freq range: 50.000 to 6000.000 MHz&lt;br /&gt;
    |   |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB&lt;br /&gt;
    |   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz&lt;br /&gt;
    |   |   |   |   Connection Type: IQ&lt;br /&gt;
    |   |   |   |   Uses LO offset: No&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       TX Codec: A&lt;br /&gt;
    |   |   |   |   Name: B200 TX dual DAC&lt;br /&gt;
    |   |   |   |   Gain Elements: None&lt;br /&gt;
    &lt;br /&gt;
    ettus@lenovo-t480s:~$&lt;br /&gt;
&lt;br /&gt;
Second, you can run the GNU Radio Companion (GRC) tool. Run the commands below, and verify that the GRC window appears.&lt;br /&gt;
&lt;br /&gt;
    gnuradio-companion&lt;br /&gt;
&lt;br /&gt;
Third, you can connect the USRP B200/B210 to the computer, and then run the command listed below.&lt;br /&gt;
&lt;br /&gt;
    lsusb&lt;br /&gt;
&lt;br /&gt;
You should see the USRP listed in the output, as shown below.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ lsusb&lt;br /&gt;
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    Bus 001 Device 004: ID 03f0:6a41 HP, Inc HP USB Optical Mouse&lt;br /&gt;
    Bus 001 Device 005: ID 2500:0020 Ettus Research LLC USRP B210&lt;br /&gt;
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
    Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. Card Reader&lt;br /&gt;
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
    ettus@lenovo-t480s:~$ &lt;br /&gt;
&lt;br /&gt;
Fourth, you can run the command below, to confirm that GNU Radio is configured correctly, and that you are running the correct version.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ gnuradio-config-info --print-all&lt;br /&gt;
    /usr/local/&lt;br /&gt;
    /usr/local/etc&lt;br /&gt;
    /usr/local/etc/gnuradio/conf.d&lt;br /&gt;
    /home/ettus/.config/gnuradio&lt;br /&gt;
    /home/ettus/.local/state/gnuradio&lt;br /&gt;
    Fri, 09 Jan 2026 14:37:15Z&lt;br /&gt;
    testing-support;python-support;post-install;doxygen;man-pages;gnuradio-runtime;common-precompiled-headers;gr-ctrlport;gnuradio-companion;JSON/YAML config blocks;gr-blocks;gr-fec;gr-fft;gr-filter;gr-analog;gr-digital;gr-dtv;gr-audio;* alsa;* oss;gr-channels;gr-pdu;gr-qtgui;gr-trellis;gr-uhd;gr-uhd UHD 4.0 RFNoC;gr-utils;gr_modtool;gr_blocktool;gr-video-sdl;gr-vocoder;* codec2;* freedv;* gsm;gr-wavelet;gr-zeromq;gr-network&lt;br /&gt;
    3.10.12.0&lt;br /&gt;
    cc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 &lt;br /&gt;
    Copyright (C) 2023 Free Software Foundation, Inc. &lt;br /&gt;
    This is free software see the source for copying conditions.  There is NO &lt;br /&gt;
    warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
    c++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 &lt;br /&gt;
    Copyright (C) 2023 Free Software Foundation, Inc. &lt;br /&gt;
    This is free software see the source for copying conditions.  There is NO &lt;br /&gt;
    warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
    /usr/bin/cc:::-O3 -DNDEBUG  -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual &lt;br /&gt;
    /usr/bin/c++:::-O3 -DNDEBUG  -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual&lt;br /&gt;
    2.11.1&lt;br /&gt;
    ettus@lenovo-t480s:~$&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
If the simple tests of the installation listed above worked without any errors, then you are now finished, and you are now ready for the workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=7243</id>
		<title>Instructions for System Setup and Configuration</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=7243"/>
				<updated>2026-10-19T09:25:52Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: cd ../     git submodule update --init --recursive     ls cpu_features/CMakeLists.txt #it should show cpu_features_CMakeLists.txt     cd build     cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Internal use only: please do keep this updated!&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2026-01-25&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Neel Pandeya&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial Creation &lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2026-01-31&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Edits for clarity &amp;amp; language&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
This document provides instructions for attendees to setup and configure their laptop or desktop computer system for use with the hands-on exercises and labs for the &amp;quot;USRP Open-Source Toolchain: UHD and GNU Radio&amp;quot; workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
Note that all of this is optional. You only have to do this if you want to use the USRP in the workshop to do the hands-on exercises and actually use the USRP radio.  If you do not want to do this and just watch the instructor's presentation, then you can skip all of this and just come to the workshop.&lt;br /&gt;
&lt;br /&gt;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may be used.&lt;br /&gt;
&lt;br /&gt;
In some sessions the radio will be provided to you; in other sessions you will need to provide your own radio.  Check this with the organizer of your session.&lt;br /&gt;
&lt;br /&gt;
Your laptop or desktop computer should be no more than around six or seven years old, with an Intel i5, i7, or i9 CPU or AMD equivalent and at least 4 cores, running at a 3.5 GHz clock speed or higher, with 8 GB memory, and at least one USB 3.0 port (for USRP B200/B210 radios) and one RJ-45 Ethernet port (for other USRP radios).  You will need about 30 GB of free disk space for the Linux installation. You will need to have internet access during the entire installation, set-up, and configuration process.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.4==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.4. Note that you may instead install Ubuntu itself, or any other Ubuntu flavor such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  However, we recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs well on older or resource-constrained hardware.  We have only tested with Ubuntu and Xubuntu.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, and not in a Virtual Machine (VM).  Please install specifically version 24.04.4.&lt;br /&gt;
&lt;br /&gt;
If you already have an existing Windows or Linux installation on your computer, then you can install Ubuntu or Xubuntu alongside your already-existing operating system, in a dual-boot configuration.  The installer will ask you about this, and it supports installing in a dual-boot configuration.  However, note that there can be some challenges when dual-booting with Windows 11, and this may not be easy to set up and may not work well.&lt;br /&gt;
&lt;br /&gt;
You can download the ISO images for Xubuntu from the links below.  Whichever version you choose: Write the ISO image to a USB 3.0 drive, and boot from it, and install it. The USB drive capacity must be a minimum of 16 GB.&lt;br /&gt;
&lt;br /&gt;
https://xubuntu.org/download/&lt;br /&gt;
&lt;br /&gt;
https://cdimage.ubuntu.com/xubuntu/releases/noble/release/&lt;br /&gt;
&lt;br /&gt;
==Step 2: Installation Settings==&lt;br /&gt;
&lt;br /&gt;
During the Xubuntu installation process, set the username to be &amp;quot;ettus&amp;quot;.  This is not strictly necessary, but if you do this, then it will make all the commands in the installation instructions and in the exercises work more easily.  The hostname does not matter.  Do not use any disk encryption.  Do not enable any volume management.&lt;br /&gt;
&lt;br /&gt;
==Step 3: Apply Updates==&lt;br /&gt;
&lt;br /&gt;
Once the installation is complete, boot into it, and open a terminal window, and apply updates. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt update&lt;br /&gt;
    sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
==Step 4: Install Dependencies==&lt;br /&gt;
&lt;br /&gt;
Install the package dependencies for UHD, GNU Radio, and other tools.  Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install openssh-server htop tree lshw meld git libfftw3-bin ncurses-bin libncurses6 libncursesw6 net-tools ethtool aptitude screen hwloc inxi wireshark wireshark-doc wireshark-dev tshark build-essential ntp doxygen gnome-disk-utility cpufrequtils libsndfile1-dev&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool g++ git inetutils-tools libboost-all-dev libncurses6 libncurses-dev libusb-1.0-0 libusb-1.0-0-dev libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools python3-ruamel.yaml libfmt9 libfmt-dev libfmt-doc libspdlog1.12 libspdlog-dev&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install git cmake g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml python3-click python3-click-plugins python3-zmq python3-scipy python3-gi python3-gi-cairo gir1.2-gtk-3.0 libcodec2-dev libgsm1-dev libusb-1.0-0 libusb-1.0-0-dev libudev-dev python3-setuptools python3-pygccxml python3-thrift libqwt-qt5-6 libqwt-qt5-dev python3-pyqt5.qwt python3-qwt3d-qt5 libspdlog-dev libspdlog1.12 pybind11-dev python3-cppimport python3-pybind11 python3-pybindgen&lt;br /&gt;
&lt;br /&gt;
==Step 5: Create a folder for GIT repositories==&lt;br /&gt;
&lt;br /&gt;
Create a folder to hold all the GIT repositories. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    mkdir $HOME/git&lt;br /&gt;
&lt;br /&gt;
==Step 6: Create a work area folder==&lt;br /&gt;
&lt;br /&gt;
Create a folder to hold workshop materials and for running exercises. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    mkdir $HOME/workarea&lt;br /&gt;
&lt;br /&gt;
==Step 7: Download the slides and materials==&lt;br /&gt;
&lt;br /&gt;
Download the slides and materials for the workshop from the Ettus Knowledge Base (KB). Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    wget -P $HOME/workarea https://kb.ettus.com/images/a/ab/Workshop_GnuRadio_Materials_20171212.tar.gz&lt;br /&gt;
    wget -P $HOME/workarea https://kb.ettus.com/images/f/fd/Workshop_GnuRadio_Slides_20250802.pdf&lt;br /&gt;
&lt;br /&gt;
==Step 8: Unzip the materials==&lt;br /&gt;
&lt;br /&gt;
Unzip the workshop materials file. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/workarea&lt;br /&gt;
    tar zxvf Workshop_GnuRadio_Materials_20171212.tar.gz&lt;br /&gt;
&lt;br /&gt;
==Step 9: Install UHD 4.9==&lt;br /&gt;
&lt;br /&gt;
Install UHD version 4.9, and download all the USRP FPGA image files. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone http://github.com/EttusResearch/uhd.git&lt;br /&gt;
    cd uhd/host&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v4.9.0.0&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
==Step 10: Install VOLK 3.3.0==&lt;br /&gt;
&lt;br /&gt;
Install the VOLK library. This used to be bundled with GNU Radio, but now it's broken out as a separate library. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone --recursive https://github.com/gnuradio/volk.git&lt;br /&gt;
    cd volk&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v3.3.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    cd ../&lt;br /&gt;
    git submodule update --init --recursive&lt;br /&gt;
    ls cpu_features/CMakeLists.txt #it should show cpu_features_CMakeLists.txt&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 11: Install GNU Radio 3.10.12==&lt;br /&gt;
&lt;br /&gt;
Install GNU Radio version 3.10.12. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone http://github.com/gnuradio/gnuradio.git&lt;br /&gt;
    cd gnuradio&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v3.10.12.0&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 12: Update the Bash RC shell file==&lt;br /&gt;
&lt;br /&gt;
Add the following lines the end of your &amp;lt;code&amp;gt; $HOME/.bashrc &amp;lt;/code&amp;gt; file.  Use your preferred editor such as the graphical ones Gedit or Mousepad or a console-based text editor such as vi or emacs.&lt;br /&gt;
&lt;br /&gt;
First, open the file using either the text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
    emacs $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file:&lt;br /&gt;
&lt;br /&gt;
    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH&lt;br /&gt;
    export PYTHONPATH=/usr/local/lib/python3.12/dist-packages:/usr/local/lib/python3.12/site-packages:$PYTHONPATH&lt;br /&gt;
&lt;br /&gt;
Then, save the file, exit and close the text editor, exit and close the terminal window, and open a brand-new terminal window. Run the following command to verify that the PYTHONPATH variable is set:&lt;br /&gt;
&lt;br /&gt;
    python3 -c &amp;quot;import sys; print(sys.path)&amp;quot; | tr ',' '\n' | grep &amp;quot;\-packages&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and both of the paths above should be listed.&lt;br /&gt;
&lt;br /&gt;
==Step 13: Apply the USB udev rules==&lt;br /&gt;
&lt;br /&gt;
Apply the USB udev rules for the USRP B200/B210. If you are not using a USRP B200/B210, but some other Ethernet-based radio, then you can skip this step, although it is still good to do. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd /usr/local/lib/uhd/utils&lt;br /&gt;
    sudo cp uhd-usrp.rules /etc/udev/rules.d/&lt;br /&gt;
    sudo udevadm control --reload-rules&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
==Step 14: Install gr-osmosdr==&lt;br /&gt;
&lt;br /&gt;
Install the gr-osmosdr Out-Of-Tree (OOT) module. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/osmocom/gr-osmosdr&lt;br /&gt;
    cd gr-osmosdr&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 15: Install gr-rds==&lt;br /&gt;
&lt;br /&gt;
Install the gr-rds Out-Of-Tree (OOT) module. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/bastibl/gr-rds&lt;br /&gt;
    cd gr-rds&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout maint-3.10&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 16: Install GQRX==&lt;br /&gt;
&lt;br /&gt;
Install GQRX. You will also need to install two more package dependencies. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install libqt5svg5 libqt5svg5-dev&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/gqrx-sdr/gqrx&lt;br /&gt;
    cd gqrx&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    git checkout v2.17.7&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 17: Install gr-paint==&lt;br /&gt;
&lt;br /&gt;
Install gr-paint. Run the commands listed below, in a terminal window.&lt;br /&gt;
&lt;br /&gt;
    cd $HOME/git&lt;br /&gt;
    git clone https://github.com/drmpeg/gr-paint&lt;br /&gt;
    cd gr-paint&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Test the Installation==&lt;br /&gt;
&lt;br /&gt;
If you did not see any errors in any of the previous steps, then your installation and configuration should now be complete. You can run a few simple and quick tests to verify that your system is running correctly and is ready for the workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
First, run the commands below, even if you do not have any USRP radio connected to your computer.&lt;br /&gt;
&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
You should see output similar to what is listed below when there is no USRP device connected.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_find_devices &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    No UHD Devices Found&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_usrp_probe &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    Error: LookupError: KeyError: No devices found for -----&amp;gt;&lt;br /&gt;
    Empty Device Address&lt;br /&gt;
    ettus@lenovo-t480s:~$ &lt;br /&gt;
&lt;br /&gt;
You should see output similar to what is listed below when there is one USRP B200 device connected.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_find_devices &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    [INFO] [B200] Loading firmware image: /usr/local/share/uhd/images/usrp_b200_fw.hex...&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
    -- UHD Device 0&lt;br /&gt;
    --------------------------------------------------&lt;br /&gt;
    Device Address:&lt;br /&gt;
        serial: 3304B90&lt;br /&gt;
        name: 4B200&lt;br /&gt;
        product: B200&lt;br /&gt;
        type: b200&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    ettus@lenovo-t480s:~$ uhd_usrp_probe &lt;br /&gt;
    [INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g9ec1f582&lt;br /&gt;
    [INFO] [B200] Detected Device: B200&lt;br /&gt;
    [INFO] [B200] Loading FPGA image: /usr/local/share/uhd/images/usrp_b200_fpga.bin...&lt;br /&gt;
    [INFO] [B200] Operating over USB 3.&lt;br /&gt;
    [INFO] [B200] Detecting internal GPSDO.... &lt;br /&gt;
    [INFO] [GPS] No GPSDO found&lt;br /&gt;
    [INFO] [B200] Initialize CODEC control...&lt;br /&gt;
    [INFO] [B200] Initialize Radio control...&lt;br /&gt;
    [INFO] [B200] Performing register loopback test... &lt;br /&gt;
    [INFO] [B200] Register loopback test passed&lt;br /&gt;
    [INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
    [INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
    [INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
      _____________________________________________________&lt;br /&gt;
     /&lt;br /&gt;
    |       Device: B-Series Device&lt;br /&gt;
    |     _____________________________________________________&lt;br /&gt;
    |    /&lt;br /&gt;
    |   |       Mboard: B200&lt;br /&gt;
    |   |   serial: 3304B90&lt;br /&gt;
    |   |   name: 4B200&lt;br /&gt;
    |   |   product: 1&lt;br /&gt;
    |   |   revision: 5&lt;br /&gt;
    |   |   FW Version: 8.0&lt;br /&gt;
    |   |   FPGA Version: 16.0&lt;br /&gt;
    |   |   &lt;br /&gt;
    |   |   Time sources:  none, internal, external, gpsdo&lt;br /&gt;
    |   |   Clock sources: internal, external, gpsdo&lt;br /&gt;
    |   |   Sensors: ref_locked&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       RX DSP: 0&lt;br /&gt;
    |   |   |   &lt;br /&gt;
    |   |   |   Freq range: -8.000 to 8.000 MHz&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       RX Dboard: A&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       RX Frontend: A&lt;br /&gt;
    |   |   |   |   Name: FE-RX1&lt;br /&gt;
    |   |   |   |   Antennas: TX/RX, RX2&lt;br /&gt;
    |   |   |   |   Sensors: temp, rssi, lo_locked&lt;br /&gt;
    |   |   |   |   Freq range: 50.000 to 6000.000 MHz&lt;br /&gt;
    |   |   |   |   Gain range PGA: 0.0 to 76.0 step 1.0 dB&lt;br /&gt;
    |   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz&lt;br /&gt;
    |   |   |   |   Connection Type: IQ&lt;br /&gt;
    |   |   |   |   Uses LO offset: No&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       RX Codec: A&lt;br /&gt;
    |   |   |   |   Name: B200 RX dual ADC&lt;br /&gt;
    |   |   |   |   Gain Elements: None&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       TX DSP: 0&lt;br /&gt;
    |   |   |   &lt;br /&gt;
    |   |   |   Freq range: -8.000 to 8.000 MHz&lt;br /&gt;
    |   |     _____________________________________________________&lt;br /&gt;
    |   |    /&lt;br /&gt;
    |   |   |       TX Dboard: A&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       TX Frontend: A&lt;br /&gt;
    |   |   |   |   Name: FE-TX1&lt;br /&gt;
    |   |   |   |   Antennas: TX/RX&lt;br /&gt;
    |   |   |   |   Sensors: temp, lo_locked&lt;br /&gt;
    |   |   |   |   Freq range: 50.000 to 6000.000 MHz&lt;br /&gt;
    |   |   |   |   Gain range PGA: 0.0 to 89.8 step 0.2 dB&lt;br /&gt;
    |   |   |   |   Bandwidth range: 200000.0 to 56000000.0 step 0.0 Hz&lt;br /&gt;
    |   |   |   |   Connection Type: IQ&lt;br /&gt;
    |   |   |   |   Uses LO offset: No&lt;br /&gt;
    |   |   |     _____________________________________________________&lt;br /&gt;
    |   |   |    /&lt;br /&gt;
    |   |   |   |       TX Codec: A&lt;br /&gt;
    |   |   |   |   Name: B200 TX dual DAC&lt;br /&gt;
    |   |   |   |   Gain Elements: None&lt;br /&gt;
    &lt;br /&gt;
    ettus@lenovo-t480s:~$&lt;br /&gt;
&lt;br /&gt;
Second, you can run the GNU Radio Companion (GRC) tool. Run the commands below, and verify that the GRC window appears.&lt;br /&gt;
&lt;br /&gt;
    gnuradio-companion&lt;br /&gt;
&lt;br /&gt;
Third, you can connect the USRP B200/B210 to the computer, and then run the command listed below.&lt;br /&gt;
&lt;br /&gt;
    lsusb&lt;br /&gt;
&lt;br /&gt;
You should see the USRP listed in the output, as shown below.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ lsusb&lt;br /&gt;
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    Bus 001 Device 004: ID 03f0:6a41 HP, Inc HP USB Optical Mouse&lt;br /&gt;
    Bus 001 Device 005: ID 2500:0020 Ettus Research LLC USRP B210&lt;br /&gt;
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
    Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. Card Reader&lt;br /&gt;
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub&lt;br /&gt;
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub&lt;br /&gt;
    ettus@lenovo-t480s:~$ &lt;br /&gt;
&lt;br /&gt;
Fourth, you can run the command below, to confirm that GNU Radio is configured correctly, and that you are running the correct version.&lt;br /&gt;
&lt;br /&gt;
    ettus@lenovo-t480s:~$ gnuradio-config-info --print-all&lt;br /&gt;
    /usr/local/&lt;br /&gt;
    /usr/local/etc&lt;br /&gt;
    /usr/local/etc/gnuradio/conf.d&lt;br /&gt;
    /home/ettus/.config/gnuradio&lt;br /&gt;
    /home/ettus/.local/state/gnuradio&lt;br /&gt;
    Fri, 09 Jan 2026 14:37:15Z&lt;br /&gt;
    testing-support;python-support;post-install;doxygen;man-pages;gnuradio-runtime;common-precompiled-headers;gr-ctrlport;gnuradio-companion;JSON/YAML config blocks;gr-blocks;gr-fec;gr-fft;gr-filter;gr-analog;gr-digital;gr-dtv;gr-audio;* alsa;* oss;gr-channels;gr-pdu;gr-qtgui;gr-trellis;gr-uhd;gr-uhd UHD 4.0 RFNoC;gr-utils;gr_modtool;gr_blocktool;gr-video-sdl;gr-vocoder;* codec2;* freedv;* gsm;gr-wavelet;gr-zeromq;gr-network&lt;br /&gt;
    3.10.12.0&lt;br /&gt;
    cc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 &lt;br /&gt;
    Copyright (C) 2023 Free Software Foundation, Inc. &lt;br /&gt;
    This is free software see the source for copying conditions.  There is NO &lt;br /&gt;
    warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
    c++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 &lt;br /&gt;
    Copyright (C) 2023 Free Software Foundation, Inc. &lt;br /&gt;
    This is free software see the source for copying conditions.  There is NO &lt;br /&gt;
    warranty not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
    /usr/bin/cc:::-O3 -DNDEBUG  -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual &lt;br /&gt;
    /usr/bin/c++:::-O3 -DNDEBUG  -fvisibility=hidden -Wsign-compare -Wall -Wno-uninitialized -Wignored-qualifiers -Wcast-qual&lt;br /&gt;
    2.11.1&lt;br /&gt;
    ettus@lenovo-t480s:~$&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
If the simple tests of the installation listed above worked without any errors, then you are now finished, and you are now ready for the workshop/tutorial.&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7181</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7181"/>
				<updated>2026-08-02T19:24:02Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936'''&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:~$ uhd_usrp_probe&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: X-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: X310&lt;br /&gt;
|   |   revision: 11&lt;br /&gt;
|   |   revision_compat: 4&lt;br /&gt;
|   |   product: 30720&lt;br /&gt;
|   |   mac-addr0: 00:80:2f:21:9b:fa&lt;br /&gt;
|   |   mac-addr1: 00:80:2f:21:9b:fb&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.3&lt;br /&gt;
|   |   subnet0: 255.255.255.0&lt;br /&gt;
|   |   ip-addr1: 192.168.20.2&lt;br /&gt;
|   |   subnet1: 255.255.255.0&lt;br /&gt;
|   |   ip-addr2: 192.168.30.2&lt;br /&gt;
|   |   subnet2: 255.255.255.0&lt;br /&gt;
|   |   ip-addr3: 192.168.40.2&lt;br /&gt;
|   |   subnet3: 255.255.255.0&lt;br /&gt;
|   |   serial: 30A0656&lt;br /&gt;
|   |   FW Version: 6.1&lt;br /&gt;
|   |   FPGA Version: 39.2&lt;br /&gt;
|   |   FPGA git hash: 6a990d9&lt;br /&gt;
|   |   RFNoC capable: Yes&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  internal, external, gpsdo&lt;br /&gt;
|   |   Clock sources: internal, external, gpsdo&lt;br /&gt;
|   |   Sensors: temp_fpga, ref_locked&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   * 0/DDC#0&lt;br /&gt;
|   |   * 0/DDC#1&lt;br /&gt;
|   |   * 0/DUC#0&lt;br /&gt;
|   |   * 0/DUC#1&lt;br /&gt;
|   |   * 0/Radio#0&lt;br /&gt;
|   |   * 0/Radio#1&lt;br /&gt;
|   |   * 0/Replay#0&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Static connections on this device:&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   * 0/SEP#0:0==&amp;gt;0/DUC#0:0&lt;br /&gt;
|   |   * 0/DUC#0:0==&amp;gt;0/Radio#0:0&lt;br /&gt;
|   |   * 0/Radio#0:0==&amp;gt;0/DDC#0:0&lt;br /&gt;
|   |   * 0/DDC#0:0==&amp;gt;0/SEP#0:0&lt;br /&gt;
|   |   * 0/Radio#0:1==&amp;gt;0/DDC#0:1&lt;br /&gt;
|   |   * 0/DDC#0:1==&amp;gt;0/SEP#1:0&lt;br /&gt;
|   |   * 0/SEP#2:0==&amp;gt;0/DUC#1:0&lt;br /&gt;
|   |   * 0/DUC#1:0==&amp;gt;0/Radio#1:0&lt;br /&gt;
|   |   * 0/Radio#1:0==&amp;gt;0/DDC#1:0&lt;br /&gt;
|   |   * 0/DDC#1:0==&amp;gt;0/SEP#2:0&lt;br /&gt;
|   |   * 0/Radio#1:1==&amp;gt;0/DDC#1:1&lt;br /&gt;
|   |   * 0/DDC#1:1==&amp;gt;0/SEP#3:0&lt;br /&gt;
|   |   * 0/SEP#4:0==&amp;gt;0/Replay#0:0&lt;br /&gt;
|   |   * 0/Replay#0:0==&amp;gt;0/SEP#4:0&lt;br /&gt;
|   |   * 0/SEP#5:0==&amp;gt;0/Replay#0:1&lt;br /&gt;
|   |   * 0/Replay#0:1==&amp;gt;0/SEP#5:0&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       TX Dboard: 0/Radio#0&lt;br /&gt;
|   |   ID: UBX-TDD (0x0202)&lt;br /&gt;
|   |   Serial: 322248F&lt;br /&gt;
|   |   Revision: 2&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   Name: UBX TX&lt;br /&gt;
|   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 10.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 160000000.0 to 160000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: QI&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RX Dboard: 0/Radio#0&lt;br /&gt;
|   |   ID: UBX-TDD (0x0203)&lt;br /&gt;
|   |   Serial: 322248F&lt;br /&gt;
|   |   Revision: 2&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   Name: UBX RX&lt;br /&gt;
|   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 10.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 160000000.0 to 160000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       TX Dboard: 0/Radio#1&lt;br /&gt;
|   |   ID: CBX-120 (0x0084)&lt;br /&gt;
|   |   Serial: 313BF2A&lt;br /&gt;
|   |   Revision: 1&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   Name: CBX-120 TX&lt;br /&gt;
|   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 1200.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 120000000.0 to 120000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: QI&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RX Dboard: 0/Radio#1&lt;br /&gt;
|   |   ID: CBX-120 (0x0085)&lt;br /&gt;
|   |   Serial: 313BF2A&lt;br /&gt;
|   |   Revision: 1&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   Name: CBX-120 RX&lt;br /&gt;
|   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 1200.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 120000000.0 to 120000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 30A0656&lt;br /&gt;
    addr: 192.168.10.3&lt;br /&gt;
    fpga: HG&lt;br /&gt;
    name: &lt;br /&gt;
    product: X310&lt;br /&gt;
    type: x300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 1&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 345D72B&lt;br /&gt;
    name: PBU_USRP_2901&lt;br /&gt;
    product: B210&lt;br /&gt;
    type: b200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 2&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 352F061&lt;br /&gt;
    name: B206i&lt;br /&gt;
    product: B206mini&lt;br /&gt;
    type: b200&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6 --args &amp;quot;type=x300&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6 --args &amp;quot;type=x300&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[00:00:00.000330] Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
[00:00:02.315579022] Setting device timestamp to 0...&lt;br /&gt;
Setting TX samples per packet (spp) to 364&lt;br /&gt;
Setting TX samples per burst (spb) to 364&lt;br /&gt;
[00:00:02.318249157] Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
[00:00:02.320136063] Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
[00:00:12.332582703] Benchmark complete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:     99999647&lt;br /&gt;
  Num dropped samples:      0&lt;br /&gt;
  Num overruns detected:    0&lt;br /&gt;
  Num transmitted samples:  100113832&lt;br /&gt;
  Num sequence errors (Tx): 0&lt;br /&gt;
  Num sequence errors (Rx): 0&lt;br /&gt;
  Num underruns detected:   0&lt;br /&gt;
  Num late commands:        0&lt;br /&gt;
  Num timeouts (Tx):        0&lt;br /&gt;
  Num timeouts (Rx):        0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ sudo ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
[sudo] password for ettus-24-02: &lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Setting RX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Locking LO on channel 0&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ sudo ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 --args &amp;quot;type=b200,product=B206mini&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=b200,product=B206mini...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [B200] Detected Device: B206mini&lt;br /&gt;
[INFO] [B200] Operating over USB 3.&lt;br /&gt;
[INFO] [B200] Initialize CODEC control...&lt;br /&gt;
[INFO] [B200] Initialize Radio control...&lt;br /&gt;
[INFO] [B200] Performing register loopback test... &lt;br /&gt;
[INFO] [B200] Register loopback test passed&lt;br /&gt;
[INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
[INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: B-Series Device&lt;br /&gt;
  Mboard 0: B206mini&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: FE-RX1&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: FE-TX1&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
[INFO] [B200] Asking for clock rate 40.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 40.000000 MHz.&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Setting RX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Locking LO on channel 0&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ls -al usrp_samples.dat&lt;br /&gt;
-rw-r--r-- 1 root root 200000000 Jun 16 23:53 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Setting TX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: TXLO: locked ...&lt;br /&gt;
[WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --args &amp;quot;type=x300&amp;quot; --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$  ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --args &amp;quot;type=x300&amp;quot; --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 160.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: RXLO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 --args &amp;quot;type=b200,product=B206mini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 --args &amp;quot;type=b200,product=B206mini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=b200,product=B206mini...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [B200] Detected Device: B206mini&lt;br /&gt;
[INFO] [B200] Operating over USB 3.&lt;br /&gt;
[INFO] [B200] Initialize CODEC control...&lt;br /&gt;
[INFO] [B200] Initialize Radio control...&lt;br /&gt;
[INFO] [B200] Performing register loopback test... &lt;br /&gt;
[INFO] [B200] Register loopback test passed&lt;br /&gt;
[INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
[INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: B-Series Device&lt;br /&gt;
  Mboard 0: B206mini&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: FE-RX1&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: FE-TX1&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
[INFO] [B200] Asking for clock rate 40.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 40.000000 MHz.&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Setting TX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7180</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7180"/>
				<updated>2026-08-02T14:21:18Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:center;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:center;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|450px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7022</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7022"/>
				<updated>2026-06-16T18:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936'''&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:~$ uhd_usrp_probe&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: X-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: X310&lt;br /&gt;
|   |   revision: 11&lt;br /&gt;
|   |   revision_compat: 4&lt;br /&gt;
|   |   product: 30720&lt;br /&gt;
|   |   mac-addr0: 00:80:2f:21:9b:fa&lt;br /&gt;
|   |   mac-addr1: 00:80:2f:21:9b:fb&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.3&lt;br /&gt;
|   |   subnet0: 255.255.255.0&lt;br /&gt;
|   |   ip-addr1: 192.168.20.2&lt;br /&gt;
|   |   subnet1: 255.255.255.0&lt;br /&gt;
|   |   ip-addr2: 192.168.30.2&lt;br /&gt;
|   |   subnet2: 255.255.255.0&lt;br /&gt;
|   |   ip-addr3: 192.168.40.2&lt;br /&gt;
|   |   subnet3: 255.255.255.0&lt;br /&gt;
|   |   serial: 30A0656&lt;br /&gt;
|   |   FW Version: 6.1&lt;br /&gt;
|   |   FPGA Version: 39.2&lt;br /&gt;
|   |   FPGA git hash: 6a990d9&lt;br /&gt;
|   |   RFNoC capable: Yes&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  internal, external, gpsdo&lt;br /&gt;
|   |   Clock sources: internal, external, gpsdo&lt;br /&gt;
|   |   Sensors: temp_fpga, ref_locked&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   * 0/DDC#0&lt;br /&gt;
|   |   * 0/DDC#1&lt;br /&gt;
|   |   * 0/DUC#0&lt;br /&gt;
|   |   * 0/DUC#1&lt;br /&gt;
|   |   * 0/Radio#0&lt;br /&gt;
|   |   * 0/Radio#1&lt;br /&gt;
|   |   * 0/Replay#0&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Static connections on this device:&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   * 0/SEP#0:0==&amp;gt;0/DUC#0:0&lt;br /&gt;
|   |   * 0/DUC#0:0==&amp;gt;0/Radio#0:0&lt;br /&gt;
|   |   * 0/Radio#0:0==&amp;gt;0/DDC#0:0&lt;br /&gt;
|   |   * 0/DDC#0:0==&amp;gt;0/SEP#0:0&lt;br /&gt;
|   |   * 0/Radio#0:1==&amp;gt;0/DDC#0:1&lt;br /&gt;
|   |   * 0/DDC#0:1==&amp;gt;0/SEP#1:0&lt;br /&gt;
|   |   * 0/SEP#2:0==&amp;gt;0/DUC#1:0&lt;br /&gt;
|   |   * 0/DUC#1:0==&amp;gt;0/Radio#1:0&lt;br /&gt;
|   |   * 0/Radio#1:0==&amp;gt;0/DDC#1:0&lt;br /&gt;
|   |   * 0/DDC#1:0==&amp;gt;0/SEP#2:0&lt;br /&gt;
|   |   * 0/Radio#1:1==&amp;gt;0/DDC#1:1&lt;br /&gt;
|   |   * 0/DDC#1:1==&amp;gt;0/SEP#3:0&lt;br /&gt;
|   |   * 0/SEP#4:0==&amp;gt;0/Replay#0:0&lt;br /&gt;
|   |   * 0/Replay#0:0==&amp;gt;0/SEP#4:0&lt;br /&gt;
|   |   * 0/SEP#5:0==&amp;gt;0/Replay#0:1&lt;br /&gt;
|   |   * 0/Replay#0:1==&amp;gt;0/SEP#5:0&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       TX Dboard: 0/Radio#0&lt;br /&gt;
|   |   ID: UBX-TDD (0x0202)&lt;br /&gt;
|   |   Serial: 322248F&lt;br /&gt;
|   |   Revision: 2&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   Name: UBX TX&lt;br /&gt;
|   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 10.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 160000000.0 to 160000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: QI&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RX Dboard: 0/Radio#0&lt;br /&gt;
|   |   ID: UBX-TDD (0x0203)&lt;br /&gt;
|   |   Serial: 322248F&lt;br /&gt;
|   |   Revision: 2&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   Name: UBX RX&lt;br /&gt;
|   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 10.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 160000000.0 to 160000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       TX Dboard: 0/Radio#1&lt;br /&gt;
|   |   ID: CBX-120 (0x0084)&lt;br /&gt;
|   |   Serial: 313BF2A&lt;br /&gt;
|   |   Revision: 1&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   Name: CBX-120 TX&lt;br /&gt;
|   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 1200.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 120000000.0 to 120000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: QI&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       RX Dboard: 0/Radio#1&lt;br /&gt;
|   |   ID: CBX-120 (0x0085)&lt;br /&gt;
|   |   Serial: 313BF2A&lt;br /&gt;
|   |   Revision: 1&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   Name: CBX-120 RX&lt;br /&gt;
|   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   Freq range: 1200.000 to 6000.000 MHz&lt;br /&gt;
|   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   Bandwidth range: 120000000.0 to 120000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   Uses LO offset: No&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 30A0656&lt;br /&gt;
    addr: 192.168.10.3&lt;br /&gt;
    fpga: HG&lt;br /&gt;
    name: &lt;br /&gt;
    product: X310&lt;br /&gt;
    type: x300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 1&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 345D72B&lt;br /&gt;
    name: PBU_USRP_2901&lt;br /&gt;
    product: B210&lt;br /&gt;
    type: b200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 2&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    serial: 352F061&lt;br /&gt;
    name: B206i&lt;br /&gt;
    product: B206mini&lt;br /&gt;
    type: b200&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6 --args &amp;quot;type=x300&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6 --args &amp;quot;type=x300&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[00:00:00.000330] Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
[00:00:02.315579022] Setting device timestamp to 0...&lt;br /&gt;
Setting TX samples per packet (spp) to 364&lt;br /&gt;
Setting TX samples per burst (spb) to 364&lt;br /&gt;
[00:00:02.318249157] Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
[00:00:02.320136063] Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
[00:00:12.332582703] Benchmark complete.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:     99999647&lt;br /&gt;
  Num dropped samples:      0&lt;br /&gt;
  Num overruns detected:    0&lt;br /&gt;
  Num transmitted samples:  100113832&lt;br /&gt;
  Num sequence errors (Tx): 0&lt;br /&gt;
  Num sequence errors (Rx): 0&lt;br /&gt;
  Num underruns detected:   0&lt;br /&gt;
  Num late commands:        0&lt;br /&gt;
  Num timeouts (Tx):        0&lt;br /&gt;
  Num timeouts (Rx):        0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ sudo ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
[sudo] password for ettus-24-02: &lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Setting RX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Locking LO on channel 0&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ sudo ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 --args &amp;quot;type=b200,product=B206mini&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=b200,product=B206mini...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [B200] Detected Device: B206mini&lt;br /&gt;
[INFO] [B200] Operating over USB 3.&lt;br /&gt;
[INFO] [B200] Initialize CODEC control...&lt;br /&gt;
[INFO] [B200] Initialize Radio control...&lt;br /&gt;
[INFO] [B200] Performing register loopback test... &lt;br /&gt;
[INFO] [B200] Register loopback test passed&lt;br /&gt;
[INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
[INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: B-Series Device&lt;br /&gt;
  Mboard 0: B206mini&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: FE-RX1&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: FE-TX1&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
[INFO] [B200] Asking for clock rate 40.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 40.000000 MHz.&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Setting RX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Locking LO on channel 0&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ls -al usrp_samples.dat&lt;br /&gt;
-rw-r--r-- 1 root root 200000000 Jun 16 23:53 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 --args &amp;quot;type=x300&amp;quot; usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Setting TX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: TXLO: locked ...&lt;br /&gt;
[WARNING] [0/Radio#0] Attempting to set tick rate to 0. Skipping.&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --args &amp;quot;type=x300&amp;quot; --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$  ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --args &amp;quot;type=x300&amp;quot; --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=x300...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [X300] X300 initialization sequence...&lt;br /&gt;
[INFO] [X300] Maximum frame size: 1472 bytes.&lt;br /&gt;
[INFO] [X300] Radio 1x clock: 200 MHz&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: X-Series Device&lt;br /&gt;
  Mboard 0: X310&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: UBX RX&lt;br /&gt;
  RX Channel: 1&lt;br /&gt;
    RX DSP: 1&lt;br /&gt;
    RX Dboard: B&lt;br /&gt;
    RX Subdev: CBX-120 RX&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: UBX TX&lt;br /&gt;
  TX Channel: 1&lt;br /&gt;
    TX DSP: 1&lt;br /&gt;
    TX Dboard: B&lt;br /&gt;
    TX Subdev: CBX-120 TX&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 160.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: RXLO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 --args &amp;quot;type=b200,product=B206mini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ettus-24-02@ettus-24-02-Dell-Pro-16-PC16255:/usr/local/lib/uhd/examples$./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 --args &amp;quot;type=b200,product=B206mini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: type=b200,product=B206mini...&lt;br /&gt;
[INFO] [UHD] linux; GNU C++ version 13.3.0; Boost_108300; UHD_4.9.0.HEAD-0-g006d7f76&lt;br /&gt;
[INFO] [B200] Detected Device: B206mini&lt;br /&gt;
[INFO] [B200] Operating over USB 3.&lt;br /&gt;
[INFO] [B200] Initialize CODEC control...&lt;br /&gt;
[INFO] [B200] Initialize Radio control...&lt;br /&gt;
[INFO] [B200] Performing register loopback test... &lt;br /&gt;
[INFO] [B200] Register loopback test passed&lt;br /&gt;
[INFO] [B200] Setting master clock rate selection to 'automatic'.&lt;br /&gt;
[INFO] [B200] Asking for clock rate 16.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 16.000000 MHz.&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: B-Series Device&lt;br /&gt;
  Mboard 0: B206mini&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: FE-RX1&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: FE-TX1&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
[INFO] [B200] Asking for clock rate 40.000000 MHz... &lt;br /&gt;
[INFO] [B200] Actually got clock rate 40.000000 MHz.&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Setting TX LO Offset: 0.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Flashes an image onto the X300/X310 FPGA.&lt;br /&gt;
&lt;br /&gt;
    usrp_x3xx_fpga_burner&lt;br /&gt;
&lt;br /&gt;
*Reads and writes motherboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_mb_eeprom&lt;br /&gt;
&lt;br /&gt;
*Reads and writes daughterboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_db_eeprom&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7021</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7021"/>
				<updated>2026-06-16T18:11:10Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936'''&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_find_devices &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name: &lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls -al usrp_samples.dat &lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep  1 14:43 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Flashes an image onto the X300/X310 FPGA.&lt;br /&gt;
&lt;br /&gt;
    usrp_x3xx_fpga_burner&lt;br /&gt;
&lt;br /&gt;
*Reads and writes motherboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_mb_eeprom&lt;br /&gt;
&lt;br /&gt;
*Reads and writes daughterboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_db_eeprom&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7020</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7020"/>
				<updated>2026-06-16T18:10:02Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936'''&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_find_devices &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name: &lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls -al usrp_samples.dat &lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep  1 14:43 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Flashes an image onto the X300/X310 FPGA.&lt;br /&gt;
&lt;br /&gt;
    usrp_x3xx_fpga_burner&lt;br /&gt;
&lt;br /&gt;
*Reads and writes motherboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_mb_eeprom&lt;br /&gt;
&lt;br /&gt;
*Reads and writes daughterboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_db_eeprom&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_siggen_2.jpg&amp;diff=7019</id>
		<title>File:uhd siggen 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_siggen_2.jpg&amp;diff=7019"/>
				<updated>2026-06-16T18:08:17Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_siggen_1.jpg&amp;diff=7018</id>
		<title>File:uhd siggen 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_siggen_1.jpg&amp;diff=7018"/>
				<updated>2026-06-16T18:07:55Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_3.jpg&amp;diff=7017</id>
		<title>File:uhd fft 3.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_3.jpg&amp;diff=7017"/>
				<updated>2026-06-16T18:07:31Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_2.jpg&amp;diff=7016</id>
		<title>File:uhd fft 2.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_2.jpg&amp;diff=7016"/>
				<updated>2026-06-16T18:07:11Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_1.jpg&amp;diff=7015</id>
		<title>File:uhd fft 1.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_1.jpg&amp;diff=7015"/>
				<updated>2026-06-16T18:06:50Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7014</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7014"/>
				<updated>2026-06-16T18:00:34Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: /* USRP as Spectrum Analyzer using uhd_fft */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936''' by Neel Pandeya&lt;br /&gt;
&amp;lt;!-- Internal use only: please do keep this updated!&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Neel Pandeya&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_find_devices &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name: &lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls -al usrp_samples.dat &lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep  1 14:43 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Flashes an image onto the X300/X310 FPGA.&lt;br /&gt;
&lt;br /&gt;
    usrp_x3xx_fpga_burner&lt;br /&gt;
&lt;br /&gt;
*Reads and writes motherboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_mb_eeprom&lt;br /&gt;
&lt;br /&gt;
*Reads and writes daughterboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_db_eeprom&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7013</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7013"/>
				<updated>2026-06-16T17:57:46Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-936''' by Neel Pandeya&lt;br /&gt;
&amp;lt;!-- Internal use only: please do keep this updated!&lt;br /&gt;
==Revision History==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Date&lt;br /&gt;
!Author&lt;br /&gt;
!Details&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2016-05-01   &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Neel Pandeya&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator. &lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to preform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling==&lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
&lt;br /&gt;
*Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
*Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
*Always handle the board with proper anti-static methods.&lt;br /&gt;
*Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
*Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
*Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{|&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
*Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details  include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |   &lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_find_devices&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ uhd_find_devices &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name: &lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*View firewall settings with:&lt;br /&gt;
    sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at: &lt;br /&gt;
    $install_prefix/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Linux, the default installation prefix location is &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
    /usr/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is &amp;lt;code&amp;gt;/opt/local&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    /opt/local/lib/uhd/examples&lt;br /&gt;
&lt;br /&gt;
On Windows, the default installation prefix will be &amp;lt;code&amp;gt;C:\Program Files\UHD\&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
    C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
&lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
*Benchmarks interface with device.&lt;br /&gt;
    ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;benmark_rate&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Receiving Samples== &lt;br /&gt;
*Saves samples to file &lt;br /&gt;
    ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of file size output from &amp;lt;code&amp;gt;rx_samples_to_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ls -al usrp_samples.dat &lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep  1 14:43 usrp_samples.dat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
*Transmits samples from file&lt;br /&gt;
    ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
&lt;br /&gt;
Example of output from &amp;lt;code&amp;gt;tx_samples_from_file&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
*Creates ASCII/Ncurses FFT&lt;br /&gt;
    ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example screenshot of &amp;lt;code&amp;gt;rx_ascii_art_dft&amp;lt;/code&amp;gt; running:&lt;br /&gt;
&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
*Transmits specific waveform &lt;br /&gt;
    ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;tx_waveforms&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0 &lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==USRP as Spectrum Analyzer using uhd_fft==&lt;br /&gt;
&lt;br /&gt;
Receives signals and acts as a spectrum analyzer. The &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt; utility receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency versus power).&lt;br /&gt;
&lt;br /&gt;
You can find this utility under:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
&lt;br /&gt;
'''Note:''' We have generated a CW signal at 915 MHz using the &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; example, which is discussed in the next section. This signal is received and displayed using &amp;lt;code&amp;gt;uhd_fft&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as Signal Generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; is a USRP signal generator utility provided by UHD (USRP Hardware Driver). It can generate test signals or continuous wave (CW) transmissions using any UHD-supported USRP device.&lt;br /&gt;
&lt;br /&gt;
It provides a simple software-based RF signal generator without requiring a custom application or GNU Radio flowgraph.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;uhd_siggen_gui&amp;lt;/code&amp;gt; utility provides the same functionality as &amp;lt;code&amp;gt;uhd_siggen&amp;lt;/code&amp;gt; but includes a graphical user interface that allows parameters to be adjusted dynamically during operation.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to the directory:&lt;br /&gt;
&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
Run the following command:&lt;br /&gt;
&lt;br /&gt;
    uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
&lt;br /&gt;
*Downloads FPGA images for the currently installed UHD version.&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_images_downloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Flashes an image onto the X300/X310 FPGA.&lt;br /&gt;
&lt;br /&gt;
    usrp_x3xx_fpga_burner&lt;br /&gt;
&lt;br /&gt;
*Reads and writes motherboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_mb_eeprom&lt;br /&gt;
&lt;br /&gt;
*Reads and writes daughterboard EEPROM.&lt;br /&gt;
&lt;br /&gt;
    usrp_burn_db_eeprom&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7012</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7012"/>
				<updated>2026-06-16T17:49:42Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Number==&lt;br /&gt;
'''AN-936'''&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Abstract== &lt;br /&gt;
This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to perform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
&lt;br /&gt;
==Proper Care and Handling== &lt;br /&gt;
All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
•	Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
•	Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
•	Always handle the board with proper anti-static methods.&lt;br /&gt;
•	Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
•	Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
•	Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{| |style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input |- |style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration |- |}&lt;br /&gt;
&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
•	Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
uhd_usrp_probe&lt;br /&gt;
Example output from uhd_usrp_probe:&lt;br /&gt;
$ uhd_usrp_probe&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |&lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
 &lt;br /&gt;
•	Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
uhd_find_devices&lt;br /&gt;
Example output from uhd_find_devices:&lt;br /&gt;
$ uhd_find_devices&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name:&lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
 &lt;br /&gt;
•	View firewall settings with:&lt;br /&gt;
sudo iptables -L&lt;br /&gt;
&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at:&lt;br /&gt;
$install_prefix/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On Linux, the default installation prefix location is /usr/local.&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
/usr/local/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is /opt/local.&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
/opt/local/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On Windows, the default installation prefix will be C:\Program Files\UHD&amp;lt;/code&amp;gt;.&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
 &lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
•	Benchmarks interface with device.&lt;br /&gt;
./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
Example output from benchmark_rate:&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==Receiving Samples==&lt;br /&gt;
•	Saves samples to file&lt;br /&gt;
./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
Example output from rx_samples_to_file:&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
Example of file size output from rx_samples_to_file:&lt;br /&gt;
$ ls -al usrp_samples.dat&lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep 1 14:43 usrp_samples.dat&lt;br /&gt;
 &lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
•	Transmits samples from file&lt;br /&gt;
./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
Example output from tx_samples_from_file:&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
•	Creates ASCII/Ncurses FFT&lt;br /&gt;
./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
Example output from rx_ascii_art_dft:&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
 &lt;br /&gt;
Example screenshot of rx_ascii_art_dft running:&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
•	Transmits specific waveform&lt;br /&gt;
./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
Example output from tx_waveforms:&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==USRP as Spectrum analyzer using uhd_fft==&lt;br /&gt;
Receives signal and acts as a spectrum analyzer. It is done using uhd_fft example. It receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency vs power).&lt;br /&gt;
You can find this under:&amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
Go to directory:&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
 &lt;br /&gt;
Run the following command:&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
 &lt;br /&gt;
Note: We have generated a CW signal at 915 MHz using uhd_siggen_gui example which will be discussed further in this document. This signal we are receiving using uhd_fft example.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as signal generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
uhd_siggen is a USRP signal generator utility provided by UHD (USRP Hardware Driver). Its purpose is to generate test signals or continuous wave (CW) transmissions through any UHD-supported USRP device.&lt;br /&gt;
It is essentially a software-based RF signal generator, allowing you to test or transmit signals without writing a full program in Python or GNU Radio.&lt;br /&gt;
Example:&lt;br /&gt;
Go to directory:&lt;br /&gt;
/usr/local/bin&lt;br /&gt;
 &lt;br /&gt;
Run command:&lt;br /&gt;
uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
 &lt;br /&gt;
[[File:uhd siggen 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
uhd_siggen_gui is similar to uhd_siggen with the only difference being that it provides a GUI where you can adjust the parameters dynamically instead of setting everything in command line.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to directory: &amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Run command: &amp;lt;code&amp;gt;uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
•	Downloads FPGA images for current UHD version&lt;br /&gt;
sudo uhd_images_downloader&lt;br /&gt;
Example output from running uhd_images_downloader:&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
 &lt;br /&gt;
•	Flashes an image onto the X300/X310 FPGA&lt;br /&gt;
usrp_x3xx_fpga_burner&lt;br /&gt;
•	Reading and writing motherboard EEPROM&lt;br /&gt;
usrp_burn_mb_eeprom&lt;br /&gt;
•	Reading and writing daughterboard EEPROM&lt;br /&gt;
usrp_burn_db_eeprom&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_siggen_2.png&amp;diff=7011</id>
		<title>File:uhd siggen 2.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_siggen_2.png&amp;diff=7011"/>
				<updated>2026-06-16T17:43:30Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_siggen_1.png&amp;diff=7010</id>
		<title>File:uhd siggen 1.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_siggen_1.png&amp;diff=7010"/>
				<updated>2026-06-16T17:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_3.png&amp;diff=7009</id>
		<title>File:uhd fft 3.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_3.png&amp;diff=7009"/>
				<updated>2026-06-16T17:42:57Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_2.png&amp;diff=7008</id>
		<title>File:uhd fft 2.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_2.png&amp;diff=7008"/>
				<updated>2026-06-16T17:42:43Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:uhd_fft_1.png&amp;diff=7007</id>
		<title>File:uhd fft 1.png</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:uhd_fft_1.png&amp;diff=7007"/>
				<updated>2026-06-16T17:42:19Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7006</id>
		<title>Verifying the Operation of the USRP Using UHD and GNU Radio</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Verifying_the_Operation_of_the_USRP_Using_UHD_and_GNU_Radio&amp;diff=7006"/>
				<updated>2026-06-16T17:41:20Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information== '''AN-936''' by Neel Pandeya and Siddhant Dhawan&lt;br /&gt;
==Abstract== This AN explains how to use UHD and GNU Radio, once installed, to verify the correct operation of the USRP. Several test procedures are explained in detail. Several tests make use of an optional spectrum analyzer and signal generator.&lt;br /&gt;
==Overview== This application note will cover testing your USRP to verify it is operational. You will need to have a working installation of UHD to perform the following steps to verify your USRP. If you do not have UHD installed, please reference the Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux|Linux]], [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on OS X|OS X]] and [[Building and Installing the USRP Open Source Toolchain (UHD and GNU Radio) on Windows|Windows]] Application Notes.&lt;br /&gt;
Alternatively, you may use the [[Live SDR Environment]] to perform the following steps. More information about the [[Live SDR Environment]] is available at the [[Live SDR Environment Getting Started Guides]] page.&lt;br /&gt;
==Proper Care and Handling== All Ettus Research products are individually tested before shipment. The USRP™ is guaranteed to be functional at the time it is received by the customer. Improper use or handling of the USRP™ can easily cause the device to become non-functional. Listed below are some examples of actions which can prevent damage to the unit:&lt;br /&gt;
•	Never allow metal objects to touch the circuit board while powered.&lt;br /&gt;
•	Always properly terminate the transmit port with an antenna or 50Ω load.&lt;br /&gt;
•	Always handle the board with proper anti-static methods.&lt;br /&gt;
•	Never allow the board to directly or indirectly come into contact with any voltage spikes.&lt;br /&gt;
•	Never allow any water, or condensing moisture, to come into contact with the boards.&lt;br /&gt;
•	Always use caution with FPGA, firmware, or software modifications.&lt;br /&gt;
{| |style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Never apply more than -15 dBm of power into any RF input |- |style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |[[File:Caution.png|24px|center]]&lt;br /&gt;
|style=&amp;quot;padding-left:10px; padding-right:10px; padding-bottom:10px;&amp;quot; |Always use at least 30dB attenuation if operating in loopback configuration |- |}&lt;br /&gt;
==Finding the Device==&lt;br /&gt;
•	Report detailed information on UHD-supported Software Radio Peripherals attached by USB, network, or embedded configuration. Details include unit names, revision numbers, and available sensors on all attached USRP motherboards and daughterboards.&lt;br /&gt;
uhd_usrp_probe&lt;br /&gt;
Example output from uhd_usrp_probe:&lt;br /&gt;
$ uhd_usrp_probe&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
  _____________________________________________________&lt;br /&gt;
 /&lt;br /&gt;
|       Device: USRP2 / N-Series Device&lt;br /&gt;
|     _____________________________________________________&lt;br /&gt;
|    /&lt;br /&gt;
|   |       Mboard: N210r4&lt;br /&gt;
|   |   hardware: 2577&lt;br /&gt;
|   |   mac-addr: 00:00:00:00:00:00&lt;br /&gt;
|   |   ip-addr: 192.168.10.2&lt;br /&gt;
|   |   subnet: 255.255.255.255&lt;br /&gt;
|   |   gateway: 255.255.255.255&lt;br /&gt;
|   |   gpsdo: none&lt;br /&gt;
|   |   serial: xxxxxx&lt;br /&gt;
|   |   FW Version: 12.4&lt;br /&gt;
|   |   FPGA Version: 11.1&lt;br /&gt;
|   |&lt;br /&gt;
|   |   Time sources:  none, external, _external_, mimo&lt;br /&gt;
|   |   Clock sources: internal, external, mimo&lt;br /&gt;
|   |   Sensors: mimo_locked, ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 0&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX DSP: 1&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX, WBX + Simple GDB (0x0053)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 RX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, RX2, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 31.5 step 0.5 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p44&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |   |   |   Gain range fine: 0.0 to 0.5 step 0.1 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX DSP: 0&lt;br /&gt;
|   |   |&lt;br /&gt;
|   |   |   Freq range: -50.000 to 50.000 MHz&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: WBX (0x0052)&lt;br /&gt;
|   |   |   Serial: xxxxxx&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: WBXv2 TX+GDB&lt;br /&gt;
|   |   |   |   Antennas: TX/RX, CAL&lt;br /&gt;
|   |   |   |   Sensors: lo_locked&lt;br /&gt;
|   |   |   |   Freq range: 68.750 to 2200.000 MHz&lt;br /&gt;
|   |   |   |   Gain range PGA0: 0.0 to 25.0 step 0.1 dB&lt;br /&gt;
|   |   |   |   Bandwidth range: 40000000.0 to 40000000.0 step 0.0 Hz&lt;br /&gt;
|   |   |   |   Connection Type: IQ&lt;br /&gt;
|   |   |   |   Uses LO offset: No&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9777&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
 &lt;br /&gt;
•	Find UHD-supporting Software Radio Peripherals attached by USB, network or embedded configuration. Uses broadcast packets for discovery. Often blocked by routers, switches, firewalls.&lt;br /&gt;
uhd_find_devices&lt;br /&gt;
Example output from uhd_find_devices:&lt;br /&gt;
$ uhd_find_devices&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
-- UHD Device 0&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Device Address:&lt;br /&gt;
    type: usrp2&lt;br /&gt;
    addr: 192.168.10.2&lt;br /&gt;
    name:&lt;br /&gt;
    serial: xxxxxx&lt;br /&gt;
 &lt;br /&gt;
•	View firewall settings with:&lt;br /&gt;
sudo iptables -L&lt;br /&gt;
==UHD Programs==&lt;br /&gt;
The example programs included with the UHD driver will be located at:&lt;br /&gt;
$install_prefix/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On Linux, the default installation prefix location is /usr/local.&lt;br /&gt;
The example programs are located in the folder:&lt;br /&gt;
/usr/local/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On OSX, the configuration is similar to Linux, however the default installation prefix location is /opt/local.&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
/opt/local/lib/uhd/examples&lt;br /&gt;
 &lt;br /&gt;
On Windows, the default installation prefix will be C:\Program Files\UHD&amp;lt;/code&amp;gt;.&lt;br /&gt;
The example programs will be located in the folder:&lt;br /&gt;
C:\Program Files\UHD\lib\uhd\examples&lt;br /&gt;
 &lt;br /&gt;
Before executing the following commands, change directory to the appropriate location.&lt;br /&gt;
==Benchmarking your system==&lt;br /&gt;
•	Benchmarks interface with device.&lt;br /&gt;
./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
Example output from benchmark_rate:&lt;br /&gt;
$ ./benchmark_rate --rx_rate 10e6 --tx_rate 10e6&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Testing receive rate 10.000000 Msps on 1 channels&lt;br /&gt;
Testing transmit rate 10.000000 Msps on 1 channels&lt;br /&gt;
&lt;br /&gt;
Benchmark rate summary:&lt;br /&gt;
  Num received samples:    100104043&lt;br /&gt;
  Num dropped samples:     0&lt;br /&gt;
  Num overflows detected:  0&lt;br /&gt;
  Num transmitted samples: 100229019&lt;br /&gt;
  Num sequence errors:     0&lt;br /&gt;
  Num underflows detected: 0&lt;br /&gt;
  Num late commands:       0&lt;br /&gt;
  Num timeouts:            0&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==Receiving Samples==&lt;br /&gt;
•	Saves samples to file&lt;br /&gt;
./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
Example output from rx_samples_to_file:&lt;br /&gt;
$ ./rx_samples_to_file --freq 98e6 --rate 5e6 --gain 20 --duration 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Waiting for &amp;quot;lo_locked&amp;quot;: ++++++++++ locked.&lt;br /&gt;
&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
Example of file size output from rx_samples_to_file:&lt;br /&gt;
$ ls -al usrp_samples.dat&lt;br /&gt;
-rw-rw-r-- 1 user user 200040000 Sep 1 14:43 usrp_samples.dat&lt;br /&gt;
 &lt;br /&gt;
==Transmitting Samples==&lt;br /&gt;
•	Transmits samples from file&lt;br /&gt;
./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
Example output from tx_samples_from_file:&lt;br /&gt;
$ ./tx_samples_from_file --freq 915e6 --rate 5e6 --gain 10 usrp_samples.dat&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 10.000000 dB...&lt;br /&gt;
Actual TX Gain: 10.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==Terminal DFT/FFT==&lt;br /&gt;
•	Creates ASCII/Ncurses FFT&lt;br /&gt;
./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
Example output from rx_ascii_art_dft:&lt;br /&gt;
$ ./rx_ascii_art_dft --freq 98e6 --rate 5e6 --gain 20 --bw 5e6 --ref-lvl -30&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting RX Rate: 5.000000 Msps...&lt;br /&gt;
Actual RX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting RX Freq: 98.000000 MHz...&lt;br /&gt;
Actual RX Freq: 98.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting RX Gain: 20.000000 dB...&lt;br /&gt;
Actual RX Gain: 20.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
Actual RX Bandwidth: 5.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Checking RX: LO: locked ...&lt;br /&gt;
 &lt;br /&gt;
Example screenshot of rx_ascii_art_dft running:&lt;br /&gt;
[[File:rx ascii art dft.png|900px]]&lt;br /&gt;
==Transmit test signal==&lt;br /&gt;
•	Transmits specific waveform&lt;br /&gt;
./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
Example output from tx_waveforms:&lt;br /&gt;
$ ./tx_waveforms --freq 915e6 --rate 5e6 --gain 0&lt;br /&gt;
linux; GNU C++ version 4.8.4; Boost_105400; UHD_003.010.000.HEAD-0-g6e1ac3fc&lt;br /&gt;
&lt;br /&gt;
Creating the usrp device with: ...&lt;br /&gt;
-- Opening a USRP2/N-Series device...&lt;br /&gt;
-- Current recv frame size: 1472 bytes&lt;br /&gt;
-- Current send frame size: 1472 bytes&lt;br /&gt;
Using Device: Single USRP:&lt;br /&gt;
  Device: USRP2 / N-Series Device&lt;br /&gt;
  Mboard 0: N210r4&lt;br /&gt;
  RX Channel: 0&lt;br /&gt;
    RX DSP: 0&lt;br /&gt;
    RX Dboard: A&lt;br /&gt;
    RX Subdev: WBXv2 RX+GDB&lt;br /&gt;
  TX Channel: 0&lt;br /&gt;
    TX DSP: 0&lt;br /&gt;
    TX Dboard: A&lt;br /&gt;
    TX Subdev: WBXv2 TX+GDB&lt;br /&gt;
&lt;br /&gt;
Setting TX Rate: 5.000000 Msps...&lt;br /&gt;
Actual TX Rate: 5.000000 Msps...&lt;br /&gt;
&lt;br /&gt;
Setting TX Freq: 915.000000 MHz...&lt;br /&gt;
Actual TX Freq: 915.000000 MHz...&lt;br /&gt;
&lt;br /&gt;
Setting TX Gain: 0.000000 dB...&lt;br /&gt;
Actual TX Gain: 0.000000 dB...&lt;br /&gt;
&lt;br /&gt;
Setting device timestamp to 0...&lt;br /&gt;
Checking TX: LO: locked ...&lt;br /&gt;
Press Ctrl + C to stop streaming...&lt;br /&gt;
^C&lt;br /&gt;
Done!&lt;br /&gt;
 &lt;br /&gt;
==USRP as Spectrum analyzer using uhd_fft==&lt;br /&gt;
Receives signal and acts as a spectrum analyzer. It is done using uhd_fft example. It receives samples from a USRP, performs an FFT, and displays the power spectrum (frequency vs power).&lt;br /&gt;
You can find this under:&amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 1.jpg|900px]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
Go to directory:&lt;br /&gt;
    /usr/local/bin&lt;br /&gt;
 &lt;br /&gt;
Run the following command:&lt;br /&gt;
    uhd_fft --args &amp;quot;addr=192.168.10.2&amp;quot; --freq 915e6 -s 20e6 -g 25&lt;br /&gt;
 &lt;br /&gt;
Note: We have generated a CW signal at 915 MHz using uhd_siggen_gui example which will be discussed further in this document. This signal we are receiving using uhd_fft example.&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd fft 3.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==USRP as signal generator using uhd_siggen and uhd_siggen_gui==&lt;br /&gt;
uhd_siggen is a USRP signal generator utility provided by UHD (USRP Hardware Driver). Its purpose is to generate test signals or continuous wave (CW) transmissions through any UHD-supported USRP device.&lt;br /&gt;
It is essentially a software-based RF signal generator, allowing you to test or transmit signals without writing a full program in Python or GNU Radio.&lt;br /&gt;
Example:&lt;br /&gt;
Go to directory:&lt;br /&gt;
/usr/local/bin&lt;br /&gt;
 &lt;br /&gt;
Run command:&lt;br /&gt;
uhd_siggen --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&lt;br /&gt;
 &lt;br /&gt;
[[File:uhd siggen 1.png|900px]]&lt;br /&gt;
&lt;br /&gt;
uhd_siggen_gui is similar to uhd_siggen with the only difference being that it provides a GUI where you can adjust the parameters dynamically instead of setting everything in command line.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Go to directory: &amp;lt;code&amp;gt;/usr/local/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Run command: &amp;lt;code&amp;gt;uhd_siggen_gui --args &amp;quot;type=b200&amp;quot; --freq 915e6 -g 40&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:uhd siggen 2.png|900px]]&lt;br /&gt;
&lt;br /&gt;
==Additional UHD Utilities==&lt;br /&gt;
•	Downloads FPGA images for current UHD version&lt;br /&gt;
sudo uhd_images_downloader&lt;br /&gt;
Example output from running uhd_images_downloader:&lt;br /&gt;
$ [sudo] uhd_images_downloader&lt;br /&gt;
Images destination:      /usr/local/share/uhd/images&lt;br /&gt;
Downloading images from: http://files.ettus.com/binaries/images/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
Downloading images to:   /tmp/tmpPYd_5J/uhd-images_003.010.000.000-release.zip&lt;br /&gt;
58959 kB / 58959 kB (100%)&lt;br /&gt;
&lt;br /&gt;
Images successfully installed to: /usr/local/share/uhd/images&lt;br /&gt;
 &lt;br /&gt;
•	Flashes an image onto the X300/X310 FPGA&lt;br /&gt;
usrp_x3xx_fpga_burner&lt;br /&gt;
•	Reading and writing motherboard EEPROM&lt;br /&gt;
usrp_burn_mb_eeprom&lt;br /&gt;
•	Reading and writing daughterboard EEPROM&lt;br /&gt;
usrp_burn_db_eeprom&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7005</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7005"/>
				<updated>2026-06-16T17:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: /* Configuring Network Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:center;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|450px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:center;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|450px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7004</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7004"/>
				<updated>2026-06-16T17:19:59Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: /* Configuring Network Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:70%; text-align:left;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:30%; text-align:right;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|500px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7003</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7003"/>
				<updated>2026-06-16T17:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:left;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:right;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|500px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7002</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7002"/>
				<updated>2026-06-16T17:12:55Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:left;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:right;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|500px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window. Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:28 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7001</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7001"/>
				<updated>2026-06-16T17:10:47Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:left;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:right;&amp;quot; |&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|500px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window. Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7000</id>
		<title>X300/X310 Device Recovery</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=7000"/>
				<updated>2026-06-16T17:06:44Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Neel Pandeya, Michael Dickens and Siddhant Dhawan&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.&lt;br /&gt;
&lt;br /&gt;
Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.&lt;br /&gt;
&lt;br /&gt;
==Manual==&lt;br /&gt;
&lt;br /&gt;
For reference, please refer to the [https://files.ettus.com/manual/page_usrp_x3x0.html user manual page for the X300/X310].&lt;br /&gt;
&lt;br /&gt;
==Required Tools==&lt;br /&gt;
&lt;br /&gt;
* Host Computer&lt;br /&gt;
:- USB2/3 port&lt;br /&gt;
:- 1 GbE or 10 GbE network interface (NIC)&lt;br /&gt;
:- Supports Xilinx Vivado Lab installation&lt;br /&gt;
:- Supports UHD installation&lt;br /&gt;
&lt;br /&gt;
* Connections from host to the X3x0 USRP via&lt;br /&gt;
:- USB2 cable&lt;br /&gt;
:- One of the following, depending on the host computer's NIC&lt;br /&gt;
:* SFP+ / RJ45 Adapter and Ethernet cable&lt;br /&gt;
:* SFP+ DAC cable&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
&lt;br /&gt;
This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix &amp;lt;code&amp;gt;/usr/local&amp;lt;/code&amp;gt;; for example we are using Ubuntu Linux and installed UHD from source using the default &amp;lt;code&amp;gt;CMAKE_INSTALL_PREFIX&amp;lt;/code&amp;gt;. If you do not have UHD installed, please install it, for example via the [[Building and Installing the USRP Open-Source Toolchain (UHD and GNU Radio) on Linux]] Application Note.&lt;br /&gt;
&lt;br /&gt;
We recommend using an X310 FPGA image provided by the host computer's UHD install, so that their versions match up. During runtime, UHD checks its version against that of all target USRPs' FPGA versions, and if they are too different then UHD prints a note about the mismatch and errors out.&lt;br /&gt;
&lt;br /&gt;
There are circumstances where using different versions for the host UHD and FPGA image is necessary; performing this scenario is very similar to the steps in this guide, but requires some additional steps once the USRP is accessible via networking. We do not cover this scenario in this guide. If you need assistance under this scenario, please contact Ettus Support for assistance and we will provide you with the extra note steps.&lt;br /&gt;
&lt;br /&gt;
If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:&lt;br /&gt;
&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
Verify you have the FPGA images downloaded by running the command:&lt;br /&gt;
&lt;br /&gt;
    ls -alh /usr/local/share/uhd/images/usrp_x3*&lt;br /&gt;
&lt;br /&gt;
[[File:1 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
You will need to have an install of Xilinx Vivado Lab Edition, Xilinx Vivado Design Edition, or Xilinx Vivado System Edition. If you have none of those installed, then the minimum install is via Xilinx Vivado Lab Edition -- and that's what we cover in this guide. If you are using the Xilinx Vivado Design or System Edition then the paths may differ slightly from those described herein but the basic steps and process are the same; you can skip this section and go to the next one.&lt;br /&gt;
&lt;br /&gt;
Xilinx Vivado Lab Edition can be downloaded from one the following links:&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools.html current version]&lt;br /&gt;
&lt;br /&gt;
* [https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html legacy versions for older OSs]&lt;br /&gt;
&lt;br /&gt;
===Steps to Install Vivado Lab Edition (License Free)===&lt;br /&gt;
&lt;br /&gt;
After the download is complete, you can verify the MD5 sum of the file if you choose to do so, since Xilinx provides a MD5 SUM Value for each download:&lt;br /&gt;
&lt;br /&gt;
    cd ~/Downloads&lt;br /&gt;
    md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The filename and MD5 hash may differ from the screen capture shown. Verify the MD5 sum against the hash listed on the Xilinx download page.&lt;br /&gt;
&lt;br /&gt;
[[File:2 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar&lt;br /&gt;
&lt;br /&gt;
This creates:&lt;br /&gt;
&lt;br /&gt;
    Vivado_Lab_Lin_2025.2_1114_2157/&lt;br /&gt;
&lt;br /&gt;
[[File:3 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, go into the new directory and run the &amp;lt;code&amp;gt;xsetup&amp;lt;/code&amp;gt; installer using superuser &amp;lt;code&amp;gt;sudo&amp;lt;/code&amp;gt; permissions:&lt;br /&gt;
&lt;br /&gt;
    cd Vivado_Lab_Lin_2025.2_1114_2157&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click  Next.&lt;br /&gt;
&lt;br /&gt;
[[File:4 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Check the following Check Box and click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:5 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to accept the various License Agreements, select all of the &amp;quot;I Agree&amp;quot; boxes then click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:6 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is &amp;lt;code&amp;gt;/opt/Xilinx&amp;lt;/code&amp;gt; while for newer versions it is &amp;lt;code&amp;gt;/tools/Xilinx&amp;lt;/code&amp;gt;. We will be using the latter here; what you use is your choice, but please note the install directory so that you can make sure to use it correctly later in this guide.&lt;br /&gt;
&lt;br /&gt;
If the install directory does not exist, you will be prompted immediately to create it. Click &amp;lt;code&amp;gt;Yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:7 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Finally, you will be at the Installation Summary prompt. Click &amp;lt;code&amp;gt;Install&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:8 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer has to download files from the internet, but they are not large and hence the installation process typically takes only a few minutes.&lt;br /&gt;
&lt;br /&gt;
[[File:9 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted that the installation was successful. Click &amp;lt;code&amp;gt;Ok&amp;lt;/code&amp;gt;, and the installer will close.&lt;br /&gt;
&lt;br /&gt;
[[File:10 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Installing the Digilent Cable Driver==&lt;br /&gt;
&lt;br /&gt;
In order to use the JTAG interface built into the USRP X300/X310 front panel, you will need to install the Digilent Cable Driver. It is included with the Xilinx Vivado Lab Edition package.&lt;br /&gt;
&lt;br /&gt;
Navigate to the folder &amp;lt;code&amp;gt;/tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&amp;lt;/code&amp;gt;, and run the installer script.&lt;br /&gt;
&lt;br /&gt;
    cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
&lt;br /&gt;
Verify contents in the directory:&lt;br /&gt;
&lt;br /&gt;
    ls&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    install_digilent.sh&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
[[File:11 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now run the installer script:&lt;br /&gt;
&lt;br /&gt;
    # The installer requires RDI_BINROOT to be set manually.&lt;br /&gt;
&lt;br /&gt;
    export RDI_BINROOT=$(pwd)&lt;br /&gt;
    sudo -E ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:12 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, reload the UDEV rules:&lt;br /&gt;
&lt;br /&gt;
    sudo udevadm control --reload&lt;br /&gt;
    sudo udevadm trigger&lt;br /&gt;
&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Verify:&lt;br /&gt;
&lt;br /&gt;
    ls /etc/udev/rules.d | grep digilent&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    52-xilinx-digilent-usb.rules&lt;br /&gt;
&lt;br /&gt;
==Configuring Network Interface==&lt;br /&gt;
&lt;br /&gt;
You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; along with setting a MTU of &amp;lt;code&amp;gt;1500&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:left;&amp;quot; |&lt;br /&gt;
[[File:13 x300 device recovery 2026.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:50%; text-align:right;&amp;quot; |&lt;br /&gt;
[[File:14 x300 device recovery 2026.jpg|500px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prepare the X300/X310==&lt;br /&gt;
&lt;br /&gt;
Connect the host computer where Xilinx Vivado was installed to the USRP X300/X310 via a USB2 cable. On the USRP X300/X310, plug the USB2 cable into the JTAG port on the front face plate. Once the USB cable is connected on both sides, power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:15 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
==Starting Xilinx Vivado Lab Edition==&lt;br /&gt;
&lt;br /&gt;
Start by navigating back to your home directory:&lt;br /&gt;
&lt;br /&gt;
    cd ~/&lt;br /&gt;
&lt;br /&gt;
Next, start Xilinx Vivado Lab via the command line:&lt;br /&gt;
&lt;br /&gt;
    /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
You can also add Vivado Lab to the path so that you can open it from any directory:&lt;br /&gt;
&lt;br /&gt;
    echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' &amp;gt;&amp;gt; ~/.bashrc&lt;br /&gt;
    source ~/.bashrc&lt;br /&gt;
&lt;br /&gt;
[[File:16 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Now, go to any directory (for example &amp;lt;code&amp;gt;cd ~/&amp;lt;/code&amp;gt;) and run:&lt;br /&gt;
&lt;br /&gt;
    vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:17 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window.&lt;br /&gt;
&lt;br /&gt;
Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:18 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window. Open the Hardware Manager by selecting &amp;lt;code&amp;gt;Open Hardware Manager&amp;lt;/code&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
[[File:19 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu of the Hardware Manager select &amp;lt;code&amp;gt;Tools&amp;lt;/code&amp;gt; -&amp;gt; &amp;lt;code&amp;gt;Auto Connect&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:20 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The details of the FPGA should populate the window on the left side of the Hardware Manager. Right click on the FPGA listed, and select &amp;lt;code&amp;gt;Program Device&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:21 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will popup a new window. Click on the file selection button and navigate to the location of the UHD FPGA images, and select the correct FPGA image for your device (&amp;lt;code&amp;gt;/usr/local/share/uhd/images&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Select the correct FPGA image that matches your USRP (either &amp;lt;code&amp;gt;_x300&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;_x310&amp;lt;/code&amp;gt;) with the &amp;lt;code&amp;gt;.bit&amp;lt;/code&amp;gt; file extension. It is recommended to select the &amp;lt;code&amp;gt;_HG&amp;lt;/code&amp;gt; FPGA image, which will initialize Port 0 as 1 GbE and Port 1 as 10 GbE. Advanced users operating with dual 10 GbE may select the &amp;lt;code&amp;gt;_XG&amp;lt;/code&amp;gt; image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).&lt;br /&gt;
&lt;br /&gt;
[[File:22 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, click &amp;lt;code&amp;gt;Program&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:23 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
A progress bar will popup as the FPGA is programmed.&lt;br /&gt;
&lt;br /&gt;
[[File:24 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Once the programming is completed, close Vivado Lab.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If Vivado is actively attached to the USRP (&amp;lt;code&amp;gt;auto-connect&amp;lt;/code&amp;gt; is enabled for the specific target), then at USRP power cycle Vivado ''will stop'' the USRP from auto-loading whatever FPGA image is stored on it.&lt;br /&gt;
&lt;br /&gt;
[[File:25 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Do NOT power-cycle the device at this stage since it’s the temporary image. Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
Now, remove the JTAG cable from X310 and try to ping X310 using the command:&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
(It should work if IP configuration step is performed correctly.)&lt;br /&gt;
&lt;br /&gt;
At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
&lt;br /&gt;
Example output from &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
If running &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; is successful, proceed with flashing the FPGA image with the UHD utility &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; to write the FPGA image to the internal EEPROM.&lt;br /&gt;
&lt;br /&gt;
    uhd_image_loader --args &amp;quot;type=x300,addr=192.168.10.2,fpga=HG&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;code&amp;gt;uhd_image_loader&amp;lt;/code&amp;gt; has completed the flashing process, it will recommend to power cycle the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
[[File:27 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, and then power on the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
The USRP X300/X310 is now recovered. You should be able to &amp;lt;code&amp;gt;ping&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;uhd_usrp_probe&amp;lt;/code&amp;gt; and any other UHD utility/application as normal.&lt;br /&gt;
&lt;br /&gt;
[[File:26 x300 device recovery 2026.jpg|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:27_x300_device_recovery_2026.jpg&amp;diff=6999</id>
		<title>File:27 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:27_x300_device_recovery_2026.jpg&amp;diff=6999"/>
				<updated>2026-06-16T16:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:26_x300_device_recovery_2026.jpg&amp;diff=6998</id>
		<title>File:26 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:26_x300_device_recovery_2026.jpg&amp;diff=6998"/>
				<updated>2026-06-16T16:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:25_x300_device_recovery_2026.jpg&amp;diff=6997</id>
		<title>File:25 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:25_x300_device_recovery_2026.jpg&amp;diff=6997"/>
				<updated>2026-06-16T16:30:27Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:24_x300_device_recovery_2026.jpg&amp;diff=6996</id>
		<title>File:24 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:24_x300_device_recovery_2026.jpg&amp;diff=6996"/>
				<updated>2026-06-16T16:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:23_x300_device_recovery_2026.jpg&amp;diff=6995</id>
		<title>File:23 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:23_x300_device_recovery_2026.jpg&amp;diff=6995"/>
				<updated>2026-06-16T16:29:44Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:22_x300_device_recovery_2026.jpg&amp;diff=6994</id>
		<title>File:22 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:22_x300_device_recovery_2026.jpg&amp;diff=6994"/>
				<updated>2026-06-16T16:29:19Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:21_x300_device_recovery_2026.jpg&amp;diff=6993</id>
		<title>File:21 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:21_x300_device_recovery_2026.jpg&amp;diff=6993"/>
				<updated>2026-06-16T16:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:20_x300_device_recovery_2026.jpg&amp;diff=6992</id>
		<title>File:20 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:20_x300_device_recovery_2026.jpg&amp;diff=6992"/>
				<updated>2026-06-16T16:28:39Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:19_x300_device_recovery_2026.jpg&amp;diff=6991</id>
		<title>File:19 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:19_x300_device_recovery_2026.jpg&amp;diff=6991"/>
				<updated>2026-06-16T16:28:16Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:18_x300_device_recovery_2026.jpg&amp;diff=6990</id>
		<title>File:18 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:18_x300_device_recovery_2026.jpg&amp;diff=6990"/>
				<updated>2026-06-16T16:27:57Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:17_x300_device_recovery_2026.jpg&amp;diff=6989</id>
		<title>File:17 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:17_x300_device_recovery_2026.jpg&amp;diff=6989"/>
				<updated>2026-06-16T16:27:11Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:16_x300_device_recovery_2026.jpg&amp;diff=6988</id>
		<title>File:16 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:16_x300_device_recovery_2026.jpg&amp;diff=6988"/>
				<updated>2026-06-16T16:26:53Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:15_x300_device_recovery_2026.jpg&amp;diff=6987</id>
		<title>File:15 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:15_x300_device_recovery_2026.jpg&amp;diff=6987"/>
				<updated>2026-06-16T16:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:14_x300_device_recovery_2026.jpg&amp;diff=6986</id>
		<title>File:14 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:14_x300_device_recovery_2026.jpg&amp;diff=6986"/>
				<updated>2026-06-16T16:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:13_x300_device_recovery_2026.jpg&amp;diff=6985</id>
		<title>File:13 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:13_x300_device_recovery_2026.jpg&amp;diff=6985"/>
				<updated>2026-06-16T16:25:41Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:12_x300_device_recovery_2026.jpg&amp;diff=6984</id>
		<title>File:12 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:12_x300_device_recovery_2026.jpg&amp;diff=6984"/>
				<updated>2026-06-16T16:25:16Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:11_x300_device_recovery_2026.jpg&amp;diff=6983</id>
		<title>File:11 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:11_x300_device_recovery_2026.jpg&amp;diff=6983"/>
				<updated>2026-06-16T16:24:51Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:10_x300_device_recovery_2026.jpg&amp;diff=6982</id>
		<title>File:10 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:10_x300_device_recovery_2026.jpg&amp;diff=6982"/>
				<updated>2026-06-16T16:24:25Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:9_x300_device_recovery_2026.jpg&amp;diff=6981</id>
		<title>File:9 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:9_x300_device_recovery_2026.jpg&amp;diff=6981"/>
				<updated>2026-06-16T16:23:59Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:8_x300_device_recovery_2026.jpg&amp;diff=6980</id>
		<title>File:8 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:8_x300_device_recovery_2026.jpg&amp;diff=6980"/>
				<updated>2026-06-16T16:23:41Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:7_x300_device_recovery_2026.jpg&amp;diff=6979</id>
		<title>File:7 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:7_x300_device_recovery_2026.jpg&amp;diff=6979"/>
				<updated>2026-06-16T16:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:6_x300_device_recovery_2026.jpg&amp;diff=6978</id>
		<title>File:6 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:6_x300_device_recovery_2026.jpg&amp;diff=6978"/>
				<updated>2026-06-16T16:22:48Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:5_x300_device_recovery_2026.jpg&amp;diff=6977</id>
		<title>File:5 x300 device recovery 2026.jpg</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:5_x300_device_recovery_2026.jpg&amp;diff=6977"/>
				<updated>2026-06-16T16:22:23Z</updated>
		
		<summary type="html">&lt;p&gt;SiddhantDhawan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>SiddhantDhawan</name></author>	</entry>

	</feed>