SoapyLMS7 For TX, missing DC offset correction and IQ balance correction


#1

Hello,

it seems that the SoapyLMS7 doesn’t implement on the TX side the DC offset correction and the IQ balance correction.
in https://github.com/myriadrf/LimeSuite/blob/02cabfde25f55cd9b339d1ec36e22e26dfc61b56/SoapyLMS7/Settings.cpp
you can read :

bool SoapyLMS7::hasDCOffsetMode(const int direction, const size_t /*channel*/) const
{
    return (direction == SOAPY_SDR_RX);
}

void SoapyLMS7::setDCOffsetMode(const int direction, const size_t channel, const bool automatic)
{
    std::unique_lock<std::recursive_mutex> lock(_accessMutex);
    if (direction == SOAPY_SDR_RX)
        lms7Device->WriteParam(LMS7param(DC_BYP_RXTSP),automatic == 0, channel);
}

bool SoapyLMS7::getDCOffsetMode(const int direction, const size_t channel) const
{
    std::unique_lock<std::recursive_mutex> lock(_accessMutex);
    if (direction == SOAPY_SDR_RX)
        return lms7Device->ReadParam(LMS7param(DC_BYP_RXTSP),channel) == 0;
    return false;
}

bool SoapyLMS7::hasDCOffset(const int /*direction*/, const size_t /*channel*/) const
{
    return false;
}

bool SoapyLMS7::hasIQBalance(const int /*direction*/, const size_t /*channel*/) const
{
    return false;
} 

We really need this feature to be able to use remote lime-sdr sink in gnuradio flow.

Is this feature planned ?

Regards,
Julien


#2

The Pothos group may be the best place to ask.

https://groups.google.com/forum/#!forum/pothos-users


#3

@andrewback Why ? It seems that the SoapyLMS7 module is part of the LimeSuite. https://github.com/myriadrf/LimeSuite


#4

Ah, apologies, mistook for something not being exposed further up.

@IgnasJ or @joshblum should be able to advise.


#5

You will have to ask @IgnasJ as to what is best. As far as I understand it was removed in a refactor to use the LMS7 API (lms7_device.h). I don’t think LMS7_Device exposes the low level IQ/DC hooks in favour of automatic calibration via LMS7_Device::Calibrate(). Though I’m not against adding them back in :slight_smile:


#6

@julien, just to be clear, you are using SoapyRemote so that you can stream I/Q remotely and hence cannot use the gr-limesdr blocks?


#7

Yes, exactly. I want to be able to TX/RX (and calibrate both) when I use my limesdr in a remote soapy setup. So I cannot use the gr-limesdr blocks. The soapy driver for limesdr in the limesuite, lack a few basics features at least on TX side.

Thank you :slight_smile:


#8

I see, so there are also features you won’t have when not using gr-limesdr blocks, since these expose more of the underlying hardware capabilities.

Is this mode of operation, using SoapyRemote, a common use case with SatNOGS?

Will need @IgnasJ to comment on SoapyLMS7 and calibration.


#9

Yes of course it cannot be as powerfull as gr-limesdr, but the basic feature should be implemented, like on TX : DC offset and IQ balance.

It’s not a part of a standard satnogs setup, but this kind of remote setup will be more and more common, because it’s a lot easier to have the SDR and a small computer outside near antennas, and only a network cable (copper or optical) that go inside the building.


#10

Agreed, with integrated compute, active PoE and GPSDO etc. LimeNET Micro would be great for such a setup.


#11

Hi @julien,

Will be implemented until end of next week. Sorry for delay, but our team is maxed-out at the moment.


#12

It’s already great to plan it :slight_smile:

Thank you


#13

Hi @julien,

It is implemented some time ago, just forgot to let you know here!