[Starter guide] GQRX, gnuradio3.7, soapy, gr-osmo... full working Ubuntu 18.04

Hello everybody,

We are a lot of people receiving their Limesdr (or Limesdr mini) and can’t figure out how to make it working correctly ! So days after days and try after try I finally found a solution. Today I’ll share a working stack (GNURADIO 3.7, gr-osmo, soapy, GQRX, Limesuite, …) installation procedure (starter guide for software) which work good on (a fresh) Ubuntu 18.04 LTS.

We’re going to compile everything needed so it’s going to take some times ! You will see, I always choose a tag or a branch from git clone, that way we can keep proper and working image of the installation stack. And if any breakchange happen in any repo, we’ll not be impacted. What we want is a working stack / toolbox !
An other thing is that you’re going to install everything to a local folder, so your Ubuntu install will still be untouched and if something goes bad, you just have to delete folder and try back again !

I encourage you to read this great post and this docker Limesdr toolbox. Thanks to the authors and their publication, their helped me a lot to found this working stack.

It’s not an automatic process, I could write an Ansible script or something similar but since even from a raw Ubuntu 18.04 you can have different configuration (and so problems) because of hardware generally, I preferred a manual installation guide. Thankfuly everything is going to work at the end of the installation process !

I’ll keep this guide updated if any breaking changes happen :). You can take a look at the end of the post, I added some recommendations from other users which installed successfully Limesdr tools !

Ready ?

Please, do not rush command, execute them one by one and check that there are not error on output!

INSTALLATION GUIDE

Preparation

Install apt dependencies

Just log you as root
apt-get update 
apt-get -y upgrade 
apt-get -y dist-upgrade
apt-get -y autoremove
apt-get -y install git 
# soapy sdr
apt-get -y install cmake g++ libpython-dev python-numpy swig    
# lime suite
# install core library and build dependencies
apt-get -y install git g++ cmake libsqlite3-dev
# install hardware support dependencies
apt-get -y install libi2c-dev libusb-1.0-0-dev 
# install graphics dependencies
apt-get -y install libwxgtk3.0-dev freeglut3-dev 
# volk
apt-get -y install python-mako python-six libboost-all-dev 
# uhd
apt-get -y install libboost-all-dev libusb-1.0-0-dev python3-mako python3-numpy python3-requests python3-setuptools doxygen python-docutils cmake build-essential
# gnureadio 
apt-get -y install liblog4cpp5-dev liblog4cpp5v5 libgmp3-dev python3-click python3-click-plugins g++ libboost-all-dev libgmp-dev swig python3-numpy python3-mako python3-sphinx python3-lxml doxygen libfftw3-dev libcomedi-dev libsdl1.2-dev libgsl-dev libqwt-qt5-dev libqt5opengl5-dev python3-pyqt5 liblog4cpp5-dev libzmq3-dev python3-yaml
# for GNU Radio Companion + WX & GTK GUI
apt-get -y install python-numpy python-cheetah python-lxml python-gtk2 python-wxgtk3.0 python-numpy python-qt4 python-qwt5-qt4 libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev libxi-dev 
# gr-osmosdr
apt-get -y install python-cheetah 
# gqrx
apt-get -y install -y qtbase5-dev libqt5svg5-dev 
# gr-foo
apt-get install -y libcppunit-dev
# for limeutil --update, gnuradio
apt-get -y install wget xterm
# pulseaudio
apt-get -y install libpulse-dev pulseaudio
# for sound sink (with alsa):
apt-get -y install alsa-base libasound2 libasound2-dev

You can logout root, to log into your normal ubuntu user, and then :

Add to you ~/.bashrc file (with nano/vim/gedit/..)

export LIME_INSTALL=~/projects/sdr_install/
export LIME_SRC=~/projects/sdr_src/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIME_INSTALL/lib
export PATH=$PATH:$LIME_INSTALL/bin #with that we dont need to hardwrite bins path :)

Note that you can change the LIME_INSTALL and LIME_SRC path where you want !
Next you need source ~/.bashrc or open a new sheel.

Create installation folders

mkdir -p $LIME_INSTALL
mkdir -p $LIME_SRC

Stack compilation and installation to $LIME_INSTALL

Note here I do always make -j4. So it’s going to use 4 compilation process (thread) at the same time. You can adapt it for your CPU.

Go to source folder

cd $LIME_SRC

Soapy

git clone --branch soapy-sdr-0.7.2 https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL ..
make -j4
make install

Go to source folder

cd $LIME_SRC

Limesuite

Here I choose a branch too, but we may want to get the latest (in the future) to have latest firmware for our limesdr.

git clone --branch v20.01.0 https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL ..
make -j4 
make install

I have nvidia driver. If you too, you may get an error within cmake/make (about missing -lGL). You can check at this stackoverflow or this askubuntu post to get more information. After the link problem is resolved, restart from cmaking :slight_smile:

