Arun's Tech Blog


USRP/GNURadio Build From Source Guide

This is a build guide for GNURadio / UHD which I received from Ettus Research in a support session. It should allows anyone, even someone new to Linux to get a USRP working, regardless of the hardware revision. I in no way wrote this guide. Absolutely all credit goes to the engineers at Ettus Research who wrote this guide and sent it to me during a support session. However, I in all my highly skilled googling was not able to find this guide or something like it on the USRP/GNURadio wiki site, or really anywhere else. I know there must be some other frustrated souls out there trying to get PyBombs to work or attempting to compile on up-to-date Linux distro’s so I thought I would post this here in the hopes of saving someone going through dependency hell only to find out that it doesn’t work on their version of Linux for god knows what reason. So… here it is:

1. Start with a brand-new virgin Ubuntu 14.04.3 (64-bit) installation. Make sure that the USRP is disconnected.

2. Once Ubuntu is installed, run the Software Updater, and download and install any updates. You can do this from the command line with:
sudo apt-get update

3. Install the necessary dependencies by running:
sudo apt-get install pv
sudo apt-get install git
sudo apt-get install qgit
sudo apt-get install swig
sudo apt-get install cmake
sudo apt-get install cmake-gui
sudo apt-get install tree
sudo apt-get install htop
sudo apt-get install doxygen
sudo apt-get install graphviz
sudo apt-get install libtool
sudo apt-get install libusb-1.0-0
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libudev-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libncurses5-dev
sudo apt-get install libfftw3-bin libfftw3-dev libfftw3-doc
sudo apt-get install libcppunit-1.13-0 libcppunit-dev libcppunit-doc
sudo apt-get install ncurses-bin
sudo apt-get install cpufrequtils
sudo apt-get install build-essential
sudo apt-get install python-opengl
sudo apt-get install python-pyudev
sudo apt-get install python-docutils
sudo apt-get install python-cheetah
sudo apt-get install python-zmq
sudo apt-get install python-mako
sudo apt-get install python-numpy
sudo apt-get install python-numpy-doc
sudo apt-get install python-numpy-dbg
sudo apt-get install python-scipy
sudo apt-get install python-qt4
sudo apt-get install python-qt4-doc
sudo apt-get install qt4-doc
sudo apt-get install python-gtk2 python-gtk2-dbg python-gtk2-dev python-gtk2-doc python-gtk2-tutorial
sudo apt-get install gsl-bin gsl-ref-html gsl-ref-psdoc gsl-doc-info gsl-doc-pdf libgsl0-dbg libgsl0-dev libgsl0ldbl
sudo apt-get install python-wxgtk2.8 python-wxgtk2.8-dbg python-wxtools
sudo apt-get install python-lxml python-lxml-dbg python-lxml-doc
sudo apt-get install python-qt4 python-qt4-dbg python-qt4-dev python-qt4-doc python-qt4-sql python-qt4-sql-dbg
sudo apt-get install libqwt5-qt4 libqwt5-qt4-dev libqwt5-doc python-qwt5-qt4 python-qwt5-doc python-guiqwt
sudo apt-get install liblog4c3 liblog4c-doc liblog4c-dev liblog4cplus-1.0-4 liblog4cplus-dbg liblog4cplus-dev liblog4cpp5 liblog4cpp5-dev liblog4cpp-doc
sudo apt-get install libsdl1.2debian libsdl1.2-dev libsdl1.2-dbg libsdl-image1.2 libsdl-image1.2-dbg libsdl-image1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dbg libsdl-mixer1.2-dev libsdl-net1.2 libsdl-net1.2-dbg libsdl-net1.2-dev libsdl-sound1.2 libsdl-sound1.2-dev
sudo apt-get install libzmq3 libzmq3-dev libzmqpp3 libzmqpp-dev

4. Upgrade the kernel to version 3.16 by running:
sudo apt-get install linux-generic-lts-utopic

5. Reboot the system.

6. Download, build, and install UHD 3.9.2:
cd $HOME
mkdir workarea-uhd
cd workarea-uhd
git clone
cd uhd
git checkout release_003_009_002
cd host
mkdir build
cd build
cmake ../
make test
sudo make install
sudo ldconfig

7. Add the line below to the end of your $HOME/.bashrc file:
export LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

8. Install GNU Radio 3.7.9:
cd $HOME
mkdir workarea-gr
cd workarea-gr
git clone –recursive
cd gnuradio
git checkout v3.7.9
mkdir build
cd build
cmake ../
make test
sudo make install
sudo ldconfig

9. On Linux, udev handles USB plug and unplug events. The following commands install a udev rule so that non-root users may access the device. This step is only necessary for devices that use USB to connect to the host computer, such as the B200, B210, and B200mini.
cd $HOME/workarea-uhd/uhd/host/utils
sudo cp uhd-usrp.rules /etc/udev/rules.d/
sudo udevadm control –reload-rules
sudo udevadm trigger

10. For USRP devices that use Ethernet to connect to the host computer, such as the N200, N210, X300, X310, set the IP address of your system to, with a netmask of The default IP address of the USRP is, with a netmask of You should probably set the IP address using Network Manager. If you set the IP address from the command line, Network Manager will probably overwrite this.

11. Log out of the system, and log back in, to be sure that all changes to your environment have taken effect.

12. You should now be all set. Connect the USRP, and open a terminal window. Run “uhd_find_devices” and “uhd_usrp_probe”, and then launch GRC by running “gnuradio-companion”.

Once again all credit goes to the engineers at Ettus and I’d also like to thank them for their quick, courteous and incredibly helpful support.

© Copyright 2015, All Rights Reserved