pothosware / SoapyUHD

Soapy SDR plugins for UHD supported SDR devices
https://github.com/pothosware/SoapyUHD/wiki
GNU General Public License v3.0
55 stars 29 forks source link

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

Closed mozoho77 closed 5 years ago

mozoho77 commented 5 years ago

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

guruofquality commented 5 years ago

I see the limesdr mini, so everything seems good to me

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

This is SoapyAudio opening or searching audio device. libjack must have been one of those options compiled into rtadio, so you have options when you configure SoapyAudio as well. If you arent explicit about what device, the audio device is one of the possible devices so long as SoapyAudio is installed. And I dont have control over what verbose comes out. Happy to have a patch if its something that should be fixed though. Looks like it is working, hence devices 0 and 1.

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

The discovery protocol for SoapyRemote (SSDP) cant join the multi-cast group, fortunately there is another protocol based around MDNS and avahi which is another compile option if you need it. In any case, this seems like a network configuration issue. I would need to know more about the network config to speculate.

mozoho77 commented 5 years ago

It fixed the error but i still have this problem below. I tried using OpenUSRP with no luck Tell me what data is missing?

/root/OpenUSRP/limesdr_impl.cpp:127:34: error: ‘const struct lime::DeviceInfo’ has no member named ‘addrsLMS7002M’

OpenUSRP

root@debian:~/OpenUSRP/build# cd … root@debian:~/OpenUSRP# rm -rf build root@debian:~/OpenUSRP# mkdir build && cd build && cmake … – The CXX compiler identification is GNU 6.3.0 – The C compiler identification is GNU 6.3.0 – Check for working CXX compiler: /usr/bin/c++ – Check for working CXX compiler: /usr/bin/c++ – 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/cc – Check for working C compiler: /usr/bin/cc – works – Detecting C compiler ABI info – Detecting C compiler ABI info - done – Detecting C compile features – Detecting C compile features - done – Build type not specified: defaulting to release. – Found PkgConfig: /usr/bin/pkg-config (found version “0.29”) – Checking for module ‘uhd’ – Found uhd, version 003.009.005-0-unknown – Found UHD: /usr/lib/i386-linux-gnu/libuhd.so – UHD root directory: /usr – UHD include directories: /usr/include – UHD libraries: /usr/lib/i386-linux-gnu/libuhd.so – Checking uhd::device::register_device() API… – Reading /usr/include/uhd/device.hpp… – has filter API – Checking uhd::property::set_publisher() API… – Reading /usr/include/uhd/property_tree.hpp… – missing set_publisher() API – Found LIMESUITE: /usr/local/lib/libLimeSuite.so – LimeSuite include directories: /usr/local/include/lime – LimeSuite libraries: /usr/local/lib/libLimeSuite.so – Configuring Boost C++ Libraries… – Looking for pthread.h – Looking for pthread.h - found – Looking for pthread_create – Looking for pthread_create - not found – 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 – Boost version: 1.62.0 – Found the following Boost libraries: – thread – system – atomic – chrono – date_time – Boost include directories: /usr/include – Boost library directories: /usr/lib/i386-linux-gnu – Boost libraries: /usr/lib/i386-linux-gnu/libboost_thread.so;/usr/lib/i386-linux-gnu/libboost_system.so;/usr/lib/i386-linux-gnu/libboost_atomic.so;/usr/lib/i386-linux-gnu/libboost_chrono.so;/usr/lib/i386-linux-gnu/libboost_date_time.so;/usr/lib/i386-linux-gnu/libpthread.so – Configuring done – Generating done – Build files have been written to: /root/OpenUSRP/build root@debian:~/OpenUSRP/build# ls CMakeCache.txt CMakeFiles cmake_install.cmake CTestTestfile.cmake Makefile root@debian:~/OpenUSRP/build# make Scanning dependencies of target OpenUSRP [ 33%] Building CXX object CMakeFiles/OpenUSRP.dir/limesdr_impl.cpp.o /root/OpenUSRP/limesdr_impl.cpp: In constructor ‘limesdr_impl::limesdr_impl(const lime::ConnectionHandle&, const uhd::device_addr_t&)’: /root/OpenUSRP/limesdr_impl.cpp:127:34: error: ‘const struct lime::DeviceInfo’ has no member named ‘addrsLMS7002M’ const size_t numRFICs = devInfo.addrsLMS7002M.size(); ^~~~~ CMakeFiles/OpenUSRP.dir/build.make:62: recipe for target ‘CMakeFiles/OpenUSRP.dir/limesdr_impl.cpp.o’ failed make[2]: [CMakeFiles/OpenUSRP.dir/limesdr_impl.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target ‘CMakeFiles/OpenUSRP.dir/all’ failed make[1]: [CMakeFiles/OpenUSRP.dir/all] Error 2 Makefile:138: recipe for target ‘all’ failed make: *** [all] Error 2 root@debian:~/OpenUSRP/build#