Go to source folder

cd $LIME_SRC

Volk

Volk is used to optimize gnu-radio processing with your CPU configuration.

git clone --branch v2.2.1 https://github.com/gnuradio/volk.git
cd volk
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL  ..
make -j4
make install
volk_profile # run the profiler for the optimization

Go to source folder

cd $LIME_SRC

PothosCore

git clone --recursive --branch pothos-0.6.1 https://github.com/pothosware/PothosCore.git
cd PothosCore
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL  ..
make -j4
make install

Like with LimeSuite I did have some problem here. That message appeared within Cmaking : The imported target “Qt5::Gui” references the file “/usr/lib/x86_64-linux-gnu/libGL.so” .
Like previously, a link was missed, so sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1.7.0 /usr/lib/x86_64-linux-gnu/libGL.so did the job for me. Restart cmake/make/make install after.

Go to source folder

cd $LIME_SRC

UHD

git clone --recursive --branch UHD-3.15.LTS https://github.com/EttusResearch/uhd.git
cd uhd/host
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL  ..
make -j4
make install

Go to source folder

cd $LIME_SRC

GNU-RADIO the famous !

v3.7 because gr-osmosdr is old now, and don’t support latest version (3.8+). We tell gnuradio that volk has been already compiled locally and don’t use his embeded version (ENABLE_INTERNAL_VOLK=OFF).

git clone --branch v3.7.14.0 https://github.com/gnuradio/gnuradio.git
cd gnuradio
mkdir mybuild && cd mybuild
cmake -DENABLE_INTERNAL_VOLK=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL  .. 
make -j4
make install

Go to source folder

cd $LIME_SRC

RTL-SDR

Here I don’t chose a specific branch because tags are very old. But I can tell you that at the commit id d794155ba65796a76cd0a436f9709f4601509320 it worked for me ! So if you need, checkout at this commit :wink:

git clone https://github.com/osmocom/rtl-sdr.git 
cd rtl-sdr
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL  .. 
make -j4
make install

Go to source folder

cd $LIME_SRC

gr-osmosdr (for gnuradio 3.7)

It’s not from github here, you’ll not see cloning progress, don’t worry :slight_smile:

git clone --branch gr3.7 https://git.osmocom.org/gr-osmosdr 
cd gr-osmosdr
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL .. 
make -j4
make install 

Go to source folder

cd $LIME_SRC

Here we go, it's alsmost done ! Install GQRX

git clone --branch v2.12.1 https://github.com/csete/gqrx.git
cd gqrx
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL .. 
make -j4
make install

Go to source folder

cd $LIME_SRC

gr-foo

git clone https://github.com/bastibl/gr-foo.git -b maint-3.7
cd gr-foo
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL .. 
make -j4
make install

Go to source folder

cd $LIME_SRC

gr-ieee802-11

git clone https://github.com/bastibl/gr-ieee802-11 -b maint-3.7
cd gr-ieee802-11
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL .. 
make -j4
make install
And finally

Go to source folder

cd $LIME_SRC

soapy-uhd

git clone --branch soapy-uhd-0.3.6 https://github.com/pothosware/SoapyUHD.git
cd SoapyUHD
mkdir mybuild && cd mybuild
cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL .. 
make -j4
make install

Finalizing installation

You’re arrived here, it sounds good for you ! We are almost done and ready to go. You just need to install UDEV rules to start program without sudo/root access.

cd $LIME_SRC/LimeSuite/udev-rules/
sudo ./install.sh

Here we go !! You can now start GQRX (just do gqrx in a shell) with Other input device with “driver=lime,soapy=0” only. Chose an input rate (2M for example) and start.

Notes

So everything is installed in your $LIME_INSTALL folder, where you can find binaries, libraries, etc etc. Note that we add $LIME_INSTALL/bin to our environment variable PATH, so you can start any installed program directly in the shell like :

gqrx
LimeSuiteGUI
....

I think I will try to backup (fork) all git repos to somewhere, so we’re sure we can keep a working stack forever like that. Something which work in 2015 is better if it’s still working on 2020, and is better if it’s still working in 2050 :smiley: !

I didn’t tested but the installation process could work for other Linux distro. Some (more/less) dependencies could be necessary, if you try don’t hesitate to report here, I’ll update the guide :slight_smile:

I’ll keep that guide updated if any problem is reported and I’ll try to improve it in the time.

Other users recommendations

axwaldo recommendations : You can use out-of-the-box OS attifyos.
Grimmace recommendations : SDRAngel’s authors provide some instruction too, take a look at.

