X300/X310 Device Recovery

From Ettus Knowledge Base
Revision as of 12:19, 16 June 2026 by SiddhantDhawan (Talk | contribs) (Configuring Network Interface)

Jump to: navigation, search

Application Note Information

AN-305 by Neel Pandeya, Michael Dickens and Siddhant Dhawan

Overview

This application note covers the process of recovering the USRP X300/X310 by flashing the FPGA image via the JTAG interface.

Note: This guide is written for Linux only. In theory it can be made to work on any OS that supports Xilinx Vivado.

Manual

For reference, please refer to the user manual page for the X300/X310.

Required Tools

  • Host Computer
- USB2/3 port
- 1 GbE or 10 GbE network interface (NIC)
- Supports Xilinx Vivado Lab installation
- Supports UHD installation
  • Connections from host to the X3x0 USRP via
- USB2 cable
- One of the following, depending on the host computer's NIC
  • SFP+ / RJ45 Adapter and Ethernet cable
  • SFP+ DAC cable

Prerequisites

This guide assumes you have a Linux-based host computer that supports Xilinx Vivado, with UHD installed into the default prefix /usr/local; for example we are using Ubuntu Linux and installed UHD from source using the default CMAKE_INSTALL_PREFIX. 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.

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.

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.

If you do not have the FPGA images downloaded for your current host UHD install, you can obtain them by executing the command:

   sudo uhd_images_downloader

Verify you have the FPGA images downloaded by running the command:

   ls -alh /usr/local/share/uhd/images/usrp_x3*
1 x300 device recovery 2026.jpg

Installing Xilinx Vivado Lab Edition

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.

Xilinx Vivado Lab Edition can be downloaded from one the following links:

Steps to Install Vivado Lab Edition (License Free)

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:

   cd ~/Downloads
   md5sum Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz

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.

2 x300 device recovery 2026.jpg

Next, decompress the downloaded tarball:

   tar -xvf Vivado_Lab_Lin_2025.2_1114_2157.tar

This creates:

   Vivado_Lab_Lin_2025.2_1114_2157/
3 x300 device recovery 2026.jpg

Next, go into the new directory and run the xsetup installer using superuser sudo permissions:

   cd Vivado_Lab_Lin_2025.2_1114_2157
   sudo ./xsetup

The installer will then be at a Welcome screen, click Next.

4 x300 device recovery 2026.jpg

Check the following Check Box and click Next.

5 x300 device recovery 2026.jpg

You will then be prompted to accept the various License Agreements, select all of the "I Agree" boxes then click Next.

6 x300 device recovery 2026.jpg

You will then be prompted with the installation locations. The default value for older Xilinx Vivado Lab is /opt/Xilinx while for newer versions it is /tools/Xilinx. 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.

If the install directory does not exist, you will be prompted immediately to create it. Click Yes.

7 x300 device recovery 2026.jpg

Finally, you will be at the Installation Summary prompt. Click Install.

8 x300 device recovery 2026.jpg

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.

9 x300 device recovery 2026.jpg

You will then be prompted that the installation was successful. Click Ok, and the installer will close.

10 x300 device recovery 2026.jpg

Installing the Digilent Cable Driver

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.

Navigate to the folder /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers, and run the installer script.

   cd /tools/Xilinx/2025.2/data/xicom/cable_drivers/lin64/install_script/install_drivers

Verify contents in the directory:

   ls

Expected Output:

   install_digilent.sh
   52-xilinx-digilent-usb.rules
11 x300 device recovery 2026.jpg

Now run the installer script:

   # The installer requires RDI_BINROOT to be set manually.
   export RDI_BINROOT=$(pwd)
   sudo -E ./install_digilent.sh
12 x300 device recovery 2026.jpg

Next, reload the UDEV rules:

   sudo udevadm control --reload
   sudo udevadm trigger
13 x300 device recovery 2026.jpg

Verify:

   ls /etc/udev/rules.d | grep digilent

Expected Output:

   52-xilinx-digilent-usb.rules

Configuring Network Interface

You will need to set your ethernet interface that will be connected to the USRP X300/X310 to a static IP address of 192.168.10.1 along with setting a MTU of 1500.

Attach the SFP+/RJ45 adapter to Port 0 and connect your computer via ethernet.

14 x300 device recovery 2026.jpg

15 x300 device recovery 2026.jpg

Prepare the X300/X310

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.

16 x300 device recovery 2026.jpg

Starting Xilinx Vivado Lab Edition

Start by navigating back to your home directory:

   cd ~/

Next, start Xilinx Vivado Lab via the command line:

   /tools/Xilinx/2025.2/Vivado_Lab/bin/vivado_lab

You can also add Vivado Lab to the path so that you can open it from any directory:

   echo 'source /tools/Xilinx/2025.2/Vivado_Lab/settings64.sh' >> ~/.bashrc
   source ~/.bashrc
17 x300 device recovery 2026.jpg

Now, go to any directory (for example cd ~/) and run:

   vivado_lab

This will bring up the main Vivado Lab window.

18 x300 device recovery 2026.jpg

Open the Hardware Manager by selecting Open Hardware Manager.

19 x300 device recovery 2026.jpg

Next, within the menu of the Hardware Manager select Tools -> Auto Connect.

20 x300 device recovery 2026.jpg

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 Program Device.

21 x300 device recovery 2026.jpg

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 (/usr/local/share/uhd/images).

Note: Select the correct FPGA image that matches your USRP (either _x300 or _x310) with the .bit file extension. It is recommended to select the _HG 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 _XG image, however you will need to adjust the instructions listed within this document to match the dual 10GbE configuration (IP Addresses, MTU settings, etc).

22 x300 device recovery 2026.jpg

Next, click Program.

23 x300 device recovery 2026.jpg

A progress bar will popup as the FPGA is programmed.

24 x300 device recovery 2026.jpg

Once the programming is completed, close Vivado Lab.

Note: If Vivado is actively attached to the USRP (auto-connect 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.

25 x300 device recovery 2026.jpg

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 uhd_image_loader to write the FPGA image to the internal EEPROM.

Now, remove the JTAG cable from X310 and try to ping X310 using the command:

   ping 192.168.10.2

(It should work if IP configuration step is performed correctly.)

At this point, if you're able to ping the USRP X300/X310, attempt to run the UHD utility uhd_usrp_probe.

   uhd_usrp_probe

Example output from uhd_usrp_probe:

26 x300 device recovery 2026.jpg

If running uhd_usrp_probe is successful, proceed with flashing the FPGA image with the UHD utility uhd_image_loader.

Note: Flashing the FPGA image via JTAG only does not write the FPGA image to EEPROM, you must run the uhd_image_loader to write the FPGA image to the internal EEPROM.

   uhd_image_loader --args "type=x300,addr=192.168.10.2,fpga=HG"

When uhd_image_loader has completed the flashing process, it will recommend to power cycle the USRP X300/X310.

27 x300 device recovery 2026.jpg

Power off the USRP X300/X310, and then power on the USRP X300/X310.

The USRP X300/X310 is now recovered. You should be able to ping, run uhd_usrp_probe and any other UHD utility/application as normal.

26 x300 device recovery 2026.jpg