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



it seems that the SoapyLMS7 doesn’t implement on the TX side the DC offset correction and the IQ balance correction.
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 ?



The Pothos group may be the best place to ask.!forum/pothos-users


@andrewback Why ? It seems that the SoapyLMS7 module is part of the LimeSuite.


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!