So if you enjoyed (I hope !), I’ll be grateful if you want to tip me for the guide :slight_smile:
MONERO : 49cPEVQEbPfdx1qBPJm6D2RaTfUKR8yejZhwbPqfzjSEdjKFQ8V7R66YWdN4fYXj7LD8Yo23y121E2mnEX55N3GSBx7HzYf
BTC : 1ECt92TNwYo1QDkdyGiV2GPo8aznWELLs
ETH/0X/erc20 : 0x9cc9a11daC54eDEFE533A82dA3194450d70DBB8A

3 Likes

I followed this for SDRAngel in Ubuntu 18.04 and 20.04. I skipped hardware I do not own. So I only did the Lime and the RTL. LimeSoapy seems to address the HF tuning automatically (in GQRX.) I also got the NCO and native driver to work for HF in SDRAngel. I tuned 40 and 80 meters off a 67ish foot wire (not tuned).

This is just the SDRAngel Author’s general install instructions including Lime.

1 Like

This is really cool and useful, thank you for the guide. That being said, for anyone who wants just an easy out of the box setup I reccomend attifyos. It had limesuite and gqrx etc pre installed, I just had to pop in POTHOS.

So not to take away from your post because it is quite helpful and insightful, but if you want something that just works out of the box https://github.com/adi0x90/attifyos has been highly successful for me.

1 Like

This is the purpose of this post too, thank you for your recommendations !
I’ll add recommendations at the end of the main post !

1 Like

Thanks very much for this guide. It works for me :slight_smile:
And this is the first time I has been able to get Gqrx running with my Lime SDR Mini. I have been using Gqrx with FunCube Pro+ and RTL-dongle, but never with LimeSDR Mini.
I am using Gqrx (or Quisk) as they can work together with Wsjt-X using CAT-commands. I am only using Linux.

My installation was done on a small (too small) hardware (Aspire Cloudbook, N3050 CPU, 2GB RAM) and it took really long time also using some part of swap (2GB). Linux disp is a “clean” Mint 19.3 (Ubuntu 18.04) Cinnamon, and the installation took around 5,2 GB of disk space.

Only problem I has, was the PATH to bin was not correct set up. It has two //bin:

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jhj/projects/sdr_install//bin

Now I will make a backup of the source tree so I will be able to compile the whole tree again, if necessary.

Thanks again for your work

73 OZ1OY

I’m really happy to read that ! I agree, the installation can be long and fastidious with small hardware or slow internet connection, but only the results matter, isn’t it ? ahah

I noticed too the PATH problem ("//"), but I can’t edit my post. I asked moderators to enable edition for the future because post seems to be editable only few days here, so I can keep this post updated.

I’ll make a backup of all git sources too and post them here soon too :). Again, I’m happy that the guide is useful !

Bas

I have changed my .bashrc to correct /bin :slight_smile:

Gqrx is working with LimeSDR mini and RTL-dongle, but I also have a FunCubePro+ dongle, which give this error:

resolve_port: hierarchical block ‘fcd_source_c’: output 0 is not connected internally

I think the error comes from gr-osmosdr (for gnuradio 3.7), where FCDPP was not enabled. So I tried this cmake:

cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL -DENABLE_FCDPP=ON …

but it seems like this package don’t contain FunCube Pro+ ?

– Checking for module ‘gnuradio-fcdproplus’
– No package ‘gnuradio-fcdproplus’ found
– gnuradio-fcdproplus not found.
– Could NOT find GNURADIO_FCDPP (missing: GNURADIO_FCDPP_LIBRARIES GNURADIO_FCDPP_INCLUDE_DIRS)

Do you know how I can find this package for gr-osmosdr (3.7) ?

Hello JanHolm,

In gr-osmosdr wiki, there is :

FunCube Dongle through libgnuradio-fcd
FUNcube Dongle Pro+ through gr-fcdproplus

If you follow the github link, it said that gnuradio (>= 3.8 ) is mandatory, so it’s not compatible with our gnuradio 3.7 install.

Thank Bas
But on Github there is a branch gnuradio3.7 for FunCube Pro+:

[https://github.com/dl1ksv/gr-fcdproplus/tree/gnuradio3.7]

Do you think it can compile into the stack?

You’re right. I did not saw it ! You should try to compile that into the stack yes (like other component, with cmake -DCMAKE_INSTALL_PREFIX=$LIME_INSTALL -DCMAKE_PREFIX_PATH=$LIME_INSTALL ..) and with instructions from github gr-fcdpropus repo.

You could need to re-compile some component in a specific order (i.e. gr-fcdpropus then gr-osmo).

Good luck ! :slight_smile:

Thanks Bas

It did work okay as you describe :slight_smile:
Now I have all 3 dongles running on Gqrx

73 OZ1OY, Jan

2 Likes

Hi @andrewback

I need to update the topic with latest news, as I messaged you in private message : could you enable edition to my profile for the first post ?

Thank you,
Bas

Looks like enabling post editing has to be system wide and for all users/posts, but I’ve turned your original post into a “wiki post” and this should have the same effect (you should see an edit icon now).

1 Like