GNURadio FHSS Setup Guide
The following install guide details the steps from a fresh Ubuntu 20.04 install to a fully running GNU Radio + USRP B200 frequency hopping spread spectrum setup needed to capture smart meter data. The guide will be updated/broken out as additional SDR's like the HackRF and RTL-SDR are added.
- 1 Install Ubuntu 20.04
- 2 Install dependencies
- 3 Install GNU Radio 3.8
- 4 Install UHD for USRP B200 Support
- 5 Install Frequency Hopping Utilities
- 6 Setup PYTHONPATH
- 7 Start GNU Radio and open FHSS Flowgraph
Install Ubuntu 20.04
There is nothing special about Ubuntu, it was chosen because it works well across different computers and has a familiar interface. Likely these instructions can be used as a rough guide for what is needed with other distro's.
For now, this step is to install a base version of Ubuntu 20.04, mine was a minimal install. After finishing your install ensure you update everything.
sudo apt update sudo apt upgrade
The block at the top is standard from the GNU Radio install guide. The two additional below are vim so you get nice colors in your editor and liborc which is needed for the additional GNU Radio blocks that will be installed.
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 gobject-introspection gir1.2-gtk-3.0
sudo apt install liborc-0.4-dev vim
Install GNU Radio 3.8
This guide and the blocks used here are all dependent on GNU Radio 3.8. As 3.9 has been released for a while more blocks and packages are getting support so this guide may be updated in the future to support 3.9.
sudo add-apt-repository ppa:gnuradio/gnuradio-releases-3.8 sudo apt update sudo apt install gnuradio
Install UHD for USRP B200 Support
This is specific to the USRP B200 software defined radio, if you are using another SDR this will not be necessary.
Install necessary packages
sudo apt-get install libuhd-dev libuhd3.15.0 uhd-host
Download firmware needed for different USRP devices
If this doesn't work your files may have been installed in /usr/local/lib instead of /usr/lib
Configure USB and test USRP B200
cd /usr/lib/uhd/utils/ sudo cp uhd-usrp.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger uhd_usrp_probe
Install Frequency Hopping Utilities
If you already have GNU Radio and your SDR setup you should start here to install the Sandia Laboratories out of tree (OOT) modules. Four different OOT modules are needed.
Create a folder to organize them
cd mkdir FHSS_Utils cd FHSS_Utils
Install PDU Utilities
git clone https://github.com/sandialabs/gr-pdu_utils.git cd gr-pdu_utils/ git checkout maint-3.8 mkdir build cd build cmake .. make -j8 sudo make install sudo ldconfig cd ..
Install FHSS Utilities
git clone https://github.com/sandialabs/gr-fhss_utils.git cd gr-fhss_utils/ git checkout maint-3.8 mkdir build cd build/ cmake .. make -j8 sudo make install sudo ldconfig cd ..
Install Timing Utilities
git clone https://github.com/sandialabs/gr-timing_utils.git cd gr-timing_utils/ git checkout maint-3.8 mkdir build cd build cmake .. make -j8 sudo make install sudo ldconfig cd ..
Install Sandia Utilities
git clone https://github.com/sandialabs/gr-sandia_utils.git cd gr-sandia_utils/ git checkout maint-3.8 mkdir build cd build/ cmake .. make -j8 sudo make install sudo ldconfig cd ..
gnuradio-companion will give you errors if it can't find your python libraries that were just installed. Also highly suggest starting gnuradio-companion from a terminal as opposed to the icon in Ubuntu. It gives you a nice way to see console output and you have to configure path variables in other places to run gnuradio-companion with the icon.
- Figure out where your dist-packages is located
- Open your .bashrc file and add that path
- close all open terminals and re-open them
Figure out where dist-packages is located
If your system is like mine they will be in:
You can easily confirm by using "ls" to show all the files there, if you see folder names corresponding to the packages installed above you have the correct folder. If not, try searching for other occurrences of "dist-packages" on your system where they may have been placed.
Edit .bashrc and add PYTHONPATH
Add the following to the end of your .bashrc if there is no PYTHONPATH variable.
Close all open terminal windows and then open a new one.
Start GNU Radio and open FHSS Flowgraph
- Add details here on where flowgraph is stored (FHSS Examples Folder)
- Add information on what settings need to be changed to target smart meter data