Coder Social home page Coder Social logo

pothosware / soapyosmo Goto Github PK

View Code? Open in Web Editor NEW
15.0 23.0 4.0 448 KB

Soapy SDR plugins for Osmo supported SDR devices

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

License: GNU General Public License v3.0

C++ 51.13% C 0.53% CMake 10.21% Python 38.09% XSLT 0.05% Shell 0.01%
osmosdr gr-osmosdr sdr soapysdr gnuradio pothos

soapyosmo's Introduction

soapyosmo's People

Contributors

cjcliffe avatar guruofquality avatar

Stargazers

 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

soapyosmo's Issues

problem with return values in GrOsmoSDRStreamer::write

I think that I've found a problem in GrOsmoSDRStreamer::write. It's the if (ret == 0) ... condition on line 66 in GrOsmoSDRInterface.hpp:
https://github.com/pothosware/SoapyOsmo/blob/master/GrOsmoSDRInterface.hpp#L66

If I'm not mistaken it's normal for a sink block to return 0 since it does not produce any samples (number of consumed samples is returned via _consumed_total).

I have a sink block (new version of redpitaya_sink_c) that returns 0 and works with GNU Radio but does not work with Pothos. When I modify this block to return noutput_items, it works with Pothos but does not work with GNU Radio.

SoapySDR has issues with HackRF

This issue is unique to SoapySDR, other gr-osmosdr based tools like osmocom_fft work fine.

env LIBUSB_DEBUG=3 SoapySDRUtil --probe                                      ‹soapysdr-support*› [08:24:04] 
######################################################
## Soapy SDR -- the SDR abstraction library
######################################################

Probe device 
libusb: warning [darwin_cache_device_descriptor] could not retrieve device descriptor 05ac:8510: device not responding (e00002ed). skipping device
Using HackRF One with firmware 2015.07.2 
libusb: error [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access
Error probing device: Failed to open HackRF device (-1000) HACKRF_ERROR_LIBUSB

Add FCD support

Would be nice ot have funcube dongle also supported by SoapyOsmo.

I am trying to use SoapyOsmo&Remote for having a small ARM system running with the FCD attached at a good RF location and streaming the data over the netowrk to my main computer.
But unfortunately the fcd is not yet supported by SoapyOsmo/

RF Space build failure on MSVC

Currently RF Space support is disabled in the PothosSDR windows installer. The gr-osmosdr rfspace blocks have some network API incompatibilities that need to be resolved:

  • ifdef for winsock headers vs unix headers
  • replace close(sock) with closesocket(sock)
    • provide #define closesocket(s) close(s) macro for unix
  • Call WSAStartup()

The changes can also be up-streamed to gr-osmosdr official repository. I have no way to test these changes other than getting the module to compile; so if you are interested in RF space support in the Pothos SDR environment please let us know.

Cross platform network includes for reference: https://github.com/pothosware/SoapyRemote/blob/master/common/SoapySocketDefs.in.hpp

Feature request: support libmirisdr-4 (modern fork of libmirisdr-2 / libmirisdr-3 with SDRplay support)

Hello,

would it be possible to support libmirisdr-4 library? It is actively developed fork of libmirisdr-2 / libmirisdr-3-bsz with direct support of SDRplay through a "flavour" option in the open function (this is also reason why build of SoapyOsmo fails with libmirisdr-4).

libmirisdr-4 is used by SDRangel app (similar to GQRX or CubicSDR) for SDRplay support. On my laptop (Lenovo ThinkPad 13, Intel Core i5 Skylake platform) SoapySDRplay (and generally everything which uses proprietary libsdrplay library) fails to read samples and according to SDRplay support it is known issue with some USB 3 drivers (my laptop doesn't have USB 2-only ports). But SDRangel with libmirisdr-4 works really great.

Maybe the best option would be separate SoapyMiriSDR driver, same as like SoapyRTLSDR and SoapyAirspy has been separated. It would be great because 1.) it is not so fragile as libsdrplay (works on more hardware configurations) and 2.) it is open source and therefore can be distributed without any problems.

