<?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=Ettus</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=Ettus"/>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/Special:Contributions/Ettus"/>
		<updated>2026-07-08T16:28:19Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=7026</id>
		<title>Workshop Tutorial</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=7026"/>
				<updated>2026-06-22T04:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Workshops &amp;amp;amp; Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workshops &amp;amp;amp; Tutorials ==&lt;br /&gt;
&lt;br /&gt;
There are three training workshops/tutorials offered by Ettus Research, which are listed below.&lt;br /&gt;
&lt;br /&gt;
These training workshops/tutorials can be run as a lecture/seminar, or as a hands-on workshop.  They can be run at the NI office in Austin, Texas, USA, or at the location of the customer.  These workshops/tutorials are run ad hoc and upon request, and there is no regular schedule for when they are run.&lt;br /&gt;
&lt;br /&gt;
For questions about these workshops/tutorials, please contact us at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source Toolchain: UHD and GNU Radio''': This tutorial provides a thorough and practical introduction to the USRP hardware and the open-source software toolchain (UHD and GNU Radio). After exploring the hardware and the architecture of the USRP family of software-defined radios, we will discuss topics such as getting started using a new USRP device, using the UHD device driver, programming the USRP from C++ using the UHD API, using GNU Radio with the USRP, creating and running flowgraphs from both GRC and Python, managing FPGA images, viewing packetized I/Q data with Wireshark, and debugging and triaging common technical problems, such as with network configuration, flow-control errors, and RF issues. Several demos and examples will be shown, such as performing real-time spectrum monitoring, transmitting pre-recorded waveforms, implementing an FM transmitter and receiver, and running an OFDM transceiver. Several additional complementary open-source tools will also be discussed, such as GQRX, Fosphor, Inspectrum, and several GNU Radio Out-of-Tree (OOT) modules.  We will explore several demonstrations of wireless systems running on the USRP, such as a record-and-playback system, a spectrum-painting tool, and an LTE network scanner tool. We will include several additional focused topics, such as high-rate 10 Gigabit Ethernet networking and I/Q data streaming, host system performance tuning, USRP device recovery, and various operational best-practices. Attendees should gain a solid foundation and practical understanding of how to configure, program, and operate the USRP to implement a wide range of wireless systems and applications.&lt;br /&gt;
** [https://kb.ettus.com/images/a/ab/Workshop_GnuRadio_Materials_20171212.tar.gz Workshop_GnuRadio_Materials_20171212.tar.gz (TAR-GZ) (13 MB) (2017-12-12)]&lt;br /&gt;
** [https://kb.ettus.com/images/4/47/Workshop_GnuRadio_Slides_20190507.pdf Workshop_GnuRadio_Slides_20190507.pdf (PDF) (45 MB) (2019-05-07)]&lt;br /&gt;
** [https://kb.ettus.com/images/f/fd/Workshop_GnuRadio_Slides_20250802.pdf Workshop_GnuRadio_Slides_20250802.pdf (PDF) (25 MB) (2025-08-02)]&lt;br /&gt;
** [[Instructions for System Setup and Configuration]]&lt;br /&gt;
&lt;br /&gt;
* '''USRP FPGA Processing Using the RFNoC Framework''': This tutorial provides an in-depth introduction to the RFNoC framework, including a discussion on its design and capabilities, several live demonstrations, and a walk-through of implementing a new user-defined RFNoC block and integrating it into both UHD and GNU Radio. The RFNoC (RF Network-on-Chip) framework is the FPGA architecture used in USRP devices. The RFNoC framework enables users to program the USRP FPGA, and facilitates the integration of custom FPGA-based algorithms into the signal processing chain of the USRP radio. Users can create modular, FPGA-accelerated SDR applications by chaining multiple RFNoC Blocks together and integrating them into both C++ and Python programs using the UHD API, and into GNU Radio flowgraphs. Attendees should gain a practical understanding of how to use the RFNoC framework to implement custom FPGA processing on the USRP radio platform.&lt;br /&gt;
** [https://kb.ettus.com/images/5/5b/rfnoc4_workshop_slides_2020_part_1.pdf Workshop_RFNoC_4_GRCon20_Part_1_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/images/e/e9/rfnoc4_workshop_slides_2020_part_2.pdf Workshop_RFNoC_4_GRCon20_Part_2_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/images/1/17/Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf (PDF) (1.8 MB) (2025-09-09)]&lt;br /&gt;
** [https://kb.ettus.com/images/d/db/Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf (PDF) (1.5 MB) (2025-09-09)]&lt;br /&gt;
** [https://www.youtube.com/watch?v=M9ntwQie9vs Video Presentation (YouTube URL) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0  Application Note for Getting Started with RFNoC in UHD 4.0]&lt;br /&gt;
** [https://files.ettus.com/app_notes/RFNoC_Specification.pdf RFNoC Specification Document]&lt;br /&gt;
** [https://www.youtube.com/watch?v=g0jmvSkNaAM Introductory Video (YouTube URL)]&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source 5G/NR System Implementation''': This tutorial provides a detailed overview of how to implement a 3GPP-compliant 5G/NR testbed using the USRP radio with the open-source software stacks, srsRAN from Software Radio Systems (SRS), and OpenAirInterface (OAI) from Eurecom, for research, development, and prototyping. We examine both the base station (eNB and gNB) side, as well as the handset (UE) side.  We examine three implementations for the UE: an emulated software UE; a commercial handset; and a stand-alone modem module. We discuss in detail how to install, configure, and operate the hardware and software for the base station side and the handset side, as well as for the core network, in order to create a fully functional network. We discuss various aspects of radio and network planning and implementation, discuss network operation monitoring, and discuss performance and throughput measurements. We show a video of a demonstration of the real-time operation of a 5G network. Attendees should gain a practical understanding of how to use USRP devices to implement 5G/NR wireless networks.&lt;br /&gt;
** [https://kb.ettus.com/OAI_Reference_Architecture_for_5G_and_6G_Research_with_USRP Application Note for 5G OAI USRP Reference Architecture &amp;amp; Testbed]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf&amp;diff=7025</id>
		<title>File:Workshop RFNoC 4 GRCon25 Part 2 Slides 2025-09-09.pdf</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf&amp;diff=7025"/>
				<updated>2026-06-22T04:40:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=File:Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf&amp;diff=7024</id>
		<title>File:Workshop RFNoC 4 GRCon25 Part 1 Slides 2025-09-09.pdf</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=File:Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf&amp;diff=7024"/>
				<updated>2026-06-22T04:40:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=7023</id>
		<title>Workshop Tutorial</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=7023"/>
				<updated>2026-06-22T04:39:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Workshops &amp;amp;amp; Tutorials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workshops &amp;amp;amp; Tutorials ==&lt;br /&gt;
&lt;br /&gt;
There are three training workshops/tutorials offered by Ettus Research, which are listed below.&lt;br /&gt;
&lt;br /&gt;
These training workshops/tutorials can be run as a lecture/seminar, or as a hands-on workshop.  They can be run at the NI office in Austin, Texas, USA, or at the location of the customer.  These workshops/tutorials are run ad hoc and upon request, and there is no regular schedule for when they are run.&lt;br /&gt;
&lt;br /&gt;
For questions about these workshops/tutorials, please contact us at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source Toolchain: UHD and GNU Radio''': This tutorial provides a thorough and practical introduction to the USRP hardware and the open-source software toolchain (UHD and GNU Radio). After exploring the hardware and the architecture of the USRP family of software-defined radios, we will discuss topics such as getting started using a new USRP device, using the UHD device driver, programming the USRP from C++ using the UHD API, using GNU Radio with the USRP, creating and running flowgraphs from both GRC and Python, managing FPGA images, viewing packetized I/Q data with Wireshark, and debugging and triaging common technical problems, such as with network configuration, flow-control errors, and RF issues. Several demos and examples will be shown, such as performing real-time spectrum monitoring, transmitting pre-recorded waveforms, implementing an FM transmitter and receiver, and running an OFDM transceiver. Several additional complementary open-source tools will also be discussed, such as GQRX, Fosphor, Inspectrum, and several GNU Radio Out-of-Tree (OOT) modules.  We will explore several demonstrations of wireless systems running on the USRP, such as a record-and-playback system, a spectrum-painting tool, and an LTE network scanner tool. We will include several additional focused topics, such as high-rate 10 Gigabit Ethernet networking and I/Q data streaming, host system performance tuning, USRP device recovery, and various operational best-practices. Attendees should gain a solid foundation and practical understanding of how to configure, program, and operate the USRP to implement a wide range of wireless systems and applications.&lt;br /&gt;
** [https://kb.ettus.com/images/a/ab/Workshop_GnuRadio_Materials_20171212.tar.gz Workshop_GnuRadio_Materials_20171212.tar.gz (TAR-GZ) (13 MB) (2017-12-12)]&lt;br /&gt;
** [https://kb.ettus.com/images/4/47/Workshop_GnuRadio_Slides_20190507.pdf Workshop_GnuRadio_Slides_20190507.pdf (PDF) (45 MB) (2019-05-07)]&lt;br /&gt;
** [https://kb.ettus.com/images/f/fd/Workshop_GnuRadio_Slides_20250802.pdf Workshop_GnuRadio_Slides_20250802.pdf (PDF) (25 MB) (2025-08-02)]&lt;br /&gt;
** [[Instructions for System Setup and Configuration]]&lt;br /&gt;
&lt;br /&gt;
* '''USRP FPGA Processing Using the RFNoC Framework''': This tutorial provides an in-depth introduction to the RFNoC framework, including a discussion on its design and capabilities, several live demonstrations, and a walk-through of implementing a new user-defined RFNoC block and integrating it into both UHD and GNU Radio. The RFNoC (RF Network-on-Chip) framework is the FPGA architecture used in USRP devices. The RFNoC framework enables users to program the USRP FPGA, and facilitates the integration of custom FPGA-based algorithms into the signal processing chain of the USRP radio. Users can create modular, FPGA-accelerated SDR applications by chaining multiple RFNoC Blocks together and integrating them into both C++ and Python programs using the UHD API, and into GNU Radio flowgraphs. Attendees should gain a practical understanding of how to use the RFNoC framework to implement custom FPGA processing on the USRP radio platform.&lt;br /&gt;
** [https://kb.ettus.com/images/5/5b/rfnoc4_workshop_slides_2020_part_1.pdf Workshop_RFNoC_4_GRCon20_Part_1_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/images/e/e9/rfnoc4_workshop_slides_2020_part_2.pdf Workshop_RFNoC_4_GRCon20_Part_2_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/images/999/5b/Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf Workshop_RFNoC_4_GRCon25_Part_1_Slides_2025-09-09.pdf (PDF) (1.8 MB) (2025-09-09)]&lt;br /&gt;
** [https://kb.ettus.com/images/999/e9/Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf Workshop_RFNoC_4_GRCon25_Part_2_Slides_2025-09-09.pdf (PDF) (1.5 MB) (2025-09-09)]&lt;br /&gt;
** [https://www.youtube.com/watch?v=M9ntwQie9vs Video Presentation (YouTube URL) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0  Application Note for Getting Started with RFNoC in UHD 4.0]&lt;br /&gt;
** [https://files.ettus.com/app_notes/RFNoC_Specification.pdf RFNoC Specification Document]&lt;br /&gt;
** [https://www.youtube.com/watch?v=g0jmvSkNaAM Introductory Video (YouTube URL)]&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source 5G/NR System Implementation''': This tutorial provides a detailed overview of how to implement a 3GPP-compliant 5G/NR testbed using the USRP radio with the open-source software stacks, srsRAN from Software Radio Systems (SRS), and OpenAirInterface (OAI) from Eurecom, for research, development, and prototyping. We examine both the base station (eNB and gNB) side, as well as the handset (UE) side.  We examine three implementations for the UE: an emulated software UE; a commercial handset; and a stand-alone modem module. We discuss in detail how to install, configure, and operate the hardware and software for the base station side and the handset side, as well as for the core network, in order to create a fully functional network. We discuss various aspects of radio and network planning and implementation, discuss network operation monitoring, and discuss performance and throughput measurements. We show a video of a demonstration of the real-time operation of a 5G network. Attendees should gain a practical understanding of how to use USRP devices to implement 5G/NR wireless networks.&lt;br /&gt;
** [https://kb.ettus.com/OAI_Reference_Architecture_for_5G_and_6G_Research_with_USRP Application Note for 5G OAI USRP Reference Architecture &amp;amp; Testbed]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=6967</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=6967"/>
				<updated>2026-06-16T14:31:34Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Nate Temple and Michael Dickens&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;| 2017-05-02  &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Nate Temple&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2020-10-16 - 23&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Updates to be more generic, given that there are newer Vivado and OSs available that work just fine&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&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;
* 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 an 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:x300_recovery_19.png|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;
For this application note, we use an older Ubuntu and thus older Xilinx Vivado Lab Edition: 2015.4; we show Xilinx Vivado Lab Edition 2019.2 screenshots where they differ significantly from those in 2015.4. Regardless of the version of Xilinx Vivado you use, the steps below are roughly the same.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_1.png|700px|center]]&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:x300_recovery_2.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -zxvf Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&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 Xilinx_Vivado_Lab_Lin_2015.4_1118_2&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_3.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_4.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will launch the Xilinx Vivado Lab installer. &lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_5.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that you are running OS that is not yet officially supported, for example using Ubuntu 20.04 with Xilinx Vivado Lab 2019.1 (this combination does work, by the way). We generally do not recommend running an older Vivado on a more recent OS, though it might work; proceed at your own comfort level! In this situation, we generally recommend you instead use a more recent Xilinx Vivado Lab release, or use a slightly older OS version -- for example via a virtual machine (VM).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_6.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that a newer version is available; if so ignore this popup and click &amp;lt;code&amp;gt;Continue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_7.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_8.png|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:x300_recovery_9.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select the install options. It is suggested to leave the default values, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_10.png|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 former 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;
[[File:x300_recovery_11.png|700px|center]]&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:x300_recovery_12.png|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:x300_recovery_13.png|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 minute.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_14.png|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:x300_recovery_15.png|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;/opt/Xilinx/Vivado_Lab/2015.4/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 /opt/Xilinx/Vivado_Lab/2015.4/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
    sudo ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_16.png|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;
&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;
[[File:x300_recovery_36.png|300px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_33.png|500px|center]]&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:x300_recovery_35.png|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 commandline&lt;br /&gt;
&lt;br /&gt;
    /opt/Xilinx/Vivado_Lab/2015.4/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_18.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The main window for more recent Xilinx Vivado Lab versions -- here 2019.2 -- will look slightly different:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20_alt.png|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:x300_recovery_21.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_21_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will enable a new window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu the 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:x300_recovery_23.png|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.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_24.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
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:x300_recovery_25.png|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:x300_recovery_26.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_27.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_28.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_29.png|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:x300_recovery_30.png|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:x300_recovery_31.png|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. If you are going to leave Vivado open, then make sure Vivado's session to the USRP is closed during the USRP power cycle to get the USRP to load the onboard FPGA image as usual. The USRP should boot fully and as usual so long as Vivado's session to it is closed, regardless of whether USB is plugged it (active or not) or if Vivado is running (so long as the session to the USRP target is not active).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_32.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Return to a terminal and attempt to ping the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_34.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Stop the ping with &amp;lt;code&amp;gt;CTRL-C&amp;lt;/code&amp;gt;.&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.001.HEAD-0-gc705922a&lt;br /&gt;
&lt;br /&gt;
-- X300 initialization sequence...&lt;br /&gt;
-- Determining maximum frame size... 1472 bytes.&lt;br /&gt;
-- Setup basic communication...&lt;br /&gt;
-- Loading values from EEPROM...&lt;br /&gt;
-- Setup RF frontend clocking...&lt;br /&gt;
-- Radio 1x clock:200&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 0... pass (Throughput: 1304.3MB/s)&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 1... pass (Throughput: 1300.5MB/s)&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&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: 8&lt;br /&gt;
|   |   revision_compat: 7&lt;br /&gt;
|   |   product: 30818&lt;br /&gt;
|   |   mac-addr0: 00:00:00:00:00:00&lt;br /&gt;
|   |   mac-addr1: 00:00:00:00:00:00&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.2&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: xxxxxxxx&lt;br /&gt;
|   |   FW Version: 5.1&lt;br /&gt;
|   |   FPGA Version: 33.0&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: ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x007a)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x0079)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   * DmaFIFO_0&lt;br /&gt;
|   |   |   * Radio_0&lt;br /&gt;
|   |   |   * Radio_1&lt;br /&gt;
|   |   |   * DDC_0&lt;br /&gt;
|   |   |   * DDC_1&lt;br /&gt;
|   |   |   * DUC_0&lt;br /&gt;
|   |   |   * DUC_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[File:x300_recovery_37.png|700px|center]]&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:x300_recovery_38.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, remove the JTAG USB cable, 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;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=6966</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=6966"/>
				<updated>2026-06-16T14:31:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Nate Temple and Michael Dickens&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;| 2017-05-02  &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Nate Temple&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2020-10-16 - 23&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Updates to be more generic, given that there are newer Vivado and OSs available that work just fine&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&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;
&amp;lt;!--&lt;br /&gt;
This is a test on June 16.&lt;br /&gt;
--&amp;gt;&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;
* 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 an 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:x300_recovery_19.png|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;
For this application note, we use an older Ubuntu and thus older Xilinx Vivado Lab Edition: 2015.4; we show Xilinx Vivado Lab Edition 2019.2 screenshots where they differ significantly from those in 2015.4. Regardless of the version of Xilinx Vivado you use, the steps below are roughly the same.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_1.png|700px|center]]&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:x300_recovery_2.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -zxvf Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&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 Xilinx_Vivado_Lab_Lin_2015.4_1118_2&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_3.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_4.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will launch the Xilinx Vivado Lab installer. &lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_5.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that you are running OS that is not yet officially supported, for example using Ubuntu 20.04 with Xilinx Vivado Lab 2019.1 (this combination does work, by the way). We generally do not recommend running an older Vivado on a more recent OS, though it might work; proceed at your own comfort level! In this situation, we generally recommend you instead use a more recent Xilinx Vivado Lab release, or use a slightly older OS version -- for example via a virtual machine (VM).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_6.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that a newer version is available; if so ignore this popup and click &amp;lt;code&amp;gt;Continue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_7.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_8.png|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:x300_recovery_9.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select the install options. It is suggested to leave the default values, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_10.png|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 former 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;
[[File:x300_recovery_11.png|700px|center]]&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:x300_recovery_12.png|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:x300_recovery_13.png|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 minute.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_14.png|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:x300_recovery_15.png|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;/opt/Xilinx/Vivado_Lab/2015.4/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 /opt/Xilinx/Vivado_Lab/2015.4/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
    sudo ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_16.png|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;
&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;
[[File:x300_recovery_36.png|300px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_33.png|500px|center]]&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:x300_recovery_35.png|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 commandline&lt;br /&gt;
&lt;br /&gt;
    /opt/Xilinx/Vivado_Lab/2015.4/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_18.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The main window for more recent Xilinx Vivado Lab versions -- here 2019.2 -- will look slightly different:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20_alt.png|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:x300_recovery_21.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_21_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will enable a new window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu the 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:x300_recovery_23.png|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.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_24.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
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:x300_recovery_25.png|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:x300_recovery_26.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_27.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_28.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_29.png|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:x300_recovery_30.png|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:x300_recovery_31.png|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. If you are going to leave Vivado open, then make sure Vivado's session to the USRP is closed during the USRP power cycle to get the USRP to load the onboard FPGA image as usual. The USRP should boot fully and as usual so long as Vivado's session to it is closed, regardless of whether USB is plugged it (active or not) or if Vivado is running (so long as the session to the USRP target is not active).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_32.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Return to a terminal and attempt to ping the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_34.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Stop the ping with &amp;lt;code&amp;gt;CTRL-C&amp;lt;/code&amp;gt;.&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.001.HEAD-0-gc705922a&lt;br /&gt;
&lt;br /&gt;
-- X300 initialization sequence...&lt;br /&gt;
-- Determining maximum frame size... 1472 bytes.&lt;br /&gt;
-- Setup basic communication...&lt;br /&gt;
-- Loading values from EEPROM...&lt;br /&gt;
-- Setup RF frontend clocking...&lt;br /&gt;
-- Radio 1x clock:200&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 0... pass (Throughput: 1304.3MB/s)&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 1... pass (Throughput: 1300.5MB/s)&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&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: 8&lt;br /&gt;
|   |   revision_compat: 7&lt;br /&gt;
|   |   product: 30818&lt;br /&gt;
|   |   mac-addr0: 00:00:00:00:00:00&lt;br /&gt;
|   |   mac-addr1: 00:00:00:00:00:00&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.2&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: xxxxxxxx&lt;br /&gt;
|   |   FW Version: 5.1&lt;br /&gt;
|   |   FPGA Version: 33.0&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: ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x007a)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x0079)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   * DmaFIFO_0&lt;br /&gt;
|   |   |   * Radio_0&lt;br /&gt;
|   |   |   * Radio_1&lt;br /&gt;
|   |   |   * DDC_0&lt;br /&gt;
|   |   |   * DDC_1&lt;br /&gt;
|   |   |   * DUC_0&lt;br /&gt;
|   |   |   * DUC_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[File:x300_recovery_37.png|700px|center]]&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:x300_recovery_38.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, remove the JTAG USB cable, 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;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=6965</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=6965"/>
				<updated>2026-06-16T14:30:55Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Nate Temple and Michael Dickens&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;| 2017-05-02  &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Nate Temple&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2020-10-16 - 23&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Updates to be more generic, given that there are newer Vivado and OSs available that work just fine&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&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;
