On 03/12/2017 04:50 PM, Tony B. wrote:
> Josh,
>
> We have been trying to understand the differences between LimeSuite
> software (GUI and Lime device interface) and the SoapySDR interface.
> These are not the same, but one might think that from the way some
> materials describe them at high levels.
> Can you help us to understand what underlies the difference between the
> LimeSuite native API and the SoapyLMS7 interface?
SoapySDR is intended to be a general purpose interface for SDR devices,
and it has a large number of hardware support modules basically hiding
under the same API.
This enables applications to be written against one API and support many
devices, and it enables devices to be wrapped in an interface that is
already supported amongst multiple applications.
And then LimeSuite is to the LimeSDR, just as libhackrf is to the
HackRF. So it has its own low level C and C++ driver library.
>
> For example, there are some simple things that one cannot do with the the
> SoapyLMS7 interface: get board temperature, get RSSI, get / set
> decimation (lms7002m hardware).
Well the decimation is definitely settable through the sample rate. The
RSSI and temperature may not be accessible at present, but there is a
place for them to be added (the sensors API in soapysdr).
In general soapysdr does a good job of making LimeSDR useful in SDR
applications, but its never going to really expose the entire
flexibility of the LMS7002M. That said, its possible to give direct
register access, so no door is truly closed.
>
> Is it the case that the SoapySDR interface was late to the game and that's
> why the LimeSuite GUI uses the native interface instead?
The gui started out as an evaluation GUI for the LMS7002M on the EVB7
board. Its come a long way since then, but its really about exposing
controls for calculations for every single register, stuff you would
expect in a board eval utility. But not necessary ideal for generic
tuning and streaming purposes.
The main reason behind this is that the SoapySDR wrappers for LimeSDR
focused on being able to re-tune rapidly for working with in in guis
like gqrx (for example). So we didnt want to re-calibrate every every
tune, which would otherwise be ideal for a fixed application.
The tradeoff was to look up corrections in a table, and to provide a
utility to generate calibration corrections in an offline fashion.
It makes quite near plots BTW. But I dont like that the utility brings
in extra dependencies, and it could probably be improved based on recent
calibration improvements that were just merged in LimeSuite. So while I
think that this is something that will be improved, we will probably
stick with offline calibration for the soapy sdr use case.
>
> Is there some overview of the differences between the interfaces?
> Thanks for helping us understand the ecosystem relationships.
I made some blogs on this FWIW:
*
https://myriadrf.org/blog/limesdr-application-ecosystem/
*
https://myriadrf.org/blog/limesuite-driver-architecture/
Hope that helps
-josh