Ettus UHD ABI Mismatch with GQRX

I’m having the same issue as kenerny back in August 17 (Ettus update of UHD baseline has broken gr-uhd or gr-osmosdr), however it is now between ABI 3.10.2 and 3.10.3. Googling shows that I just have to request an update to gr-uhd and gr-osmosdr, and this is the place to do it. For reference, here is the error message I am getting when trying to run a recently compiled GQRX:

FATAL: 
GR-UHD detected ABI compatibility mismatch with UHD library.
GR-UHD was build against ABI: 3.10.2,
but UHD library reports ABI: 3.10.3
Suggestion: install an ABI compatible version of UHD,
or rebuild GR-UHD component against this ABI version.

Thank you for your help.

As far as I know SoapyUHD works fine. You should use it instead.

I may be mistaken, but I want to use GQRX, and gr-uhd is an essential part of that.

gr-uhd uses UHD as driver right? You can use LimeSDR as a UHD device via SoapyUHD. Maybe I am mistaken but this should work.

@mickeyhorn I dont see 3.10.3 on the ppa (updated on 2017-08-01): https://launchpad.net/~ettusresearch/+archive/ubuntu/uhd

I think things should be ok if you have packages from both the ettus ppa and myriad rf ppa installed. So my advice is to make sure that there arent any duplicates of the same packages both from ppa and from source builds. And anything you do compile from source, if thats going to rely on something from the ppa as a dependency, install its corresponding -dev packages rather then try to build its development stuff from source, which might mismatch.

A lot of problems like this stem from having multiple different versions the same things in the default system paths. I actually added the GR-UHD detected ABI compatibility mismatch with UHD library check specifically because its so much easier to get this message than segfault :slight_smile:

Anyway, not entirely sure what was built/installed/where/and in what combinations, but I hope this pointer helps.

So I just did a full reinstall of GQRX following the guild exactly as its listed here. I ensured that everything GQRX was removed from my system myself before adding the repositories.
http://gqrx.dk/download/install-ubuntu

When I run uhd_find_devices, the first line of output shows:
linux; GNU C++ version 5.4.0 20160609; Boost_105800; UHD_003.010.003.000-0-gd9643b9d

It’s possible that in the past, I installed a library that I should not have. Is there a way to check installed libraries outside of aptitude? I believe it could be from an old GNURadio install. Should I try purging GNURadio from my system and reinstalling? I am not sure where this 3.10.3 ABI is coming from.

Edit: I just remembered that after installing GQRX, I also had to install the Ettus UHD as well (I am using a Ettus X300 USRP for my radio). This was done with the command line:
sudo apt-get install libuhd-dev libuhd003 uhd-host

as the instructions here stated:
https://files.ettus.com/manual/page_install.html

You can always check if there are libraries from source builds in /usr/local, and for anything in /usr, you should be able to find that corresponding deb with the standard dpkg tools and the like and see if it matches the on on the PPA.

Anyways, looks like they did update just 8 hours ago from this post: https://launchpad.net/~ettusresearch/+archive/ubuntu/uhd so it looks like we are in for a rebuild regardless at this point. Funny though, they skipped updating artful (the current release). Just xenial and trusty.

I’m having the same issue. Removed and reinstalled all components as per: http://gqrx.dk/download/install-ubuntu . However, libuhd 3.10.2 vs 3.10.3 issue is still unresolved. Does anyone know if the GR-UHD rebuild against 3.10.3 has happened and been propagated to the repositories? I’ve installed this about 10 times before on various machines and never run into this problem before. Any help appreciated. Thx.

1 Like

I’m having the same issue with Linux Mint.

issue :
RuntimeError:
GR-UHD detected ABI compatibility mismatch with UHD library.
GR-UHD was build against ABI: 3.10.2,
but UHD library reports ABI: 3.10.3
Suggestion: install an ABI compatible version of UHD,
or rebuild GR-UHD component against this ABI version.

I have reinstalled and removed all.
I have try 10 times at install Gnuradio and all components.

Below the steps used to install gnuradio:

  • Install PyBOMBS:
    $ [sudo] pip install PyBOMBS

  • Add PyBOMBS recipes:
    $ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
    $ pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git

  • Configure an installation prefix:

    $ pybombs prefix init ~/prefix/default/

-Install GNU Radio:

$ pybombs install gnuradio

-Run GNU Radio Companion from your new prefix:

$ source ~/prefix/default/setup_env.sh
$ gnuradio-companion
  • Source Build automatic
  • sudo apt-get install gnuradio

Please let me know if anyone has found the solution

Thanks :slight_smile:

So I was able to fix the problem on my machine. The problem is that when I ran the command
sudo add-apt install lubuhd-dev libuhd003 uhd-host
it would install UHD with the 3.10.3 ABI.

I ended up installing UHD from source and targetting specifically ABI 3.10.2, as explained here:
https://kb.ettus.com/Building_and_Installing_the_USRP_Open-Source_Toolchain_(UHD_and_GNU_Radio)_on_Linux

Once that was installed, everything worked as normal.

I think you should be able to just configure the Ettus PPA, instead of building from source.

1 Like

If I remember correctly, the PPA was set to 3.10.2, but installing UHD still overwrote it to 3.10.3.

I may be wrong, I’m still new at the sort of thing, but building from source with a specified version is what worked (and is still working) for me.

After struggling with building uhd-host etc. for a while (didn’t go smoothly for me) I came across what I think is the easiest solution based on reading posts from the last few times this happened.It only requires repository packages. Here it is in some detail. I’m running ubuntu 16.04LTS.

Remove all traces of old gnuradio/gqrx installations
sudo apt-get purge --auto-remove gqrx
sudo apt-get purge --auto-remove gqrx-sdr
sudo apt-get purge --auto-remove libgnuradio*

Install gdebi
sudo apt-get install gdebi-core
sudo apt-get install gdebi

Download the required .deb files
Download from https://launchpad.net/~ettusresearch/+archive/ubuntu/uhd/+builds?build_state=built to any directory (e.g. Downloads). You will need the “Built files”:
libuhd-dev_3.10.2.0-0ubuntu1~xenial1_amd64.deb (835.7 KiB)
libuhd003_3.10.2.0-0ubuntu1~xenial1_amd64.deb (2.3 MiB)
uhd-host_3.10.2.0-0ubuntu1~xenial1_amd64.deb (2.2 MiB)

Right click on each of these and “Open With” GDebi Package Installer. To satisfy dependencies, the order of installation needs to be: libuhd003, libuhd-dev, uhd-host.

Lock the version of each of these in Synaptic Package manager
if Synaptic is not installed:
sudo apt-get install synaptic

Open Synaptic. Search for “uhd”. Find and highlight (select) each of the three packages you just installed above. Lock the version to 3.10.2 (the version that should be installed). Go to “Package” (in title bar) then “Lock Version”. Close Synaptic.

Install gqrx
Follow the instructions at: http://gqrx.dk/download/install-ubuntu starting with the addition of the repositories.

To upgrade gqrx etc in the future
Don’t forget to unlock the versions of libuhd003, libuhd-dev, uhd-host before attempting to upgrade gqrx, gnuradio, uhd, etc…

I have rebuilt gnuradio, gr-osmosdr, and also some drivers, so it should be all fine now at least on trusty and xenial.

Alex

1 Like