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 20.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 rootapt-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++ libpython2-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-gtk3-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-wxgtk3.0 python-numpy python-qwt5-qt4 libqt4-opengl-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
Go to source folder
cd $LIME_SRC
Volk
Volk is used to optimize gnu-radio processing with your CPU configuration.
git clone --branch v2.5.0 https://github.com/gnuradio/volk.git
git submodule update --init
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.7.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 !
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.8.4.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
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.8)
It’s not from github here, you’ll not see cloning progress, don’t worry
git clone --branch gr3.8 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.14.6 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.8
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.8
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 even if it’s still working in 2050 !
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
Update 1 november 2021 : Update the guide for Ubuntu 20.04 and gnu-radio 3.8 support
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
MONERO : 49cPEVQEbPfdx1qBPJm6D2RaTfUKR8yejZhwbPqfzjSEdjKFQ8V7R66YWdN4fYXj7LD8Yo23y121E2mnEX55N3GSBx7HzYf
BTC : 1ECt92TNwYo1QDkdyGiV2GPo8aznWELLs
ETH/0X/erc20 : 0x9cc9a11daC54eDEFE533A82dA3194450d70DBB8A