Coder Social home page Coder Social logo

pothosware / soapyuhd Goto Github PK

View Code? Open in Web Editor NEW
51.0 28.0 28.0 123 KB

Soapy SDR plugins for UHD supported SDR devices

Home Page: https://github.com/pothosware/SoapyUHD/wiki

License: GNU General Public License v3.0

CMake 10.30% C++ 89.70%
uhd usrp ettus sdr gnuradio pothos soapysdr

soapyuhd's Introduction

soapyuhd's People

Contributors

dwd-pete avatar guruofquality avatar ncorgan avatar ryanvolz avatar velichkov avatar willcode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

soapyuhd's Issues

SoapySSDPEndpoint failed join group udp://239.255.255.250:1900 setsockopt(IP_ADD_MEMBERSHIP) [19: No such device]

I get this error when starting GQRX with limeSDR connected.

RtApiAlsa::getDeviceInfo: snd_pcm_open error for device (hw:0,0), Device or resource busy.

[WARNING] SoapySSDPEndpoint failed join group udp://239.255.255.250:1900
setsockopt(IP_ADD_MEMBERSHIP) [19: No such device]
[ERROR] SoapySSDPEndpoint::sendTo(udp://[ff02::c]:1900) = -1
sendto(udp://[ff02::c]:1900) [99: Cannot assign requested address]

And this when uhd_find_devices. What is the issue please??
uhd_find_devices
linux; GNU C++ version 6.3.0 20170221; Boost_106200; UHD_003.009.005-0-unknown

Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
[WARNING] SoapySSDPEndpoint failed join group udp://239.255.255.250:1900
setsockopt(IP_ADD_MEMBERSHIP) [19: No such device]
[ERROR] SoapySSDPEndpoint::sendTo(udp://[ff02::c]:1900) = -1
sendto(udp://[ff02::c]:1900) [99: Cannot assign requested address]

-- UHD Device 0

Device Address:
default_input: True
default_output: True
device_id: 0
driver: audio
label: hw:HDA Intel PCH,0
type: soapy


-- UHD Device 1

Device Address:
default_input: False
default_output: False
device_id: 4
driver: audio
label: default
type: soapy


-- UHD Device 2

Device Address:
addr: x
driver: lime
media: USB
module: uLimeSDR
name: USB 2.0 (LimeSDR Mini)
type: soapy

SoapyUHD make errors at 100%, produces different errors

Log from SoapyUHD make

stormlabuser@stormlabuser-OptiPlex-7020:~/SoapyUHD/build$ make
Scanning dependencies of target soapySupport
[ 20%] Building CXX object CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o
[ 40%] Linking CXX shared module libsoapySupport.so
[ 40%] Built target soapySupport
Scanning dependencies of target uhdSupport
[ 60%] Building CXX object CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o
[ 80%] Building CXX object CMakeFiles/uhdSupport.dir/Version.cpp.o
[100%] Linking CXX shared module libuhdSupport.so
/usr/bin/ld: CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o: in function make_uhd(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)': SoapyUHDDevice.cpp:(.text+0x1794): undefined reference to uhd::msg::register_handler(void (* const&)(uhd::msg::type_t, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&))'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/uhdSupport.dir/build.make:104: libuhdSupport.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:133: CMakeFiles/uhdSupport.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

Using any sort of UHD related component produces different errors including

stormlabuser@stormlabuser-OptiPlex-7020:~$ uhd_find_devices
Error: EnvironmentError: OSError: dlopen failed to load "/usr/local/lib/uhd/modules/libsoapySupport.so"
[INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; UHD_4.0.0.0-231-gb54fb54b

-- UHD Device 0

Device Address:
serial: F3C22F
addr: 192.168.10.2
name:
type: usrp2

stormlabuser@stormlabuser-OptiPlex-7020:~$ SoapySDRUtil --probe="driver=uhd,type=usrp2"
######################################################

Soapy SDR -- the SDR abstraction library

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

Probe device driver=uhd,type=usrp2
[ERROR] SoapySDR::loadModule(/usr/local/lib/SoapySDR/modules0.8/libuhdSupport.so)
dlopen() failed: libboost_date_time.so.1.65.1: cannot open shared object file: No such file or directory
Error probing device: SoapySDR::Device::make() no match

stormlabuser@stormlabuser-OptiPlex-7020:~$ SoapySDRUtil --info
######################################################

Soapy SDR -- the SDR abstraction library

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

Lib Version: v0.8.1-g5bcb611b
API Version: v0.8.0
ABI Version: v0.8
Install root: /usr/local
Search path: /usr/local/lib/SoapySDR/modules0.8
Module found: /usr/local/lib/SoapySDR/modules0.8/libLMS7Support.so (20.10.0-1480bfea)
Module found: /usr/local/lib/SoapySDR/modules0.8/libremoteSupport.so (0.6.0-c09b2f1)
Module found: /usr/local/lib/SoapySDR/modules0.8/libuhdSupport.so
dlopen() failed: libboost_date_time.so.1.65.1: cannot open shared object file: No such file or directory
Available factories... lime, remote

Following advice from the Pothos google group,which was to add regex to BOOST_REQUIRED_COMPONENETS in cmake file does not fix it. I have purged and re-installed UHD, Boost, and SoapyUHD countless times. I was able to get it correctly running on a client PC following the exact same install steps. Could this be a problem with my SoapySDR install?

Having trouble connecting to USRP N210 with SoapyUHD

Hello, I am trying to use SoapyUHD to connect to a USRP N210. I am able to connect to the N210 using uhd_find_devices, but I am not able to connect using SoapySDRUtil --probe="driver=uhd,type=usrp2". I believe I have installed SoapyUHD correctly since I can see it in the available factories section when using SoapySDRUtil --info. Attached is a screeshot of the output of SoapySDRUtil --probe="driver=uhd,type=usrp2". Any help would be appreciated.
log

Build error with latest uhd/host github pull

Late 2015 release version builds fine; but pulling from master (and release from 4 days ago I assume) yields:

cjmacbook:build ccliffe$ make -j4 && sudo make install
Scanning dependencies of target uhdSupport
[ 25%] Building CXX object CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o
Scanning dependencies of target soapySupport
[ 50%] Building CXX object CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:196:10: error: no member named 'publish' in 'uhd::property<uhd::usrp::subdev_spec_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_frontend_mapping, this, SOAPY_SDR_RX))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:199:10: error: no member named 'publish' in 'uhd::property<uhd::usrp::subdev_spec_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_frontend_mapping, this, SOAPY_SDR_TX))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:204:10: error: no member named 'subscribe' in 'uhd::property<uhd::time_spec_t>'
        .subscribe(boost::bind(&UHDSoapyDevice::set_cmd_time, this, _1));
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:206:10: error: no member named 'publish' in 'uhd::property<double>'
        .publish(boost::bind(&SoapySDR::Device::getMasterClockRate, _device))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:211:10: error: no member named 'publish' in 'uhd::property<uhd::time_spec_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_hardware_time, this, ""))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:214:10: error: no member named 'publish' in 'uhd::property<uhd::time_spec_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_hardware_time, this, "PPS"))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:219:10: error: no member named 'publish' in 'uhd::property<std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > >'
        .publish(boost::bind(&SoapySDR::Device::listClockSources, _device));
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:221:10: error: no member named 'publish' in 'uhd::property<std::__1::basic_string<char> >'
        .publish(boost::bind(&SoapySDR::Device::getClockSource, _device))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:224:10: error: no member named 'publish' in 'uhd::property<std::__1::vector<std::__1::basic_string<char>, std::__1::allocator<std::__1::basic_string<char> > > >'
        .publish(boost::bind(&SoapySDR::Device::listTimeSources, _device));
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:226:10: error: no member named 'publish' in 'uhd::property<std::__1::basic_string<char> >'
        .publish(boost::bind(&SoapySDR::Device::getTimeSource, _device))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:234:14: error: no member named 'publish' in 'uhd::property<uhd::sensor_value_t>'
            .publish(boost::bind(&UHDSoapyDevice::get_mboard_sensor, this, name));
             ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:252:18: error: no member named 'subscribe' in 'uhd::property<unsigned int>'
                .subscribe(boost::bind(&UHDSoapyDevice::set_gpio_attr, this, bank, attr, _1))
                 ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:301:10: error: no member named 'publish' in 'uhd::property<uhd::meta_range_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_rate_range, this, dir, chan));
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:303:10: error: no member named 'publish' in 'uhd::property<double>'
        .publish(boost::bind(&SoapySDR::Device::getSampleRate, _device, dir, chan))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:308:10: error: no member named 'publish' in 'uhd::property<double>'
        .publish(boost::bind(&SoapySDR::Device::getFrequency, _device, dir, chan, bbCompName))
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:311:10: error: no member named 'publish' in 'uhd::property<uhd::meta_range_t>'
        .publish(boost::bind(&UHDSoapyDevice::get_freq_range, this, dir, chan, bbCompName));
         ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:317:14: error: no member named 'subscribe' in 'uhd::property<uhd::stream_cmd_t>'
            .subscribe(boost::bind(&UHDSoapyDevice::old_issue_stream_cmd, this, chan, _1));
             ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:326:14: error: no member named 'publish' in 'uhd::property<uhd::sensor_value_t>'
            .publish(boost::bind(&UHDSoapyDevice::get_channel_sensor, this, dir, chan, name));
             ^
/Users/ccliffe/Documents/GitHub/SoapyUHD/UHDSoapyDevice.cpp:347:14: error: no member named 'publish' in 'uhd::property<uhd::meta_range_t>'
            .publish(boost::bind(&UHDSoapyDevice::get_gain_range, this, dir, chan, name));
             ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o] Error 1
