LimeSDR on Debian - firmware version mismatch!

Hey everyone, I am following since a while and so far I was able to fix my issues with the help of older topics or through some other sources. My LimeSDR works fine on my desktop machine with the installation through Ubuntu. Since this issue addresses problems with the installation/driver setup I put you @Zack since I recognised you helping people with similar issues.

Now we want to hook the LimeSDR up with a BeagleBoard Black edition which works fine. The beagle board is running on Debian 9.3.x and most of the libraries could be installed through apt-get or by source. I did not install the graphical front-end nor some extended libraries.
Since the apt-get supplied package version of the limesuite was a rather old one I instead build it from the source. Now I get to see the following screen if I request “LimeUtil --info”:

LimeSuite information summary

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

Version information:
Library version: v18.01.0-ga54a6be6
Build timestamp: 2018-02-21
Interface version: v2017.12.0
Binary interface: 18.01-1

System resources:
Installation root: /usr/local
User home directory: /home/debian
App data directory: /home/debian/.local/share/LimeSuite
Config directory: /home/debian/.limesuite
Image search paths:
- /home/debian/.local/share/LimeSuite/images
- /usr/local/share/LimeSuite/images

Supported connections:

  • FT601
  • FX3
  • PCIEXillybus

This is the beagle board version, on the desktop the version is at v17.x. Trying to open a small application which works fine on the desktop machine I get to see the following error.

Unable to communicate with i2c device: Remote I/O error
Devices found: 1
Unable to communicate with i2c device: Remote I/O error
LMS7002M values cache at /home/debian/.limesuite/LMS7002M_cache_values.db

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

!!! Warning: firmware version mismatch !!!

Expected firmware version 2, but found version 4

Follow the FW and FPGA upgrade instructions:

Lime Suite - Myriad-RF Wiki

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

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

!!! Warning: gateware version mismatch !!!

Expected gateware version 2, revision 2

But found version 2, revision 14

Follow the FW and FPGA upgrade instructions:

Lime Suite - Myriad-RF Wiki

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

This message is only outputted on the beagleBoard and not the desktop machine. Although, on the desktop I once in a while have to re-flash the LimeSdr to get the LimeSuite connecting again.

As mentioned the setup is as following: BeagleBone Black running on Debian 9.3, LimeSDR connected through USB2.0 and powered through external supply, LimeSuite v18 installed on beagle.

If connected to the desktop then the connection is established through USB3.0 and no additional supply attached to the LimeSDR.

I would be glad to get hints pointing me the right way to fix this issue. Certainly did I already search the forum for similar issues which I could find but unfortunately didn’t manage to solve my problem.

Thanks in advance, Reto

Just a wild guess, you have two LimeSuite library versions installed on the system, one from apt-get, and another compiled from source, and it’s uncertain which one gets loaded dynamically. Try uninstalling the one got from apt-get.

1 Like

Hey ricardas, thanks for your quick reply and hint. making a quick look up indeed shows that there are indeed two versions.

debian@beaglebone:/usr/bin$ ldconfig -p | grep Lime
libLimeSuite.so.18.01-1 (libc6,hard-float) => /usr/local/lib/libLimeSuite.so.18.01-1
libLimeSuite.so.16.12-1 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libLimeSuite.so.16.12-1
libLimeSuite.so (libc6,hard-float) => /usr/local/lib/libLimeSuite.so

Although, before building it from source I applied a apt-get remove … Will try to get rid of them and let you guys know. Thanks for the moment :slight_smile:

Update: apt-get version seems to be definitely uninstalled. Can it be that the version in arm-linux … comes with debian or some loaded package? The /usr/local/lib/libLimeSuite.so is pointing at version 18.