&amp;lt;!--&lt;br /&gt;
This is a test on June 16.&lt;br /&gt;
--&amp;gt;&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;
* 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 an 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:x300_recovery_19.png|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;
For this application note, we use an older Ubuntu and thus older Xilinx Vivado Lab Edition: 2015.4; we show Xilinx Vivado Lab Edition 2019.2 screenshots where they differ significantly from those in 2015.4. Regardless of the version of Xilinx Vivado you use, the steps below are roughly the same.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_1.png|700px|center]]&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:x300_recovery_2.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -zxvf Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&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 Xilinx_Vivado_Lab_Lin_2015.4_1118_2&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_3.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_4.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will launch the Xilinx Vivado Lab installer. &lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_5.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that you are running OS that is not yet officially supported, for example using Ubuntu 20.04 with Xilinx Vivado Lab 2019.1 (this combination does work, by the way). We generally do not recommend running an older Vivado on a more recent OS, though it might work; proceed at your own comfort level! In this situation, we generally recommend you instead use a more recent Xilinx Vivado Lab release, or use a slightly older OS version -- for example via a virtual machine (VM).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_6.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that a newer version is available; if so ignore this popup and click &amp;lt;code&amp;gt;Continue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_7.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_8.png|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:x300_recovery_9.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select the install options. It is suggested to leave the default values, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_10.png|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 former 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;
[[File:x300_recovery_11.png|700px|center]]&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:x300_recovery_12.png|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:x300_recovery_13.png|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 minute.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_14.png|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:x300_recovery_15.png|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;/opt/Xilinx/Vivado_Lab/2015.4/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 /opt/Xilinx/Vivado_Lab/2015.4/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
    sudo ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_16.png|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;
&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;
[[File:x300_recovery_36.png|300px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_33.png|500px|center]]&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:x300_recovery_35.png|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 commandline&lt;br /&gt;
&lt;br /&gt;
    /opt/Xilinx/Vivado_Lab/2015.4/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_18.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The main window for more recent Xilinx Vivado Lab versions -- here 2019.2 -- will look slightly different:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20_alt.png|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:x300_recovery_21.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_21_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will enable a new window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu the 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:x300_recovery_23.png|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.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_24.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
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:x300_recovery_25.png|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:x300_recovery_26.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_27.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_28.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_29.png|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:x300_recovery_30.png|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:x300_recovery_31.png|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. If you are going to leave Vivado open, then make sure Vivado's session to the USRP is closed during the USRP power cycle to get the USRP to load the onboard FPGA image as usual. The USRP should boot fully and as usual so long as Vivado's session to it is closed, regardless of whether USB is plugged it (active or not) or if Vivado is running (so long as the session to the USRP target is not active).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_32.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Return to a terminal and attempt to ping the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_34.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Stop the ping with &amp;lt;code&amp;gt;CTRL-C&amp;lt;/code&amp;gt;.&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.001.HEAD-0-gc705922a&lt;br /&gt;
&lt;br /&gt;
-- X300 initialization sequence...&lt;br /&gt;
-- Determining maximum frame size... 1472 bytes.&lt;br /&gt;
-- Setup basic communication...&lt;br /&gt;
-- Loading values from EEPROM...&lt;br /&gt;
-- Setup RF frontend clocking...&lt;br /&gt;
-- Radio 1x clock:200&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 0... pass (Throughput: 1304.3MB/s)&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 1... pass (Throughput: 1300.5MB/s)&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&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: 8&lt;br /&gt;
|   |   revision_compat: 7&lt;br /&gt;
|   |   product: 30818&lt;br /&gt;
|   |   mac-addr0: 00:00:00:00:00:00&lt;br /&gt;
|   |   mac-addr1: 00:00:00:00:00:00&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.2&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: xxxxxxxx&lt;br /&gt;
|   |   FW Version: 5.1&lt;br /&gt;
|   |   FPGA Version: 33.0&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: ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x007a)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x0079)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   * DmaFIFO_0&lt;br /&gt;
|   |   |   * Radio_0&lt;br /&gt;
|   |   |   * Radio_1&lt;br /&gt;
|   |   |   * DDC_0&lt;br /&gt;
|   |   |   * DDC_1&lt;br /&gt;
|   |   |   * DUC_0&lt;br /&gt;
|   |   |   * DUC_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[File:x300_recovery_37.png|700px|center]]&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:x300_recovery_38.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, remove the JTAG USB cable, 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;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=X300/X310_Device_Recovery&amp;diff=6964</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=6964"/>
				<updated>2026-06-16T14:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Application Note Information==&lt;br /&gt;
'''AN-305''' by Nate Temple and Michael Dickens&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;| 2017-05-02  &lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Nate Temple&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Initial creation&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| 2020-10-16 - 23&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Michael Dickens&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;| Updates to be more generic, given that there are newer Vivado and OSs available that work just fine&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&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;
This is a test on June 16.&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;
* 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 an 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:x300_recovery_19.png|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;
For this application note, we use an older Ubuntu and thus older Xilinx Vivado Lab Edition: 2015.4; we show Xilinx Vivado Lab Edition 2019.2 screenshots where they differ significantly from those in 2015.4. Regardless of the version of Xilinx Vivado you use, the steps below are roughly the same.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_1.png|700px|center]]&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:x300_recovery_2.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, decompress the downloaded tarball:&lt;br /&gt;
&lt;br /&gt;
    tar -zxvf Xilinx_Vivado_Lab_Lin_2015.4_1118_2.tar.gz&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 Xilinx_Vivado_Lab_Lin_2015.4_1118_2&lt;br /&gt;
    sudo ./xsetup&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_3.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_4.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will launch the Xilinx Vivado Lab installer. &lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_5.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that you are running OS that is not yet officially supported, for example using Ubuntu 20.04 with Xilinx Vivado Lab 2019.1 (this combination does work, by the way). We generally do not recommend running an older Vivado on a more recent OS, though it might work; proceed at your own comfort level! In this situation, we generally recommend you instead use a more recent Xilinx Vivado Lab release, or use a slightly older OS version -- for example via a virtual machine (VM).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_6.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You might be prompted that a newer version is available; if so ignore this popup and click &amp;lt;code&amp;gt;Continue&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_7.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The installer will then be at a Welcome screen, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_8.png|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:x300_recovery_9.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
You will then be prompted to select the install options. It is suggested to leave the default values, click &amp;lt;code&amp;gt;Next&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_10.png|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 former 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;
[[File:x300_recovery_11.png|700px|center]]&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:x300_recovery_12.png|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:x300_recovery_13.png|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 minute.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_14.png|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:x300_recovery_15.png|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;/opt/Xilinx/Vivado_Lab/2015.4/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 /opt/Xilinx/Vivado_Lab/2015.4/data/xicom/cable_drivers/lin64/install_script/install_drivers&lt;br /&gt;
    sudo ./install_digilent.sh&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_16.png|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;
&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;
[[File:x300_recovery_36.png|300px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_33.png|500px|center]]&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:x300_recovery_35.png|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 commandline&lt;br /&gt;
&lt;br /&gt;
    /opt/Xilinx/Vivado_Lab/2015.4/bin/vivado_lab&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_18.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will bring up the main Vivado Lab window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
The main window for more recent Xilinx Vivado Lab versions -- here 2019.2 -- will look slightly different:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_20_alt.png|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:x300_recovery_21.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_21_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
This will enable a new window:&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_22_alt.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Next, within the menu the 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:x300_recovery_23.png|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.&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_24.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
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:x300_recovery_25.png|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:x300_recovery_26.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_27.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_28.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_29.png|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:x300_recovery_30.png|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:x300_recovery_31.png|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. If you are going to leave Vivado open, then make sure Vivado's session to the USRP is closed during the USRP power cycle to get the USRP to load the onboard FPGA image as usual. The USRP should boot fully and as usual so long as Vivado's session to it is closed, regardless of whether USB is plugged it (active or not) or if Vivado is running (so long as the session to the USRP target is not active).&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_32.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Return to a terminal and attempt to ping the USRP X300/X310.&lt;br /&gt;
&lt;br /&gt;
    ping 192.168.10.2&lt;br /&gt;
&lt;br /&gt;
[[File:x300_recovery_34.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Stop the ping with &amp;lt;code&amp;gt;CTRL-C&amp;lt;/code&amp;gt;.&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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
user@host:~$ uhd_usrp_probe &lt;br /&gt;
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.001.HEAD-0-gc705922a&lt;br /&gt;
&lt;br /&gt;
-- X300 initialization sequence...&lt;br /&gt;
-- Determining maximum frame size... 1472 bytes.&lt;br /&gt;
-- Setup basic communication...&lt;br /&gt;
-- Loading values from EEPROM...&lt;br /&gt;
-- Setup RF frontend clocking...&lt;br /&gt;
-- Radio 1x clock:200&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 0... pass (Throughput: 1304.3MB/s)&lt;br /&gt;
-- [DMA FIFO] Running BIST for FIFO 1... pass (Throughput: 1300.5MB/s)&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- [RFNoC Radio] Performing register loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&lt;br /&gt;
-- Performing timer loopback test... pass&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: 8&lt;br /&gt;
|   |   revision_compat: 7&lt;br /&gt;
|   |   product: 30818&lt;br /&gt;
|   |   mac-addr0: 00:00:00:00:00:00&lt;br /&gt;
|   |   mac-addr1: 00:00:00:00:00:00&lt;br /&gt;
|   |   gateway: 192.168.10.1&lt;br /&gt;
|   |   ip-addr0: 192.168.10.2&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: xxxxxxxx&lt;br /&gt;
|   |   FW Version: 5.1&lt;br /&gt;
|   |   FPGA Version: 33.0&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: ref_locked&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x007a)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       RX Codec: A&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       RX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ads62p48&lt;br /&gt;
|   |   |   |   Gain range digital: 0.0 to 6.0 step 0.5 dB&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: A&lt;br /&gt;
|   |   |   ID: UBX-160 v1 (0x0079)&lt;br /&gt;
|   |   |   Serial: xxxxxxxx&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;
|   |   |   |       TX Codec: A&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       TX Dboard: B&lt;br /&gt;
|   |   |     _____________________________________________________&lt;br /&gt;
|   |   |    /&lt;br /&gt;
|   |   |   |       TX Frontend: 0&lt;br /&gt;
|   |   |   |   Name: Unknown (0xffff) - 0&lt;br /&gt;
|   |   |   |   Antennas: &lt;br /&gt;
|   |   |   |   Sensors: &lt;br /&gt;
|   |   |   |   Freq range: 0.000 to 0.000 MHz&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |   |   |   Bandwidth range: 0.0 to 0.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: B&lt;br /&gt;
|   |   |   |   Name: ad9146&lt;br /&gt;
|   |   |   |   Gain Elements: None&lt;br /&gt;
|   |     _____________________________________________________&lt;br /&gt;
|   |    /&lt;br /&gt;
|   |   |       RFNoC blocks on this device:&lt;br /&gt;
|   |   |   &lt;br /&gt;
|   |   |   * DmaFIFO_0&lt;br /&gt;
|   |   |   * Radio_0&lt;br /&gt;
|   |   |   * Radio_1&lt;br /&gt;
|   |   |   * DDC_0&lt;br /&gt;
|   |   |   * DDC_1&lt;br /&gt;
|   |   |   * DUC_0&lt;br /&gt;
|   |   |   * DUC_1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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;
[[File:x300_recovery_37.png|700px|center]]&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:x300_recovery_38.png|700px|center]]&lt;br /&gt;
&lt;br /&gt;
Power off the USRP X300/X310, remove the JTAG USB cable, 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;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Inspectrum&amp;diff=6956</id>
		<title>Inspectrum</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Inspectrum&amp;diff=6956"/>
				<updated>2026-06-16T12:55:11Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: Created page with &amp;quot;= Application Note Number = '''AN-392'''  == Authors == Siddhant Dhawan and Neel Pandeya  = Abstract = This application note discusses...  = Overview =  The Inspectrum tool al...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Application Note Number =&lt;br /&gt;
'''AN-392'''&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
Siddhant Dhawan and Neel Pandeya&lt;br /&gt;
&lt;br /&gt;
= Abstract =&lt;br /&gt;
This application note discusses...&lt;br /&gt;
&lt;br /&gt;
= Overview = &lt;br /&gt;
The Inspectrum tool allows the user to...&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=5G_OAI_End-to-End_Reference_Architecture_with_USRP&amp;diff=6955</id>
		<title>5G OAI End-to-End Reference Architecture with USRP</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=5G_OAI_End-to-End_Reference_Architecture_with_USRP&amp;diff=6955"/>
				<updated>2026-06-16T12:53:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Application Note Numbe ==&lt;br /&gt;
