Hi all,
I received a new LimeSDR Mini, so I was able to compare different hardware units to rule out any hardware issues.
These are my results:
The following behavior was reproducible with the new hardware (which has a metal casing, room temperature was about 22°C), both with LimeSuite-20.07.2
and the master branch (3858ed79b95a040145629f95bcaa75e1ea623c6d
):
A bandwidth of 11563001 Hz or higher yields an [ERROR] Tx Calibration: MCU error 3 (SXR tune failed)
.
When I use the old device, I occasionally get [ERROR] Tx Calibration: MCU error 5 (Loopback signal weak: not connected/insufficient gain?)
when I sent a bandwidth of 11563000 Hz.
So the MCU error 5 seems to be related to my old hardware (which has no metal casing or heat sink, while the new hardware is in metal casing). The MCU error 3 is an independent issue that occurs with both hardware units and with both LimeSuite versions (20.07.2 and master).
My test setup:
#include <SoapySDR/Device.h>
#include <SoapySDR/Formats.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv) {
SoapySDRDevice *device;
SoapySDRStream *tx;
SoapySDRKwargs args = {};
if (SoapySDRKwargs_set(&args, "driver", "lime")) abort();
device = SoapySDRDevice_make(&args);
SoapySDRKwargs_clear(&args);
if (SoapySDRDevice_setSampleRate(device, SOAPY_SDR_RX, 0, 384000)) abort();
if (SoapySDRDevice_setBandwidth(device, SOAPY_SDR_TX, 0, 11563001)) abort(); // 11563000 works with new hardware
if (SoapySDRDevice_setFrequencyComponent(device, SOAPY_SDR_TX, 0, "RF", 33e6, NULL)) abort();
if (SoapySDRDevice_setFrequencyComponent(device, SOAPY_SDR_TX, 0, "BB", 0, NULL)) abort();
if (SoapySDRDevice_setAntenna(device, SOAPY_SDR_TX, 0, "BAND2")) abort();
if (SoapySDRDevice_setGainElement(device, SOAPY_SDR_TX, 0, "PAD", 52.0)) abort();
if (SoapySDRDevice_setGainElement(device, SOAPY_SDR_TX, 0, "IAMP", 0.0)) abort();
if (SoapySDRDevice_setupStream(device, &tx, SOAPY_SDR_TX, SOAPY_SDR_CF32, NULL, 0, NULL)) tx = NULL;
if (!tx) abort();
if (SoapySDRDevice_activateStream(device, tx, 0, 0, 0)) {
fprintf(stderr, "activateStream error: %s\n", SoapySDRDevice_lastError());
return 1;
}
if (SoapySDRDevice_deactivateStream(device, tx, 0, 0)) fprintf(stderr, "Could not deactivate stream!\n");
if (SoapySDRDevice_closeStream(device, tx)) fprintf(stderr, "Could not close stream!\n");
if (SoapySDRDevice_unmake(device)) abort();
return 0;
}
Do I need to update the firmware of the old hardware unit? If yes, how can I do it?
@Zack: I would like to provide one, but I don’t know what that is and how I get one. What do I need to do to get a register dump?