make[1]: *** [CMakeFiles/soapySupport.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 75%] Linking CXX shared module libuhdSupport.so
[ 75%] Built target uhdSupport
make: *** [all] Error 2

Latest SoapyUHD build fails with boost errors

This seems like a 'recent' issue, developed in the past 6 months. Compiling now throws errrors similar to the following:
SoapyUHDDevice.cpp:68:13: error: ‘BOOST_FOREACH’ was not declared in this scope

Adding #include <boost/foreach.hpp> resolved this.

And a number of sptr conversion errors:
UHDSoapyDevice.cpp:153:65: error: conversion from ‘boost::shared_ptruhd::rx_streamer’ to non-scalar type ‘uhd::rx_streamer::sptr {aka std::shared_ptruhd::rx_streamer}’ requested
uhd::rx_streamer::sptr stream = _rx_streamers[chan].lock();

UHDSoapyDevice.cpp:719:71: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptruhd::rx_streamer >::mapped_type {aka boost::weak_ptruhd::rx_streamer}’ and ‘uhd::rx_streamer::sptr {aka std::shared_ptruhd::rx_streamer}’)
BOOST_FOREACH(const size_t ch, args.channels) _rx_streamers[ch] = stream;

Build environment is Ubuntu 18.04 LTS 64-bit fully updated with the latest SoapySDR and SoapyUHD repo's.

SoapyUHD with N310 and with the Octoclock module

  1. For the N310 device with both mgmt_addr, addr, and second_addr args, would you recommend to include all the relevant interfaces in setting up the SoapyUHD device and separate the mgmt_addr from the (data) addr?

  2. I cannot find any support for the case where multiple USRP devices are synced via the Octoclock module. Would it be possible to add this support so that SoapyUHD can be used in the case where multiple synced USRPs are used as a MIMO station?

Any suggestions and help would be appreciated. Thanks!

SoapySDRUtil --find does not find my USRP X310

Hello All,

I have two different SDR boards : 1) bladeRF 2) USRP X310
I would like to use both of them in PothosFlow, therefore I installed SoapybladeRF(for bladeRF) and SoapyUHD(for USRP X310) as per github.
After installation, executing SoapySDRUtil --find command results in finding only bladeRF and not my USRP X310, also in PothosFlow under Device Args only bladeRF is available!!!!
I would be grateful if s.b could give any suggestion.

Kind regards,
Arash

No install target

Could you please add it as you did in your other project soapyairspy?

Thanks!

UHD device: SoapyMultiSDR support?

Things start to get a bit convoluted here, and it's not a common use case, but I wonder if when UHDSoapyDevice is instantiated with the multisdr driver, it can populate "/mboards/X" with each device. It's not perfect, since some calls like setMasterClockRate only set the first board, but it's a thought.

SoapyUHD and XTRX

i would like to ask how good is the low latency hardware xtrx with the soapy?

Chears,

Yocto/bitbake build fails.

Able to build UHD and SoapySDR fine, but SoapyUHD fails with:

ERROR: QA Issue: soapyuhd: Files/directories were installed but not shipped in any package:
/data/riscv-yocto/build/tmp/work/riscv64-poky-linux/soapyuhd/soapy-uhd-0.3.4+gitAUTOINC+55da7dad46-r0/recipe-sysroot/usr/lib/uhd/modules/libsoapySupport.so
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
soapyuhd: 1 installed and not shipped files. [installed-vs-shipped]

Tried setting FILES in the recipe, but didn't seem to help.

Conversion error when compiling

Hey guys

when compiling the most recent SoapyUHD project, I get stuck on the following error:

_git/SoapyUHD/UHDSoapyDevice.cpp: In member function ‘virtual bool UHDSoapyDevice::recv_async_msg(uhd::async_metadata_t&, double)’: _git/SoapyUHD/UHDSoapyDevice.cpp:866:58: error: conversion from ‘boost::shared_ptr<uhd::tx_streamer>’ to non-scalar type ‘uhd::tx_streamer::sptr {aka std::shared_ptr<uhd::tx_streamer>}’ requested uhd::tx_streamer::sptr stream = _tx_streamers[0].lock(); ~~~~~~~~~~~~~~~~~~~~~^~ CMakeFiles/soapySupport.dir/build.make:62: recipe for target 'CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o' failed

I am ready to pay a beer to the one solving me this issue! :)
btw: I am on a pretty fresh Ubuntu 18.04.

cheers and thanks in advance

Multiple RX channels issue

Issue Description

UHD module fails when using two RX channels on USRP B210 with message Invalid recv stream command - stream now on multiple channels in a single streamer will fail to time align.

Setup Details

USRP B210, openSUSE Tumbleweed, SoapySDR v0.8, SoapyUHD v0.4.1-9a738c3

Steps to reproduce

SoapySDRUtil --args="driver=uhd" --rate=1e6 --channels="0, 1" --direction=RX

The above command instead of performing the expected rate test fails with the message mentioned in the description

Comments

This problem seems to originate inside the activateStream function in SoapyUHDDevice.cpp. The stream_now variable should not be set to True when more than one channels have been requested, but this is not handled in the code. Instead, the stream_now should be set to False and the time_spec to a time offset with respect to the current time, so that reception begins in a later time. The fix below seems to solve the issue of the rate test but probably needs more testing,

cmd.stream_now = (flags & SOAPY_SDR_HAS_TIME) == 0 && (stream->rx.get()->get_num_channels() == 1);

cmd.time_spec = _dev->get_time_now() + uhd::time_spec_t(0.1);

SoapyUHD not detecting USRP or simply crashing

Hi,

This is potentially related to #50. I received reports of a crash/hang in GNU/Linux (BatchDrake/SigDigger#190) and failures to detect the device in macOS (BatchDrake/suscan#59). A friend of mine just reported me the same failure to detect the USRP in GNU/Linux.

I am attaching the backtrace of the thread hanging, in case it helps. It seems to be something related to libuhd somehow:

