Latest (Aug 2017) LimeSDR and GnuRadio

Xubuntu 17.04 64-bit, installed yesterday with a “sudo apt-get update && upgrade” run immediately before running the steps you have listed in the initial post.

If I need to downgrade to 16.XX, no big deal.

Thanks again!

ETA: More verbose log data – “Package soapysdr is not installable.” seems like a clue. To what, I don’t know.

jason@jason-N56VM:~$ pybombs install soapysdr
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
PyBOMBS.install_manager - ERROR - Package has no install method: soapysdr
jason@jason-N56VM:~$ pybombs -vv install soapysdr
PyBOMBS.ConfigManager - DEBUG - Reading config info from file: /etc/pybombs/config.yml
PyBOMBS.ConfigManager - DEBUG - New config items: {}
PyBOMBS.ConfigManager - DEBUG - Reading config info from file: /home/jason/.pybombs/config.yml
PyBOMBS.ConfigManager - DEBUG - New config items: {}
PyBOMBS.ConfigManager - DEBUG - Template directory: /usr/local/lib/python2.7/dist-packages/pybombs/templates
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Inspecting config file: /etc/pybombs/config.yml
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Inspecting config file: /home/jason/.pybombs/config.yml
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Cannot establish a prefix directory. This may cause issues down the line.
PyBOMBS.ConfigManager - DEBUG - Full list of recipe locations: [‘/home/jason/.pybombs/recipes/gr-recipes’, ‘/usr/local/lib/python2.7/dist-packages/pybombs/recipes’]
PyBOMBS.ConfigManager - DEBUG - Named recipe locations: {‘gr-recipes’: ‘git+https://github.com/gnuradio/gr-recipes.git’}
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.RecipeListManager - DEBUG - Adding recipe location: /home/jason/.pybombs/recipes/gr-recipes
PyBOMBS.RecipeListManager - DEBUG - Scanning directory ‘/home/jason/.pybombs/recipes/gr-recipes’ for recipes…
PyBOMBS.RecipeListManager - DEBUG - Found 172 new recipes.
PyBOMBS.RecipeListManager - DEBUG - Loading templates.
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/boostflags.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/prefix.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/setuptools.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/sdk.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/distutils.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/bjam.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/cmake.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/autoconf.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/bootstrapautoconf.lwt
PyBOMBS.RecipeListManager - DEBUG - Adding recipe location: /usr/local/lib/python2.7/dist-packages/pybombs/recipes
PyBOMBS.RecipeListManager - DEBUG - Scanning directory ‘/usr/local/lib/python2.7/dist-packages/pybombs/recipes’ for recipes…
PyBOMBS.RecipeListManager - DEBUG - Found 11 new recipes.
PyBOMBS.RecipeListManager - DEBUG - Loading templates.
PyBOMBS.install - DEBUG - Initializing command class for command install
PyBOMBS.PackageManager - DEBUG - No prefix specified. Skipping source package manager.
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pip
PyBOMBS.PackageManager - DEBUG - pip is supported!
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager apt
PyBOMBS.PackageManager - DEBUG - apt is supported!
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager yumdnf
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager port
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager brew
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager zypper
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pacman
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager portage
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pymod
PyBOMBS.PackageManager - DEBUG - pymod is supported!
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pkgconfig
PyBOMBS.PackageManager - DEBUG - pkgconfig is supported!
PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager cmd
PyBOMBS.PackageManager - DEBUG - cmd is supported!
PyBOMBS.PackageManager - DEBUG - Using binary packagers: [‘pip’, ‘apt’, ‘pymod’, ‘pkgconfig’, ‘cmd’]
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
PyBOMBS.install_manager - OBNOXIOUS - Checking if package `soapysdr’ goes into tree…
PyBOMBS.PackageManager - DEBUG - Checking if package soapysdr is installable…
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Loading recipe file: /home/jason/.pybombs/recipes/gr-recipes/soapysdr.lwr
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Loading template file: /usr/local/lib/python2.7/dist-packages/pybombs/templates/cmake.lwt
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Inheriting from file /usr/local/lib/python2.7/dist-packages/pybombs/templates/cmake.lwt
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Loading template file: /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Inheriting from file /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.Recipe[soapysdr] - OBNOXIOUS - Loaded recipe - soapysdr
PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one’s already cached (soapysdr)
PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one’s already cached (soapysdr)
PyBOMBS.Packager.pip - OBNOXIOUS - exists(soapysdr)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.Packager.apt - OBNOXIOUS - exists(soapysdr)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.Packager.pymod - OBNOXIOUS - exists(soapysdr)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.Packager.pkgconfig - OBNOXIOUS - exists(soapysdr)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.Packager.cmd - OBNOXIOUS - exists(soapysdr)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.PackageManager - DEBUG - Package soapysdr is not installable.
PyBOMBS.install_manager - ERROR - Package has no install method: soapysdr
PyBOMBS - DEBUG - Unresolved install path.

Maybe just install SoapySDR ahead from git? Or is it there already? Mine was already there before PyBOMBS.

Update – got it working!

Downgraded my OS install to Xubuntu 16.04.3 64-bit and then followed your instructions and they worked. Only thing I had to do was go back and run:

sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images
sudo apt-get install soapysdr soapysdr-module-lms7

Something about 17.04 makes this whole thing break, and I’m not remotely smart enough to figure out what it is.

Just a couple of changes to your instructions that I had to do to make it work –

Instead of:

$ sudo apt install pip python-apt

I had to use

$ sudo apt install python-pip python-apt

Instead of:

$ pybombs recipes add gr-recipes git+https:://github.com/gnuradio/gr-recipes.git

I had to use

$ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git

I installed the SoapySDR and LimeSuite packages at the end.

Lastly, for me I had to run

SoapySDRUtil --find

instead of

SoapyUtil --find

@ChuckM – thanks SO much for the help!

2 Likes

Hi @ChuckM

Thanks for the great setup information. I have followed along with this entire thread and many of the comments were very helpful, especially when some variations were pointed out. I think I have everything built correctly, however at the end, when running SoapySDRUtil I get the following:

glennl@glennl-ThinkPad-T470s:~$ SoapySDRUtil --find
######################################################

Soapy SDR – the SDR abstraction library

######################################################

libusb: error [_get_usbfs_fd] libusb couldn’t open USB device /dev/bus/usb/002/009: Permission denied
libusb: error [_get_usbfs_fd] libusb requires write access to USB device nodes.
No devices found!

I expect the Lime SDR is there as seen with lsusb

glennl@glennl-ThinkPad-T470s:~$ lsusb
Bus 002 Device 009: ID 1d50:6108 OpenMoko, Inc.

When I run SoapySDRUtil with sudo the command is not found.

Any thoughts?

This is because by default non-root users dont’t have access to LimeSDR-USB device. So you can run the script as root (su), or simply install following udev rules to make it possibile for non-root users as well (this assumes you have LimeSuite source files downloaded):

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

@ccsh

That was exactly what I needed to know. I got close with a udev rule, but was assigning to the wrong group “users”. I’m up and running now!

Sincere thanks!

Hi all,

I just tried to build this on Ubuntu 16.04.4 LTS on a LattePanda (Quad Core Atom x64 with 4GB RAM) and got the following error;

[ 83%] Built target pygen_gr_trellis_swig_3c454
[ 83%] Built target _trellis_swig0
[ 84%] Built target _trellis_swig1
[ 84%] Built target pygen_gr_trellis_python_trellis_089a4
[ 84%] Built target pygen_gr_trellis_examples_python_e7070
[ 85%] Building CXX object gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/usrp_block_impl.cc.o
In file included from /home/HIDDEN/src/prefix/default/include/uhd/types/dict.hpp:148:0,
                 from /home/HIDDEN/src/prefix/default/include/uhd/types/device_addr.hpp:12,
                 from /home/HIDDEN/src/prefix/default/include/uhd/stream.hpp:13,
                 from /home/HIDDEN/src/prefix/default/include/uhd/device.hpp:12,
                 from /home/HIDDEN/src/prefix/default/include/uhd/usrp/multi_usrp.hpp:27,
                 from /home/HIDDEN/src/prefix/default/src/gnuradio/gr-uhd/include/gnuradio/uhd/usrp_block.h:28,
                 from /home/HIDDEN/src/prefix/default/src/gnuradio/gr-uhd/lib/usrp_block_impl.h:26,
                 from /home/HIDDEN/src/prefix/default/src/gnuradio/gr-uhd/lib/usrp_block_impl.cc:23:
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp: In member function ‘bool uhd::dict<Key, Val>::operator==(const uhd::dict<Key, Val>&) const’:
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:120:13: warning: ‘auto’ changes meaning in C++11; please remove it [-Wc++0x-compat]
         for(auto &p : _map){
             ^
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:120:19: error: ISO C++ forbids declaration of ‘p’ with no type [-fpermissive]
         for(auto &p : _map){
                   ^
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:120:23: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
         for(auto &p : _map){
                       ^
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:121:38: error: request for member ‘first’ in ‘p’, which is of non-class type ‘int’
             if (not (other.has_key(p.first) and other.get(p.first) == p.second)){
                                      ^
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:121:61: error: request for member ‘first’ in ‘p’, which is of non-class type ‘int’
             if (not (other.has_key(p.first) and other.get(p.first) == p.second)){
                                                             ^
/home/HIDDEN/src/prefix/default/include/uhd/types/dict.ipp:121:73: error: request for member ‘second’ in ‘p’, which is of non-class type ‘int’
             if (not (other.has_key(p.first) and other.get(p.first) == p.second)){
                                                                         ^
gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/build.make:62: recipe for target 'gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/usrp_block_impl.cc.o' failed
make[2]: *** [gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/usrp_block_impl.cc.o] Error 1
CMakeFiles/Makefile2:13167: recipe for target 'gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/all' failed
make[1]: *** [gr-uhd/lib/CMakeFiles/gnuradio-uhd.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
PyBOMBS.Packager.source - ERROR - Build failed. See output above for error messages.
PyBOMBS.Packager.source - ERROR - Problem occurred while building package gnuradio:
Build failed.
PyBOMBS.install_manager - ERROR - Error installing package gnuradio. Aborting.

Has anyone seen this error or know how to resolve it please?

Ps. This is being built as root but in a user directory (that shouldn’t really matter).

This seems like the newer version of G++ is more enforcing the change on the keyword auto. You can change it to a specific type (use what ever type _map is in this case) but other than patching the source or waiting for libuhd to update, the only other option is to move to an earlier version of the gcc tools.