GNU Radio Setup

The Pybombs way

sudo pip install setuptools
sudo pip install git+git://github.com/gnuradio/pybombs.git

In your workdirectory ~/wrk generate a folder for pybombs to use as a prefix. This will install all sources and binaries into that prefix to make sure it’ll be separated from the system library and bin paths. Resulting in a clean environment:

cd ~/wrk
mkdir grc_wrk
pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
pybombs prefix init -a default ~/wrk/grc_wrk/default/ -R gnuradio-default

Now it’ll pull all required sources and build gnuradio companion. A few miles of output text will be generated on the screen and it’ll take a good amount of time. So time to mess up the lab or work through your email inbox.

After setup completed do:

cd ~/wrk/grc_wrk/default
source ./setup_env.sh

This enables the GNU Radio environment installed with pybombs…

Let’s add some more GR-* OOT Modules and GQRX

pybombs install gr-osmosdr
pybombs install gqrx
pybombs install gr-iio
sudo ldconfig
volk_profile

Volk profile will create a profile to compute FFT optimized for the system it runs on. It’ll take quite a while, but will result in better graphics performance. The graphics performance in a VM is not good anyway. To use high-performance tools like gr-fosphor a native setup is required.

Only run the following 3 lines, if you use an USRP:

sudo cp ~/wrk/grc_wrk/default/lib/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/uhd-usrp.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

Other OOT Modules I’d suggest to take a look at is:

Most of them can be installed using the default pybombs recipes….

Add GRC environment to user profile

In a terminal window run:

mkdir ~/bin
echo 'source ~/wrk/grc_wrk/default/setup_env.sh' >> ~/.profile
echo 'source ~/wrk/grc_wrk/default/setup_env.sh' >> ~/.bashrc
echo 'export PATH=~/wrk/bin:$PATH' >> ~/.profile
echo 'export PATH=~/wrk/bin:$PATH' >> ~/.bashrc

Reboot, or login/logout!

Installing OOT Modules from source

Since we’ve installed GNU Radio in it’s own prefix directory custom OOT modules e.g. GR-LORA must be built towards that directory.

cd ~/wrk

git clone git://github.com/BastilleResearch/gr-lora.git
cd gr-lora
mkdir build && cd build
cmake ../
make && make install
sudo ldconfig

The cmake switch -DCMAKE_INSTALL_PREFIX=~/wrk/grc_wrk/default will ensure to target the right prefix. Keep this in mind for your further installations of OOT modules.

Run GRC

type command: gnuradio-companion

GNU Radio Companion (ready for UHD, RTL-SDR, ADALM Pluto, RedPitaya, Airspy)

Note: We’ve installed all GNU Radio stuff in the prefix path. Do not try to mix stuff with packages installed from the distribution’s Package manager… Do not simply install via ``sudo apt install gnuradio`` …etc… …since this will mix up things. Be careful when installing third party PPAs to not mess up your setup.

Run GQRX

You can now run the following tools from a terminal!

gqrx (UHD, RTL-SDR, RedPitaya, Airspy)

command: gqrx

Use RTL-SDR with GQRX:

Start GQRX by typing:

“gqrx” in a terminal

Select your stick and set an appropriate input sample rate.

Try to find a good gain value for the signal of interest by finding the best distance between the noise floor and the signal peek

Experiment a bit with the FFT settings to get the best out the visualization

Building experimental stuff outside the prefix directory

When compiling libs from source, like special forks of GR-OSMOSDR etc… remember to adjust the target paths like shown with gr-lora above! If you don’t want to set your well working GNU Radio prefix directory at the risk of getting messed up, you can compile and install experimental stuff towards a total different target location.

Let’s say you got a brand new SDRPlay and need the non-standard gr-osmosdr source, from a 3rd party source repo to go for a test drive.

For SDRplay, first install the proprietary driver system wide. Download the API/HW Driver.

When Downloaded run:

chmod +x ~/Downloads/SDRplay_RSP_API-Linux-2.13.1.run
sudo ~/Downloads/SDRplay_RSP_API-Linux-2.13.1.run
sudo ldconfig

Now build checkout the special sdrplay2 branch of the gr-osmosdr fork from sdrplay. We want gr-osmosdr build results installed within our home directory in a separate folder, /home/sdr/libs/gr-osmosdr-sdrplay

cd ~/wrk
git clone https://github.com/sdrplay/gr-osmosdr
cd gr-osmosdr && git checkout sdrplay2 && mkdir build && cd build
mkdir -p ~/wrk/libs/gr-osmosdr-sdrplay
cmake -DCMAKE_INSTALL_PREFIX=~/wrk/libs/gr-osmosdr-sdrplay -DENABLE_NONFREE=yes -DENABLE_BLADERF=OFF ..
make && make install

To make GNU Radio, GQRX etc make sure to pick up the shared libraries from your experimental directory, set the LD_LIBRARY_PATH & PYTHONPATH to the target directory.

LD_LIBRARY_PATH=~/wrk/libs/gr-osmosdr-sdrplay/lib:$LD_LIBRARY_PATH
PYTHONPATH=~/wrk/libs/gr-osmosdr-sdrplay/lib/python-2.7/dist-packages:$PYTHONPATH

Within that shell you can now start gnuradio-companion or gqrx and find the SDRplay as OSMOCOM-Source.

-> When sure, you want to target your prefix directory, the cmake switch would be -DCMAKE_INSTALL_PREFIX=~/wrk/grc_wrk/default

If using an original RSP1, a few lines need to be added to /etc/modprobe.d/blacklist.conf by

sudo nano /etc/modprobe.d/blacklist.conf

Enter at the end of the file:

blacklist sdr_msi3101
blacklist msi001
blacklist msi2500