Thread 53 (Thread 0x7fffae7fc700 (LWP 40291)):
#0 0x00007ffff621a99f in __GI___poll (fds=0x7fffae7faca0, nfds=1, timeout=100) at ../sysdeps/unix/sysv/linux/poll.c:29
https://github.com/BatchDrake/SigDigger/issues/1 0x00007fffb64a3b22 in uhd::transport::recv_link_baseuhd::transport::udp_boost_asio_link::get_recv_buff(int) () at /lib/libuhd.so.4.3.0
#2 0x00007fffb64cc300 in uhd::transport::inline_io_service::recv(uhd::transport::inline_recv_cb*, uhd::transport::recv_link_if*, int) () at /lib/libuhd.so.4.3.0
#3 0x00007fffb64ce322 in virtual thunk to uhd::transport::inline_recv_io::get_recv_buff(int) () at /lib/libuhd.so.4.3.0
--Type for more, q to quit, c to continue without paging--
https://github.com/BatchDrake/SigDigger/issues/4 0x00007fffb5de0385 in uhd::transport::get_aligned_buffs<uhd::rfnoc::chdr_rx_data_xport, false>::operator()(int) () at /lib/libuhd.so.4.3.0
https://github.com/BatchDrake/SigDigger/issues/5 0x00007fffb5de0b14 in uhd::transport::rx_streamer_zero_copy<uhd::rfnoc::chdr_rx_data_xport, false>::get_recv_buffs(std::vector<void const*, std::allocator<void const*> >&, uhd::rx_metadata_t&, uhd::transport::detail::eov_data_wrapper&, int) () at /lib/libuhd.so.4.3.0
#6 0x00007fffb5dda76a in uhd::transport::rx_streamer_impl<uhd::rfnoc::chdr_rx_data_xport, false>::recv(uhd::ref_vector<void*> const&, unsigned long, uhd::rx_metadata_t&, double, bool) () at /lib/libuhd.so.4.3.0
https://github.com/BatchDrake/SigDigger/issues/7 0x00007fffe9c0e64f in SoapyUHDDevice::readStream(SoapySDR::Stream*, void* const*, unsigned long, int&, long long&, long) () at /usr/local/lib/SoapySDR/modules0.8-2/libuhdSupport.so
#8 0x00007ffff7d5bf28 in SoapySDRDevice_readStream () at /usr/local/lib/libSoapySDR.so.0.8-2
#9 0x00007ffff7ed75b8 in suscan_source_read_sdr (source=0x555556a2f550, buf=0x55555752e0c0, max=1024) at /home/bhml/suscan/analyzer/source.c:2048
https://github.com/BatchDrake/SigDigger/issues/10 0x00007ffff7ed77b8 in suscan_source_read (self=0x555556a2f550, buffer=0x55555752e0c0, max=1024) at /home/bhml/suscan/analyzer/source.c:2110
https://github.com/BatchDrake/SigDigger/issues/11 0x00007ffff7ea9711 in suscan_source_channel_wk_cb (mq_out=0x555556a2b998, wk_private=0x555556a2b990, cb_private=0x555556a2f550) at /home/bhml/suscan/analyzer/workers/channel.c:559
https://github.com/BatchDrake/SigDigger/issues/12 0x00007ffff7eda798 in suscan_worker_thread (data=0x55555748a880) at /home/bhml/suscan/analyzer/worker.c:101
--Type for more, q to quit, c to continue without paging--
https://github.com/BatchDrake/SigDigger/issues/13 0x00007ffff664e609 in start_thread (arg=) at pthread_create.c:477
https://github.com/BatchDrake/SigDigger/issues/14 0x00007ffff6227133 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Has something recently changed? I'd love to fix this myself, but I am afraid I do not have any USRP at hand :(

Thanks,

Segmentation Fault on Mac OSX (M1/Monterey)

Would appreciate some help - am seeing a segmentation fault using the homebrew install process.

Could this related to the UHD library in /opt/homebrew/lib/SoapySDR/modules0.8/libuhdSupport.so being the wrong format for M1?

% SoapySDRUtil --make="driver=uhd,type=b200"
######################################################

Soapy SDR -- the SDR abstraction library

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

Make device driver=uhd,type=b200
[INFO] [UHD] Mac OS; Clang version 13.1.6 (clang-1316.0.21.2); Boost_107800; UHD_4.2.0.HEAD-0-g46a70d85
[INFO] [b200_impl.cpp:421] [B200] Detected Device: B200
[INFO] [B200] Detected Device: B200
[INFO] [b200_impl.cpp:468] [B200] Operating over USB 3.
[INFO] [B200] Operating over USB 3.
[INFO] [b200_impl.cpp:619] [B200] Initialize CODEC control...
[INFO] [B200] Initialize CODEC control...
[INFO] [b200_impl.cpp:688] [B200] Initialize Radio control...
[INFO] [B200] Initialize Radio control...
[INFO] [b200_impl.cpp:1099] [B200] Performing register loopback test...
[INFO] [B200] Performing register loopback test...
[INFO] [b200_impl.cpp:1108] [B200] Register loopback test passed
[INFO] [B200] Register loopback test passed
[INFO] [b200_impl.cpp:815] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [b200_impl.cpp:1149] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [b200_impl.cpp:1162] [B200] Actually got clock rate 16.000000 MHz.
[INFO] [B200] Actually got clock rate 16.000000 MHz.
driver=b200
hardware=B200
fpga_version=16.0
fw_version=8.0
mboard_id=B200
mboard_name=MyB200
mboard_serial=3113D17
rx0_antenna=RX2
rx0_id=Unknown (0xffff)
rx0_ref_power_key=b2xx_pwr_rx_rx2
rx0_ref_power_serial=3113D17#A
rx0_serial=
rx0_subdev_name=FE-RX1
rx0_subdev_spec=A:A
tx0_antenna=TX/RX
tx0_id=Unknown (0xffff)
tx0_ref_power_key=b2xx_pwr_tx_tx+rx
tx0_ref_power_serial=3113D17#A
tx0_serial=
tx0_subdev_name=FE-TX1
tx0_subdev_spec=A:A

zsh: segmentation fault SoapySDRUtil --make="driver=uhd,type=b200"

Also:

% SoapySDRUtil --probe="driver=uhd"
######################################################

Soapy SDR -- the SDR abstraction library

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

Probe device driver=uhd
[INFO] [UHD] Mac OS; Clang version 13.1.6 (clang-1316.0.21.2); Boost_107800; UHD_4.2.0.HEAD-0-g46a70d85
[INFO] [b200_impl.cpp:421] [B200] Detected Device: B200
[INFO] [B200] Detected Device: B200
[INFO] [b200_impl.cpp:468] [B200] Operating over USB 3.
[INFO] [B200] Operating over USB 3.
[INFO] [b200_impl.cpp:619] [B200] Initialize CODEC control...
[INFO] [B200] Initialize CODEC control...
[INFO] [b200_impl.cpp:688] [B200] Initialize Radio control...
[INFO] [B200] Initialize Radio control...
[INFO] [b200_impl.cpp:1099] [B200] Performing register loopback test...
[INFO] [B200] Performing register loopback test...
[INFO] [b200_impl.cpp:1108] [B200] Register loopback test passed
[INFO] [B200] Register loopback test passed
[INFO] [b200_impl.cpp:815] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [B200] Setting master clock rate selection to 'automatic'.
[INFO] [b200_impl.cpp:1149] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [B200] Asking for clock rate 16.000000 MHz...
[INFO] [b200_impl.cpp:1162] [B200] Actually got clock rate 16.000000 MHz.
[INFO] [B200] Actually got clock rate 16.000000 MHz.


-- Device identification

driver=b200
hardware=B200
fpga_version=16.0
fw_version=8.0
mboard_id=B200
mboard_name=MyB200
mboard_serial=3113D17
rx0_antenna=RX2
rx0_id=Unknown (0xffff)
rx0_ref_power_key=b2xx_pwr_rx_rx2
rx0_ref_power_serial=3113D17#A
rx0_serial=
rx0_subdev_name=FE-RX1
rx0_subdev_spec=A:A
tx0_antenna=TX/RX
tx0_id=Unknown (0xffff)
tx0_ref_power_key=b2xx_pwr_tx_tx+rx
tx0_ref_power_serial=3113D17#A
tx0_serial=
tx0_subdev_name=FE-TX1
tx0_subdev_spec=A:A


-- Peripheral summary

