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

Hello,

it seems that the SoapyLMS7 doesn’t implement on the TX side the DC offset correction and the IQ balance correction.
in LimeSuite/SoapyLMS7/Settings.cpp at 02cabfde25f55cd9b339d1ec36e22e26dfc61b56 · myriadrf/LimeSuite · GitHub
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

The Pothos group may be the best place to ask.

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

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

1 Like

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

@IgnasJ or @joshblum should be able to advise.

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:

@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?

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:

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.

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.

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

Hi @julien,

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

It’s already great to plan it :slight_smile:

Thank you

Hi @julien,

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