Soapy Sales Show

Post your feedback here
Post Reply
rec
Posts: 3
Joined: Thu Mar 17, 2016 3:30 pm

Soapy Sales Show

Post by rec » Fri Mar 18, 2016 3:19 am

So I went through one of the approved paths for installing software on Ubuntu and I've decided that the SDRplay API installed code compiled against an out of date version of SoapySDR, so it throws an error dynmically loading a library, because of an resolved symbol. Or something like that.

The solution, which was buried somewhere in the instructions for CubicSDR, is to install the SDRplay API "package", compile and install SoapySDR from github, compile and install SoapyRTLSDR from github, and compile and install SoapySDRPlay from github. That last step overwrites the faulty library that sdrplay.com is giving us to install.

So, let's see if I can recreate this.

1) Install SDRplay API from sdrplay.com

Code: Select all

rec@pixil:~/Downloads$ sh SDRplay_RSP_MiricsAPI-1.9.4.run 
Verifying archive integrity... All good.
Uncompressing SDRplay Mirics API Install Package V1.9.4  100%  
Installing SDRplay RSP Mirics API library...
Architecture: x86_64
API Version: 1.8.1
Remove old libraries...
[sudo] password for rec: 
Install /usr/local/lib/libmirsdrapi-rsp.so
Remove old header files...
Install /usr/local/include/mirsdrapi-rsp.h
Udev rules directory found, adding rules...
Libusb found, continuing...
Installing SoapySDRPlay...
Installing SoapySDR...
Finished.
2) Try SoapySDRUtil looking for SoapySDR::loadModule error

Code: Select all

rec@pixil:~/Downloads$ SoapySDRUtil --probe
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device 
[ERROR] SoapySDR::loadModule(/usr/local/lib/SoapySDR/modules/librtlsdrSupport.so)
  dlopen() failed: /usr/local/lib/SoapySDR/modules/librtlsdrSupport.so: undefined symbol: _ZN8SoapySDR6Device18setFrontendMappingEiRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
mir_sdr_Init: starting hardware initialization
mir_sdr_Init: gR=40dB fs=2.048MHz rf=222.064MHz bw=1.536MHz if=0.000MHz

mir_sdr_usb_USB DLL: Revision 0.1.1

mir_sdr_usb_Init: Timeout expired/failed to establish connection with the device

mir_sdr_2500_Init: mir_sdr_usb_Init() failed
mir_sdr_Init: mir_sdr_2500_Init() Error 1

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=null
  hardware=null

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 0 Rx, 0 Tx
  Timestamps: NO


3) Reinstall SoapySDR

Code: Select all

rec@pixil:~/Downloads$ cd ~/Projects/SoapySDR
rec@pixil:~/Projects/SoapySDR$ cd ~/Projects/SoapySDR/build
rec@pixil:~/Projects/SoapySDR/build$ sudo make install
[ 82%] Built target SoapySDR
[ 91%] Built target SoapySDRUtil
[ 95%] Built target TestFormatParser
[100%] Built target TestTimeConversion
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRConfig.cmake
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRUtil.cmake
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRConfigVersion.cmake
-- Up-to-date: /usr/local/include/SoapySDR
-- Up-to-date: /usr/local/include/SoapySDR/Errors.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Config.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Formats.h
-- Up-to-date: /usr/local/include/SoapySDR/Modules.h
-- Up-to-date: /usr/local/include/SoapySDR/Version.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Types.h
-- Up-to-date: /usr/local/include/SoapySDR/Time.h
-- Up-to-date: /usr/local/include/SoapySDR/Device.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Device.h
-- Up-to-date: /usr/local/include/SoapySDR/Version.h
-- Up-to-date: /usr/local/include/SoapySDR/Config.h
-- Up-to-date: /usr/local/include/SoapySDR/Errors.h
-- Up-to-date: /usr/local/include/SoapySDR/Constants.h
-- Up-to-date: /usr/local/include/SoapySDR/Registry.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Logger.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Formats.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Modules.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Types.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Time.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Logger.h
-- Installing: /usr/local/lib/libSoapySDR.so.0.4.1
-- Installing: /usr/local/lib/libSoapySDR.so.0.4-2
-- Installing: /usr/local/lib/libSoapySDR.so
-- Up-to-date: /usr/local/lib/pkgconfig/SoapySDR.pc
-- Installing: /usr/local/bin/SoapySDRUtil
-- Removed runtime path from "/usr/local/bin/SoapySDRUtil"
4) Probe again, still the error, but notice that the name of the missing symbol has changed.