Channels: 1 Rx, 1 Tx
Timestamps: YES
Clock sources: internal, external, gpsdo
Time sources: none, internal, external, gpsdo
Sensors: ref_locked
* ref_locked (Ref): false unlocked
GPIOs: FP0, RXA, TXA


-- RX Channel 0

Full-duplex: YES
Supports AGC: YES
Stream formats: CS8, CS12, CS16, CF32, CF64
Native format: CS16 [full-scale=32768]
Stream args:
* Samples per packet - The number of samples per packet.
[key=spp, units=samples, default=0, type=int]
* Bus format - The format of samples over the bus.
[key=WIRE, type=string, options=(sc8, sc16)]
* Peak value - The peak value for scaling in complex byte mode.
[key=peak, default=1.0, type=float]
* Receive frame buffer size - The size an individual datagram or frame in bytes.
[key=recv_frame_size, units=bytes, type=int]
* Receive number of buffers - The number of available buffers.
[key=num_recv_frames, units=buffers, type=int]
* Full-scale amplitude - Specifies the full-scale amplitude when using floats (not supported for all devices).
[key=fullscale, default=1.0, type=float]
Antennas: TX/RX, RX2
Corrections: DC removal
Full gain range: [0, 76, 1] dB
PGA gain range: [0, 76, 1] dB
Full freq range: [42, 6008] MHz
RF freq range: [42, 6008] MHz
BB freq range: [-8, 8] MHz
Tune args:
* N divider - Whether the daughterboard tune code should use an integer N divider or fractional N divider (not supported for all devices).
[key=mode_n, type=string, options=(integer, fractional)]
* Integer-N tuning step - The step between valid tunable frequencies when using integer-N tuning (not supported for all devices).
[key=int_n_step, type=float]
Sample rates: 0.03125, 0.0314961, 0.031746, 0.032, 0.0322581, ..., 3.2, 4, 5.33333, 8, 16 MSps
Filter bandwidths: [0.2, 56] MHz
Sensors: temp, rssi, lo_locked
* temp (temp): 34.912285 C
* rssi (RSSI): -50.750000 dB
* lo_locked (LO): true locked


-- TX Channel 0

Full-duplex: YES
Supports AGC: NO
Stream formats: CS8, CS12, CS16, CF32, CF64
Native format: CS16 [full-scale=32768]
Stream args:
* Samples per packet - The number of samples per packet.
[key=spp, units=samples, default=0, type=int]
* Bus format - The format of samples over the bus.
[key=WIRE, type=string, options=(sc8, sc16)]
* Peak value - The peak value for scaling in complex byte mode.
[key=peak, default=1.0, type=float]
* Send frame buffer size - The size an individual datagram or frame in bytes.
[key=send_frame_size, units=bytes, type=int]
* Send number of buffers - The number of available buffers.
[key=num_send_frames, units=buffers, type=int]
* Full-scale amplitude - Specifies the full-scale amplitude when using floats (not supported for all devices).
[key=fullscale, default=1.0, type=float]
* Underflow policy - How the TX DSP should recover from underflow (not supported for all devices).
[key=underflow_policy, type=string, options=(next_burst, next_packet)]
Antennas: TX/RX
Full gain range: [0, 89.75, 0.25] dB
PGA gain range: [0, 89.75, 0.25] dB
Full freq range: [42, 6008] MHz
RF freq range: [42, 6008] MHz
BB freq range: [-8, 8] MHz
Tune args:
* N divider - Whether the daughterboard tune code should use an integer N divider or fractional N divider (not supported for all devices).
[key=mode_n, type=string, options=(integer, fractional)]
* Integer-N tuning step - The step between valid tunable frequencies when using integer-N tuning (not supported for all devices).
[key=int_n_step, type=float]
Sample rates: 0.03125, 0.0314961, 0.031746, 0.032, 0.0322581, ..., 3.2, 4, 5.33333, 8, 16 MSps
Filter bandwidths: [0.2, 56] MHz
Sensors: temp, lo_locked
* temp (temp): 34.912285 C
* lo_locked (LO): true locked

zsh: segmentation fault SoapySDRUtil --probe="driver=uhd"

Ettus USRP X300: LookupError: Path not found in tree: /mboards/0/rx_dsps/0/freq/range

Testing with an Ettus USRP X300 with Firmware Rev 0.929a and internal GPSDO: LC_XO

SoapySDRUtil --probe results in:
Error probing device: LookupError: Path not found in tree: /mboards/0/rx_dsps/0/freq/range

Here is the corresponding output from uhd_usrp_probe:
linux; GNU C++ version 7.2.0; Boost_106501; UHD_003.010.002.000-3-g122bfae1
Detecting internal GPSDO.... Found an internal GPSDO: LC_XO, Firmware Rev 0.929a

ABI compatibility mismatch with UHD library

Hi! While running GQRX with my USRP B200 mini:

SoapySDR detected ABI compatibility mismatch with UHD library. SoapySDR UHD support was build against ABI: 4.3.0, but UHD library reports ABI: 4.4.0 Suggestion: install an ABI compatible version of UHD, or rebuild SoapySDR UHD support against this ABI version.

I'm using a compiled SoapyUHD version from the GitHub repository (at date of 2023-08-31) and the libuhd from my Debian installation:

SoapySDRUtil --info

######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

Lib Version: v0.8.1-gbb33b2d2
API Version: v0.8.200
ABI Version: v0.8-3
Install root: /usr/local
Search path:  /usr/local/lib/SoapySDR/modules0.8-3
Module found: /usr/local/lib/SoapySDR/modules0.8-3/libuhdSupport.so (0.4.1-1f7b6fa)
Available factories... uhd
Available converters...
 -  CF32 -> [CF32, CS16, CS8, CU16, CU8]
 -  CS16 -> [CF32, CS16, CS8, CU16, CU8]
 -  CS32 -> [CS32]
 -   CS8 -> [CF32, CS16, CS8, CU16, CU8]
 -  CU16 -> [CF32, CS16, CS8]
 -   CU8 -> [CF32, CS16, CS8]
 -   F32 -> [F32, S16, S8, U16, U8]
 -   S16 -> [F32, S16, S8, U16, U8]
 -   S32 -> [S32]
 -    S8 -> [F32, S16, S8, U16, U8]
 -   U16 -> [F32, S16, S8]
 -    U8 -> [F32, S16, S8]

SoapySDRUtil --probe="driver=uhd,type=b200"

######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

Probe device driver=uhd,type=b200

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=b200
  hardware=B200mini
  fpga_version=7.0
  fw_version=8.0
  mboard_id=B200mini
  mboard_name=B200mini
  mboard_serial=3277938

etc etc.

apt show libuhd-dev libuhd4.4.0

Package: libuhd-dev
Version: 4.4.0.0+ds1-4
Depends: libuhd4.4.0 (= 4.4.0.0+ds1-4)

etc.etc.

Package: libuhd4.4.0
Version: 4.4.0.0+ds1-4

Does SoapyUHD needs to be upgraded?

Soapy overflow::SoapySDR::Device::readStream timeout!

Describe the bug
if use SoapyUHD for openwebrx. works fine for few minutes, than
data stream stops. i opened a issue at openwebrx but it seems to be more of a problem with soapy.

SDR-Hardware
USRP B210

To Reproduce
It happens after 10 - 60 min. At a sample rate of 4Msps and much earlier using 8Msps .

Installation method

Versions
latest master branch

Log messages
WARNING: Soapy overflow
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!
WARNING: SoapySDR::Device::readStream timeout!

Additional context
I'm not sure where the error is coming from. SoapySDR? SoapyUHD? Or just some miss configuration?

thx a lot!

Logger-related crash when probing USRP B200mini

Given that the crash is in a UHD class, it's possible the issue is there, but this doesn't happen with uhd_usrp_probe, so something different is happening along the way.

ncorgan@lagann:~$ gdb --arg SoapySDRUtil --probe=driver=uhd
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from SoapySDRUtil...
(No debugging symbols found in SoapySDRUtil)
(gdb) run
Starting program: /usr/local/bin/SoapySDRUtil --probe=driver=uhd
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

Probe device driver=uhd

(normal probe output here)