Btw. just for the reference there is build error when using libmirisdr-4:

/home/mikos/temp/soapyosmo-git/gr-osmosdr/lib/miri/miri_source_c.cc: In constructor 'miri_source_c::miri_source_c(const string&)':
/home/mikos/temp/soapyosmo-git/gr-osmosdr/lib/miri/miri_source_c.cc:119:40: error: invalid conversion from 'unsigned int' to 'mirisdr_hw_flavour_t' [-fpermissive]
   ret = mirisdr_open( &_dev, dev_index );
                                        ^
/home/mikos/temp/soapyosmo-git/gr-osmosdr/lib/miri/miri_source_c.cc:119:40: error: too few arguments to function 'int mirisdr_open(mirisdr_dev_t**, mirisdr_hw_flavour_t, uint32_t)'
In file included from /home/mikos/temp/soapyosmo-git/gr-osmosdr/lib/miri/miri_source_c.cc:41:0:
/usr/include/mirisdr.h:59:17: note: declared here
 MIRISDR_API int mirisdr_open (mirisdr_dev_t **p, mirisdr_hw_flavour_t hw_flavour, uint32_t index);
                 ^~~~~~~~~~~~
make[2]: *** [CMakeFiles/miriSupport.dir/build.make:63: CMakeFiles/miriSupport.dir/gr-osmosdr/lib/miri/miri_source_c.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/miriSupport.dir/all] Error 2
make: *** [Makefile:139: all] Error 2

Support stream args in GrOsmoSDR

This is more of an issue for the soapy support in GrOsmoSDR, which is a different but related project. Its just easier to track it here. The GrOsmoSDR API doesn't support stream args, but many of the support modules make use of them.

The simple work around is to stash the device args provided by the user and pass them into setupStream() -- that way GrOsmoSDR users can get full use of the stream arguments through the existing API and any GrOsmoSDR command line tools that only take the device args.

Conflicts with other Soapy modules

SoapyOsmo seems to conflict with other Soapy modules.

SoapyOsmo:

  • libairspySupport.so
  • libhackrfSupport.so
  • libosmosdrSupport.so
  • librfspaceSupport.so
  • librtlSupport.so

SoapyAirspy:

  • libairspySupport.so

SoapyHackRF:

  • libHackRFSupport.so

SoapyRTLSDR:

  • librtlsdrSupport.so

Both SoapyOsmo and SoapyAirspy provide libairspySupport.so. SoapyOsmo also provides dynamic libraries for other devices but they don't conflict as they have slighter different names. I assume SoapyOsmo needs a SoapySDR module for each device it supports, but why not call them something like libOsmo{Airspy,HackRF,RFSpacem,RtlSdr}Support.so?

cannot find SoapySDR library in /usr/local/lib64

I have the SoarpySDR lib in /usr/lib64 but it tries to look for it in a different path

I am building this with the following command:
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLIB_INSTALL_DIR:PATH=lib64 -DLIB_SUFFIX=64 -DUSE_OSMO_RTLSDR=ON ..
and I get this error:

-- Build type not specified: defaulting to release.
CMake Error at /usr/local/share/cmake/SoapySDR/SoapySDRConfig.cmake:161 (message):
  cannot find SoapySDR library in /usr/local/lib64
Call Stack (most recent call first):
  CMakeLists.txt:42 (find_package)


-- Configuring incomplete, errors occurred!

(Request) Possibly support new bladeRF features

I was thinking how best to go about trying to get Soapy to account for changes Nuand made to gr-osmosdr. I suppose the best route would be for Soapy bladeRF to account for changes, but perhaps this SoapyOsmo may present an easy way for the time being.

Have a look here,
https://github.com/Nuand/gr-osmosdr

The last few commits enable a feature called, I believe, oversample or something of that nature. In this mode, it's reduced to an 8bit sample but it allows the bladeRF to achieve a 122Msps max sample rate/bandwidth setting.

Could a branch be created on this repo be created that uses Nuand's gr-osmosdr and somehow have the Soapy wrapper capable of activating the features? I would be happy to test.

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.