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 --