Thread 1 "SoapySDRUtil" received signal SIGSEGV, Segmentation fault.
0x00007fffed6b2a40 in ?? ()
(gdb) bt
#0  0x00007fffed6b2a40 in ?? ()
#1  0x00007ffff758ecb9 in log_resource::~log_resource() () from /usr/local/lib/libuhd.so.4.1.0
#2  0x00007ffff7b538d7 in __run_exit_handlers (status=0, listp=0x7ffff7cf9718 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true, run_dtors=run_dtors@entry=true) at exit.c:108
#3  0x00007ffff7b53a90 in __GI_exit (status=<optimized out>) at exit.c:139
#4  0x00007ffff7b310ba in __libc_start_main (main=0x55555555a020 <main>, argc=2, argv=0x7fffffffe048, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe038)
    at ../csu/libc-start.c:342
#5  0x000055555555c11e in _start ()

Python SoapySDR app stuck every 2nd launch

Hi all,

After last update to UHD 3.11 and PothosSDR-2018.07.20-vc14-x64.exe, console python app is not starting every second run.
Code to reproduce: test.py

import SoapySDR

sdr = SoapySDR.Device({'driver': 'uhd'})
rates = sdr.listSampleRates(SoapySDR.SOAPY_SDR_TX, 0)
print("TX Rates:\n", rates)

Run: python test.py

Output
1st run: all ok
[INFO] [UHD] Win32; Microsoft Visual C++ version 14.0; Boost_106700; UHD_3.11.1.0-0-gad6b0935
[INFO] [b200_impl.cpp:382] [B200] Detected Device: B210
[INFO] [B200] Detected Device: B210
[INFO] [b200_impl.cpp:429] [B200] Operating over USB 3.
...

2nd run: app stuck at the 1st line
[INFO] [UHD] Win32; Microsoft Visual C++ version 14.0; Boost_106700; UHD_3.11.1.0-0-gad6b0935

Nothing more in the output. Ctrl+C does not close the app, needs to restart the console.

Sometimes it happens only after 2-3 launches.

uhd_usrp_probe is not working

Hello
I am trying to connect to my usrp b210 remotely. I can execute without any issue following commands:
uhd_find_devices
SoapySDRUtil --find and --probe
and I can run them locally and remotely. The only problem i am facing right now, is when I run uhd_usrp_probe.
If I run it locally:
Although its works after downloading the required images by executing uhd_images_downloader.py but the SoapSDRUtil --probe is not working anymore and it gives me the following error:
Expected FPGA compatibility number 14 but got 16, in order to fix this i need to download the older version of fpga images from ettus website (version 11), but, now SoapySDRUtil --probe works and if I run uhd_usrp_probe it would return the same error in the reversed version:
Expected FPGA compatibility number 16 but got 14
Now if I run it remotely:
if the server use the latest fpga images downloaded by the python file i will face with same error in the client:

RemoteError: RuntimeError: Expected FPGA compatibility number 14, but got 16:
The FPGA build is not compatible with the host code build.
Please run:
"/usr/lib/x86_64-linux-gnu/uhd/utils/uhd_images_downloader.py"

but if I use the older fpga images in the server i will face with following error in the client:

$uhd_usrp_probe --args="driver=remote,remote=192.168.1.40,remote:type=b200"

linux; GNU C++ version 7.3.0; Boost_106501; UHD_003.010.003.000-0-unknown
[INFO] [UHD] linux; GNU C++ version 7.3.0; Boost_106501; UHD_3.14.0.0-release
-- Detected Device: B210
-- Operating over USB 3.
-- Initialize CODEC control...
-- Initialize Radio control...
-- Performing register loopback test...
-- pass
-- Performing register loopback test...
-- pass
-- Performing CODEC loopback test...
-- pass
-- Performing CODEC loopback test...
-- pass
-- Setting master clock rate selection to 'automatic'.
-- Asking for clock rate 16.000000 MHz...

