Skip to main content

Ultimate GNU Radio Install

I find myself installing GNU Radio quite often lately, so I felt the need to document all (most) of the steps.

I use Xubuntu because I like the simple, minimalistic feel of it and the speed! Xubuntu 16.04 doesn't seem to work well just yet and so I use 14.04 with all the updates. I also use the PyBOMBS version because it is up to date and it's easy to install new packages.

The guide here is a good starting point after installing updates, etc. I'll repeat the steps here for copy-paste reasons...

sudo apt-get update
sudo apt-get upgrade

Now for the PyBOMBS and GNU Radio...

sudo apt-get install python-pip
sudo pip install -U pip
sudo pip install pybombs

We need to set the PyBOMBS prefix. I have no interest in messing about with prefixes, so things PyBOMBS installs should appear to the system as normal programs.

sudo pybombs prefix init /usr/local -a usrlocal
sudo pybombs config default_prefix /usr/local

sudo pybombs recipes add gr-recipes git+
sudo pybombs recipes add gr-etcetera git+

We can now do the installation, but first you may notice an HTTPS error when we run PyBOMBS installs. This can be fixed as follows:

sudo pip install 'requests[security]'


sudo pybombs install uhd gnuradio

Now is a good time to sit back or go grab a coffee. It will take a few minutes to fetch and compile everything. On my old 2GHz i7 it takes over an hour and on my i7-6770 @ 4GHz it takes at least 15 minutes.

At this stage I like to do a little customization. I set the background to a nice GNU Radio logo and put a CPU and network monitor widget next to the clock. I also like to change the system highlight colour to a matching orange.

sudo ldconfig

You must run ldconfig every time PyBOMBS finishes something or odd things just won't seem to work!

Once the install is done, GNU Radio should be working. There are a few more settings to deal with to avoid warnings, etc.

sudo groupadd usrp
sudo adduser <my-login> usrp

sudo nano /etc/security/limits.conf

Add the following line to the bottom of the file:

@usrp            -       rtprio          99

I use USRP so I need the firmware packages:

sudo "/usr/local/lib/uhd/utils/"

Finally, test by typing gnuradio-companion in a terminal. Close it again. Let's install some more packages!

Note: For some reason it's not working anymore... :(


Popular posts from this blog

Custom VCSEL Bias Driver

I have been working on a laser diode bias driver for a while now, in line with my latest research project. ThorLabs recently released some great looking bias driver "chip" things, the MLD203 series. I felt that I could use these on a custom board to modulate laser diodes and VCSELs using my USRPs.

In the image above (and below) you can see the two red PCBs which I have designed and constructed. The bias driver (left) connects with an SMA connector to a Bias-T from Mini-Circuits to to TO-Can laser diode adaptor PCB which is visible on the right. I have designed everything to be low noise and high frequency compatible.

Unfortunately, I made a mistake with the laser diode footprint and so I had to mount it upside down! I soldered a SMD capacitor at the point where the little red wire connects to the diode to minimise adverse high frequency effects.

Check out the Git repo for this and more:

Simulink 2x1 MIMO Channel Estimation Test

I have been working on a MATLAB Simulink based Alamouti testbed for USRP software defined radio. I am using the Ettus B210.

I have implemented a very simplistic channel estimation scheme whereby I transmit each of the four QPSK constellation points on each antenna consecutively. I then receive using a single antenna, and after all of the frequency and phase synchronisation I divide what was received by the ideal constellation leading to a simple H-matrix.

Check out this video where you can see the pilot constellation change as I move the antenna! Awesome!

Aligning an LG Mode Sorter

The so-called "mode sorter" is a great optical device that allows for easy separation of Laguerre-Gaussian (LG) modes [Berkhout2010]. Combined LG modes, which contain Orbital Angular Momentum (OAM) are input to the one end of the mode sorter and on the other end they are output as "spots" which can be detected with a camera, fibre array, etc. This naturally has many uses in optical communications and physics in general.

I have been working with one of these devices and since the alignment is very tricky, I felt that it would be useful to document it here for my own reference and hopefully that of others!

The first thing to make absolutely sure of is the incoming beams' level. This beam must be perfectly parallel to the axis of the mode sorter, otherwise getting the alignment right after the installation of the mode sorter is close to impossible. I find it useful to mount the mode sorter in a pair of lens mounts. Before installing the sorter, use one of the mount…