&lt;br /&gt;
'''AN-598'''&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
Bharat Agarwal and Neel Pandeya&lt;br /&gt;
&lt;br /&gt;
==Executive Summary==&lt;br /&gt;
&lt;br /&gt;
This Application Note presents a comprehensive reference design for deploying end-to-end (E2E) 5G NR Stand-Alone (SA) systems using the Eurecom OpenAirInterface (OAI) software stack on the USRP N300, N310, N320, N321, and X410 radios. The USRP B200, B210, B200mini, B206mini, X300, X310 radios can also be used, but with limitations, and are also discussed in this document  The reference design encompasses the base station (gNB), the user equipment (UE), and the Core Network (CN) components of the network, enabling researchers and engineers to build and evaluate full end-to-end deployments.&lt;br /&gt;
&lt;br /&gt;
The reference design offers flexibility in the Core Network deployment. The CN can be installed on the same machine as the gNB, suitable for compact and portable set-ups. Alternatively, the CN can be hosted on a separate machine, allowing for a distributed architecture to facilitate system testing and high-performance operation.&lt;br /&gt;
&lt;br /&gt;
The reference design supports three types of UE.&lt;br /&gt;
* The UE implemented using a USRP radio and the OAI UE software stack.&lt;br /&gt;
* The UE implemented using a wireless modem module, such as from Quectel or Sierra Wireless.&lt;br /&gt;
* The UE implemented using a commercial off-the-shelf (COTS) handset, such as the Google Pixel 9.&lt;br /&gt;
&lt;br /&gt;
The reference design supports operation in Frequency Range 1 (FR1), and a discussion of operation in FR2 (20 to 44 GHz) and FR3 (6 to 20 GHz) will be added at a future date.&lt;br /&gt;
&lt;br /&gt;
This document provides detailed instructions on hardware and software installation, configuration, and execution, alongside expected results, benchmarking methods, performance monitoring, and troubleshooting guidance.&lt;br /&gt;
&lt;br /&gt;
The solution brochure for the OAI Reference Architecture for 5G and 6G Research with the USRP can be downloaded [https://www.ni.com/en/forms/oai-reference-architecture-brochure.html here].&lt;br /&gt;
&lt;br /&gt;
An overview of using OAI Software for 5G and 6G research at this [https://www.ni.com/en/solutions/electronics/5g-6g-wireless-research-prototyping/research-6g-technologies-using-openairinterface-software.html webpage here].&lt;br /&gt;
&lt;br /&gt;
You can learn more about other solutions for 5G and 6G Wireless Research and Prototyping at the [https://www.ni.com/en/solutions/electronics/5g-6g-wireless-research-prototyping.html webpage here].&lt;br /&gt;
&lt;br /&gt;
==Overview of the USRP Hardware==&lt;br /&gt;
&lt;br /&gt;
The Universal Software Radio Peripheral (USRP) devices from NI (an Emerson company) are software-defined radios which are widely used for wireless research, prototyping, and education. The hardware specifications for the various USRP devices are listed elsewhere on this Knowledge Base (KB).&lt;br /&gt;
&lt;br /&gt;
The ideal USRP radios for deploying end-to-end (E2E) 5G systems are the USRP N300, N310, N320, N321, and X410. These radios natively support all the 5G sampling rates used in the 3GPP specifications, and they support all the FR1 channel bandwidths from 5 to 100 MHz.  The 5G systems use standardized sampling rates based on the channel bandwidth and sub-carrier spacing (SCS) (the numerology) to ensure interoperability and efficient signal processing.&lt;br /&gt;
&lt;br /&gt;
For the USRP N300, N320, N321, there should be two 10 Gbps SFP+ Ethernet connections to the host computer, along with one 1 Gbps Ethernet link for the Management Port. On the host computer, a dual-port 10 Gbps Ethernet network card is used to connect to the USRP.&lt;br /&gt;
&lt;br /&gt;
The USRP X410 has two QSFP28 100 Gbps Ethernet ports. There are two options for connectivity to the host computer, depending on what the IQ data rate is (how much bandwidth is needed). The first option is to use a QSFP28-to-4xSFP28 breakout cable on one of the QSFP28 ports. This will provide four 25 Gbps SFP28 Ethernet links. On the host computer, a dual-port SFP28/SFP+ Ethernet network card should be used. The second option is to use one of the two QSFP28 ports directly, with a QSFP28-to-QSFP28 cable, and with a 100 Gbps QSFP28 Ethernet network card on the host computer.&lt;br /&gt;
&lt;br /&gt;
The USRP B200, B210, B200mini, B206mini radios can also be used as the gNB or UE, but with some limitations.  The primary limitation is that you will only be able to operate with a maximum channel bandwidth of 40 MHz.  And even this channel bandwidth may not be possible, depending on what sampling rate is used, and whether the host computer has sufficient resources to support that sampling rate.  The host computer should ideally be able to support the maximum 61.44 Msps, but the sampling rate may be limited to 30.72 Msps, or other non-standard sampling rates such as 42.08 Msps may have to be used as a compromise, and this may correspondingly reduce the channel bandwidth and may cause quirks or problems in the physical layer processing. In addition, the USB interface is not as robust, and incurs more CPU overhead, than an Ethernet interface.&lt;br /&gt;
&lt;br /&gt;
The USRP X300 and X310 radios can also be used as the gNB or UE, but with some limitations. Due to the 184.32 master clock rate (MCR), many of the 5G sampling rates cannot be achieved, or can only be achieved using odd decimations factors, which is undesirable because of the much-higher attenuation. It is likely that other non-standard sampling rates such as 42.08 Msps may have to be used as a compromise, and this may correspondingly reduce the channel bandwidth and may cause quirks or problems in the physical layer processing. The OAI software supports a three-quarter sampling rate for these cases using non-standard sampling rates, which is enabled with the &amp;quot;-E&amp;quot; command line option. This can be used, for example, to select a 46.08 Msps sampling rate instead of the ideal 61.44 Msps sampling rate.&lt;br /&gt;
&lt;br /&gt;
Listed below are links to resources for the relevant USRP devices.&lt;br /&gt;
* The KB Hardware Resource page for the USRP B200, B210, B200mini, B206mini can be found [https://kb.ettus.com/B200/B210/B200mini/B205mini/B206mini here].&lt;br /&gt;
* The KB Hardware Resource page for the USRP X300 and X310 can be found [https://kb.ettus.com/X300/X310 here].&lt;br /&gt;
* The KB Hardware Resource page for the USRP N300 and N310 can be found [https://kb.ettus.com/N300/N310 here].&lt;br /&gt;
* The KB Hardware Resource page for the USRP N320 and N321 can be found [https://kb.ettus.com/N320/N321 here].&lt;br /&gt;
* The KB Hardware Resource page for the USRP X410 can be found [https://kb.ettus.com/X410 here].&lt;br /&gt;
&lt;br /&gt;
If the UE is implemented using a USRP device, then it is recommended that the gNB USRP and the UE USRP be synchronized with the use of a 10 MHz reference signal and a 1 PPS signal, distributed from a common source. This can be provided by the OctoClock-G (see [https://kb.ettus.com/OctoClock_CDA-2990 here] and [https://uhd.readthedocs.io/en/uhd-4.8/page_octoclock.html here] for more information).&lt;br /&gt;
&lt;br /&gt;
This document focuses on the use of the USRP X410. The usage of the USRP N300, N310, N320 is very similar to that of the X410. Specific discussion of the use of the USRP B200, B210, B200mini, B206mini, X300, X310 will be added in the near future.&lt;br /&gt;
&lt;br /&gt;
Further details of the hardware configuration will be discussed later in this document.&lt;br /&gt;
&lt;br /&gt;
==Overview of the OAI Software Stack==&lt;br /&gt;
&lt;br /&gt;
The OpenAirInterface (OAI) software stack provides a fully open-source and standards-compliant implementation of the 3GPP 5G New Radio (NR) Stand-Alone (SA) protocol stack. It is designed to run in real-time on commodity x86 hardware and interoperate with USRP software-defined radios. Initially developed by Eurecom, a leading research institute in France, the project is now actively maintained by the OpenAirInterface Software Alliance (OSA), which is a non-profit organization that supports open wireless innovation and collaborative research. OAI enables complete 5G system prototyping and research with implementations of the base station (gNB), the user equipment (UE), and the core network (CN). The OAI stack also allows for the use of other third-party core network software, such as Free5GC and Open5GS. This document does not discuss integration with the Free5GC and Open5GS core network softwares. The OAI software stack is designed to operate in real-time with USRP radios, support interoperability with commercial 5G handsets (COTS handsets), and enable academic, experimental, and pre-commercial deployments. The OAI software stack is structured around multiple Git repositories, enabling modularity and collaborative development of the OAI 5G Radio Access Network (RAN) Project and the OAI 5G Core Network (OAI-CN). The OAI source code is made freely available for non-commercial and academic research use, and licensing details can be found on the OAI website.&lt;br /&gt;
&lt;br /&gt;
Links to the relevant Git repositories are listed below.&lt;br /&gt;
* [https://gitlab.eurecom.fr/oai/openairinterface5g OAI 5G Radio Access Network (RAN)]&lt;br /&gt;
* [https://gitlab.eurecom.fr/oai/cn5g OAI 5G Core Network (OAI-CN)]&lt;br /&gt;
&lt;br /&gt;
==Overview of the Reference Architecture==&lt;br /&gt;
&lt;br /&gt;
This OAI End-to-End Reference Architecture enables researchers, developers, and system integrators to build complete 5G NR SA systems using open-source software and commercial USRP hardware. This section outlines two typical deployment modes of the architecture:&lt;br /&gt;
&lt;br /&gt;
* A compact, single-host configuration for integrated lab setups.&lt;br /&gt;
* A modular, distributed configuration for scalable experimentation.&lt;br /&gt;
&lt;br /&gt;
Each mode supports connectivity to a diverse range of UE devices, including Quectel 5G modem modules, USRP-based UEs, and COTS handsets such as the Google Pixel 9.&lt;br /&gt;
&lt;br /&gt;
===Deployment Configuration 1: OAI gNB and CN on the Same Machine===&lt;br /&gt;
&lt;br /&gt;
In this configuration, both the OAI Core Network (CN) and the OAI gNB are hosted on the same physical machine. This is typically used in lab-based research and teaching environments, portable demos and proof-of-concept systems, and quick-start testbeds for 5G protocol stack development.&lt;br /&gt;
&lt;br /&gt;
The configuration of the system architecture is listed below.&lt;br /&gt;
&lt;br /&gt;
* Host Computer: Intel or AMD CPU, with minimum 20 physical cores, such as the [https://www.intel.com/content/www/us/en/products/sku/233416/intel-xeon-w72495x-processor-45m-cache-2-50-ghz/specifications.html Intel Xeon W7-2495X], and with minimum 16 GB memory, and with 10 or 100 Gbps Ethernet card.&lt;br /&gt;
* Operating System: Ubuntu 22.04.5, running on-the-metal (no virtual machine (VM))&lt;br /&gt;
* Software Stack: OpenAirInterface gNB (monolithic) and 5G Core Network (AMF, SMF, UPF, NRF, etc.)&lt;br /&gt;
* UHD Version: 4.8&lt;br /&gt;
* USRP X410&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Easy to debug and deploy.&lt;br /&gt;
* Lower hardware requirements.&lt;br /&gt;
* Simple setup with fewer network dependencies.&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* Shared CPU and I/O resources may limit performance.&lt;br /&gt;
* Less suitable and less scalable for high-throughput traffic testing and when using high sampling rates.&lt;br /&gt;
&lt;br /&gt;
[[File:OAI_E2E_Arch.jpg|thumb|800px|center|Single-machine deployment with both OAI Core Network and gNB on the same host. USRP X410 provides RF connectivity to various UE types, including Quectel module, USRP UE, and Google Pixel 9.]]&lt;br /&gt;
&lt;br /&gt;
===Deployment Configuration 2: OAI gNB and CN on Separate Machines===&lt;br /&gt;
&lt;br /&gt;
This configuration separates the OAI gNB and CN onto two dedicated physical systems connected via an Ethernet switch. It is ideal for research involving modular network slicing, edge cloud integration, or realistic RAN-Core interface behavior, or for scalable testbeds with high-throughput and isolated workloads, or for large MIMO, beamforming or MEC-based deployments.&lt;br /&gt;
&lt;br /&gt;
The configuration of the system architecture is listed below.&lt;br /&gt;
&lt;br /&gt;
* gNB Host Computer: Intel or AMD CPU, with minimum 20 physical cores, such as the [https://www.intel.com/content/www/us/en/products/sku/233416/intel-xeon-w72495x-processor-45m-cache-2-50-ghz/specifications.html Intel Xeon W7-2495X], and with minimum 16 GB memory, and with 10 or 100 Gbps Ethernet card.&lt;br /&gt;
• CN Host Computer: Intel i9 CPU or Xeon CPU, with minimum 8 physical performance cores&lt;br /&gt;
* Operating System: Both hosts running Ubuntu 22.04.5, running on-the-metal (no virtual machine (VM))&lt;br /&gt;
* Software Stack: OpenAirInterface gNB (monolithic) and 5G Core Network (AMF, SMF, UPF, NRF, etc.)&lt;br /&gt;
* UHD Version: 4.8 (gNB only)&lt;br /&gt;
* USRP X410 (gNB only)&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
* Higher reliability and scalability.&lt;br /&gt;
* Easier to simulate real-world latency, routing, and interface constraints.&lt;br /&gt;
* Better performance profiling of CN and gNB independently.&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
* More complicated IP addressing, routing, and DNS configuration.&lt;br /&gt;
* More complicated to configure and monitor in real-time.&lt;br /&gt;
&lt;br /&gt;
[[File:OAI_E2E_Arch_Different_Machines.jpg|thumb|800px|center|Multi-machine deployment with OAI Core Network and gNB on separate hosts. The setup uses a high-speed Ethernet switch and supports flexible UE integration over coaxial and OTA interfaces.]]&lt;br /&gt;
&lt;br /&gt;
==Cable and Connectivity Setup==&lt;br /&gt;
&lt;br /&gt;
This section describes the physical connectivity between the USRP hardware and various types of UE. The cabling requirements are independent of whether the gNB and CN are deployed on the same machine or on separate systems.&lt;br /&gt;
&lt;br /&gt;
===Quectel Wireless Module UE Cable Configuration===&lt;br /&gt;
&lt;br /&gt;
The diagram in the figure listed below illustrates the cabling and RF signal routing between the UE system running a Quectel RM520N wireless module and the USRP X410 connected to the OAI gNB. This setup enables direct RF loopback in a controlled lab environment using coaxial cable connections.&lt;br /&gt;
&lt;br /&gt;
* USB Connection: The Quectel RM520N is connected to the UE system via a USB 3.0 interface. The host PC runs Windows and interacts with the module through Qualcomm QMI or MBIM drivers.&lt;br /&gt;
&lt;br /&gt;
* RF Antennas: The module has 4 RF ports (ANT 0–3) which are routed to a 4-way power splitter (Mini-Circuits ZN4PD1-63HP-S+) to combine the signals.&lt;br /&gt;
&lt;br /&gt;
* Attenuation: A fixed 40 dB attenuator is inserted after the splitter to protect the downstream USRP RF front end and ensure signal levels remain within safe operating range.&lt;br /&gt;
&lt;br /&gt;
* Downstream RF Splitting: The combined RF signal is routed to a 2-way splitter (Mini-Circuits ZN2PD2-50-S+) which separates it into TX/RX and RX-only paths.&lt;br /&gt;
&lt;br /&gt;
* USRP Connection: These RF paths are connected to the USRP X410, which is linked to the OAI gNB system over dual SFP+ (10/25G) links for baseband data transfer and synchronization.&lt;br /&gt;
&lt;br /&gt;
[[File:cable_setup_with_COTS_UE.png|thumb|800px|center|Cable and RF splitter and attenuator setup for Quectel Wireless Module UE with USRP X410 and OAI gNB]]&lt;br /&gt;
&lt;br /&gt;
===USRP-Based UE Cable Configuration===&lt;br /&gt;
&lt;br /&gt;
The figure listed below illustrates the RF cabling setup used when both the OAI gNB and OAI UE are implemented using separate USRP X410 devices. This setup enables full bidirectional communication in a lab environment without the need for OTA transmission.&lt;br /&gt;
&lt;br /&gt;
* Dual SFP+ Connection: Each USRP X410 is connected to its respective host computer via dual SFP+ ports (Port 0 and Port 1), providing high-throughput data and synchronization channels.&lt;br /&gt;
&lt;br /&gt;
* SMA Cabling and RF Splitting: RF ports from the USRP gNB are connected via SMA cables to a 2:1 power splitter, enabling simultaneous TX/RX operation.&lt;br /&gt;
&lt;br /&gt;
* 40 dB Attenuator: To ensure RF power levels are safe and within operational range for lab setup, a fixed 40 dB attenuator is inserted before the splitter connecting to the UE-side USRP.&lt;br /&gt;
&lt;br /&gt;
* Bidirectional Lab Setup: This configuration mimics over-the-air conditions by enabling a fully enclosed cable-based signal path between the USRP radios representing the gNB and UE, ensuring interference-free testing.&lt;br /&gt;
&lt;br /&gt;
[[File:cable_setup_with_USRP_UE.png|thumb|800px|center|Cable setup between OAI gNB and OAI NR UE using two USRP X410 devices and RF splitters]]&lt;br /&gt;
&lt;br /&gt;
===Commercial UE Configuration with COTS Handset Over-the-Air (OTA)===&lt;br /&gt;
&lt;br /&gt;
The figure listed below illustrates the setup for using a COTS 5G smartphone (Google Pixel 9) as the UE, in conjunction with the OAI NR gNB running on a USRP X410.&lt;br /&gt;
&lt;br /&gt;
* gNB Host System: The gNB stack (OAI NR Monolithic) runs on an Ubuntu 22.04 server equipped with an Intel Xeon W7-2495X CPU, and interfaces with a USRP X410 via two SFP+ ports.&lt;br /&gt;
&lt;br /&gt;
* OTA Link: The RF connection between the USRP and the Google Pixel 9 is established over the air, eliminating the need for RF splitters or coaxial cabling. The Pixel 9 receives the signal wirelessly from the gNB.&lt;br /&gt;
&lt;br /&gt;
* SIM Card: The Google Pixel 9 uses a programmable Open Cell SIM card provisioned with the correct PLMN and network parameters to allow registration with the OAI core network.&lt;br /&gt;
&lt;br /&gt;
* Use Case: This setup is ideal for validating interoperability with COTS 5G devices and ensuring compatibility with commercially available UEs under real-world radio conditions.&lt;br /&gt;
&lt;br /&gt;
[[File:OAI_With_Google_Pixel_9.jpg|thumb|800px|center|OTA-based connectivity with Google Pixel 9 and Open Cell SIM]]&lt;br /&gt;
&lt;br /&gt;
==Bill of Materials==&lt;br /&gt;
&lt;br /&gt;
The full Bill of Materials (BoM) for the OAI Reference Architecture is listed below. This comprehensive list includes all necessary hardware components required to support a variety of deployment configurations for 5G and 6G research. The design supports multiple flexible system architectures, where the gNB (base station) and UE can each be implemented using any combination of the following USRP Software Defined Radios: N300, N310, N320, N321, or X410.&lt;br /&gt;
&lt;br /&gt;
This BoM covers all shared components (host machines, network interfaces, RF cabling, timing/sync equipment, antennas, attenuators, and splitters) required for various testbed configurations. The system design is modular and scalable—users can choose to co-locate or distribute gNB and Core Network (CN) components, and can switch between different UE types depending on the research focus, such as PHY-level tuning, link testing, or full-stack validation with 3GPP-compliant UEs.&lt;br /&gt;
&lt;br /&gt;
* Two or three desktop computers, with Intel i9 and/or Xeon CPU, of 12th, 13th, or 14th Generation, with clock speed of minimum 4.0 GHz, with minimum 8 (for i9 CPU) or 20 (for Xeon CPU) physical cores, and also with only NVMe disk drives. See further details about this item in the Hardware Requirements section.&lt;br /&gt;
&lt;br /&gt;
* Two 10 Gbps Ethernet networks cards. We recommend the Intel 810-XXVDA2 and the Nvidia/Mellanox ConnectX-6 Lx (MCX623106AN-CDAT) network cards. See further details about this item in the Hardware Requirements section.&lt;br /&gt;
&lt;br /&gt;
* The USRP may be any of USRP N300, N310, N320, N321, X410. There will be one USRP for the gNB, and one USRP for the UE. The USRP devices can be mixed (i.e., the gNB could run with a USRP X410, while the UE runs with a USRP N310).&lt;br /&gt;
&lt;br /&gt;
* One QSFP28-to-SFP28 breakout cable. This is only required when using the USRP X410.&lt;br /&gt;
** [https://store.mellanox.com/products/nvidia-mcp7f00-a003r26n-passive-copper-splitter-cable-ethernet-100gbe-to-4x25gbe-qsfp28-to-4xsfp28-3m-colored-26awg-ca-n.html Nvidia MCP7F00-A003R26N] is a passive copper DAC splitter cable, 100GbE to 4x25GbE, 3m, 26 AWG.&lt;br /&gt;
&lt;br /&gt;
** [https://store.mellanox.com/products/nvidia-mcp7f00-a003r30l-passive-copper-splitter-cable-ethernet-100gbe-to-4x25gbe-qsfp28-to-4xsfp28-3m-colored-30awg-ca-l.html Nvidia MCP7F00-A003R30L] is a passive copper DAC splitter cable, 100GbE to 4x25GbE, 3m, 30 AWG.&lt;br /&gt;
&lt;br /&gt;
* One OctoClock-G. This is needed to synchronize the gNB USRP and the UE USRP. Ensure that device used is the &amp;quot;-G&amp;quot; model, which contains an internal GPSDO module. This is only needed when the UE is implemented on a USRP device.&lt;br /&gt;
&lt;br /&gt;
* Four 10 Gbps Ethernet cables with SFP+ terminations: Required when using USRP N300, N310, N320, or N321. Not needed for USRP X410. Available in multiple lengths:&lt;br /&gt;
&lt;br /&gt;
** [https://www.ettus.com/all-products/10gige-dc/ 0.5 meter SFP+ Ethernet cable]&lt;br /&gt;
&lt;br /&gt;
** [https://www.ettus.com/all-products/10gige-1m/ 1.0 meter SFP+ Ethernet cable]&lt;br /&gt;
&lt;br /&gt;
** [https://www.ettus.com/all-products/10gige-3m/ 3.0 meter SFP+ Ethernet cable]&lt;br /&gt;
&lt;br /&gt;
* Four VERT900 and/or VERT2450 antennas: Select based on the frequency bands in use. Third-party antennas are also compatible if they have a 50-ohm impedance and SMA connectors.&lt;br /&gt;
&lt;br /&gt;
** [https://www.ettus.com/all-products/vert900/ VERT900 Antenna]&lt;br /&gt;
&lt;br /&gt;
** [https://www.ettus.com/all-products/vert2450/ VERT2450 Antenna]&lt;br /&gt;
&lt;br /&gt;
* One Quectel RM520-GL 5G wireless modem module: Used as a UE option in the reference architecture. See the Hardware Requirements section for integration and compatibility details.&lt;br /&gt;
&lt;br /&gt;
** [https://www.quectel.com/5g-iot-modules/ Quectel 5G Modules]&lt;br /&gt;
&lt;br /&gt;
** [https://www.quectel.com/product/5g-rm520n-series/ Quectel RM520N Series Overview]&lt;br /&gt;
&lt;br /&gt;
* One Google Pixel 9 5G handset (phone). Used as a commercial off-the-shelf (COTS) UE in the test setup. Ensure that the handset is unlocked for compatibility with test SIM cards.&lt;br /&gt;
&lt;br /&gt;
** [https://www.gsmarena.com/google_pixel_9-13219.php Google Pixel 9]&lt;br /&gt;
&lt;br /&gt;
* Two 5G SIM cards and one USB UICC/SIM card reader/writer.&lt;br /&gt;
&lt;br /&gt;
** [https://open-cells.com/index.php/sim-cards/ Open Cells SIM Cards]&lt;br /&gt;
&lt;br /&gt;
* One Mini-Circuits 4-way DC-Pass SMA Power Splitter (ZN4PD1-63HP-S+), 250 to 6000 MHz, 50 ohms.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/Splitters.html Mini-Circuits Splitters]&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=ZN4PD1-63HP-S%2B Model ZN4PD1-63HP-S+ Product Page]&lt;br /&gt;
&lt;br /&gt;
* Two Mini-Circuits 2-way DC-Pass SMA Power Splitters (ZN2PD2-50-S+), 500 to 5000 MHz, 50 ohms.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/Splitters.html Mini-Circuits Splitters]&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=ZN2PD2-50-S%2B Model ZN2PD2-50-S+ Product Page]&lt;br /&gt;
&lt;br /&gt;
* Four Mini-Circuits VAT-10+ Attenuators (10 dB, DC to 6000 MHz, 50 ohms, with SMA connectors.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=VAT-10%2B Mini-Circuits Model VAT-10+ Product Page]&lt;br /&gt;
&lt;br /&gt;
* Four Mini-Circuits VAT-20+ Attenuators (20 dB, DC to 6000 MHz, 50 ohms, with SMA connectors.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=VAT-20%2B Mini-Circuits Model VAT-20+ Product Page]&lt;br /&gt;
&lt;br /&gt;
* Four Mini-Circuits VAT-30+ Attenuators (30 dB, DC to 6000 MHz, 50~$\Omega$, with SMA connectors.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=VAT-30%2B Mini-Circuits Model VAT-30+ Product Page]&lt;br /&gt;
&lt;br /&gt;
* Fourteen Mini-Circuits Hand-Flex SMA Coax Cables (086-36SM+, 36-inch, 18 GHz.&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/WebStore/dashboard.html?model=086-36SM%2B Mini-Circuits 086-36SM+ Product Page]&lt;br /&gt;
&lt;br /&gt;
** [https://www.minicircuits.com/pdfs/086-36SM+.pdf Mini-Circuits 086-36SM+ Datasheet]&lt;br /&gt;
&lt;br /&gt;
* One NETGEAR GS108 8-Port Gigabit Ethernet Unmanaged Switch.&lt;br /&gt;
&lt;br /&gt;
** [https://www.netgear.com/business/wired/switches/unmanaged/gs108/ NETGEAR Product Page]&lt;br /&gt;
&lt;br /&gt;
** [https://www.amazon.com/NETGEAR-Ethernet-Unmanaged-Lifetime-Protection/dp/B00MPVR50A/ Amazon Product Listing]&lt;br /&gt;
&lt;br /&gt;
* Three USB 3.0 to 1 Gbps Ethernet Adapters (USB-A or USB-C depending on host ports).&lt;br /&gt;
&lt;br /&gt;
** [https://www.amazon.com/Network-Adapter-CableCreation-Ethernet-Supporting/dp/B013G4C8RE/ CableCreation USB 3.0 to Ethernet Adapter]&lt;br /&gt;
** [https://www.amazon.com/Ethernet-Thunderbolt-Gigabit-Network-Compatible/dp/B07XTGKP5M/ USB-C to Gigabit Ethernet Adapter]&lt;br /&gt;
&lt;br /&gt;
==Hardware Requirements==&lt;br /&gt;
&lt;br /&gt;
This section discusses details about each of the hardware components in the system.&lt;br /&gt;
&lt;br /&gt;
===Host Computers===&lt;br /&gt;
&lt;br /&gt;
Two or three host computers are needed, one for the gNB, one for the UE, and optionally one for the Core Network (CN). While the CN host has lower performance requirements, it is recommended that all machines meet the same baseline specifications. Each system should be dedicated to a single role (gNB, UE, or CN). A single host should not run multiple components simultaneously.&lt;br /&gt;
&lt;br /&gt;
Example Host Systems:&lt;br /&gt;
* [https://system76.com/desktops/thelio-mira-b2/configure System76 Thelio Mira]&lt;br /&gt;
* [https://www.dell.com/en-us/shop/desktop-computers/precision-5860-tower/spd/precision-5860-workstation Dell Precision 5860 Tower Workstation]&lt;br /&gt;
&lt;br /&gt;
===CPU===&lt;br /&gt;
&lt;br /&gt;
* Recommended: Intel Core i9 or Intel Xeon (12th to 14th Generation)&lt;br /&gt;
** Minimum clock speed: 4.0 GHz&lt;br /&gt;
** Minimum 8 physical cores (for CN) or 20 physical cores (for gNB and UE)&lt;br /&gt;
** At least 24 PCIe lanes (for network card, more if GPU is also needed)&lt;br /&gt;
** PCIe Gen 4 support&lt;br /&gt;
 &lt;br /&gt;
Example Processors:&lt;br /&gt;
* [https://www.intel.com/content/www/us/en/products/sku/198014/intel-core-i910940x-xseries-processor-19-25m-cache-3-30-ghz/specifications.html Intel Core i9-10940X]  (14 cores at 4.6 GHz)&lt;br /&gt;
* [https://ark.intel.com/content/www/us/en/ark/products/134599/intel-core-i912900k-processor-30m-cache-up-to-5-20-ghz.html Intel Core i9-12900K] (16 cores at 5.2 GHz)&lt;br /&gt;
* [https://www.intel.com/content/www/us/en/products/sku/233416/intel-xeon-w72495x-processor-45m-cache-2-50-ghz/specifications.html Intel Xeon w7-2495X] (24 cores at 4.8 GHz)&lt;br /&gt;
* [https://www.intel.com/content/www/us/en/products/sku/212288/intel-xeon-platinum-8351n-processor-54m-cache-2-40-ghz/specifications.html Intel Xeon Platinum 8351N] (36 cores at 3.5 GHz)&lt;br /&gt;
 &lt;br /&gt;
===Disk===&lt;br /&gt;
&lt;br /&gt;
* Strongly recommended: '''NVMe SSD''' (PCIe Gen 4)&lt;br /&gt;
* Do not use SATA disks, as the throughput is insufficient.&lt;br /&gt;
* Recommended models:&lt;br /&gt;
** [https://www.samsung.com/us/computing/memory-storage/solid-state-drives/980-pro-pcie-4-0-nvme-ssd-1tb-mz-v8p1t0b-am/ Samsung 980 PRO PCIe 4.0 NVMe SSD]&lt;br /&gt;
** [https://www.amazon.com/SAMSUNG-PCIe-Internal-Gaming-MZ-V8P1T0B/dp/B08GLX7TNT/ Amazon Link]&lt;br /&gt;
** [https://www.tomshardware.com/reviews/samsung-980-pro-m-2-nvme-ssd-review Tom's Hardware Review]&lt;br /&gt;
 &lt;br /&gt;
RAID configurations with multiple NVMe drives are optional and should not be required.&lt;br /&gt;
&lt;br /&gt;
===Memory===&lt;br /&gt;
&lt;br /&gt;
* Minimum: 16 GB&lt;br /&gt;
* Dual-channel or quad-channel DDR4 or DDR5 memory&lt;br /&gt;
* Higher memory is optional unless running virtualized workloads.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
&lt;br /&gt;
* The GPU is not required for UHD or OAI operation.&lt;br /&gt;
* Include one only if performing AI/ML workloads.&lt;br /&gt;
* The OAI 5G stack currently does not utilize GPU acceleration.&lt;br /&gt;
&lt;br /&gt;
===10 Gbps Ethernet Network Card===&lt;br /&gt;
&lt;br /&gt;
* The gNB and UE each require a dual-port 10/25 GbE NIC.&lt;br /&gt;
* The CN does not interface directly with USRPs and can use standard 1 Gbps Ethernet.&lt;br /&gt;
* Ensure adequate cooling and PCIe slot space.&lt;br /&gt;
&lt;br /&gt;
Recommended network cards:&lt;br /&gt;
* '''Intel E810-XXVDA2''' (25 GbE, backward compatible with 10 GbE)&lt;br /&gt;
** [https://www.intel.com/content/www/us/en/products/sku/189042/intel-ethernet-network-adapter-e810xxvda2/specifications.html Product Page (Intel)]&lt;br /&gt;
** [https://www.amazon.com/Intel-E810XXVDA2-Ethernet-Network-Adapter/dp/B097M26PXZ/ Amazon Link]&lt;br /&gt;
&lt;br /&gt;
* NVIDIA ConnectX-6 Lx (MCX623106AN-CDAT)&lt;br /&gt;
** Dual-port SFP28, PCIe Gen 4, Linux + DPDK compatible&lt;br /&gt;
** [https://docs.nvidia.com/networking/display/connectx6dxen Product Page (NVIDIA)]&lt;br /&gt;
** [https://www.fs.com/de/products/119646.html?now_cid=4014 FS Link]&lt;br /&gt;
&lt;br /&gt;
===QSFP28-to-SFP28 Breakout Cable for USRP X410===&lt;br /&gt;
&lt;br /&gt;
The USRP X410 has two QSFP28 (100 GbE) ports. To connect the USRP X410 to the 10 GbE network card on a host computer, use a QSFP28-to-4xSFP28 breakout cable.&lt;br /&gt;
&lt;br /&gt;
Recommended cables:&lt;br /&gt;
* [https://store.nvidia.com/en-us/networking/store/product/MCP7F00-A003R26N/nvidiamcp7f00-a003r26ndacsplittercableethernet100gbeto4x25gbe3m/ NVIDIA MCP7F00-A003R26N] – 3 m, 26 AWG  &lt;br /&gt;
* [https://store.nvidia.com/en-us/networking/store/product/MCP7F00-A003R30L/nvidiamcp7f00-a003r30ldacsplittercableethernet100gbeto4x25gbe3m/ NVIDIA MCP7F00-A003R30L] – 3 m, 30 AWG  &lt;br /&gt;
* [https://store.mellanox.com/products/nvidia-mcp7f00-a001r30n-passive-copper-splitter-cable-ethernet-100gbe-to-4x25gbe-qsfp28-to-4xsfp28-1m-colored-30awg-ca-n.html NVIDIA MCP7F00-A001R30N] – 1 m, 30 AWG  &lt;br /&gt;
&lt;br /&gt;
The USRP X410 can also use its QSFP28 100 Gbps Ethernet Connection. This requires that the host computer have a 100 Gbps QSFP28 Ethernet card.&lt;br /&gt;
&lt;br /&gt;
Recommended network cards:&lt;br /&gt;
* [https://store.mellanox.com/products/nvidia-mcx516a-ccat-connectx-5-en-adapter-card-100gbe-dual-port-qsfp28-pcie3-0-x16-tall-bracket-rohs-r6.html Mellanox MCX516A-CCAT (ConnectX-5 EN, PCIe Gen 3)]&lt;br /&gt;
* [https://store.mellanox.com/products/nvidia-mcx516a-cdat-connectx-5-ex-en-adapter-card-100gbe-dual-port-qsfp28-pcie4-0-x16-tall-bracket-rohs-r6.html Mellanox MCX516A-CDAT (ConnectX-5 Ex, PCIe Gen 4)]&lt;br /&gt;
* [https://store.mellanox.com/products/nvidia-mcp1600-c003e26n-passive-copper-cable-ethernet-100gbe-qsfp28-3m-black-26awg-ca-n.html Mellanox MCP1600-C003E26N (3 m, 26 AWG)]&lt;br /&gt;
* [https://store.mellanox.com/products/nvidia-mcp1600-c003e30l-passive-copper-cable-ethernet-100gbe-qsfp28-3m-black-30awg-ca-l.html Mellanox MCP1600-C003E30L (3 m, 30 AWG)]&lt;br /&gt;
* [https://ark.intel.com/content/www/us/en/ark/products/series/184846/100gbe-intel-ethernet-network-adapter-e810.html Intel E810 Series (QSFP28/SFP28)]&lt;br /&gt;
&lt;br /&gt;
This reference architecture does not require full 100 GbE links. Dual 10 Gbps SFP+ links are sufficient for 1x1 and 2x2 MIMO operation in FR1.&lt;br /&gt;
&lt;br /&gt;
== USRP Devices ==&lt;br /&gt;
Two USRP devices are required, one for the gNB, and one for the UE. Several USRP devices can be used.&lt;br /&gt;
&lt;br /&gt;
* USRP N300 – [https://kb.ettus.com/N300/N310 KB Page] | [https://www.ettus.com/all-products/usrp-n300/ Product Page]&lt;br /&gt;
* USRP N310 – [https://kb.ettus.com/N300/N310 KB Page] | [https://www.ettus.com/all-products/usrp-n310/ Product Page]&lt;br /&gt;
* USRP N320 – [https://kb.ettus.com/N320/N321 KB Page] | [https://www.ettus.com/all-products/usrp-n320/ Product Page]&lt;br /&gt;
* USRP N321 – [https://kb.ettus.com/N320/N321 KB Page] | [https://www.ettus.com/all-products/usrp-n321/ Product Page]&lt;br /&gt;
* USRP X410 – [https://kb.ettus.com/X410 KB Page] | [https://www.ettus.com/all-products/usrp-x410/ Product Page]&lt;br /&gt;
&lt;br /&gt;
You can use difference USRP devices for the gNB and UE. The gNB and UE do not need to use the same specific USRP device. For example, the gNB may use a USRP X410, while the UE uses a USRP N310.&lt;br /&gt;
&lt;br /&gt;
The USRP devices support the following channel bandwidths:&lt;br /&gt;
* FR1 (Sub-6 GHz): All models support up to 100 MHz.&lt;br /&gt;
* FR2 (mmWave):&lt;br /&gt;
** USRP N320: 50, 100, 200 MHz supported&lt;br /&gt;
** USRP X410: 50, 100, 200, 400 MHz supported&lt;br /&gt;
&lt;br /&gt;
===OctoClock-G===&lt;br /&gt;
&lt;br /&gt;
An OctoClock-G is required to synchronize the gNB and UE USRP radios. This is only necessary when both the gNB and UE are implemented with USRP devices. Ensure you are using the &amp;quot;-G&amp;quot; version, which includes an internal GPSDO (GPS-Disciplined Oscillator).&lt;br /&gt;
&lt;br /&gt;
==Software Requirements==&lt;br /&gt;
&lt;br /&gt;
This section discusses details about each of the software components in the system.&lt;br /&gt;
&lt;br /&gt;
===Operation System===&lt;br /&gt;
&lt;br /&gt;
The recommended operating system for the gNB, UE, and CN systems is Ubuntu 22.04.5. Ensure you download and install the Desktop version, not the Server version.&lt;br /&gt;
&lt;br /&gt;
For the gNB and UE systems, it is optional to install the low-latency kernel to meet real-time performance requirements. The preferred kernel version is 6.8 or later.&lt;br /&gt;
&lt;br /&gt;
The CN system can operate with the default generic kernel and does not require low-latency optimizations.&lt;br /&gt;
&lt;br /&gt;
Do not run Ubuntu in a Virtual Machine (VM)} or any virtualization layer. Install Ubuntu directly on the hardware (on-the-metal).&lt;br /&gt;
&lt;br /&gt;
Alternative Ubuntu flavors such as Kubuntu, Lubuntu, Xubuntu, and Ubuntu MATE may also be used, if preferred.&lt;br /&gt;
&lt;br /&gt;
===UHD===&lt;br /&gt;
&lt;br /&gt;
UHD (USRP Hardware Driver) is the open-source device driver and API for all USRP radios. The required version for this reference architecture is UHD 4.8.0, which includes enhanced support for new hardware platforms and performance improvements over prior releases.&lt;br /&gt;
&lt;br /&gt;
* UHD must be installed on both the gNB and UE systems.&lt;br /&gt;
&lt;br /&gt;
* UHD is not required on the CN system.&lt;br /&gt;
&lt;br /&gt;
* It is strongly recommended to build UHD from source code, rather than installing it from a binary package, or using the OAI &amp;quot;build_oai&amp;quot; script.&lt;br /&gt;
&lt;br /&gt;
* UHD must be installed prior to building OAI. See the Application Note [https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux here] for more information.&lt;br /&gt;
&lt;br /&gt;
===OAI===&lt;br /&gt;
&lt;br /&gt;
OAI provides an open-source, 3GPP-compliant implementation of the 5G NR stack, including the gNB, UE, and Core Network (CN) components. This reference design utilizes the latest &amp;quot;develop&amp;quot; branch of the OAI repository for all components.&lt;br /&gt;
&lt;br /&gt;
* The OAI software must be built and installed on the gNB, UE, and CN systems.&lt;br /&gt;
* Only the &amp;quot;develop&amp;quot; branch is used for this deployment to ensure access to the latest features and fixes.&lt;br /&gt;
* It is recommended to build OAI from source using the provided &amp;quot;build_oai&amp;quot; script.&lt;br /&gt;
* Be sure to build and install UHD prior to compiling and installing OAI.&lt;br /&gt;
&lt;br /&gt;
The Git repository for OAI is at the link below.&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.eurecom.fr/oai/openairinterface5g https://gitlab.eurecom.fr/oai/openairinterface5g]&lt;br /&gt;
&lt;br /&gt;
==Installing and Configuring the UHD Software==&lt;br /&gt;
&lt;br /&gt;
This section explains how to build and install the USRP Hardware Driver (UHD) from source code. UHD is the open-source driver for all USRP radios and is required on both the gNB and UE systems. It is not required on the CN system. We strongly recommend building UHD from source rather than installing from binary packages to ensure compatibility and access to the latest updates. At the time of this writing, we recommend using UHD version 4.8.&lt;br /&gt;
&lt;br /&gt;
Before building UHD, install all the required dependencies using the following command (for Ubuntu 22.04):&lt;br /&gt;
&lt;br /&gt;
    sudo apt update &amp;amp;&amp;amp; sudo apt install -y cmake g++ libboost-all-dev libusb-1.0-0-dev libuhd-dev python3 python3-mako python3-numpy python3-requests python3-ruamel.yaml libfftw3-dev libqt5opengl5-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools doxygen&lt;br /&gt;
&lt;br /&gt;
Then, clone the UHD repository and check out the &amp;quot;v4.8.0.0&amp;quot; tag:&lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/EttusResearch/uhd.git&lt;br /&gt;
    cd uhd&lt;br /&gt;
    git checkout v4.8.0.0&lt;br /&gt;
&lt;br /&gt;
Then, build and install UHD:&lt;br /&gt;
&lt;br /&gt;
    cd host&lt;br /&gt;
    mkdir build&lt;br /&gt;
    cd build&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j$(nproc)&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
    export LD_LIBRARY_PATH=/usr/local/lib&lt;br /&gt;
    sudo uhd_images_downloader&lt;br /&gt;
&lt;br /&gt;
You can verify the installation by running:&lt;br /&gt;
&lt;br /&gt;
    uhd_usrp_probe&lt;br /&gt;
    uhd_find_devices&lt;br /&gt;
&lt;br /&gt;
For more details, see the [https://github.com/EttusResearch/uhd UHD GitHub page].&lt;br /&gt;
&lt;br /&gt;
[[File:uhd_usrp_probe_output.png|thumb|800px|center|uhd_usrp_probe output for USRP B210]]&lt;br /&gt;
&lt;br /&gt;
[[File:uhd_find_devices_output.png|thumb|800px|center|uhd_find_devices output for USRP N310 and X410]]&lt;br /&gt;
&lt;br /&gt;
===Installing and Configuring the USRP Radio===&lt;br /&gt;
&lt;br /&gt;
The USRP N300, N310, N320, N321, and X410 can all be used either as the gNB or as the UE in this reference design.&lt;br /&gt;
&lt;br /&gt;
===USRP N300 and N310===&lt;br /&gt;
&lt;br /&gt;
For setup and configuration, refer to the [https://kb.ettus.com/USRP_N300/N310/N320/N321_Getting_Started_Guide USRP N300/N310 Getting Started Guide].&lt;br /&gt;
&lt;br /&gt;
These devices support all the channel bandwidths in FR1.&lt;br /&gt;
&lt;br /&gt;
===USRP N320 and N321===&lt;br /&gt;
&lt;br /&gt;
For setup and configuration, refer to the [https://kb.ettus.com/USRP_N300/N310/N320/N321_Getting_Started_Guide USRP N320/N321 Getting Started Guide].&lt;br /&gt;
&lt;br /&gt;
These devices support all the channel bandwidths in FR1 and FR2, except the 400 MHz in FR2.&lt;br /&gt;
&lt;br /&gt;
===USRP X410===&lt;br /&gt;
&lt;br /&gt;
For setup and configuration, refer to the [https://kb.ettus.com/USRP_X410/X440_Getting_Started_Guide USRP X410 Getting Started Guide].&lt;br /&gt;
&lt;br /&gt;
The X410 supports all channel bandwidths in both FR1 and FR2.&lt;br /&gt;
&lt;br /&gt;
==Configuring the Ubuntu Linux Operating System==&lt;br /&gt;
&lt;br /&gt;
For optimal system performance, refer to the article [https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks USRP Host Performance Tuning Tips and Tricks], which outlines specific settings and configuration procedures that are necessary to perform. These include:&lt;br /&gt;
 &lt;br /&gt;
* Set the CPU governors.&lt;br /&gt;
* Enable thread priority scheduling.&lt;br /&gt;
* Set the read and write socket buffer sizes.&lt;br /&gt;
* Adjust Ethernet MTU values.&lt;br /&gt;
* Set the network card ring buffer sizes.&lt;br /&gt;
* In the BIOS, disable Hyper-threading and disable P-state controls.&lt;br /&gt;
&lt;br /&gt;
Note that the use of the [https://www.dpdk.org/ Data Plane Development Kit (DPDK)] is not required for running any of the FR1 channel bandwidths. As of this writing, DPDK is not used in this reference architecture. The use of DPDK is necessary for the FR2 channel bandwidths.&lt;br /&gt;
&lt;br /&gt;
==Installing, Configuring, and Running the CN System==&lt;br /&gt;
&lt;br /&gt;
The figure listed below illustrates the deployment architecture of the OAI 5G Core Network. The core network is implemented using several containerized network functions (NFs), each mapped to a specific IP address within the subnet `192.168.70.128/26`.&lt;br /&gt;
 &lt;br /&gt;
[[File:OAI_Core_Network.jpg|thumb|center|700px|OpenAirInterface (OAI) Core Network Deployment Architecture]]&lt;br /&gt;
&lt;br /&gt;
The following components are included:&lt;br /&gt;
 &lt;br /&gt;
* OAI-NRF (Network Repository Function) at `192.168.70.130` – Handles service registration and discovery.&lt;br /&gt;
&lt;br /&gt;
* OAI-AMF (Access and Mobility Function) at `192.168.70.132` – Manages UE registration, connection, and mobility.&lt;br /&gt;
&lt;br /&gt;
* OAI-SMF (Session Management Function) at `192.168.70.133` – Manages sessions and IP address allocation.&lt;br /&gt;
&lt;br /&gt;
* OAI-UPF (User Plane Function) at `192.168.70.134` – Routes user data traffic and connects to the external data network via the N3 interface.&lt;br /&gt;
&lt;br /&gt;
* OAI-EXT-DN (External Data Network) at `192.168.70.135` – Provides Internet or service access for UEs.&lt;br /&gt;
&lt;br /&gt;
* OAI-AUSF (Authentication Server Function) at `192.168.70.138` – Handles UE authentication.&lt;br /&gt;
&lt;br /&gt;
* OAI-UDM (Unified Data Management) at`192.168.70.137` and OAI-UDR (Unified Data Repository) at `192.168.70.136` –   Manage subscription and policy data.&lt;br /&gt;
&lt;br /&gt;
* MySQL Server – connected to `192.168.70.132` for database services required by AMF and UDM.&lt;br /&gt;
&lt;br /&gt;
This architecture demonstrates a standard service-based interface (SBI) deployment with N3 and N4 interfaces clearly marked between UPF and SMF.&lt;br /&gt;
&lt;br /&gt;
Each component is deployed in a containerized environment, typically using Docker Compose.&lt;br /&gt;
&lt;br /&gt;
==Core Network (CN) Deployment Scenarios==&lt;br /&gt;
 &lt;br /&gt;
The OAI CN can be deployed in two different configurations depending on the system requirements and testbed constraints. Both setups follow the same installation process, differing only in whether the CN is hosted on a separate machine or the same machine as the gNB.&lt;br /&gt;
 &lt;br /&gt;
===Scenario 1: CN and gNB on the Same Machine===&lt;br /&gt;
 &lt;br /&gt;
This configuration runs both the Core Network and the gNB stack on a single physical machine. It is suitable for development, testing, and lab-scale demonstrations. Follow the installation procedure listed below.&lt;br /&gt;
&lt;br /&gt;
Install the pre-requisites and Docker.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo apt install -y git net-tools putty&lt;br /&gt;
    sudo apt update&lt;br /&gt;
    sudo apt install -y ca-certificates curl&lt;br /&gt;
    sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc&lt;br /&gt;
    sudo chmod a+r /etc/apt/keyrings/docker.asc&lt;br /&gt;
    echo &amp;quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;${UBUNTU_CODENAME:-$VERSION_CODENAME}&amp;quot;) stable&amp;quot; | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
    sudo apt update&lt;br /&gt;
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
    sudo usermod -a -G docker $(whoami)&lt;br /&gt;
    reboot&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Then, download and configure OAI CN.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    wget -O ~/oai-cn5g.zip https://gitlab.eurecom.fr/oai/openairinterface5g/-/archive/develop/openairinterface5g-develop.zip?path=doc/tutorial_resources/oai-cn5g&lt;br /&gt;
    unzip ~/oai-cn5g.zip&lt;br /&gt;
    mv ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g/doc/tutorial_resources/oai-cn5g ~/oai-cn5g&lt;br /&gt;
    rm -r ~/openairinterface5g-develop-doc-tutorial_resources-oai-cn5g ~/oai-cn5g.zip&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Then, pull and launch the CN.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/oai-cn5g&lt;br /&gt;
    docker compose pull&lt;br /&gt;
    docker compose up -d&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
In order to stop the CN, run the commands listed below.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/oai-cn5g&lt;br /&gt;
    docker compose down&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scenario 2: CN and gNB on Separate Machines===&lt;br /&gt;
 &lt;br /&gt;
In this setup, the Core Network is deployed on a dedicated host, while the gNB runs on a separate system. This architecture is closer to real-world 5G deployments and helps isolate network functions for performance analysis.&lt;br /&gt;
&lt;br /&gt;
====Hardware Requirements====&lt;br /&gt;
* Ubuntu version 22.04.5&lt;br /&gt;
* CPU: 8 cores at minimum 3.5 GHz clock speed&lt;br /&gt;
* RAM: minimum 16 GB, recommended 32 GB&lt;br /&gt;
&lt;br /&gt;
====Additional Requirements====&lt;br /&gt;
* A second physical machine with the same system specifications.&lt;br /&gt;
* Proper IP routing between CN and gNB machines, usually through a simple Ethernet switch.&lt;br /&gt;
&lt;br /&gt;
Installation steps are identical to Scenario 1, executed on the second machine allocated for CN.&lt;br /&gt;
 &lt;br /&gt;
===Core Network Database Configuration===&lt;br /&gt;
&lt;br /&gt;
To configure the OAI CN with a valid UE profile, manually insert subscriber information into the MySQL database by editing the file `oai_db.sql`.&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/oai-cn5g/database&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Open the `oai_db.sql` file, and insert the following under the `AuthenticationSubscription` table:&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    INSERT INTO `AuthenticationSubscription`&lt;br /&gt;
    (`ueid`, `authenticationMethod`, `encPermanentKey`, `protectionParameterId`, &lt;br /&gt;
     `sequenceNumber`, `authenticationManagementField`, `algorithmId`, `encOpcKey`, &lt;br /&gt;
     `encTopcKey`, `vectorGenerationInHss`, `n5gcAuthMethod`, `rgAuthenticationInd`, `supi`)&lt;br /&gt;
    VALUES&lt;br /&gt;
    ('208950000000032', '5G_AKA',&lt;br /&gt;
     'fec86ba6eb707ed08905757b1bb44b8f',&lt;br /&gt;
     'fec86ba6eb707ed08905757b1bb44b8f',&lt;br /&gt;
     '{&amp;quot;sqn&amp;quot;: &amp;quot;000000000000&amp;quot;, &amp;quot;sqnScheme&amp;quot;: &amp;quot;NON_TIME_BASED&amp;quot;, &amp;quot;lastIndexes&amp;quot;: {&amp;quot;ausf&amp;quot;: 0}}',&lt;br /&gt;
     '8000',&lt;br /&gt;
     'milenage',&lt;br /&gt;
     'C42449363BBAD02B66D16BC975D77CC1',&lt;br /&gt;
     NULL, NULL, NULL, NULL,&lt;br /&gt;
     '001010000000001');&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that:&lt;br /&gt;
* IMSI: The &amp;quot;ueid&amp;quot; and &amp;quot;supi&amp;quot; must match the IMSI used by your UE. In this example, the IMSI is &amp;quot;208950000000032&amp;quot;.&lt;br /&gt;
* Key: This is the permanent key shared between the UE and the core network. In this example, &amp;quot;fec86ba6eb707ed08905757b1bb44b8f&amp;quot;.&lt;br /&gt;
* OPC: Operator Code used in milenage authentication. In this example, &amp;quot;C42449363BBAD02B66D16BC975D77CC1&amp;quot;&lt;br /&gt;
* Authentication Method: Ensure that &amp;quot;5G_AKA&amp;quot; is used for standard 5G UE authentication.&lt;br /&gt;
&lt;br /&gt;
===Update PLMN Configuration in &amp;quot;config.yaml&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
Edit the configuration file:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/oai-cn5g/config&lt;br /&gt;
    nano config.yaml&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modify the file as shown below:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
    plmn:&lt;br /&gt;
      mcc: &amp;quot;208&amp;quot;&lt;br /&gt;
      mnc: &amp;quot;95&amp;quot;&lt;br /&gt;
      tac: 1&lt;br /&gt;
      nssai:&lt;br /&gt;
        - sst: 1&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart the CN stack:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/oai-cn5g&lt;br /&gt;
    docker compose down&lt;br /&gt;
    docker compose up -d&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installing Wireshark on Ubuntu===&lt;br /&gt;
 &lt;br /&gt;
Wireshark is a real-time packet sniffer that used to monitor traffic between CN and gNB.&lt;br /&gt;
&lt;br /&gt;
If not already installed, then install Wireshark, and then launch it.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
    sudo apt install -y wireshark&lt;br /&gt;
    sudo dpkg-reconfigure wireshark-common&lt;br /&gt;
    sudo usermod -aG wireshark $(whoami)&lt;br /&gt;
    sudo wireshark&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After launch, select an interface (e.g., `eth0`, `enp1s0`, or `oai-cn`) to capture packets. Select the interface that is connected from the CN system to the gNB system.&lt;br /&gt;
&lt;br /&gt;
===Launch OAI CN Containers===&lt;br /&gt;
&lt;br /&gt;
Once you have configured and deployed the OAI 5G Core Network using Docker Compose, run the following command to launch the Core Network.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo docker-compose up -d&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The command above should yield output similar to the image listed below, confirming that all necessary containers and services are created and running.&lt;br /&gt;
&lt;br /&gt;
[[File:Start_up_OAI_CN.png|thumb|center|600px|Successful startup of OAI CN5G containers using Docker Compose]]&lt;br /&gt;
&lt;br /&gt;
Each CN function (AMF, SMF, UPF, NRF, AUSF, etc.) runs as a individual Docker container. The message &amp;quot;... done&amp;quot; indicates successful start-up.&lt;br /&gt;
&lt;br /&gt;
===Verification of Running CN Containers===&lt;br /&gt;
&lt;br /&gt;
To verify that all core network components are running correctly, use the following command:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo docker ps -a&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see output similar to the image listed below, showing all containers with &amp;quot;STATUS&amp;quot; as &amp;quot;Up ... (healthy)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:OAI_CN_Docker_Containers.png|thumb|center|600px|OAI CN containers running successfully]]&lt;br /&gt;
 &lt;br /&gt;
This confirms the healthy status of all the core network components such as AMF, SMF, UPF, NRF, AUSF, UDM, UDR, MySQL, and EXT-DN. The exposed ports indicate the services are properly bound and ready for communication.&lt;br /&gt;
&lt;br /&gt;
===Wireshark Monitoring of OAI CN===&lt;br /&gt;
&lt;br /&gt;
Wireshark is a powerful tool used to observe packet exchanges within the OAI CN deployment. Below we show the key steps in using Wireshark.&lt;br /&gt;
&lt;br /&gt;
Upon launching Wireshark, the user must select the appropriate interface to begin capturing packets. In our setup, the interface named &amp;quot;oai-cn5g&amp;quot; represents the internal Docker network where all core services are communicating.  Select the interface `oai-cn5g` to capture traffic between CN components, as shown in the figure listed below.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_OAI.png|thumb|center|700px|Selecting the oai-cn5g interface in Wireshark]]&lt;br /&gt;
&lt;br /&gt;
Once the capture starts, Wireshark displays packets exchanged between the core network functions such as AMF, SMF, NRF, AUSF, and others. This is useful for verifying proper message flow and debugging. Reference the figure shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_Capture.png|thumb|center|700px|Live capture showing HTTP2, TCP, and PFCP traffic between CN containers]]&lt;br /&gt;
&lt;br /&gt;
==Installing, Configuring, and Running the gNB System==&lt;br /&gt;
&lt;br /&gt;
To build the OAI gNB on the same machine, or on a separate machine, from the CN machine, follow the steps below. These instructions use the latest &amp;quot;develop&amp;quot; branch of the OAI codebase.&lt;br /&gt;
&lt;br /&gt;
Clone the OAI repository and switch to the &amp;quot;develop&amp;quot; branch.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g&lt;br /&gt;
    cd ~/openairinterface5g&lt;br /&gt;
    git checkout develop&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Navigate to the CMake targets directory, and install all required system and build dependencies.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/openairinterface5g/cmake_targets&lt;br /&gt;
    ./build_oai -I&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install the dependencies required by the &amp;quot;nrscope&amp;quot; tool.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo apt install -y libforms-dev libforms-bin&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile the gNB and the optional nrUE modules with the USRP target. The build uses &amp;quot;ninja&amp;quot; and includes the &amp;quot;nrscope&amp;quot; library.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/openairinterface5g/cmake_targets&lt;br /&gt;
    ./build_oai -w USRP --ninja --nrUE --gNB --build-lib &amp;quot;nrscope&amp;quot; -C&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once built, the binaries &amp;quot;nr-gnb&amp;quot; and (optionally) &amp;quot;nr-ue&amp;quot; will be located in the &amp;lt;code&amp;gt;~/openairinterface5g/cmake_targets/ran_build/build/&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
===gNB Configuration File Setup for OAI with USRP X410===&lt;br /&gt;
&lt;br /&gt;
The gNB configuration must match your local system and hardware. Configuration files are in the &amp;lt;code&amp;gt;~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
Edit the following sections of this file, per the figures shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MCC_MNC_update.png|center|900px|MCC, MNC, and SST configuration in PLMN section]]&lt;br /&gt;
&lt;br /&gt;
* Set &amp;lt;code&amp;gt;mcc = 208&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mnc = 95&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;sst = 1&amp;lt;/code&amp;gt; to match the Core Network (CN) slice configuration.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;nr_cellid = 12345678L&amp;lt;/code&amp;gt; can be any unique value.&lt;br /&gt;
 &lt;br /&gt;
[[File:AMF_IP_Address.png|center|700px|AMF IP address and gNB network interface settings]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;amf_ip_address&amp;lt;/code&amp;gt;: IP of the AMF container (e.g., &amp;lt;code&amp;gt;192.168.70.132&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;GNB_IPV4_ADDRESS_FOR_NG_AMF&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GNB_IPV4_ADDRESS_FOR_NGU&amp;lt;/code&amp;gt;: set to the host machine's IP address (e.g., &amp;lt;code&amp;gt;10.88.136.29&amp;lt;/code&amp;gt;).&lt;br /&gt;
 &lt;br /&gt;
[[File:ORU_Update.png|center|900px|Radio Unit (RU) configuration for USRP X410]]&lt;br /&gt;
 &lt;br /&gt;
* &amp;lt;code&amp;gt;local_rf = &amp;quot;yes&amp;quot;&amp;lt;/code&amp;gt; enables local RF.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;bands = [78]&amp;lt;/code&amp;gt; selects NR band n78.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;max_rxgain = 75&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;max_pdschReferenceSignalPower = -27&amp;lt;/code&amp;gt; set RF parameters.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sdr_addrs&amp;lt;/code&amp;gt;specifies the device argument list for the USRP X410. For example:&lt;br /&gt;
** &amp;lt;code&amp;gt;type=x4xx&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;mgmt_addr=192.168.11.2&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;addr=192.168.11.2&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;clock_source=internal&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;time_source=internal&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensure that the system firewall rules permit relevant IP traffic, and that all IP addresses reflect your physical environment and network configuration.&lt;br /&gt;
&lt;br /&gt;
===Network Configuration for Separate CN Deployment===&lt;br /&gt;
&lt;br /&gt;
When the CN is on a separate machine, configure networking so the gNB can reach CN containers.&lt;br /&gt;
&lt;br /&gt;
====Add Static Route on gNB Machine====&lt;br /&gt;
&lt;br /&gt;
A static route must be added to the gNB machine so it can reach the CN container subnet.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo ip route add 192.168.70.128/26 via 10.89.14.119 dev eno1&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;192.168.70.128/26&amp;lt;/code&amp;gt;: CN Docker bridge subnet.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;10.89.14.119&amp;lt;/code&amp;gt;: CN host machine IP.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;eno1&amp;lt;/code&amp;gt;: gNB NIC toward CN (e.g., &amp;lt;code&amp;gt;enp1s0&amp;lt;/code&amp;gt; on your system).&lt;br /&gt;
&lt;br /&gt;
Note that this route is not persistent across reboots.&lt;br /&gt;
&lt;br /&gt;
=== Enable IP Forwarding and Adjust iptables on CN Machine ===&lt;br /&gt;
&lt;br /&gt;
To allow the CN machine to forward packets between the gNB and the containerized core network functions, the following settings must be configured.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo sysctl net.ipv4.conf.all.forwarding=1&lt;br /&gt;
    sudo iptables -P FORWARD ACCEPT&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These settings are also temporary and will reset after reboot unless added to startup scripts or permanent configuration files. Set &amp;lt;code&amp;gt;/etc/sysctl.conf&amp;lt;/code&amp;gt; for IP forwarding, and use the &amp;quot;iptables-persistent&amp;quot; or &amp;quot;systemd&amp;quot; service for IP firewall rules.&lt;br /&gt;
&lt;br /&gt;
If the CN and gNB are on the same host, then this section is not needed.&lt;br /&gt;
&lt;br /&gt;
===Invoking the gNB===&lt;br /&gt;
&lt;br /&gt;
====Copy the Configuration File====&lt;br /&gt;
&lt;br /&gt;
First, copy the edited gNB configuration file to the appropriate directory.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cp openairinterface5g/ci-scripts/conf_files/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Launch the gNB====&lt;br /&gt;
&lt;br /&gt;
Change into the build directory.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/openairinterface5g/cmake_targets/ran_build/build&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The, run the command listed below.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.2x2.usrpn300.conf --gNBs.[0].min_rxtxtime 6 --usrp-tx-thread-config 1&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then open Wireshark, select the interface connected to the CN, and observe the NGAP packets.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--gNBs.[0].min_rxtxtime 6&amp;lt;/code&amp;gt; reduces RX→TX latency.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;--usrp-tx-thread-config 1&amp;lt;/code&amp;gt; pins TX thread to a dedicated core.&lt;br /&gt;
&lt;br /&gt;
===Verifying with Wireshark===&lt;br /&gt;
&lt;br /&gt;
Wireshark is used to verify the NGAP signaling between the gNB and the Core Network (CN). The interface to monitor depends on your network configuration. The figure listed below shows a Wireshark capture showing successful NGSetupRequest and NGSetupResponse between gNB and AMF&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_OAI_NGAP.png|center|750px|Wireshark capture showing successful NGSetupRequest and NGSetupResponse between gNB and AMF]]&lt;br /&gt;
 &lt;br /&gt;
====Scenario A: CN and gNB on Separate Machines====&lt;br /&gt;
&lt;br /&gt;
* On the CN machine, select the &amp;lt;code&amp;gt;oai-cn5g&amp;lt;/code&amp;gt; interface in Wireshark.&lt;br /&gt;
&lt;br /&gt;
* On the gNB machine, select the Ethernet interface (e.g., &amp;lt;code&amp;gt;eno1&amp;lt;/code&amp;gt;) toward the CN.&lt;br /&gt;
&lt;br /&gt;
====Scenario B: CN and gNB on Same Machine====&lt;br /&gt;
&lt;br /&gt;
* Select only the &amp;lt;code&amp;gt;oai-cn5g&amp;lt;/code&amp;gt; interface (all internal CN–gNB signaling is visible).&lt;br /&gt;
&lt;br /&gt;
The expected behavior is:&lt;br /&gt;
* After startup, the gNB sends an &amp;quot;NGAP Setup Request&amp;quot; to the AMF.&lt;br /&gt;
* Then, the AMF responds with NGAP Setup Response&amp;quot; if the MCC, MNC, and TAC parameters match.&lt;br /&gt;
&lt;br /&gt;
Ensure that the MCC, MNC, SST match between gNB config and CN &amp;lt;code&amp;gt;config.yaml&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Verify that the TAC (Tracking Area Code) matches on both sides.&lt;br /&gt;
* Confirm static route and L2/L3 connectivity between gNB and CN.&lt;br /&gt;
&lt;br /&gt;
==Installing, Configuring, and Running the OAI UE System==&lt;br /&gt;
&lt;br /&gt;
There are three types of UE implementations that can be used with the OpenAirInterface (OAI) stack:&lt;br /&gt;
* USRP OAI UE: Uses a USRP radio as the UE implementation (e.g., USRP B210). This does not use any SIM card.&lt;br /&gt;
* Modem Module UE: A modem module such as from Quectel or Sierra Wireless. This uses a test SIM card.&lt;br /&gt;
* COTS UE: Commercial handset, such as a Google Pixel 9. It connects OTA to the OAI gNB using a valid 5G SIM profile. The handset must be unlocked. This uses a test SIM card.&lt;br /&gt;
&lt;br /&gt;
In this subsection, we focus only on the USRP OAI UE.&lt;br /&gt;
&lt;br /&gt;
Clone the OAI UE repository, and checkout a tagged release.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g&lt;br /&gt;
    cd ~/openairinterface5g&lt;br /&gt;
    git checkout develop&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, install the OAI UE Dependencies.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/openairinterface5g/cmake_targets&lt;br /&gt;
    ./build_oai -I&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, build the OAI UE with USRP support.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    cd ~/openairinterface5g/cmake_targets&lt;br /&gt;
    ./build_oai -w USRP --ninja --nrUE --build-lib nrscope -C&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, configure the OAI UE parameters.&lt;br /&gt;
&lt;br /&gt;
The following configuration provisions the OAI UE running on a USRP radio. It defines the IMSI, cryptographic keys, and network parameters (DNN, NSSAI). These must match the subscriber entry in the Core Network (AMF/UDM) for successful registration and session setup.&lt;br /&gt;
&lt;br /&gt;
[[File:OAI_UE_Config_file.png|center|700px|OAI UE Configuration Parameters for IMSI 208950000000032]]&lt;br /&gt;
&lt;br /&gt;
Ensure the following values are synchronized between the OAI UE and CN:&lt;br /&gt;
* &amp;lt;code&amp;gt;imsi&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;opc&amp;lt;/code&amp;gt; match the subscriber profile in the UDM DB/YAML.&lt;br /&gt;
* &amp;lt;code&amp;gt;dnn&amp;lt;/code&amp;gt; (e.g., &amp;lt;code&amp;gt;oai&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;) matches SMF config.&lt;br /&gt;
* &amp;lt;code&amp;gt;nsai&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;sst&amp;lt;/code&amp;gt; and optional &amp;lt;code&amp;gt;sd&amp;lt;/code&amp;gt;) matches the network slice.&lt;br /&gt;
&lt;br /&gt;
Next, invoke the OAI UE with the USRP by running from the build directory after configuring parameters.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    ~/openairinterface5g/cmake_targets/ran_build/build$ sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3319680000 --ue-fo-compensation -E --uicc0.imsi 208950000000032 --ssb 516 --ue-rxgain 114&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The parameters are as follows.&lt;br /&gt;
* &amp;lt;code&amp;gt;-r 106&amp;lt;/code&amp;gt;: Number of PRBs.&lt;br /&gt;
* &amp;lt;code&amp;gt;--numerology 1&amp;lt;/code&amp;gt;: 30 KHz SCS.&lt;br /&gt;
* &amp;lt;code&amp;gt;--band 78&amp;lt;/code&amp;gt;: FR1 band n78.&lt;br /&gt;
* &amp;lt;code&amp;gt;-C 3319680000&amp;lt;/code&amp;gt;: Center frequency in Hz.&lt;br /&gt;
* &amp;lt;code&amp;gt;--ue-fo-compensation&amp;lt;/code&amp;gt;: Frequency offset compensation.&lt;br /&gt;
* &amp;lt;code&amp;gt;-E&amp;lt;/code&amp;gt;: Three-quarter-rate sampling (commonly used on the USRP B200, B210, B200mini, X300, X310).&lt;br /&gt;
* &amp;lt;code&amp;gt;--uicc0.imsi 208950000000032&amp;lt;/code&amp;gt;: IMSI for 5GC auth.&lt;br /&gt;
* &amp;lt;code&amp;gt;--ssb 516&amp;lt;/code&amp;gt;: SSB index.&lt;br /&gt;
* &amp;lt;code&amp;gt;--ue-rxgain 114&amp;lt;/code&amp;gt;: B210 RX gain (dB).&lt;br /&gt;
&lt;br /&gt;
Only use the &amp;lt;code&amp;gt;-E&amp;lt;/code&amp;gt; option when running with the USRP B200, B210, B200mini, X300, X310, and omit it when running with the USRP N300, N310, N320, X410.&lt;br /&gt;
&lt;br /&gt;
===Verifying OAI UE IP Assignment===&lt;br /&gt;
&lt;br /&gt;
After successful PDU session setup, verify tunnel interface &amp;lt;code&amp;gt;oaitun_ue1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    ifconfig oaitun_ue1&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The desired output should be similar to what is shown below.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    oaitun_ue1: flags=209&amp;lt;UP,POINTOPOINT,RUNNING,NOARP&amp;gt;  mtu 1500&lt;br /&gt;
        inet 10.0.0.5  netmask 255.255.255.0  destination 10.0.0.5&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, the UE IP is &amp;lt;code&amp;gt;10.0.0.5&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===gNB Log Interpretation for OAI UE Attachment and PDU Session Setup===&lt;br /&gt;
&lt;br /&gt;
Listed below are annotated logs from the gNB that demonstrate the successful Random Access, RRC connection setup, NGAP procedures, and PDU session establishment for the UE.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    [NR_PHY] [RAPROC] Initiating RA procedure with preamble 0 ...&lt;br /&gt;
    [NR_MAC] UE RA-RNTI 010f TC-RNTI 55aa: Activating RA process index 0&lt;br /&gt;
    [NR_MAC] UE 55aa: Generating RA-Msg2 DCI&lt;br /&gt;
    [NR_MAC] Msg3 scheduled ...&lt;br /&gt;
    [NR_MAC] Send RAR to RA-RNTI 010f&lt;br /&gt;
    [NR_MAC] PUSCH with TC_RNTI 0x55aa received correctly&lt;br /&gt;
    [MAC] [RAPROC] Received SDU for CCCH length 6 for UE 55aa&lt;br /&gt;
    [RLC] Activated SRB0 and SRB1 for UE 21930&lt;br /&gt;
    [NR_MAC] Scheduling Msg4 for TC_RNTI 0x55aa&lt;br /&gt;
    [NR_RRC] Create UE context for RNTI 55aa → UE ID 1&lt;br /&gt;
    [NR_RRC] Send RRC Setup&lt;br /&gt;
    [NR_MAC] UE 55aa: Msg4 Ack received — CBRA procedure succeeded!&lt;br /&gt;
    [NR_RRC] RRCSetupComplete received — UE is now RRC_CONNECTED&lt;br /&gt;
    [NGAP] UE 1: Chose AMF 'OAI-AMF' (PLMN MCC 208, MNC 95)&lt;br /&gt;
    [NR_RRC] Send/Receive DL and UL Information Transfer messages&lt;br /&gt;
    [NR_RRC] SecurityModeCommand sent → Ciphering: 0, Integrity: 2&lt;br /&gt;
    [NR_RRC] SecurityModeComplete received&lt;br /&gt;
    [NR_RRC] UE Capability Enquiry/Response exchanged&lt;br /&gt;
    [NGAP] InitialContextSetupResponse sent &lt;br /&gt;
    [PDU SESSION SETUP INITIATED]&lt;br /&gt;
    [NR_RRC] PDU Session Setup Request received → ID: 10&lt;br /&gt;
    [GTPU] Tunnel Created: TEID: bf57e042 ↔ 192.168.70.134&lt;br /&gt;
    [PDCP/RLC/SDAP] DRB 1 created, SRB2 activated&lt;br /&gt;
    [RRC] RRCReconfiguration sent (bytes: 327)&lt;br /&gt;
    [NR_RRC] RRCReconfigurationComplete received&lt;br /&gt;
    [NR_RRC] PDUSESSION_SETUP_RESP sent → TEID: 3210207298, IP: 10.88.136.29&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the following key events from the log file.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;RA procedure succeeded&amp;quot;: UE completed Msg4 ACK.&lt;br /&gt;
* &amp;quot;RRC_CONNECTED&amp;quot;: RRC established.&lt;br /&gt;
* &amp;quot;SecurityModeComplete&amp;quot;: Security context OK.&lt;br /&gt;
* &amp;quot;InitialContextSetupResponse&amp;quot;: AMF context OK.&lt;br /&gt;
* &amp;quot;PDU Session Setup&amp;quot;: Bearer and GTP-U tunnel created.&lt;br /&gt;
&lt;br /&gt;
===OAI UE Log Interpretation for Initial Access and Registration===&lt;br /&gt;
&lt;br /&gt;
The following annotated logs from the OAI UE show the end-to-end UE attach, synchronization, random access procedure, NAS signaling, and security configuration.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    [PHY]   SSB position provided&lt;br /&gt;
    [NR_PHY]   Starting sync detection&lt;br /&gt;
    [PHY]   [UE thread Synch] Running Initial Synch&lt;br /&gt;
    [NR_PHY]   Cell search with center freq: 3319680000, bandwidth: 106&lt;br /&gt;
    [PHY]   pbch decoded successfully, rsrp: 70 dB/RE&lt;br /&gt;
    [PHY]   Initial sync successful, PCI: 0&lt;br /&gt;
    [PHY]   UE synchronized! decoded_frame_rx=502 ... trashed_frames=70&lt;br /&gt;
    [NR_RRC]   SIB1 decoded → system information received&lt;br /&gt;
    [NR_MAC]   TDD Configuration set: 8 DL / 3 UL slots per period&lt;br /&gt;
    [MAC]   Initialization of 4-Step CBRA procedure&lt;br /&gt;
    [PHY]   PRACH transmitted: Frame 577, Slot 19&lt;br /&gt;
    [PHY]   RAR-Msg2 decoded&lt;br /&gt;
    [MAC]   TA command received, Msg3 transmitted&lt;br /&gt;
    [MAC]   4-Step RA procedure succeeded&lt;br /&gt;
    [NR_RRC]   Received NR_RRCSetup on DL-CCCH (SRB0)&lt;br /&gt;
    [RLC]   SRB1 added&lt;br /&gt;
    [NR_RRC]   UE state set to NR_RRC_CONNECTED&lt;br /&gt;
    [NAS]   Initial Registration Request generated&lt;br /&gt;
    [NR_RRC]   RRCSetupComplete sent on UL-DCCH (SRB1)&lt;br /&gt;
    [NAS]   Authentication Request received&lt;br /&gt;
    [NAS]   Security Keys derived: kgnb, kausf, kseaf, kamf&lt;br /&gt;
    [NAS]   Security Mode Command received and responded with Security Mode Complete&lt;br /&gt;
    [NR_RRC]   Capability Enquiry received and processed&lt;br /&gt;
    [NR_RRC]   UECapabilityInformation transmitted&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the following key events from the log file.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Synchronization:&amp;quot; UE synchronizes to gNB SSB with PCI 0 and RSRP of 70 dB/RE.&lt;br /&gt;
* &amp;quot;RA Procedure:&amp;quot; PRACH sent, Msg2 received, Msg3 transmitted, Msg4 ACK confirmed.&lt;br /&gt;
* &amp;quot;RRC Setup:&amp;quot; UE enters &amp;lt;code&amp;gt;NR_RRC_CONNECTED&amp;lt;/code&amp;gt; state after SetupComplete.&lt;br /&gt;
* &amp;quot;NAS Authentication:&amp;quot;  UE derives security keys (KgNB, KAMF, etc.).&lt;br /&gt;
* &amp;quot;Security Setup:&amp;quot; Ciphering and integrity algorithms selected (nea0, nia2)&lt;br /&gt;
* &amp;quot;Capability Exchange:&amp;quot; UE capabilities sent via UECapabilityInformation.&lt;br /&gt;
&lt;br /&gt;
===Verifying UE Attach and Registration via Wireshark===&lt;br /&gt;
&lt;br /&gt;
Wireshark is used to inspect and verify the signaling exchange between the UE, gNB, and Core Network during the 5G attach and registration procedure. The figure listed below captures NGAP and NAS messages exchanged during a successful UE attachment using the OAI UE and gNB connected to the OAI 5G Core.&lt;br /&gt;
&lt;br /&gt;
The process begins with the NGSetupRequest and NGSetupResponse messages to establish the NG interface. This is followed by the UE initiating registration using the InitialUEMessage which encapsulates a NAS Registration Request. The core responds with a sequence of NAS security procedures, including Authentication Request, Authentication Response, Security Mode Command, and Security Mode Complete.&lt;br /&gt;
&lt;br /&gt;
Once NAS security is established, the UE capabilities are exchanged using the UECapabilityInformation message. The AMF then sends the InitialContextSetupRequest, followed by the UE's InitialContextSetupResponse. Finally, a PDU Session Resource Setup Request and corresponding PDU Session Resource Setup Response are exchanged, completing the end-to-end attach and session setup.&lt;br /&gt;
&lt;br /&gt;
This packet trace confirms successful synchronization, NAS registration, and PDU session establishment for end-to-end IP connectivity.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_Packet_Captures.png|center|900px|Wireshark capture showing the NGAP and NAS signaling during UE attach and registration. Key steps: NG Setup, Initial UE Message, Authentication, Security Mode, Capability Exchange, Context Setup, and PDU Session Setup]]&lt;br /&gt;
&lt;br /&gt;
===End-to-End Connectivity Verification via Ping===&lt;br /&gt;
&lt;br /&gt;
To verify that the PDU session was successfully established and that end-to-end IP connectivity exists between the UE and the Data Network (DN), a simple ICMP ping test was performed. The external data network (DN) container within the core system was used to ping the IP address allocated to the UE by the AMF/SMF.&lt;br /&gt;
&lt;br /&gt;
From the CN external DN container, ping the UE's IP address.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo docker exec -it oai-ext-dn ping 10.0.0.5&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following response indicates successful packet transmission and reception:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    64 bytes from 10.0.0.5: icmp_seq=1 ttl=63 time=35.0 ms&lt;br /&gt;
    64 bytes from 10.0.0.5: icmp_seq=2 ttl=63 time=34.4 ms&lt;br /&gt;
    64 bytes from 10.0.0.5: icmp_seq=3 ttl=63 time=33.1 ms&lt;br /&gt;
    ...&lt;br /&gt;
    --- 10.0.0.5 ping statistics ---&lt;br /&gt;
    7 packets transmitted, 7 received, 0% packet loss&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This ping test confirms the following.&lt;br /&gt;
* The UE successfully registered and established a PDU session.&lt;br /&gt;
* The Core Network (SMF and UPF) correctly forwarded traffic to the UE.&lt;br /&gt;
* Routing and tunnel interfaces (e.g., oaitun_ue1) are functioning as expected.&lt;br /&gt;
&lt;br /&gt;
===iPerf Downlink (DL) Testing===&lt;br /&gt;
&lt;br /&gt;
To verify the downlink performance between the 5G Core Network (CN) and the UE (OAI UE using USRP), the iperf tool is used. The following setup is followed.&lt;br /&gt;
&lt;br /&gt;
* The iPerf server was started on the UE.&lt;br /&gt;
* The iPerf client was launched on the CN or gNB machine depending on the deployment scenario.&lt;br /&gt;
&lt;br /&gt;
====Step 1: Start iPerf Server on UE====&lt;br /&gt;
&lt;br /&gt;
The UE (with IP address 10.0.0.5) listens for incoming UDP packets using the following command:&lt;br /&gt;
&lt;br /&gt;
    sudo iperf -s -i 1 -u -B 10.0.0.5&lt;br /&gt;
&lt;br /&gt;
This binds the server to the tunnel interface of the UE.&lt;br /&gt;
&lt;br /&gt;
====Step 2: Start iPerf Client on CN/gNB====&lt;br /&gt;
&lt;br /&gt;
The CN or gNB machine runs the following command to generate UDP traffic toward the UE:&lt;br /&gt;
&lt;br /&gt;
    sudo docker exec -it oai-ext-dn iperf -c 10.0.0.5 -u -b 10M --bind 192.168.70.135&lt;br /&gt;
&lt;br /&gt;
* -c 10.0.0.5: Destination IP address of the UE.&lt;br /&gt;
* -u: Specifies UDP mode.&lt;br /&gt;
* -b 10M: Bandwidth of 10 Mbps.&lt;br /&gt;
* --bind 192.168.70.135: Bind the client to the CN IP.&lt;br /&gt;
&lt;br /&gt;
====Result Output====&lt;br /&gt;
&lt;br /&gt;
Example client-side output:&lt;br /&gt;
&lt;br /&gt;
    Client connecting to 10.0.0.5, UDP port 5001&lt;br /&gt;
    Sending 1470 byte datagrams&lt;br /&gt;
    [  1] 0.0000-10.0018 sec  12.5 MBytes  10.5 Mbits/sec&lt;br /&gt;
    [  1] Server Report:&lt;br /&gt;
    [  1] 0.0000-10.0005 sec  12.5 MBytes  10.5 Mbits/sec   0.726 ms 0/8920 (0%)&lt;br /&gt;
&lt;br /&gt;
Example server-side output (UE):&lt;br /&gt;
&lt;br /&gt;
    [  1] 0.0000-1.0000 sec  1.25 MBytes  10.5 Mbits/sec   0.703 ms 0/893 (0%)&lt;br /&gt;
    [  1] 1.0000-2.0000 sec  1.25 MBytes  10.5 Mbits/sec   0.819 ms 0/892 (0%)&lt;br /&gt;
    ...&lt;br /&gt;
    [  1] 9.0000-10.0000 sec  1.25 MBytes  10.5 Mbits/sec   0.729 ms 0/893 (0%)&lt;br /&gt;
    [  1] 0.0000-10.0005 sec  12.5 MBytes  10.5 Mbits/sec   0.727 ms 0/8920 (0%)&lt;br /&gt;
&lt;br /&gt;
These results confirm the following points.&lt;br /&gt;
&lt;br /&gt;
* The downlink data rate is consistent at 10.5 Mbps.&lt;br /&gt;
* No packet loss is observed.&lt;br /&gt;
* Jitter remains under 1 ms, indicating a stable connection.&lt;br /&gt;
&lt;br /&gt;
===iPerf Uplink (UL) Testing===&lt;br /&gt;
&lt;br /&gt;
For the uplink test, the iperf client is executed on the UE machine (OAI UE with USRP), and the server is run on the Core Network (CN) side. This allows us to measure the UE's ability to send data to the network.&lt;br /&gt;
&lt;br /&gt;
====Step 1: Start iPerf Server on CN====&lt;br /&gt;
&lt;br /&gt;
Run the following command on the CN machine (inside the &amp;quot;oai-ext-dn&amp;quot; container). This will bind the server to the CN's IP address:&lt;br /&gt;
&lt;br /&gt;
    sudo docker exec -it oai-ext-dn iperf -s -i 1 -u -B 192.168.70.135&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* -s: Start as server.&lt;br /&gt;
* -i 1: Interval between periodic bandwidth reports.&lt;br /&gt;
* -u: Use UDP protocol.&lt;br /&gt;
* -B 192.168.70.135: Bind to CN interface IP.&lt;br /&gt;
&lt;br /&gt;
====Step 2: Start iPerf Client on UE====&lt;br /&gt;
&lt;br /&gt;
On the UE side (with tunnel interface IP address such as 10.0.0.5), run the following command to initiate UDP traffic toward the CN.&lt;br /&gt;
&lt;br /&gt;
    iperf -c 192.168.70.135 -u -b 10M --bind 10.0.0.5&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* -c 192.168.70.135: Destination IP address of the CN.&lt;br /&gt;
* -u: Use UDP protocol.&lt;br /&gt;
* -b 10M: Transmit at 10 Mbps.&lt;br /&gt;
* --bind 10.0.0.5: Source IP from the UE tunnel interface.&lt;br /&gt;
&lt;br /&gt;
====Expected Output====&lt;br /&gt;
&lt;br /&gt;
On the CN side (server), the output should resemble:&lt;br /&gt;
&lt;br /&gt;
    Server listening on UDP port 5001&lt;br /&gt;
    [  1] local 192.168.70.135 port 5001 connected with 10.0.0.5 port 37649&lt;br /&gt;
    [ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams&lt;br /&gt;
    [  1] 0.0000-1.0000 sec  1.25 MBytes  10.5 Mbits/sec   0.703 ms 0/893 (0%)&lt;br /&gt;
    ...&lt;br /&gt;
    [  1] 0.0000-10.0000 sec 12.5 MBytes 10.5 Mbits/sec   0.727 ms 0/8920 (0%)&lt;br /&gt;
&lt;br /&gt;
This confirms the following points.&lt;br /&gt;
* Stable uplink throughput from the UE to the CN.&lt;br /&gt;
* Low jitter and no packet loss.&lt;br /&gt;
&lt;br /&gt;
==Installing, Configuring, and Running the COTS UE System==&lt;br /&gt;
&lt;br /&gt;
===Quectel RM520N — 5G NR Sub-6 GHz Modem Module===&lt;br /&gt;
&lt;br /&gt;
The Quectel RM520N is a compact, industrial-grade 5G modem optimized for IoT and eMBB applications.&lt;br /&gt;
&lt;br /&gt;
Its key features are:&lt;br /&gt;
* Supports both 5G Standalone (SA) and Non-Standalone (NSA) modes compliant with 3GPP Release 16.&lt;br /&gt;
* Standard M.2 form factor; migration-friendly with RM50xQ, EM06 (LTE-A Cat 6), EM12 (Cat 12), EM160R-GL (Cat 16).&lt;br /&gt;
* Ultra-compact size: 30mm × 52mm × 2.3mm.&lt;br /&gt;
* Supported data rates:&lt;br /&gt;
** SA: up to 2.4 Gbps DL, 900 Mbps UL&lt;br /&gt;
** NSA: up to 3.4 Gbps DL, 550–600 Mbps UL&lt;br /&gt;
* Multi-mode operation: 5G NR, LTE-A, and 3G/WCDMA.&lt;br /&gt;
* Operating Temperature:&lt;br /&gt;
** Standard: –30°C to +75°C&lt;br /&gt;
** Extended: –40°C to +85°C&lt;br /&gt;
* Global carrier support across mainstream operators.&lt;br /&gt;
&lt;br /&gt;
===Configuring the SIM Card===&lt;br /&gt;
&lt;br /&gt;
When using a 5G wireless modem module or a COTS handset, a SIM card is required. (If a USRP runs the OAI UE softmodem, then a SIM card is not required.)&lt;br /&gt;
&lt;br /&gt;
The SIM used in this reference architecture is from [https://open-cells.com/index.php/sim-cards/ Open-Cells], and is shown in the figure listed below. The ADM code is printed directly on the SIM itself.&lt;br /&gt;
&lt;br /&gt;
[[File:Open_Cell_Sim_Card.jpg|center|600px|Open-Cells programmable SIM card (ADM: 0C028785)]]&lt;br /&gt;
&lt;br /&gt;
Insert the nano SIM into the reader/writer and plug it into the UE computer. Use program_uicc from Open-Cells ([https://open-cells.com/index.php/uiccsim-programing/ link]) to read and program the SIM.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    sudo ./program_uicc --adm 0C028785&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    Existing values in USIM&lt;br /&gt;
    ICCID: 8933006110000000785&lt;br /&gt;
    USIM IMSI: 2089201000001785&lt;br /&gt;
    PLMN selector: 0x02f8297c&lt;br /&gt;
    Operator Control PLMN selector : 0x02f8297c&lt;br /&gt;
    Home PLMN selector : 0x02f8297c&lt;br /&gt;
    USIM MSISDN: 00000785&lt;br /&gt;
    USIM Service Provider Name: OpenCells785&lt;br /&gt;
    &lt;br /&gt;
    Setting new values&lt;br /&gt;
    No Key or not 32 char length key&lt;br /&gt;
    No OPc or not 32 char length key&lt;br /&gt;
    &lt;br /&gt;
    Reading UICC values after uploading new values&lt;br /&gt;
    ICCID: 8933006110000000785&lt;br /&gt;
    USIM IMSI: 2089201000001785&lt;br /&gt;
    PLMN selector: 0x02f8297c&lt;br /&gt;
    Operator Control PLMN selector : 0x02f8297c&lt;br /&gt;
    Home PLMN selector : 0x02f8297c&lt;br /&gt;
    USIM MSISDN: 00000785&lt;br /&gt;
    USIM Service Provider Name: open cells&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The output listed above shows the process of programming a USIM card using the program_uicc tool with an ADM (Administrative) key.&lt;br /&gt;
&lt;br /&gt;
* Existing values in USIM: The tool first reads the current values from the SIM card:&lt;br /&gt;
** ICCID – Integrated Circuit Card Identifier (unique SIM serial number).&lt;br /&gt;
** IMSI – International Mobile Subscriber Identity, used for network authentication.&lt;br /&gt;
** PLMN selector – Public Land Mobile Network identifiers.&lt;br /&gt;
** MSISDN} – Mobile Subscriber Integrated Services Digital Network number (the subscriber's phone number).&lt;br /&gt;
** Service Provider Name} – Operator branding.&lt;br /&gt;
&lt;br /&gt;
* Setting new values: The tool attempted to write new authentication values, but the log indicates missing or incorrectly formatted Key and OPc (Operator Code). These must be 32-character (128-bit) hex values.&lt;br /&gt;
&lt;br /&gt;
* Reading values after update: The tool re-reads the SIM data. Since the keys were not provided correctly, the identifiers (ICCID, IMSI, PLMN, MSISDN) remain unchanged, but the service provider name changed slightly (to Open-Cells).&lt;br /&gt;
&lt;br /&gt;
This confirms that while the SIM parameters were read successfully, the authentication keys (K and OPc) were not updated due to incorrect input format.&lt;br /&gt;
&lt;br /&gt;
====Successful UICC Programming and Authentication====&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
    sudo ./program_uicc --adm 0C028785 --imsi 001010100001101 --key 0C0A34601D4F07677303652C0462535B --opc 63bfa50ee6523365ff14c1f45f88737d --authenticate --noreadafter&lt;br /&gt;
    &lt;br /&gt;
    Existing values in USIM&lt;br /&gt;
    ICCID: 8933006110000000785&lt;br /&gt;
    USIM IMSI: 2089201000001785&lt;br /&gt;
    PLMN selector: 0x02f8297c&lt;br /&gt;
    Operator Control PLMN selector : 0x02f8297c&lt;br /&gt;
    Home PLMN selector : 0x02f8297c&lt;br /&gt;
    USIM MSISDN: 00000785&lt;br /&gt;
    USIM Service Provider Name: open cells&lt;br /&gt;
    &lt;br /&gt;
    Setting new values&lt;br /&gt;
    Succeeded to authentify with SQN: 64&lt;br /&gt;
    Set HSS SQN value as: 96&lt;br /&gt;
    &lt;br /&gt;
    sudo ./program_uicc --adm 0 C028785&lt;br /&gt;
    &lt;br /&gt;
    Existing values in USIM&lt;br /&gt;
    ICCID: 8933006110000000785&lt;br /&gt;
    USIM IMSI: 001010100001101&lt;br /&gt;
    PLMN selector: 0x00f1107c&lt;br /&gt;
    Operator Control PLMN selector : 0x00f1107c&lt;br /&gt;
    Home PLMN selector : 0x00f1107c&lt;br /&gt;
    USIM MSISDN: 00000785&lt;br /&gt;
    USIM Service Provider Name: open cells&lt;br /&gt;
    &lt;br /&gt;
    Setting new values&lt;br /&gt;
    No Key or not 32 char length key&lt;br /&gt;
    No OPc or not 32 char length key&lt;br /&gt;
    &lt;br /&gt;
    Reading UICC values after uploading new values&lt;br /&gt;
    ICCID: 8933006110000000785&lt;br /&gt;
    USIM IMSI: 001010100001101&lt;br /&gt;
    PLMN selector: 0x00f1107c&lt;br /&gt;
    Operator Control PLMN selector : 0x00f1107c&lt;br /&gt;
    Home PLMN selector : 0x00f1107c&lt;br /&gt;
    USIM MSISDN: 00000785&lt;br /&gt;
    USIM Service Provider Name: open cells&lt;br /&gt;
    &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above listing demonstrates the process of reprogramming a programmable SIM card.&lt;br /&gt;
&lt;br /&gt;
* Initial values: The SIM originally contained IMSI 2089201000001785 and PLMN selector 0x02f8297c. The Service Provider Name was shown as &amp;quot;open cells&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Programming new values: The command provides a new IMSI (001010100001101), along with a valid 128-bit authentication Key and OPc. Authentication succeeded, with the sequence number (SQN) updated from &lt;br /&gt;
    64 to 96, confirming that the SIM accepted the new credentials.&lt;br /&gt;
&lt;br /&gt;
* Verification after update: A subsequent read of the SIM shows the new IMSI and updated PLMN selector (0x00f1107c). Since no Key or OPc values were passed in this second command, the tool reported:&lt;br /&gt;
&lt;br /&gt;
    No Key or not 32 char length key&lt;br /&gt;
    No OPc or not 32 char length key&lt;br /&gt;
&lt;br /&gt;
This does not indicate an error.  It only indicates that no new keys were provided for update.&lt;br /&gt;
    &lt;br /&gt;
* Outcome: The SIM is now reprogrammed with a new IMSI and valid authentication parameters, making it suitable for use in 4G/5G testbeds (e.g., Open5GS, srsRAN, or OAI).&lt;br /&gt;
&lt;br /&gt;
Ensure that the values being programmed into the SIM card match the corresponding values entered in the SQL database on the CN machine. The values of primary importance are listed in the table below.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Primary Configuration Parameters for UE, gNB, CN&lt;br /&gt;
! Parameter !! UE !! gNB !! CN&lt;br /&gt;
|-&lt;br /&gt;
| IMSI || 001010100001101 || MCC: 208, MNC: 92 || 001010100001101&lt;br /&gt;
|-&lt;br /&gt;
| MSISDN || 00000101 || — || 00000101&lt;br /&gt;
|-&lt;br /&gt;
| IMEI || 863305040549338 || — || 863305040549338&lt;br /&gt;
|-&lt;br /&gt;
| Key (K) || 0C0A34601D4F07677303652C0462535B || — || 0C0A34601D4F07677303652C0462535B&lt;br /&gt;
|-&lt;br /&gt;
| OPc || 63bfa50ee6523365ff14c1f45f88737d || — || 63bfa50ee6523365ff14c1f45f88737d&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Serial Connection to the Module via Minicom====&lt;br /&gt;
&lt;br /&gt;
Attach all four antennas to the Quectel wireless modem module. Then, mount the Quectel module into the M.2 connector slot on the carrier board. Then, connect the carrier board to the UE computer via a USB 3.0 port.&lt;br /&gt;
&lt;br /&gt;
We will use Minicom to communicate with the Quectel module over a USB serial connection. Run which minicom to verify that Minicom is already installed. If not, then run the command listed below to install it.&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install minicom&lt;br /&gt;
&lt;br /&gt;
Once the Quectel module is plugged in, the Linux operating system should create several USB serial devices which can be used to communicate with the module. The default device should be /dev/ttyUSB0. Run the command listed below to start a Minicom serial console session with the Quectel device.&lt;br /&gt;
&lt;br /&gt;
    sudo minicom /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
Note that in order to exit Minicom, type Ctrl-A, then &amp;quot;X&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Switching a Quectel Module to ROW Commercial MBN====&lt;br /&gt;
&lt;br /&gt;
Step 0: Inspect Current MBN Profiles by running:&lt;br /&gt;
&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;list&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Some example output is listed below.&lt;br /&gt;
&lt;br /&gt;
    [2025-08-19_10:45:07:370]at+qmbncfg=&amp;quot;list&amp;quot;&lt;br /&gt;
    [2025-08-19_10:45:07:410]+QMBNCFG: &amp;quot;List&amp;quot;,0,1,1,&amp;quot;Volte_OpenMkt-Commercial-CMCC&amp;quot;,0x0A012010,202209221&lt;br /&gt;
    [2025-08-19_10:45:07:410]+QMBNCFG: &amp;quot;List&amp;quot;,1,0,0,&amp;quot;ROW_Commercial&amp;quot;,0x0A010809,202401151&lt;br /&gt;
    [2025-08-19_10:45:07:410]+QMBNCFG: &amp;quot;List&amp;quot;,2,0,0,&amp;quot;ROW_Generic_3GPP_PTCRB_GCF&amp;quot;,0x0A01FF09,202203161&lt;br /&gt;
    [2025-08-19_10:45:07:410]+QMBNCFG: &amp;quot;List&amp;quot;,3,0,0,&amp;quot;TEF_Spain_Commercial&amp;quot;,0x0A010C00,202302071&lt;br /&gt;
    [2025-08-19_10:45:07:425]+QMBNCFG: &amp;quot;List&amp;quot;,4,0,0,&amp;quot;FirstNet&amp;quot;,0x0A015300,202206171&lt;br /&gt;
    [2025-08-19_10:45:07:425]+QMBNCFG: &amp;quot;List&amp;quot;,5,0,0,&amp;quot;Rogers_Canada&amp;quot;,0x0A014800,202303141&lt;br /&gt;
    [2025-08-19_10:45:07:425]+QMBNCFG: &amp;quot;List&amp;quot;,6,0,0,&amp;quot;Bell_Canada&amp;quot;,0x0A014700,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:425]+QMBNCFG: &amp;quot;List&amp;quot;,7,0,0,&amp;quot;Telus_Jasper_Canada&amp;quot;,0x0A01F900,202304281&lt;br /&gt;
    [2025-08-19_10:45:07:457]+QMBNCFG: &amp;quot;List&amp;quot;,8,0,0,&amp;quot;Telus_Consumer_Canada&amp;quot;,0x0A01FA00,202304281&lt;br /&gt;
    [2025-08-19_10:45:07:457]+QMBNCFG: &amp;quot;List&amp;quot;,9,0,0,&amp;quot;Commercial-Sprint&amp;quot;,0x0A010204,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:457]+QMBNCFG: &amp;quot;List&amp;quot;,10,0,0,&amp;quot;Commercial-TMO&amp;quot;,0x0A01050F,202402061&lt;br /&gt;
    [2025-08-19_10:45:07:457]+QMBNCFG: &amp;quot;List&amp;quot;,11,0,0,&amp;quot;VoLTE-ATT&amp;quot;,0x0A010335,202206171&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,12,0,0,&amp;quot;CDMAless_Private-Verizon&amp;quot;,0x0A01FD28,202304271&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,13,0,0,&amp;quot;CDMAless-Verizon&amp;quot;,0x0A010126,202304251&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,14,0,0,&amp;quot;Swiss-Comm&amp;quot;,0x0A010411,202304261&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,15,0,0,&amp;quot;Telia_Sweden&amp;quot;,0x0A012400,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,16,0,0,&amp;quot;TIM_Italy_Commercial&amp;quot;,0x0A012B00,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,17,0,0,&amp;quot;France-Commercial-Orange&amp;quot;,0x0A010B21,202401081&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,18,0,0,&amp;quot;Commercial-DT-VOLTE&amp;quot;,0x0A011F1F,202212061&lt;br /&gt;
    [2025-08-19_10:45:07:472]+QMBNCFG: &amp;quot;List&amp;quot;,19,0,0,&amp;quot;Germany-VoLTE-Vodafone&amp;quot;,0x0A010449,202401201&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,20,0,0,&amp;quot;UK-VoLTE-Vodafone&amp;quot;,0x0A010426,202401201&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,21,0,0,&amp;quot;Commercial-EE&amp;quot;,0x0A01220B,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,22,0,0,&amp;quot;Optus_Australia_Commercial&amp;quot;,0x0A014400,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,23,0,0,&amp;quot;Telstra_Australia_Commercial&amp;quot;,0x0A010F00,202311071&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,24,0,0,&amp;quot;Commercial-LGU&amp;quot;,0x0A012608,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,25,0,0,&amp;quot;Commercial-KT&amp;quot;,0x0A01280B,202308031&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,26,0,0,&amp;quot;Commercial-SKT&amp;quot;,0x0A01270A,202111051&lt;br /&gt;
    [2025-08-19_10:45:07:488]+QMBNCFG: &amp;quot;List&amp;quot;,27,0,0,&amp;quot;Commercial-Reliance&amp;quot;,0x0A011B0C,202210211&lt;br /&gt;
    [2025-08-19_10:45:07:504]+QMBNCFG: &amp;quot;List&amp;quot;,28,0,0,&amp;quot;Commercial-SBM&amp;quot;,0x0A011C0B,202401231&lt;br /&gt;
    [2025-08-19_10:45:07:504]+QMBNCFG: &amp;quot;List&amp;quot;,29,0,0,&amp;quot;Commercial-KDDI&amp;quot;,0x0A010709,202401191&lt;br /&gt;
    [2025-08-19_10:45:07:504]+QMBNCFG: &amp;quot;List&amp;quot;,30,0,0,&amp;quot;Commercial-DCM&amp;quot;,0x0A010D0D,202312201&lt;br /&gt;
    [2025-08-19_10:45:07:504]+QMBNCFG: &amp;quot;List&amp;quot;,31,0,0,&amp;quot;VoLTE-CU&amp;quot;,0x0A011561,202310181&lt;br /&gt;
    [2025-08-19_10:45:07:519]+QMBNCFG: &amp;quot;List&amp;quot;,32,0,0,&amp;quot;VoLTE_OPNMKT_CT&amp;quot;,0x0A0113E0,202312141&lt;br /&gt;
    [2025-08-19_10:45:07:519]&lt;br /&gt;
    [2025-08-19_10:45:07:519]OK&lt;br /&gt;
&lt;br /&gt;
Each line has the structure:&lt;br /&gt;
&lt;br /&gt;
    +QMBNCFG: &amp;quot;List&amp;quot;, \#idx, Enabled, Selected, &amp;quot;Name&amp;quot;, ConfigID, Version&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* #idx: profile index in the list (e.g., 0, 1, 2, ...).&lt;br /&gt;
* Enabled: 1 if this MBN is enabled, else 0.&lt;br /&gt;
* Selected: 1 if currently selected/active, else 0.&lt;br /&gt;
* Name: human-readable profile name, e.g., ROW_Commercial.&lt;br /&gt;
* ConfigID: hexadecimal configuration identifier.&lt;br /&gt;
* Version: profile build/version stamp.&lt;br /&gt;
&lt;br /&gt;
In your capture, index 0 (Volte_OpenMkt-Commercial-CMCC) shows Enabled=1, Selected=1, meaning it is active. The desired ROW_Commercial (index 1) shows 0,0 which means present but not active.&lt;br /&gt;
&lt;br /&gt;
Step 1--4: Switch to ROW_Commercial.&lt;br /&gt;
&lt;br /&gt;
Execute the following commands in order:&lt;br /&gt;
&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Deactivate&amp;quot;&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Autosel&amp;quot;,0&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Select&amp;quot;,&amp;quot;ROW_Commercial&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* &amp;quot;Deactivate&amp;quot;: cleanly deactivates the currently active MBN.&lt;br /&gt;
* &amp;quot;Autosel&amp;quot;,0: disables automatic re-selection so your manual choice sticks.&lt;br /&gt;
* &amp;quot;Select&amp;quot;,&amp;quot;ROW_Commercial&amp;quot;: explicitly selects the global commercial profile.&lt;br /&gt;
&lt;br /&gt;
Step 5: Verify Selection.&lt;br /&gt;
&lt;br /&gt;
Re-run the list command:&lt;br /&gt;
&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;list&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We expect to see the ROW_Commercial line with Enabled=1, Selected=1, as follows:&lt;br /&gt;
&lt;br /&gt;
    +QMBNCFG: &amp;quot;List&amp;quot;,1,1,1,&amp;quot;ROW_Commercial&amp;quot;,0x0A010809,202401151   &amp;lt;-- active now&lt;br /&gt;
&lt;br /&gt;
Step 6: Reboot/Power-Cycle the Module.&lt;br /&gt;
&lt;br /&gt;
Either physically re-plug the device or issue a software reboot with the command listed below.&lt;br /&gt;
&lt;br /&gt;
    AT+CFUN=1,1&lt;br /&gt;
&lt;br /&gt;
After the reboot, ROW_Commercial} should remain active.&lt;br /&gt;
&lt;br /&gt;
Troubleshooting Tips:&lt;br /&gt;
* If Autosel is enabled (AT+QMBNCFG=&amp;quot;Autosel&amp;quot;,1), the module may override your manual selection; keep it 0 while switching.&lt;br /&gt;
* If selection fails, repeat &amp;quot;Deactivate&amp;quot; and then &amp;quot;Select&amp;quot; again, followed by a reboot.&lt;br /&gt;
* Ensure SIM/network restrictions do not force a carrier-specific MBN.&lt;br /&gt;
&lt;br /&gt;
One-Line Batch (Optional)&lt;br /&gt;
&lt;br /&gt;
If your terminal supports sending multiple commands with brief delays, you can script:&lt;br /&gt;
&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Deactivate&amp;quot;&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Autosel&amp;quot;,0&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;Select&amp;quot;,&amp;quot;ROW_Commercial&amp;quot;&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;list&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Quectel Module Configuration via AT Commands&lt;br /&gt;
&lt;br /&gt;
We use {Minicom to issue AT Commands to the 5G modem module.&lt;br /&gt;
&lt;br /&gt;
There are informative articles about AT commands available online. The AT commands listed below are essential to control and configure the Quectel module. Note that AT commands are generally not case-sensitive.&lt;br /&gt;
&lt;br /&gt;
Execute the following commands in order:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    AT+GMR&lt;br /&gt;
&lt;br /&gt;
Displays the current firmware version number.&lt;br /&gt;
&lt;br /&gt;
    AT+CIMI&lt;br /&gt;
&lt;br /&gt;
Displays the IMSI of the (U)SIM.&lt;br /&gt;
&lt;br /&gt;
    AT+GSN&lt;br /&gt;
&lt;br /&gt;
Displays the IMEI of the (U)SIM.&lt;br /&gt;
&lt;br /&gt;
    AT+QMBNCFG=&amp;quot;select&amp;quot;,&amp;quot;ROW\_Commercial&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unlocks the Quectel module for commercial use.&lt;br /&gt;
&lt;br /&gt;
    AT+QNWPREFCFG=&amp;quot;nr5g_band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Displays the configured 5G NR frequency bands.&lt;br /&gt;
&lt;br /&gt;
    AT+QNWPREFCFG=&amp;quot;mode_pref&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Displays the current 5G NR mode.&lt;br /&gt;
&lt;br /&gt;
    AT+QNWPREFCFG=&amp;quot;mode\_pref&amp;quot;,nr5g&lt;br /&gt;
&lt;br /&gt;
Sets the preferred mode to 5G NR SA (Standalone).&lt;br /&gt;
&lt;br /&gt;
    AT+QNWPREFCFG=&amp;quot;nr5g\_disable_mode&amp;quot;,0&lt;br /&gt;
&lt;br /&gt;
Enables 5G NR operations.&lt;br /&gt;
&lt;br /&gt;
    AT+CGDCONT=1,&amp;quot;IP&amp;quot;,&amp;quot;oai&amp;quot;,&amp;quot;0.0.0.0&amp;quot;,0,0&lt;br /&gt;
&lt;br /&gt;
Specifies the PDP context parameters for a specific context ID.&lt;br /&gt;
    &lt;br /&gt;
    AT+CFUN=0&lt;br /&gt;
&lt;br /&gt;
Sets the module to minimum functionality.&lt;br /&gt;
&lt;br /&gt;
    AT+CFUN=1&lt;br /&gt;
&lt;br /&gt;
Restores the module to full functionality.&lt;br /&gt;
&lt;br /&gt;
====Verifying the Operation with AT Commands====&lt;br /&gt;
&lt;br /&gt;
After configuring the Quectel 5G module, we verify its operational status using Minicom by executing a set of AT commands and analyzing their outputs.&lt;br /&gt;
&lt;br /&gt;
    AT+COPS?&lt;br /&gt;
&lt;br /&gt;
This command checks the current network operator and registration status.&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
&lt;br /&gt;
    +COPS: 0,0,&amp;quot;208 92 open cells&amp;quot;,11&lt;br /&gt;
&lt;br /&gt;
Field Descriptions:&lt;br /&gt;
* Field 1 (0): Operator availability. 0 indicates unknown.&lt;br /&gt;
* Field 2 (0): Operator selection mode. 0 indicates automatic selection.&lt;br /&gt;
* Field 3 (&amp;quot;208 92 open cells&amp;quot;): Operator name (MCC 208, MNC 92) indicating Open-Cells as the pre-configured operator.&lt;br /&gt;
* Field 4 (11): Access technology. 11 represents 5G NR connected to a 5G Core Network (5GC).&lt;br /&gt;
&lt;br /&gt;
Next run the following command.&lt;br /&gt;
&lt;br /&gt;
    AT+C5GREG?&lt;br /&gt;
&lt;br /&gt;
This command displays the 5G registration status.&lt;br /&gt;
&lt;br /&gt;
Expected Output:&lt;br /&gt;
    +C5GREG: 2,1,&amp;quot;1&amp;quot;,&amp;quot;0&amp;quot;,11,16,&amp;quot;01.00007B;00.000000:01.00000C;00.000000&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Field Descriptions:&lt;br /&gt;
* Field 1 (2): Mode of reporting. 2 indicates unsolicited mode (updates are pushed automatically).&lt;br /&gt;
* Field 2 (1): Registration status. 1 indicates registered on the home network.&lt;br /&gt;
* Field 3 (&amp;quot;1&amp;quot;): Tracking Area Code (TAC) in hexadecimal format.&lt;br /&gt;
* Field 4 (&amp;quot;0&amp;quot;): Cell ID in hexadecimal format.&lt;br /&gt;
* Field 5 (11): Indicates 5G NR access mode connected to a 5G CN.&lt;br /&gt;
* Field 6 (16): Length (in octets) of allowed NSSAI information.&lt;br /&gt;
* Field 7: 01.00007B;00.000000:01.00000C;00.000000 denotes allowed NSSAI (Network Slice Selection Assistance Information).&lt;br /&gt;
&lt;br /&gt;
The Connectivity testing of the COTS UE with OAI gNB and CN using ping and iperf can be done in the same way as explained in earlier sections.&lt;br /&gt;
&lt;br /&gt;
To evaluate the system performance, we conducted a DL throughput test using the commercial OOKLA Speedtest application on a COTS UE. The measured performance metrics were as follows:&lt;br /&gt;
&lt;br /&gt;
* Downlink Throughput: 126 Mbps&lt;br /&gt;
* Uplink Throughput: 16 Mbps&lt;br /&gt;
* Latency: Approximately 50 ms&lt;br /&gt;
&lt;br /&gt;
These results indicate successful connectivity and reasonable performance of the 5G system under test.&lt;br /&gt;
&lt;br /&gt;
====Multi-UE 5G Testbed Setup with OAI gNB, OAI UE, and USRP X410====&lt;br /&gt;
&lt;br /&gt;
[[File:multi_ue_connection.png|thumb|800px|center|Multi-UE connection setup using USRP X410, OAI gNB, OAI UE, and COTS UE]]&lt;br /&gt;
&lt;br /&gt;
The figure above illustrates a comprehensive testbed for evaluating 5G NR SA (Standalone) operation with both software-defined and commercial UEs. The key components of the setup are as follows:&lt;br /&gt;
&lt;br /&gt;
* OAI gNB: A monolithic gNB implemented using OAI and running on a high-performance server (Intel Xeon w7-2495X, 24 Cores @ 2.5 GHz) with Ubuntu 22.04 and UHD 4.8. It is connected to a USRP X410 via dual SFP+ interfaces.&lt;br /&gt;
&lt;br /&gt;
* OAI Core Network: The OAI 5G Core (develop branch) runs on the same machine as the OAI gNB, enabling a complete end-to-end standalone deployment.&lt;br /&gt;
&lt;br /&gt;
* USRP X410 (RF Front End): Acts as the shared RF front-end for both the gNB and UEs. It interfaces with both the gNB and the UEs through SFP+ (data) and SMA (RF) connections.&lt;br /&gt;
&lt;br /&gt;
* 6:1 and 2:1 RF Splitters: These allow the RF signal from the gNB (X410) to be distributed to multiple devices. The 6:1 splitter distributes the signal to a COTS UE and to an OAI UE. A 30 dB attenuator is used to prevent RF front-end saturation.&lt;br /&gt;
&lt;br /&gt;
* OAI UE: A monolithic UE running on a separate server with similar compute specifications (Intel Xeon w7-2495X, 24 Cores @ 2.5 GHz, Ubuntu 22.04, UHD 4.8). It connects to the X410 using SFP+ for data and SMA cables for RF.&lt;br /&gt;
&lt;br /&gt;
* COTS UE: A commercial smartphone or module connected via SMA to the RF network. It is monitored using Minicom on a Linux machine for AT command interaction.&lt;br /&gt;
&lt;br /&gt;
This configuration enables concurrent testing of both OAI-based and commercial UE performance in a controlled over-the-cable environment using shared RF and network resources.&lt;br /&gt;
&lt;br /&gt;
====gNB Log Analysis for Dual UE Scenario====&lt;br /&gt;
&lt;br /&gt;
The figure listed below shows the real-time log output from the OAI gNB during a 5G NR standalone test involving two connected UEs. The log output includes MAC and PHY-level statistics relevant to each UE, such as slot synchronization, signal strength, and buffer throughput.&lt;br /&gt;
&lt;br /&gt;
[[File:Double_UE_connection_on_gnb_logs.png|thumb|800px|center|gNB log showing two UEs (RNTI 0x37a3 and 0x5a8c) connected simultaneously]]&lt;br /&gt;
&lt;br /&gt;
The key observations are as follows:&lt;br /&gt;
&lt;br /&gt;
* UE 0x37a3:&lt;br /&gt;
** Average RSRP: -98 dBm, SNR: 46.0 dB&lt;br /&gt;
** BLER (UL/DL): 0.0%, indicating excellent link quality&lt;br /&gt;
** NPRB: 5, Modulation/Coding Scheme (MCS): 7 (Qm = 2)&lt;br /&gt;
&lt;br /&gt;
* UE 0x5a8c:&lt;br /&gt;
** Average RSRP: -82 dBm, SNR: ranging from 21.0 dB to 21.5 dB&lt;br /&gt;
** BLER: ranges between 0.05 to 0.11, indicating moderate link quality&lt;br /&gt;
** NPRB: 104, MCS: 18 (Qm = 6)&lt;br /&gt;
&lt;br /&gt;
* LCID Breakdown:&lt;br /&gt;
** LCID 1: Small control data&lt;br /&gt;
** LCID 3 and 4: Carrying higher traffic load (e.g., 3773 TX / 6550 RX)&lt;br /&gt;
** LCID 5: Primary bearer – over 22 million TX and 31 million RX bytes&lt;br /&gt;
&lt;br /&gt;
This log confirms that both UEs are successfully attached and transmitting data over multiple logical channels. The differences in BLER and NPRB indicate dynamic scheduling by the gNB based on real-time radio conditions.&lt;br /&gt;
&lt;br /&gt;
====Wireshark Trace Analysis: Dual UE Registration and PDU Session Establishment====&lt;br /&gt;
&lt;br /&gt;
The figure listed below presents a Wireshark capture filtered with the NGAP protocol, showcasing the successful registration and session setup of two UEs over a 5G Standalone (SA) network. The trace includes both NGAP and NAS signaling exchanged between the gNB (10.88.136.29) and the 5GC (192.168.70.132).&lt;br /&gt;
&lt;br /&gt;
[[File:double_ue_connection_on_wireshark.png|thumb|800px|center|Wireshark capture showing NGAP procedures for dual UE connection]]&lt;br /&gt;
&lt;br /&gt;
The main stages observed in the trace are as follows:&lt;br /&gt;
&lt;br /&gt;
* NG Setup Procedure:&lt;br /&gt;
** NGSetupRequest from gNB to AMF, initiating the connection.&lt;br /&gt;
** NGSetupResponse from AMF to gNB, confirming the connection.&lt;br /&gt;
&lt;br /&gt;
* UE Registration Procedures:&lt;br /&gt;
** InitialUEMessage, Authentication Request/Response, and Security Mode Command/Complete are exchanged for NAS authentication and security.&lt;br /&gt;
** Two separate UEs go through this process, indicating a multi-UE test scenario.&lt;br /&gt;
&lt;br /&gt;
* UE Capability Exchange:&lt;br /&gt;
** UECapabilityInfoIndication is sent from the gNB to AMF.&lt;br /&gt;
&lt;br /&gt;
* PDU Session Establishment:&lt;br /&gt;
** The AMF initiates PDU Session Resource Setup Request to the gNB.&lt;br /&gt;
** The gNB responds with PDU Session Resource Setup Response}.&lt;br /&gt;
** PDU Session Establishment Accept is observed in JSON/NAS payloads.&lt;br /&gt;
&lt;br /&gt;
* Error Handling:&lt;br /&gt;
** One occurrence of Authentication Failure (Synch failure) is observed and immediately retried.&lt;br /&gt;
&lt;br /&gt;
The trace confirms that both UEs are successfully authenticated and registered with the 5G Core Network, and are able to establish PDU sessions, and are interacting with both control plane (NGAP/NAS) and data plane (JSON PDU content).&lt;br /&gt;
&lt;br /&gt;
==Connecting Google Pixel 9 to OAI gNB==&lt;br /&gt;
&lt;br /&gt;
To validate 5G SA connectivity with OAI, a commercial off-the-shelf (COTS) smartphone — specifically the Google Pixel 9 — is connected to an OAI-powered 5G Standalone (SA) network.&lt;br /&gt;
&lt;br /&gt;
This procedure involves provisioning a test SIM card, configuring the Access Point Name (APN), and verifying successful network registration.&lt;br /&gt;
&lt;br /&gt;
==Step-by-Step Configuration===&lt;br /&gt;
&lt;br /&gt;
# Insert OAI Test SIM  &lt;br /&gt;
Insert a custom test SIM card with the following parameters:&lt;br /&gt;
* MCC (Mobile Country Code): 001  &lt;br /&gt;
* MNC (Mobile Network Code): 01  &lt;br /&gt;
* PLMN: 00101 (test network)&lt;br /&gt;
&lt;br /&gt;
# Configure APN Settings on Google Pixel 9  &lt;br /&gt;
Navigate through:  &lt;br /&gt;
&amp;lt;code&amp;gt;Settings → Network &amp;amp; Internet → Mobile Network → Access Point Names&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then tap &amp;quot;Add APN&amp;quot; and enter:&lt;br /&gt;
* Name: &amp;lt;code&amp;gt;oai&amp;lt;/code&amp;gt;&lt;br /&gt;
* APN: &amp;lt;code&amp;gt;oai&amp;lt;/code&amp;gt;&lt;br /&gt;
* MCC: &amp;lt;code&amp;gt;001&amp;lt;/code&amp;gt;&lt;br /&gt;
* MNC: &amp;lt;code&amp;gt;01&amp;lt;/code&amp;gt;&lt;br /&gt;
* Bearer: Check only NR (5G)&lt;br /&gt;
* Save and select the new APN.&lt;br /&gt;
&lt;br /&gt;
# Power on the OAI gNB  &lt;br /&gt;
Ensure that:&lt;br /&gt;
* The gNB is configured with the same PLMN (001-01)&lt;br /&gt;
* The OAI Core Network (CN) is running and reachable.&lt;br /&gt;
&lt;br /&gt;
# Verify Connection Status  &lt;br /&gt;
After a few seconds, the Pixel 9 should:&lt;br /&gt;
* Display the operator name as &amp;lt;code&amp;gt;00101 - open cells&amp;lt;/code&amp;gt;&lt;br /&gt;
* Show the 5G NR icon on the status bar&lt;br /&gt;
&lt;br /&gt;
The figure listed below shows an example of the Google Pixel 9 connected to OAI gNB.&lt;br /&gt;
&lt;br /&gt;
[[File:mobile_phone_connectivity.png|center|800px|thumb|Connection stages of Google Pixel 9 to OAI gNB — (Left) No service; (Middle) Registered to test PLMN 00101; (Right) 5G NR icon confirms successful attachment.]]&lt;br /&gt;
&lt;br /&gt;
==Technical Support==&lt;br /&gt;
&lt;br /&gt;
The primary methods of technical support are the mailing lists.&lt;br /&gt;
&lt;br /&gt;
===USRP Mailing List===&lt;br /&gt;
&lt;br /&gt;
The focus of the [https://lists.ettus.com/list/usrp-users.lists.ettus.com usrp-users mailing list] is for questions and discussions about the NI/Ettus USRP hardware as well as the UHD and RFNoC software.&lt;br /&gt;
&lt;br /&gt;
The archives for the usrp-users mailing list can be found [https://lists.ettus.com/empathy/list/usrp-users.lists.ettus.com here].&lt;br /&gt;
&lt;br /&gt;
===OAI Mailing List===&lt;br /&gt;
&lt;br /&gt;
The focus of the [https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/MailingList openair5g-user mailing list] is for questions and discussions from users about the [https://gitlab.eurecom.fr/oai/openairinterface5g OpenAirInterface (OAI) software stack] from [https://openairinterface.org/ Eurecom].&lt;br /&gt;
&lt;br /&gt;
Additional information about the OAI mailing lists can be found [https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/MailingList here] and [https://gitlab.eurecom.fr/oai/openairinterface5g/-/wikis/AskQuestions here].&lt;br /&gt;
&lt;br /&gt;
The archives for the openair5g-user mailing list can be found [http://lists.eurecom.fr/sympa/arc/openair5g-user here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Notes]]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=5G/6G_AI-Assisted_Beam_Management_for_mmWave:_From_Beam_Scanning_to_Real-World_Deployment_with_OAI_and_USRP_X410&amp;diff=6948</id>
		<title>5G/6G AI-Assisted Beam Management for mmWave: From Beam Scanning to Real-World Deployment with OAI and USRP X410</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=5G/6G_AI-Assisted_Beam_Management_for_mmWave:_From_Beam_Scanning_to_Real-World_Deployment_with_OAI_and_USRP_X410&amp;diff=6948"/>
				<updated>2026-05-19T18:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: Created page with &amp;quot;== Application Note Number and Authors ==  '''AN-763'''  == Authors ==  Bharat Agarwal  ==Executive Summary==  This Application Note presents a comprehensive reference design...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Application Note Number and Authors ==&lt;br /&gt;
&lt;br /&gt;
'''AN-763'''&lt;br /&gt;
&lt;br /&gt;
== Authors ==&lt;br /&gt;
&lt;br /&gt;
Bharat Agarwal&lt;br /&gt;
&lt;br /&gt;
==Executive Summary==&lt;br /&gt;
&lt;br /&gt;
This Application Note presents a comprehensive reference design for ...&lt;br /&gt;
&lt;br /&gt;
==Overview of the USRP Hardware==&lt;br /&gt;
&lt;br /&gt;
The Universal Software Radio Peripheral (USRP) devices from NI (an Emerson company) are software-defined radios which are widely used for wireless research, prototyping, and education.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6635</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=6635"/>
				<updated>2026-03-06T04:00:20Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 10: Install VOLK 3.2.0 */&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.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3. Note that you may instead install Ubuntu itself or any other Ubuntu flavor such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  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.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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&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.2.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.2.0&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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6509</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=6509"/>
				<updated>2026-01-25T17:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Test the Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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&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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6508</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=6508"/>
				<updated>2026-01-25T17:45:56Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Test the Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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&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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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 (this was run with 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;
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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6507</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=6507"/>
				<updated>2026-01-25T17:37:50Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 7: Download the slides and materials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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&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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6506</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=6506"/>
				<updated>2026-01-25T17:37:04Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 4: Install Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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&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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6505</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=6505"/>
				<updated>2026-01-25T17:36:47Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 4: Install Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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 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&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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6504</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=6504"/>
				<updated>2026-01-25T17:31:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Test the Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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 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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6503</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=6503"/>
				<updated>2026-01-25T17:30:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Test the Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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 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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
&amp;lt;code&amp;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;
&amp;lt;/code&amp;gt;&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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6502</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=6502"/>
				<updated>2026-01-25T02:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 4: Install Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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 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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6501</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=6501"/>
				<updated>2026-01-24T22:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 1: Install Xubuntu 24.04.3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu. The USB drive capacity should 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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6500</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=6500"/>
				<updated>2026-01-24T22:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 1: Install Xubuntu 24.04.3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6499</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=6499"/>
				<updated>2026-01-24T22:31:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 2: Installation Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6498</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=6498"/>
				<updated>2026-01-24T22:27:43Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6497</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=6497"/>
				<updated>2026-01-24T22:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about six or seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6496</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=6496"/>
				<updated>2026-01-24T22:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 4: Install Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6495</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=6495"/>
				<updated>2026-01-24T22:17:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 13: Apply the USB udev rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6494</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=6494"/>
				<updated>2026-01-24T22:14:44Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 17: Install gr-paint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6493</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=6493"/>
				<updated>2026-01-24T22:14:16Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 16: Install GQRX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6492</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=6492"/>
				<updated>2026-01-24T22:13:53Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 15: Install gr-rds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6491</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=6491"/>
				<updated>2026-01-24T22:13:40Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 14: Install gr-osmosdr */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6490</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=6490"/>
				<updated>2026-01-24T22:13:14Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 13: Apply the USB udev rules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=6489</id>
		<title>Workshop Tutorial</title>
		<link rel="alternate" type="text/html" href="https://kb.ettus.com/index.php?title=Workshop_Tutorial&amp;diff=6489"/>
				<updated>2026-01-24T22:09:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Workshops &amp;amp;amp; Tutorials ==&lt;br /&gt;
&lt;br /&gt;
There are three training workshops/tutorials offered by Ettus Research, which are listed below.&lt;br /&gt;
&lt;br /&gt;
These training workshops/tutorials can be run as a lecture/seminar, or as a hands-on workshop.  They can be run at the NI office in Austin, Texas, USA, or at the location of the customer.  These workshops/tutorials are run ad hoc and upon request, and there is no regular schedule for when they are run.&lt;br /&gt;
&lt;br /&gt;
For questions about these workshops/tutorials, please contact us at [mailto:support@ettus.com support@ettus.com].&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source Toolchain: UHD and GNU Radio''': This tutorial provides a thorough and practical introduction to the USRP hardware and the open-source software toolchain (UHD and GNU Radio). After exploring the hardware and the architecture of the USRP family of software-defined radios, we will discuss topics such as getting started using a new USRP device, using the UHD device driver, programming the USRP from C++ using the UHD API, using GNU Radio with the USRP, creating and running flowgraphs from both GRC and Python, managing FPGA images, viewing packetized I/Q data with Wireshark, and debugging and triaging common technical problems, such as with network configuration, flow-control errors, and RF issues. Several demos and examples will be shown, such as performing real-time spectrum monitoring, transmitting pre-recorded waveforms, implementing an FM transmitter and receiver, and running an OFDM transceiver. Several additional complementary open-source tools will also be discussed, such as GQRX, Fosphor, Inspectrum, and several GNU Radio Out-of-Tree (OOT) modules.  We will explore several demonstrations of wireless systems running on the USRP, such as a record-and-playback system, a spectrum-painting tool, and an LTE network scanner tool. We will include several additional focused topics, such as high-rate 10 Gigabit Ethernet networking and I/Q data streaming, host system performance tuning, USRP device recovery, and various operational best-practices. Attendees should gain a solid foundation and practical understanding of how to configure, program, and operate the USRP to implement a wide range of wireless systems and applications.&lt;br /&gt;
** [https://kb.ettus.com/images/a/ab/Workshop_GnuRadio_Materials_20171212.tar.gz Workshop_GnuRadio_Materials_20171212.tar.gz (TAR-GZ) (13 MB) (2017-12-12)]&lt;br /&gt;
** [https://kb.ettus.com/images/4/47/Workshop_GnuRadio_Slides_20190507.pdf Workshop_GnuRadio_Slides_20190507.pdf (PDF) (45 MB) (2019-05-07)]&lt;br /&gt;
** [https://kb.ettus.com/images/f/fd/Workshop_GnuRadio_Slides_20250802.pdf Workshop_GnuRadio_Slides_20250802.pdf (PDF) (25 MB) (2025-08-02)]&lt;br /&gt;
** [[Instructions for System Setup and Configuration]]&lt;br /&gt;
&lt;br /&gt;
* '''USRP FPGA Processing Using the RFNoC Framework''': This tutorial provides an in-depth introduction to the RFNoC framework, including a discussion on its design and capabilities, several live demonstrations, and a walk-through of implementing a new user-defined RFNoC block and integrating it into both UHD and GNU Radio. The RFNoC (RF Network-on-Chip) framework is the FPGA architecture used in USRP devices. The RFNoC framework enables users to program the USRP FPGA, and facilitates the integration of custom FPGA-based algorithms into the signal processing chain of the USRP radio. Users can create modular, FPGA-accelerated SDR applications by chaining multiple RFNoC Blocks together and integrating them into both C++ and Python programs using the UHD API, and into GNU Radio flowgraphs. Attendees should gain a practical understanding of how to use the RFNoC framework to implement custom FPGA processing on the USRP radio platform.&lt;br /&gt;
** [https://kb.ettus.com/images/5/5b/rfnoc4_workshop_slides_2020_part_1.pdf Workshop_RFNoC_4_GRCon20_Part_1_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/images/e/e9/rfnoc4_workshop_slides_2020_part_2.pdf Workshop_RFNoC_4_GRCon20_Part_2_Slides.pdf (PDF) (2.7 MB) (2020-09-14)]&lt;br /&gt;
** [https://www.youtube.com/watch?v=M9ntwQie9vs Video Presentation (YouTube URL) (2020-09-14)]&lt;br /&gt;
** [https://kb.ettus.com/Getting_Started_with_RFNoC_in_UHD_4.0  Application Note for Getting Started with RFNoC in UHD 4.0]&lt;br /&gt;
** [https://files.ettus.com/app_notes/RFNoC_Specification.pdf RFNoC Specification Document]&lt;br /&gt;
** [https://www.youtube.com/watch?v=g0jmvSkNaAM Introductory Video (YouTube URL)]&lt;br /&gt;
&lt;br /&gt;
* '''USRP Open-Source 5G/NR System Implementation''': This tutorial provides a detailed overview of how to implement a 3GPP-compliant 5G/NR testbed using the USRP radio with the open-source software stacks, srsRAN from Software Radio Systems (SRS), and OpenAirInterface (OAI) from Eurecom, for research, development, and prototyping. We examine both the base station (eNB and gNB) side, as well as the handset (UE) side.  We examine three implementations for the UE: an emulated software UE; a commercial handset; and a stand-alone modem module. We discuss in detail how to install, configure, and operate the hardware and software for the base station side and the handset side, as well as for the core network, in order to create a fully functional network. We discuss various aspects of radio and network planning and implementation, discuss network operation monitoring, and discuss performance and throughput measurements. We show a video of a demonstration of the real-time operation of a 5G network. Attendees should gain a practical understanding of how to use USRP devices to implement 5G/NR wireless networks.&lt;br /&gt;
** [https://kb.ettus.com/OAI_Reference_Architecture_for_5G_and_6G_Research_with_USRP Application Note for 5G OAI USRP Reference Architecture &amp;amp; Testbed]&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6488</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=6488"/>
				<updated>2026-01-24T22:05:07Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 5: Create a folder for GIT repositories= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6487</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=6487"/>
				<updated>2026-01-24T22:03:55Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 4: Install Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 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&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6486</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=6486"/>
				<updated>2026-01-24T21:59:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 11: Install GNU Radio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6485</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=6485"/>
				<updated>2026-01-24T21:58:32Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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==&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&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.  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.16&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.&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;
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;
==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;
If you have any questions or problems, you can contact the author via email at &amp;lt;code&amp;gt; neel.pandeya@ettus.com &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We look forward to seeing you in the workshop/tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6484</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=6484"/>
				<updated>2026-01-24T21:41:37Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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==&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 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.  You can use a graphical text editor such as Gedit or Mousepad.  &lt;br /&gt;
&lt;br /&gt;
First, open the file using either the Gedit or Mousepad text editor.&lt;br /&gt;
&lt;br /&gt;
    mousepad $HOME/.bashrc&lt;br /&gt;
    gedit $HOME/.bashrc&lt;br /&gt;
&lt;br /&gt;
Next, add the two lines listed below to the very end of the file, and save it.&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, exit and close the text editor, and exit and close the terminal window, and open a brand-new terminal window.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6483</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=6483"/>
				<updated>2026-01-24T21:25:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: /* Step 10: Install VOLK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&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==&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;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6482</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=6482"/>
				<updated>2026-01-24T21:24:45Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j2&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 11: Install GNU Radio==&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;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6481</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=6481"/>
				<updated>2026-01-24T21:23:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j2&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;br /&gt;
&lt;br /&gt;
==Step 11: Install GNU Radio==&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;
    git submodule update --init&lt;br /&gt;
    cmake ../&lt;br /&gt;
    make -j4&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6480</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=6480"/>
				<updated>2026-01-24T21:22:00Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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. 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==&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;
    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.2.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j2&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6479</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=6479"/>
				<updated>2026-01-24T21:21:36Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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;
&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. 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==&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;
    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.2.0&lt;br /&gt;
    cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ../&lt;br /&gt;
    make -j2&lt;br /&gt;
    sudo make install&lt;br /&gt;
    sudo ldconfig&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6478</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=6478"/>
				<updated>2026-01-24T18:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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 install openssh-server htop tree lshw meld libfftw3-bin ncurses-bin libncurses6 libncursesw6&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&lt;br /&gt;
&lt;br /&gt;
    sudo apt 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&lt;br /&gt;
&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. 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 9: Install GNU Radio 3.10.12==&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6477</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=6477"/>
				<updated>2026-01-24T18:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Xubuntu 24.04.3.  You may also install Ubuntu itself, or any other Ubuntu flavor, such as Kubuntu, Lubuntu, Cinnamon, MATE, or Linux Mint.  We recommend using Xubuntu because it is very light-weight, and the user-interface is easy-to-use and intuitive, and it runs fast on older or resource-constrained hardware.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/desktop/flavors&lt;br /&gt;
&lt;br /&gt;
Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 24.04.3.&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.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Xubuntu.&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 Ubuntu/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;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6476</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=6476"/>
				<updated>2026-01-24T18:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;br /&gt;
&lt;br /&gt;
==Step 1: Install Ubuntu 24.04.3 or Xubuntu 24.04.3==&lt;br /&gt;
&lt;br /&gt;
Install Ubuntu 24.04.3 or Xubuntu 24.04.3.  Please install on-the-metal, not in a Virtual Machine (VM).  Please install specifically version 22.04.5.  If you already have an existing Windows or Linux installation on your laptop computer, then you can install Ubuntu or Xubuntu alongside your already-existing operating system, in a dual-boot configuration.  The Ubuntu or Xubuntu installer will ask you about this, and it supports installing in a dual-boot configuration.  I recommend using Xubuntu, because it is a light-weight desktop environment, and it will run faster than Ubuntu, especially on older laptop computers, and also the user interface is somewhat easier to use.  You can download the ISO images for Ubuntu and Xubuntu from the links below.  Write the ISO image to a USB 3.0 drive, and boot from it, and install Ubuntu or Xubuntu.&lt;br /&gt;
&lt;br /&gt;
https://ubuntu.com/download/desktop&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;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6475</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=6475"/>
				<updated>2026-01-24T18:19:12Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&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;
This document assumes that you are using a USRP B200/B210 radio, although the USRP X300/X310, N300, N310, N320, N321, X410 may also be used as well.&lt;br /&gt;
&lt;br /&gt;
In some sessions, the radio will be provided to you, but 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 about seven years old, with an Intel i5, i7, or i9 CPU, or AMD equivalent, 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;
Also 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 if you simply want to sit back and watch the instructor's presentation, then you can skip all of this, and just come to the workshop with a cup of coffee.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6474</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=6474"/>
				<updated>2026-01-24T18:10:39Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&gt;
&lt;br /&gt;
==Abstract==&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;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6473</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=6473"/>
				<updated>2026-01-24T18:09:46Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This document provides instructions for attendees to setup and configure their laptop/desktop computer systems for use with the &amp;quot;USRP Open-Source Toolchain: UHD and GNU Radio&amp;quot; Workshop/Tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	<entry>
		<id>https://kb.ettus.com/index.php?title=Instructions_for_System_Setup_and_Configuration&amp;diff=6472</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=6472"/>
				<updated>2026-01-24T18:09:27Z</updated>
		
		<summary type="html">&lt;p&gt;Ettus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Instructions for System Setup and Configuration for Ettus Training Workshops/Tutorials ==&lt;br /&gt;
&lt;br /&gt;
==Author==&lt;br /&gt;
Neel Pandeya&lt;br /&gt;
&lt;br /&gt;
==Abstract==&lt;br /&gt;
&lt;br /&gt;
This document provides instructions for attendees to setup and configure their laptop/desktop computer systems for use with the &amp;quot;USRP Open-Source Toolchain: UHD and GNU Radio&amp;quot; Workshop/Tutorial.&lt;/div&gt;</summary>
		<author><name>Ettus</name></author>	</entry>

	</feed>