-- Actually got clock rate 16.000000 MHz.
-- Performing timer loopback test...
-- pass
-- Performing timer loopback test...
-- pass
/
uhd_usrp_probe: /usr/include/boost/smart_ptr/shared_ptr.hpp:734: typename boost::detail::sp_member_access::type boost::shared_ptr::operator->() const [with T = uhd::property_tree; typename boost::detail::sp_member_access::type = uhd::property_tree*]: Assertion `px != 0' failed.
Aborted (core dumped)

Incorrect center RX frequency when using NCO offset

Dear all,

I was trying to transmit and receive BPSK-modulated burst at the same TX and RX frequency, which was set using digital frequency offset (NCO) and I believe I found some bug as it comes to setting center RX frequency in such scenario with USRP devices. Since I am using SoapySDR I am not sure if it is SoapyUHD or UHD bug.

For example, with sampling rate of 16.666667 MHz I was setting the same PLL frequency (say 1455 MHz) and the same NCO frequency offset (say -5 MHz) on TX and RX channels. I was then expecting transmission @1450 MHz and was expecting to receive signal, which (at baseband) will be centered around 0 MHz. This is the result which I actually got with LimeSDR:
spectrum_lime_nco_enabled

But when using any UHD-based device (I have tested USRP B200 mini and USRP N210), the spectrum was shifted in a very strange way:
spectrum_usrp_nco_enabled

I should note that the problem is not on TX side, as I was using another receiver to confirm frequency of actual over-the-air transmission. I also got no errors during configuration of TX and RX channels and they declared using expected offsets successfully. When setting NCO offset to 0 everything looks fine.

For reference, here I tried different NCO offset: +2 MHz, so transmission occurred @1457 MHz, but again received signal in baseband is shifted by about 4 MHz.
time_usrp_nco_enabled_2m

But it does not seem to be any clear dependence, as for NCO offset of +4 MHz (transmission @1459 MHz) received signal in baseband looks like this:
spectrum_usrp_nco_enabled_4m

X310 w/ Twin RX unable to use both channels

Looking over the tickets it seems there's already a desire for dual channel usage with various USRP devices.

With the X310 and one Twin RX card installed, I've yet to see any way to open and use both channels at a time outside of using GNU Radio with a UHD Source block and two channels configured. In this case, the channels are not combined of course, but instead I can open and view 80Mhz wide bandwidth on each channel and within different parts of the spectrum.

I figured if there's some way, say via soapyuhd/soapyremote to open both channels at one time upon first use of the device, maybe somehow applications which use soapy could then be opened twice and allow accessing each stream separately.

I've not yet tried the fix for the rate test described here, #46, but would this be a step in the right direction for soapy to use multiple channels at a time with UHD?

Make failed on ubuntu 16.04

nice project for sdr.

init3@0xroot:~/sdr/SoapyUHD/build$ make
Scanning dependencies of target uhdSupport
[ 25%] Building CXX object CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o
/home/init3/sdr/SoapyUHD/SoapyUHDDevice.cpp:17:33: fatal error: uhd/utils/log_add.hpp: No such file or directory
compilation terminated.
CMakeFiles/uhdSupport.dir/build.make:62: recipe for target 'CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o' failed
make[2]: *** [CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/uhdSupport.dir/all' failed
make[1]: *** [CMakeFiles/uhdSupport.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

is there anybody has the same Error?

getFrequency fails with Python bindings

getFrequency (for RF tunable element) seems to fail with SoapySDR Python bindings. Only SoapyUHD seems to have this problem, every other SoapySDR device I have tried works OK. I can't test this myself, because I don't have USRP device, but one QSpectrumAnalyzer user reported to me this issue xmikos/qspectrumanalyzer#31:

Traceback (most recent call last):
  File "/usr/local/bin/soapy_power", line 9, in <module>
    load_entry_point('soapy-power==1.6.0', 'console_scripts', 'soapy_power')()
  File "/usr/local/lib/python3.4/dist-packages/soapy_power-1.6.0-py3.4.egg/soapypower/__main__.py", line 367, in main
  File "/usr/local/lib/python3.4/dist-packages/soapy_power-1.6.0-py3.4.egg/soapypower/power.py", line 296, in sweep
  File "/usr/local/lib/python3.4/dist-packages/soapy_power-1.6.0-py3.4.egg/soapypower/power.py", line 224, in psd
  File "/usr/local/lib/python3.4/dist-packages/SimpleSoapy-1.4.1-py3.4.egg/simplesoapy.py", line 160, in freq
    return self.device.getFrequency(SoapySDR.SOAPY_SDR_RX, self._channel, 'RF')
  File "/usr/lib/python3/dist-packages/SoapySDR.py", line 695, in getFrequency
    def getFrequency(self, *args): return _SoapySDR.Device_getFrequency(self, *args)
RuntimeError: map::at

Implement new info query API calls

Calls to implement:

  • getFrequencyArgsInfo() - LO offset, integer N, check docs
  • getStreamFormats() - CS8, CS16, CF32, CF64
  • getNativeStreamFormat() - CS16
  • getStreamArgsInfo() - check the docs for well known stream args
  • getSensorInfo() - stash sensor metadata and query it here

CMakeList version update:

  • find_package(SoapySDR "0.4.0" NO_MODULE)

Related issue:

SoapyUHD + CubicSDR + USRP B210: app does not work

Hi.

I have B210, cannot run it with CubicSDR app, that is using SoapyUHD driver. App can detect the receiver, but cannot get data stream from it.

System: Windows 10

Initial receiver settings:
usrp_antennas

CubicSDR log:
SDR enumerator starting.
SoapySDR init..
API Version: v0.6.0
ABI Version: v0.6
Install root: C:\Program Files\PothosSDR
Loading modules...
...
Available factories...airspy, audio, bladerf, hackrf, lime, miri, null, osmosdr, redpitaya, remote, rtlsdr, sdrplay, uhd
-- Loading firmware image: C:\Program Files\UHD\share\uhd\images\usrp_b200_fw.hex...
default_input = True
default_output = True
device_id = 0
...
driver = uhd
label = B210 3113F1D
name = MyB210
product = B210
serial = 3113F1D
type = b200
Make device 3
fpga_version=14.0
fw_version=8.0
mboard_id=B210
mboard_name=MyB210
mboard_serial=3113F1D
rx0_antenna=RX2
rx0_id=Unknown (0xffff)
rx0_serial=
rx0_subdev_name=FE-RX2
rx0_subdev_spec=A:A A:B
rx1_antenna=RX2
rx1_id=Unknown (0xffff)
rx1_serial=
rx1_subdev_name=FE-RX1
rx1_subdev_spec=A:A A:B
tx0_antenna=TX/RX
tx0_id=Unknown (0xffff)
tx0_serial=
tx0_subdev_name=FE-TX2
tx0_subdev_spec=A:A A:B
tx1_antenna=TX/RX
tx1_id=Unknown (0xffff)
tx1_serial=
tx1_subdev_name=FE-TX1
tx1_subdev_spec=A:A A:B

Reporting enumeration complete.
SDR enumerator done.
SDR thread starting.
device init()
Device Stream MTU: 0
starting readLoop()
SDRThread::readStream(): 2. SoapySDR read failed with code: -4
SDRThread::readStream(): 3.1 iqDataOutQueue output queue is full, discard processing of the batch...
SDRThread::readStream(): 2. SoapySDR read failed with code: -3
SDRThread::readStream(): 3.1 iqDataOutQueue output queue is full, discard processing of the batch...
SDRThread::readStream(): 2. SoapySDR read failed with code: -4
SDRThread::readStream(): 3.1 iqDataOutQueue output queue is full, discard processing of the batch...
...
SDRThread::readStream(): 2. SoapySDR read failed with code: -3
SDRThread::readStream(): 3.1 iqDataOutQueue output queue is full, discard processing of the batch...
readLoop() ended.
device deinit()
SDR thread done.

As CubicSDR developers told, getStreamMTU cannot return 0, that may be an issue.

Other receivers (SDRPlay, RTL-SDR) works correct.

Can it be fixed?
Thanks.

PS: I was able to launch the app with this settings:
cubuc_uhd

What settings are optimal for USRP?

Update to work with latest uhd master logging API changes

Build fails against current uhd source with missing msg.hpp:

src/SoapyUHD/SoapyUHDDevice.cpp:14:29: fatal error: uhd/utils/msg.hpp: No such file or directory

Have to go back to uhd 3.9.5 to get the missing /usr/local/include/uhd/utils/msg.hpp

Not able to select clock source in device string

On a b200mini, running uhd-host 4.1.0 and also tried 3.5.0, soapy 0.7 and 0.8

When using the UHD source in gnuradio and selecting external 10MHz reference I get the two corresponding leds to light and actually lock to that ref.

I have looked in the source and saw that clock_source was a thing, but unable to make it work. I have tried a lot of other suggestions and variations on this key=value and never got it to work.

I'm trying driver=uhd,recv_frame_size=16360,clock_source=external and the frame size is working, but clock source is not.

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=b200
  hardware=B200mini
  fpga_version=7.0
  fw_version=8.0
  mboard_id=B200mini
  mboard_name=B200mini
  mboard_serial=32528B5
  rx0_antenna=RX2
  rx0_id=Unknown (0xffff)
  rx0_ref_power_key=b2xxmini_pwr_rx_rx2
  rx0_ref_power_serial=32528B5#A
  rx0_serial=
  rx0_subdev_name=FE-RX1
  rx0_subdev_spec=A:A
  tx0_antenna=TX/RX
  tx0_id=Unknown (0xffff)
  tx0_ref_power_key=b2xxmini_pwr_tx_tx+rx
  tx0_ref_power_serial=32528B5#A
  tx0_serial=
  tx0_subdev_name=FE-TX1
  tx0_subdev_spec=A:A

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 1 Tx
  Timestamps: YES
  Clock sources: internal, external
  Time sources: none, internal, external
  Sensors: ref_locked
     * ref_locked (Ref): false unlocked
  GPIOs: FP0, RXA, TXA

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Supports AGC: YES
  Stream formats: CS8, CS12, CS16, CF32, CF64
  Native format: CS16 [full-scale=32768]
  Stream args:
     * Samples per packet - The number of samples per packet.
       [key=spp, units=samples, default=0, type=int]
     * Bus format - The format of samples over the bus.
       [key=WIRE, type=string, options=(sc8, sc16)]
     * Peak value - The peak value for scaling in complex byte mode.
       [key=peak, default=1.0, type=float]
     * Receive frame buffer size - The size an individual datagram or frame in bytes.
       [key=recv_frame_size, units=bytes, type=int]
     * Receive number of buffers - The number of available buffers.
       [key=num_recv_frames, units=buffers, type=int]
  Antennas: TX/RX, RX2
  Corrections: DC removal
  Full gain range: [0, 76, 1] dB
    PGA gain range: [0, 76, 1] dB
  Full freq range: [42, 6008] MHz
    RF freq range: [42, 6008] MHz
    BB freq range: [-8, 8] MHz
  Tune args:
     * LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
       [key=OFFSET, units=Hz, default=0.0, type=float, range=[-8e+06, 8e+06, 0.00372529]]
     * BB - Specify a specific value for this component or IGNORE to skip tuning it.
       [key=BB, units=Hz, default=DEFAULT, type=float, range=[-8e+06, 8e+06, 0.00372529], options=(DEFAULT, IGNORE)]
  Sample rates: 0.03125, 0.0314961, 0.031746, 0.032, 0.0322581, ..., 3.2, 4, 5.33333, 8, 16 MSps
  Filter bandwidths: [0.2, 56] MHz
  Sensors: temp, rssi, lo_locked
     * temp (temp): 47.192986 C
     * rssi (RSSI): -50.750000 dB
     * lo_locked (LO): true locked

----------------------------------------------------
-- TX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Supports AGC: NO
  Stream formats: CS8, CS12, CS16, CF32, CF64
  Native format: CS16 [full-scale=32768]
  Stream args:
     * Samples per packet - The number of samples per packet.
       [key=spp, units=samples, default=0, type=int]
     * Bus format - The format of samples over the bus.
       [key=WIRE, type=string, options=(sc8, sc16)]
     * Peak value - The peak value for scaling in complex byte mode.
       [key=peak, default=1.0, type=float]
     * Send frame buffer size - The size an individual datagram or frame in bytes.
       [key=send_frame_size, units=bytes, type=int]
     * Send number of buffers - The number of available buffers.
       [key=num_send_frames, units=buffers, type=int]
  Antennas: TX/RX
  Full gain range: [0, 89.75, 0.25] dB
    PGA gain range: [0, 89.75, 0.25] dB
  Full freq range: [42, 6008] MHz
    RF freq range: [42, 6008] MHz
    BB freq range: [-8, 8] MHz
  Tune args:
     * LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
       [key=OFFSET, units=Hz, default=0.0, type=float, range=[-8e+06, 8e+06, 0.00372529]]
     * BB - Specify a specific value for this component or IGNORE to skip tuning it.
       [key=BB, units=Hz, default=DEFAULT, type=float, range=[-8e+06, 8e+06, 0.00372529], options=(DEFAULT, IGNORE)]
  Sample rates: 0.03125, 0.0314961, 0.031746, 0.032, 0.0322581, ..., 3.2, 4, 5.33333, 8, 16 MSps
  Filter bandwidths: [0.2, 56] MHz
  Sensors: temp, lo_locked
     * temp (temp): 47.777779 C
     * lo_locked (LO): true locked

MIN_GAIN_STEP too restrictive

The MIN_GAIN_STEP defined in UHDSoapyDevice.cpp is set to 0.1, which causes rounding errors when reporting the gain range and step size for my particular device. My device is based on the AD9371, which has an attenuation (defined as negative gain) that runs from -41.95 dB to 0.0 dB in 0.05 dB increments.

I would set it to 0.05 myself, but I am afraid of unforeseen issues and breaking things in other modules.

add boost to the required deps

zero@gato soapybladerf % lddtree /usr/lib64/uhd/modules/libsoapySupport.so                                                                                                                         (git)-[master] 
/usr/lib64/uhd/modules/libsoapySupport.so (interpreter => None)
    libuhd.so.003 => /usr/lib64/libuhd.so.003
        libboost_date_time.so.1.62.0 => /usr/lib64/libboost_date_time.so.1.62.0
        libboost_filesystem.so.1.62.0 => /usr/lib64/libboost_filesystem.so.1.62.0
        libboost_regex.so.1.62.0 => /usr/lib64/libboost_regex.so.1.62.0
        libboost_thread.so.1.62.0 => /usr/lib64/libboost_thread.so.1.62.0
        libboost_serialization.so.1.62.0 => /usr/lib64/libboost_serialization.so.1.62.0
        librt.so.1 => /lib64/librt.so.1
        liborc-0.4.so.0 => /usr/lib64/liborc-0.4.so.0
        libusb-1.0.so.0 => /lib64/libusb-1.0.so.0
            libudev.so.1 => /lib64/libudev.so.1
                libresolv.so.2 => /lib64/libresolv.so.2
                libcap.so.2 => /lib64/libcap.so.2
                    libattr.so.1 => /lib64/libattr.so.1
        libpthread.so.0 => /lib64/libpthread.so.0
        libdl.so.2 => /lib64/libdl.so.2
        libm.so.6 => /lib64/libm.so.6
        ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
    libSoapySDR.so.0.6-dev => /usr/lib64/libSoapySDR.so.0.6-dev
    libboost_system.so.1.62.0 => /usr/lib64/libboost_system.so.1.62.0
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/libstdc++.so.6
    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/libgcc_s.so.1
    libc.so.6 => /lib64/libc.so.6

Contradictory license information

The source files have SPDX-License-Identifier: BSL-1.0, yet there is a COPYING with the GPL-3 text and README.md and debian/copyright also claim the source is under GPL-3. Please clarify.

The CMakeLists.txt claims to be part of the GNU Radio project and has the Free Software Foundation as the sole copyright holder, but that is a minor issue.

Issue at amke step while building SoapyUHD

Hi,

I have an issue at make step:

$ make
[ 25%] Linking CXX shared module libuhdSupport.so
CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o: In function `find_uhd(std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)':
SoapyUHDDevice.cpp:(.text+0xae0): undefined reference to `uhd::device::find(uhd::device_addr_t const&, uhd::device::device_filter_t)'
CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o: In function `SoapyUHDDevice::getFrequencyRange(int, unsigned int, std::string const&) const':
SoapyUHDDevice.cpp:(.text._ZNK14SoapyUHDDevice17getFrequencyRangeEijRKSs[_ZNK14SoapyUHDDevice17getFrequencyRangeEijRKSs]+0x84): undefined reference to `uhd::device::get_tree() const'
CMakeFiles/uhdSupport.dir/SoapyUHDDevice.cpp.o: In function `SoapyUHDDevice::getHardwareInfo() const':
SoapyUHDDevice.cpp:(.text._ZNK14SoapyUHDDevice15getHardwareInfoEv[_ZNK14SoapyUHDDevice15getHardwareInfoEv]+0x1440): undefined reference to `uhd::device::get_tree() const'
collect2: error: ld returned 1 exit status
CMakeFiles/uhdSupport.dir/build.make:101: recipe for target 'libuhdSupport.so' failed
make[2]: *** [libuhdSupport.so] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/uhdSupport.dir/all' failed
make[1]: *** [CMakeFiles/uhdSupport.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

Also I installed SoapyUtil and the device is detected:

$ SoapySDRUtil --probe="driver=novena"       

######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device driver=novena
GPIO122: set to 1
GPIO122: set to 1
spi mode: 0x0
bits per word: 8
max speed: 4000000 Hz (4000 KHz)
[INFO] Connected to Board on SPI | Firmware: ?  Device: UNSPECIFIED ID  Protocol: ?

[INFO] LMS6002: ver=0x2, rev=0x0

----------------------------------------------------
-- Device identification
----------------------------------------------------
  driver=NOVENA-RF
  hardware=NOVENA

----------------------------------------------------
-- Peripheral summary
----------------------------------------------------
  Channels: 1 Rx, 1 Tx
  Timestamps: YES

----------------------------------------------------
-- RX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Supports AGC: NO
  Native format: CS16 [full-scale=32768]
  Antennas: LB, HB, BB
  Full gain range: [0, 66] dB
    LNA gain range: [0, 6] dB
    VGA1 gain range: [0, 30] dB
    VGA2 gain range: [0, 30] dB
  Full freq range: [292.32, 3807.68] MHz
    RF freq range: [300, 3800] MHz
    BB freq range: [-7.68, 7.68] MHz
  Tune args:
     * LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
       [key=OFFSET, units=Hz, default=0.0, type=float, range=[-7.68e+06, 7.68e+06]]
     * BB - Specify a specific value for this component or IGNORE to skip tuning it.
       [key=BB, units=Hz, default=DEFAULT, type=float, range=[-7.68e+06, 7.68e+06], options=(DEFAULT, IGNORE)]
  Sample rates: 0.48, 0.96, 1.92, 3.84, 7.68, 15.36 MSps
  Filter bandwidths: 28, 20, 14, 12, 10, ..., 3, 2.75, 2.5, 1.75, 1.5 MHz

----------------------------------------------------
-- TX Channel 0
----------------------------------------------------
  Full-duplex: YES
  Supports AGC: NO
  Native format: CS16 [full-scale=32768]
  Antennas: HB, BB
  Full gain range: [0, 56] dB
    VGA2 gain range: [0, 25] dB
    VGA1 gain range: [-35, -4] dB
  Full freq range: [292.32, 3807.68] MHz
    RF freq range: [300, 3800] MHz
    BB freq range: [-7.68, 7.68] MHz
  Tune args:
     * LO Offset - Tune the LO with an offset and compensate with the baseband CORDIC.
       [key=OFFSET, units=Hz, default=0.0, type=float, range=[-7.68e+06, 7.68e+06]]
     * BB - Specify a specific value for this component or IGNORE to skip tuning it.
       [key=BB, units=Hz, default=DEFAULT, type=float, range=[-7.68e+06, 7.68e+06], options=(DEFAULT, IGNORE)]
  Sample rates: 0.48, 0.96, 1.92, 3.84, 7.68, 15.36 MSps
  Filter bandwidths: 28, 20, 14, 12, 10, ..., 3, 2.75, 2.5, 1.75, 1.5 MHz

An idea about how to fix this ?

soapyuhd 0.4.0 can't compile against uhd 4.0.0.0

This compiles fine against older uhd, but doesn't appear to quite be compatible with 4.0.0.0

cmake -C /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_common_config.cmake -G Unix Makefiles -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_toolchain.cmake  /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0
loading initial cache file /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/gentoo_common_config.cmake
-- The CXX compiler identification is GNU 9.3.0
-- The C compiler identification is GNU 9.3.0
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/x86_64-pc-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/x86_64-pc-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: x86_64-pc-linux-gnu-pkg-config (found version "0.29.2") 
-- Found UHD: /usr/lib64/libuhd.so  
-- UHD root directory: /usr
-- UHD include directories: /usr/include
-- UHD libraries: /usr/lib64/libuhd.so
-- Checking uhd::device::register_device() API...
--   Reading /usr/include/uhd/device.hpp...
--   has filter API
-- Checking uhd::usrp::multi_usrp::set_rx_agc() API...
--   Reading /usr/include/uhd/usrp/multi_usrp.hpp...
--   has set_rx_agc() API
-- Checking uhd::property::set_publisher() API...
--   Reading /usr/include/uhd/property_tree.hpp...
--   has set_publisher() API
--   use log.hpp for logging
-- Configuring Boost C++ Libraries...
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found Boost: /usr/include (found version "1.72.0") found components: thread system chrono date_time atomic 
-- Boost include directories: /usr/include
-- Boost library directories: /usr/lib64
-- Boost libraries: /usr/lib64/libboost_thread-mt.so;-lpthread;/usr/lib64/libboost_system-mt.so;/usr/lib64/libboost_chrono-mt.so;/usr/lib64/libboost_date_time-mt.so;/usr/lib64/libboost_atomic-mt.so
-- Module uhdSupport configured with version: 0.4.0
-- Using install prefix: /usr
-- <<< Gentoo configuration >>>
Build type      Gentoo
Install path    /usr
Compiler flags:
C               -O3 -march=native -mtune=native -pipe -frecord-gcc-switches
C++             -O3 -march=native -mtune=native -pipe -frecord-gcc-switches
Linker flags:
Executable      -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0
Module          -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--no-undefined
Shared          -Wl,-O1 -Wl,--as-needed -Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--no-undefined

-- Configuring done
-- Generating done
-- Build files have been written to: /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build
>>> Source configured.
>>> Compiling source in /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 ...
>>> Working in BUILD_DIR: "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build"
make -j1 VERBOSE=1 
/usr/bin/cmake -S/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 -B/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make -f CMakeFiles/soapySupport.dir/build.make CMakeFiles/soapySupport.dir/depend
make[2]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
cd /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0 /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/DependInfo.cmake --color=
Dependee "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/DependInfo.cmake" is newer than depender "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/depend.internal".
Dependee "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build/CMakeFiles/soapySupport.dir/depend.internal".
Scanning dependencies of target soapySupport
make[2]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make -f CMakeFiles/soapySupport.dir/build.make CMakeFiles/soapySupport.dir/build
make[2]: Entering directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
[ 20%] Building CXX object CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o
/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_ALL_DYN_LINK -DUHD_HAS_DEVICE_FILTER -DUHD_HAS_SET_PUBLISHER -DUHD_HAS_SET_RX_AGC -DsoapySupport_EXPORTS -I/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0   -DNDEBUG -O3 -march=native -mtune=native -pipe -frecord-gcc-switches -fPIC   -Wall -Wextra -std=gnu++11 -o CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o -c /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp: In member function ‘virtual uhd::rx_streamer::sptr UHDSoapyDevice::get_rx_stream(const uhd::stream_args_t&)’:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::rx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::rx_streamer>’} and ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’})
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::rx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘const boost::weak_ptr<uhd::rx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::rx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘boost::weak_ptr<uhd::rx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::rx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:725:62: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  725 |     for(const size_t ch : args.channels) _rx_streamers[ch] = stream;
      |                                                              ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::rx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::rx_streamer>’} and ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’})
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::rx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘const boost::weak_ptr<uhd::rx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::rx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} to ‘boost::weak_ptr<uhd::rx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::rx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::rx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:726:51: note:   ‘uhd::rx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::rx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  726 |     if (args.channels.empty()) _rx_streamers[0] = stream;
      |                                                   ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp: In member function ‘virtual uhd::tx_streamer::sptr UHDSoapyDevice::get_tx_stream(const uhd::stream_args_t&)’:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::tx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::tx_streamer>’} and ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’})
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::tx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘const boost::weak_ptr<uhd::tx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::tx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘boost::weak_ptr<uhd::tx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::tx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:865:62: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  865 |     for(const size_t ch : args.channels) _tx_streamers[ch] = stream;
      |                                                              ^~~~~~
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: error: no match for ‘operator=’ (operand types are ‘std::map<long unsigned int, boost::weak_ptr<uhd::tx_streamer> >::mapped_type’ {aka ‘boost::weak_ptr<uhd::tx_streamer>’} and ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’})
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<T>&) [with T = uhd::tx_streamer]’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:49:44: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘const boost::weak_ptr<uhd::tx_streamer>&’
   49 |     weak_ptr & operator=( weak_ptr const & r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~~~~~~^
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:16: note: candidate: ‘boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<T>&&) [with T = uhd::tx_streamer]’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:116:39: note:   no known conversion for argument 1 from ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} to ‘boost::weak_ptr<uhd::tx_streamer>&&’
  116 |     weak_ptr & operator=( weak_ptr && r ) BOOST_SP_NOEXCEPT
      |                           ~~~~~~~~~~~~^
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::weak_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  160 |     weak_ptr & operator=( weak_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:160:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::weak_ptr<Y>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(boost::weak_ptr<Y>&&) [with Y = Y; T = uhd::tx_streamer]’
  173 |     weak_ptr & operator=( weak_ptr<Y> && r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:173:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘boost::weak_ptr<Y>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
In file included from /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/enable_shared_from_this.hpp:16,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:18,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/uhd/utils/log.hpp:12,
                 from /var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:23:
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note: candidate: ‘template<class Y> boost::weak_ptr<T>& boost::weak_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = uhd::tx_streamer]’
  182 |     weak_ptr & operator=( shared_ptr<Y> const & r ) BOOST_SP_NOEXCEPT
      |                ^~~~~~~~
/usr/include/boost/smart_ptr/weak_ptr.hpp:182:16: note:   template argument deduction/substitution failed:
/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/SoapyUHD-soapy-uhd-0.4.0/UHDSoapyDevice.cpp:866:51: note:   ‘uhd::tx_streamer::sptr’ {aka ‘std::shared_ptr<uhd::tx_streamer>’} is not derived from ‘const boost::shared_ptr<X>’
  866 |     if (args.channels.empty()) _tx_streamers[0] = stream;
      |                                                   ^~~~~~
make[2]: *** [CMakeFiles/soapySupport.dir/build.make:63: CMakeFiles/soapySupport.dir/UHDSoapyDevice.cpp.o] Error 1
make[2]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/soapySupport.dir/all] Error 2
make[1]: Leaving directory '/var/tmp/portage/net-wireless/soapyuhd-0.4.0/work/soapyuhd-0.4.0_build'
make: *** [Makefile:141: all] Error 2

Method getBandwidthRange returns TX for SOAPY_SDR_RX

if (dir == SOAPY_SDR_RX) return metaRangeToRangeList(_dev->get_tx_bandwidth_range(channel));
This should be:
if (dir == SOAPY_SDR_RX) return metaRangeToRangeList(_dev->get_rx_bandwidth_range(channel));

With my X300 I do not have an TX channels so the result is an exception is thrown that is not handled by the SoapSDRUtil causing a core dump.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.