And this:

root@debian:~/OpenUSRP/build# root@debian:~/OpenUSRP/build# which SoapySDR root@debian:~/OpenUSRP/build# whereis SoapySDR SoapySDR: /usr/local/lib/SoapySDR /usr/include/SoapySDR root@debian:~/OpenUSRP/build# whereis SoapyUHD SoapyUHD: root@debian:~/OpenUSRP/build# whereis uhd uhd: /usr/lib/uhd /usr/include/uhd.h /usr/include/uhd root@debian:~/OpenUSRP/build# uhd --version -su: uhd: command not found root@debian:~/OpenUSRP/build# SoapyUHD --version -su: SoapyUHD: command not found root@debian:~/OpenUSRP/build# SoapyUHD -^C root@debian:~/OpenUSRP/build# LimeUtil --find

[LimeSDR Mini, media=USB 2.0, module=FT601, addr=xserial=x]

root@debian:~/OpenUSRP/build# 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

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

Device Address: default_input: True default_output: False 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

root@debian:~/OpenUSRP/build#

SoapyUHD

:1 (INCLUDE_SUBDIRECTORY): Unknown CMake command “INCLUDE_SUBDIRECTORY”.

CMake Warning (dev) in CMakeLists.txt: No cmake_minimum_required command is present. A line of code such as

cmake_minimum_required(VERSION 3.7)

should be added at the top of the file. The version specified may be lower if you wish to support older CMake versions for this project. For more information run “cmake --help-policy CMP0000”. This warning is for project developers. Use -Wno-dev to suppress it.

– Configuring incomplete, errors occurred!

guruofquality commented 5 years ago

/root/OpenUSRP/limesdr_impl.cpp:127:34: error: ‘const struct lime::DeviceInfo’ has no member named ‘addrsLMS7002M’

It doesnt look like OpenUSRP is keeping up the API changes in LimeSuite. You should give them a patch

My hope is that SoapyUHD project (and using Lime SoapySDR bindings) achieves the same goal, and its something that I actively maintain. Just my 2 cents :-)

mozoho77 commented 5 years ago

Are you saying that you have a path for that?

guruofquality commented 5 years ago

Are you saying that you have a path for that?

Not sure what you mean. I maintain projects onhttps://github.com/pothosware/, so if there is an issue to report or pull request I am happy to hear about it.

guruofquality commented 5 years ago

Looks like this isnt a SoapyUHD issue, but please open an issue if something comes up. Thanks!

velichkov commented 5 years ago

Hi @guruofquality,

If you arent explicit about what device, the audio device is one of the possible devices so long as SoapyAudio is installed.

Is it possible to exclude/ignore a given driver (the audio in this case) using some args or an environment variable for example? Or is it possible to somehow reorder the devices so the audio is not the first (default) one.

Most of the gr-gsm utilities can't really use the audio device so it will be good if we are able to exclude/ignore it as it's a bit inconvenient to always have to specify the device in the args when having the SoapyAudio module installed.

guruofquality commented 5 years ago

There are ways to filter devices, so for example if you only want devices from a particular driver "driver=lime", you can also select for devices within a driver by serial, so "driver=lime, serial=123XYZ". But there is no way to blacklist a particular driver at present.