Code: Select all

rec@pixil:~/Projects/SoapySDR/build$ SoapySDRUtil --probe
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device 
[ERROR] SoapySDR::loadModule(/usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so)
  dlopen() failed: /usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so: undefined symbol: _ZN8SoapySDR6Device18setFrontendMappingEiRKSs

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=null
  hardware=null

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 0 Rx, 0 Tx
  Timestamps: NO
5) Install SoapyRTLSDR (not really relevant, I think)

Code: Select all

rec@pixil:~/Projects/SoapySDR/build$ cd ~/Projects/SoapyRTLSDR/build
rec@pixil:~/Projects/SoapyRTLSDR/build$ sudo make install
[100%] Built target rtlsdrSupport
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /usr/local/lib/SoapySDR/modules/librtlsdrSupport.so
6) Probe again, still the error.

Code: Select all

rec@pixil:~/Projects/SoapyRTLSDR/build$ SoapySDRUtil --probe
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device 
[ERROR] SoapySDR::loadModule(/usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so)
  dlopen() failed: /usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so: undefined symbol: _ZN8SoapySDR6Device18setFrontendMappingEiRKSs

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=null
  hardware=null

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 0 Rx, 0 Tx
  Timestamps: NO
7) Install SoapySDRPlay (what's with all these compile warnings? trying to instill confidence in your code hygiene?)

Code: Select all

rec@pixil:~/Projects/SoapyRTLSDR/build$ cd ~/Projects/SoapySDRPlay/build/
rec@pixil:~/Projects/SoapySDRPlay/build$ sudo make install
Scanning dependencies of target sdrPlaySupport
[ 33%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Registation.cpp.o
In file included from /home/rec/Projects/SoapySDRPlay/Registation.cpp:25:0:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp: In constructor ‘SDRPlayGainPref::SDRPlayGainPref(double, double, double, int, int, int)’:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:26: warning: ‘SDRPlayGainPref::grLNA’ will be initialized after [-Wreorder]
     int grTarget, grMax, grLNA;
                          ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:19: warning:   ‘int SDRPlayGainPref::grMax’ [-Wreorder]
     int grTarget, grMax, grLNA;
                   ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:53:5: warning:   when initialized here [-Wreorder]
     SDRPlayGainPref(double lo, double min, double max, int targetGain = 40, int lnaGain = 24, int maxGain = 102) : loFreq(lo), freqMin(min), freqMax(max), grTarget(targetGain), grLNA(lnaGain), grMax(maxGain) { }
     ^
[ 66%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Settings.cpp.o
In file included from /home/rec/Projects/SoapySDRPlay/Settings.cpp:25:0:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp: In constructor ‘SDRPlayGainPref::SDRPlayGainPref(double, double, double, int, int, int)’:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:26: warning: ‘SDRPlayGainPref::grLNA’ will be initialized after [-Wreorder]
     int grTarget, grMax, grLNA;
                          ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:19: warning:   ‘int SDRPlayGainPref::grMax’ [-Wreorder]
     int grTarget, grMax, grLNA;
                   ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:53:5: warning:   when initialized here [-Wreorder]
     SDRPlayGainPref(double lo, double min, double max, int targetGain = 40, int lnaGain = 24, int maxGain = 102) : loFreq(lo), freqMin(min), freqMax(max), grTarget(targetGain), grLNA(lnaGain), grMax(maxGain) { }
     ^
/home/rec/Projects/SoapySDRPlay/Settings.cpp: In constructor ‘SoapySDRPlay::SoapySDRPlay(const Kwargs&)’:
/home/rec/Projects/SoapySDRPlay/Settings.cpp:32:18: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
     mir_sdr_ErrT err;
                  ^
/home/rec/Projects/SoapySDRPlay/Settings.cpp: In member function ‘virtual SoapySDR::Kwargs SoapySDRPlay::getHardwareInfo() const’:
/home/rec/Projects/SoapySDRPlay/Settings.cpp:81:18: warning: unused variable ‘err’ [-Wunused-variable]
     mir_sdr_ErrT err;
                  ^
[100%] Building CXX object CMakeFiles/sdrPlaySupport.dir/Streaming.cpp.o
In file included from /home/rec/Projects/SoapySDRPlay/Streaming.cpp:25:0:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp: In constructor ‘SDRPlayGainPref::SDRPlayGainPref(double, double, double, int, int, int)’:
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:26: warning: ‘SDRPlayGainPref::grLNA’ will be initialized after [-Wreorder]
     int grTarget, grMax, grLNA;
                          ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:51:19: warning:   ‘int SDRPlayGainPref::grMax’ [-Wreorder]
     int grTarget, grMax, grLNA;
                   ^
/home/rec/Projects/SoapySDRPlay/SoapySDRPlay.hpp:53:5: warning:   when initialized here [-Wreorder]
     SDRPlayGainPref(double lo, double min, double max, int targetGain = 40, int lnaGain = 24, int maxGain = 102) : loFreq(lo), freqMin(min), freqMax(max), grTarget(targetGain), grLNA(lnaGain), grMax(maxGain) { }
     ^
/home/rec/Projects/SoapySDRPlay/Streaming.cpp: In member function ‘virtual void SoapySDRPlay::closeStream(SoapySDR::Stream*)’:
/home/rec/Projects/SoapySDRPlay/Streaming.cpp:218:18: warning: variable ‘err’ set but not used [-Wunused-but-set-variable]
     mir_sdr_ErrT err;
                  ^
/home/rec/Projects/SoapySDRPlay/Streaming.cpp: In member function ‘virtual int SoapySDRPlay::readStream(SoapySDR::Stream*, void* const*, size_t, int&, long long int&, long int)’:
/home/rec/Projects/SoapySDRPlay/Streaming.cpp:573:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     int returnedElems = (numElems>bufferedElems)?bufferedElems:numElems;
                                  ^
Linking CXX shared module libsdrPlaySupport.so
[100%] Built target sdrPlaySupport
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so
-- Removed runtime path from "/usr/local/lib/SoapySDR/modules/libsdrPlaySupport.so"
8) Probe one last time, and the error has disappeared!

Code: Select all

rec@pixil:~/Projects/SoapySDRPlay/build$ SoapySDRUtil --probe
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device 
mir_sdr_Init: starting hardware initialization
mir_sdr_Init: gR=40dB fs=2.048MHz rf=222.064MHz bw=1.536MHz if=0.000MHz

mir_sdr_usb_USB DLL: Revision 0.1.1

mir_sdr_usb_Init: Timeout expired/failed to establish connection with the device

mir_sdr_2500_Init: mir_sdr_usb_Init() failed
mir_sdr_Init: mir_sdr_2500_Init() Error 1

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=null
  hardware=null

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 0 Rx, 0 Tx
  Timestamps: NO


rec@pixil:~/Projects/SoapySDRPlay/build$ 
I only noticed the change in the mangled symbol name while putting together this script. Maybe the sdrplay.com version of SoapySDRPlay is compiled with different options than SoapySDR?

-- rec -- ad5dz/1 --
Last edited by rec on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason

sdrplay
Posts: 978
Joined: Wed Jan 07, 2015 7:58 am

Re: Soapy Sales Show

Post by sdrplay » Fri Mar 18, 2016 7:48 am

You need to build SoapySDR and SoapySDRPlay before SoapySDR will work - if you have a 32bit OS that might be why SoapySDR didn't work after the API install - we only distribute the 64bit version.

Best regards,

SDRplay Support
Last edited by sdrplay on Thu Jan 01, 1970 12:00 am, edited 0 times in total.
Reason: No reason

Post Reply