GNU Radio Conference


Ettus Research at GNU Radio Conference 2018

Speaking Sessions

Ettus Research and its Research

Martin Braun

In this update from Ettus Research R&D, we will first discuss open problems in the realm of SDR in general, and take a look at items the author considers to be relevant issues for software defined radio in the upcoming years. From there, we will take a look at current projects Ettus Research is undertaking and see how it is contributing to open problems of the SDR domain.


UHD for Pythonistas

Brent Stapleton
Thursday, Sep, 20
13:45 - 14:10

Ettus Research's USRP Hardware Driver (UHD) release 3.13 includes a new way to control and interact with USRPs, a Python API. User applications can now be developed in Python, with no need to recompile, cross languages, or use third party solutions. The Python API has already eased development of various USRP-based tests within Ettus Research. 

In the recent Colosseum channel emulator project, a calibration solution was created which measured the EVM of a known waveform transmitted across pairs of USRPs. Development of this Python API-based framework was facilitated by Python's ability to rapidly iterate on and test designs. 

The Python API has been used within Ettus Research to develop internal continuous integration tests. One example is the Multi-USRP API tester, which uses the Python API to probe all available Multi-USRP function calls. Because the Python API is meant to mirror the C++ Multi-USRP API, it can be used to verify that every facet behaves as expected. Additionally, many continuous integration tests which require only basic DSP have been simplified. For example, the USRP phase alignment testing has moved from GNU Radio flowgraphs to simple scripts which use only the Python API and NumPy. This has greatly reduced the amount of setup and configuration required for these tests. 

Python has also grown to become a popular language for many DSP applications. Tooling for Python development has also made great strides in recent years, allowing UHD users to now leverage technologies like Jupyter Notebooks, Plotly, and others to aid in development, collaboration, and teaching. The Python API allows users to integrate their favorite Python modules with UHD without crossing languages manually, saving samples to file, or using some other form of IPC. For example, many machine learning frameworks have Python interfaces (such as TensorFlow, Scikit-Learn, and Theano), which can now be seamlessly combined with UHD. Furthermore, Ettus Research hopes that users will find new and novel ways to use Python modules in conjunction with UHD's Python API.


Live Demos

We will have live USRP demonstrations in the expo

Hands-on Workshops

Introduction to FPGA Programming on the USRP Using the RFNoC Framework

Ettus Research's RFNoC (RF Network-on-Chip) software framework is designed to decrease the development time for experienced FPGA engineers seeking to integrate IP into the USRP FPGA signal processing chain. RFNoC is the framework for USRP devices that use Xilinx 7-series FPGAs (E310, E312, X300, X310, N300, N310). RFNoC is built around a packetized network infrastructure in the FPGA that handles the transport of control and sample data between the host CPU and the radio. Users target their custom algorithms to the FPGA in the form of RFNoC blocks, which are processing blocks that attach to this network. RFNoC blocks act as independent nodes on the network that can receive and transmit data to any other node (e.g., another RFNoC block, the radio block, or the host CPU). Users can create modular, FPGA-accelerated SDR applications by chaining RFNoC blocks into a flowgraph. RFNoC is supported in UHD and GNU Radio. In this workshop, we will present an interactive hands-on tutorial on RFNoC, including a discussion on its design and capabilities, demonstrations of several existing examples, and provide a walk-through on implementing a user-defined RFNoC block, integrating the RFNoC block into UHD and invoking it from C++, and integrating the RFNoC block into GNU Radio and invoking it from a flowgraph. We will also demonstrate how to send command and receive response packets between RFNoC blocks, as well as discuss test benches in detail.

Each of the three RFNoC hands-on sessions has the same content. Please only register for one session.

Monday, September 17 
13:15 to 17:00

Register Here

Tuesday, September 18
08:45 to 12:15

Register Here

Wednesday, September 19
08:45 to 12:15

Register Here

Additional Details and Logistics:
  • The workshops are technical and hands-on.

  • The workshop itself is free, but registration with the GNU Radio Conference is required.

  • Registration for the GNU Radio Conference and the RFNoC Workshop are separate.
  • Space is limited and will be allocated to those who register.
  • A wait list will fill in no shows on a first-come, first-serve basis. Those who register and are on the wait list are welcome to attend the session in a hands-off capacity. 
  • For questions, please email "".


Attendees should have some previous experience with Linux and using the Linux command line, and basic familiarity with a programming language such as C, C++, or Python, and have a basic understanding of fundamental concepts in DSP and RF. Attendees should also have some basic familiarity with Verilog. Extensive or deep experience with these topics is not necessary.

Attendees do not have to bring any USRP radios or laptop computers.

All necessary hardware and software will be provided in the workshop.

Attendees may optionally bring their own laptops for use in the workshop, but this is not required. The laptop should have a minimum of 8 GB memory, 60 GB of free disk space, one Ethernet port, and one USB 3.0 port. The laptop may run Microsoft Windows (7, 8.1, or 10), Apple macOS (10.12 or 10.13), or Linux (Ubuntu 16.04.4, 18.04, or Fedora 27, 28), and must have both Oracle VirtualBox 5.2 and the VirtualBox Extension Pack installed (we test with Ubuntu 18.04 and VirtualBox 5.2.14).