debian@beaglebone:/usr/local/lib$ ls -lah
total 644K
drwxrwsr-x 6 root staff 4.0K Feb 21 14:25 .
drwxrwsr-x 10 root staff 4.0K Jan 28 14:07 …
lrwxrwxrwx 1 root staff 23 Feb 21 14:25 libLimeSuite.so → libLimeSuite.so.18.01-1
-rw-r–r-- 1 root staff 620K Feb 21 14:21 libLimeSuite.so.18.01.0
lrwxrwxrwx 1 root staff 23 Feb 21 14:25 libLimeSuite.so.18.01-1 → libLimeSuite.so.18.01.0
drwxr-sr-x 13 root staff 4.0K Jan 28 14:15 node_modules
drwxrwsr-x 4 root staff 4.0K Jan 28 14:13 python2.7
drwxrwsr-x 3 root staff 4.0K Jan 28 14:08 python3.5
drwxr-sr-x 3 root staff 4.0K Feb 21 14:25 SoapySDR

Looking at the build binary with ldd I actually can prove what you were expecting:

debian@beaglebone:/usr/local/lib$ ldd -r -v /home/debian/Downloads/buildTest/a.out
linux-vdso.so.1 (0xbef55000)
libLimeSuite.so.16.12-1 => /usr/lib/arm-linux-gnueabihf/libLimeSuite.so.16.12-1 (0xb6e8c000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6d80000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6d08000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6cdf000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6bf1000)
libsqlite3.so.0 => /usr/lib/arm-linux-gnueabihf/libsqlite3.so.0 (0xb6b44000)
libusb-1.0.so.0 => /lib/arm-linux-gnueabihf/libusb-1.0.so.0 (0xb6b23000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6aff000)
/lib/ld-linux-armhf.so.3 (0xb6f2a000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6aec000)
libudev.so.1 => /lib/arm-linux-gnueabihf/libudev.so.1 (0xb6ad5000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6abf000)

Version information:
/home/debian/Downloads/buildTest/a.out:
libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
libstdc++.so.6 (CXXABI_1.3.8) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_1.3) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.21) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_ARM_1.3.3) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.19) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
/usr/lib/arm-linux-gnueabihf/libLimeSuite.so.16.12-1:
ld-linux-armhf.so.3 (GLIBC_2.4) => /lib/ld-linux-armhf.so.3
libc.so.6 (GLIBC_2.8) => /lib/arm-linux-gnueabihf/libc.so.6
libc.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libc.so.6
libm.so.6 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libm.so.6
libgcc_s.so.1 (GCC_3.5) => /lib/arm-linux-gnueabihf/libgcc_s.so.1
libpthread.so.0 (GLIBC_2.4) => /lib/arm-linux-gnueabihf/libpthread.so.0
libstdc++.so.6 (GLIBCXX_3.4.20) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_1.3.8) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.18) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_1.3.5) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.11) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_1.3) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.14) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.9) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (CXXABI_ARM_1.3.3) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.22) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.21) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4.19) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6

Now I am a bit confused about where this version 16 comes from and how to force the version 18. The build was done with a regular g++ app.cpp -lLimeSuite call.

I Doubt that library was preinstalled in debian. Probably got installed along with old SoapySDR package or something https://packages.debian.org/stretch/soapysdr0.5-2-module-lms7

Anyway, either remove the old library, or specify exact new library version when linking you binary.
g++ app.cpp -l:libLimeSuite.so.18.01-1

Thanks again ricardas. After rebuilding libraries one should recompile the binaries … my bad :hushed:
Doing so the regular lLimeSuite works and is also there if checked with ldd.

For understanding I have one last question. Since the newest ubuntu ppa is v17 for the imesuite I now have to switch between v17 and v18 (except I recompile my desktop). Due to that I get this message:

Gateware version mismatch!
Expected gateware version 2, revision 12
But found version 2, revision 14
Follow the FW and FPGA upgrade instructions:
Lime Suite - Myriad-RF Wiki
Or run update on the command line: LimeUtil --update

gateware addresses the installed driver on the host system and not the firmware version on the limeSuite PCB, right?

Gateware is what’s flashed to board’s FPGA.
Expected version is the version which was latest when the LimeSuite library code was commited.
Found version is what is currently flashed on the board.

In your case I think there should be no need to downgrade the gateware, you can ignore that warning.

Great, thanks. Meanwhile I also got rid of the warning with some forth and back flashing of the Flash and FPGA.
For the moment my problem got solve. Topic can be closed, thanks.