After getting my LimeSDR in a first step I have experimented a little bit with the Lime Suite GUI using the “LimeSDR-USB Quick Test” document. When generating a test signal as described in section 5 the signal looks totally uncalibrated with a large carrier and image (just like the picture in the document). So, I tried with the calibration tab to use TX calibration with the MCU with no improvement. After each calibration the calibration was reported successful, the TX Gain, Phase and DC corrections were updated but the results showed no big improvement. I managed to manually get a very good carrier – image rejection but after pressing TX calibration it was again as bad as before.
In the figure below if used the loopback test to illustrate the effect. The Red signal was shifted in the TxTSP tab by 3 MHz in order to make the image and the carrier visible. The image rejection is only about 25 dB. In the Blue signal the image and carrier overlap with the intended signal and create self-interference. In addition, there is a coupling between both Signals that creates even more interference (at least using the loopback path) Between +3 and +5 Mhz the Coupling of the Red Signal to the Blue signal increases the noise of the Blue signal.
RX calibration resulted in “TuneVCO(SXR) – VCO to high”. Calibrate all worked. I wonder why because I assume Calibrate all includes Calibrate RX.
Using Calibration with External loopback resulted in the message “external loopback calibration requires ENABLE_CALIBRATION USING FFT”.
In the options of the Lime Suite GUI it is possible to switch on-off “Cache Calibration Values” ???
Regarding the calibration there are a lot of questions and I would expect much more support of Lime here. Clearly it is not effective if we all try to reverse engineer the calibration by reading code and looking at the effects of various switches in the Lime Suite GUI. In addition, the MCU code is propably not available at all.
The main questions are the following:
1. Is there any documentation about the implementation of the DC offset and IQ imbalance calibration apart from the 1 page without much detail in the LMS7002M data sheet?
2. Do we need to enable special settings (loop – LO offset – test signal) before pushing the calibrate button or does the mcu take care of that?
3. Does the caching of calibration values work? Stored in order to be available after a power off -power on cycle? How many calibrations can be stored in the cache? Is there a program for making an initial calibration and storing calibrations in the cache with regular frequency intervals? Can I store manual calibrations in the cache? What happens if I set an LO frequency that is not calibrated yet. (TX without calibration, - make new calibration – Interpolation of available Calibrations)?
4. How do I “ENABLE_CALIBRATION USING FFT”. Is it possible to achieve here the 50-90 dB image rejection that is state of the art?
5. Is the use of calibration transparent for external programs like SDR Console - Pothos – GNU Radio – GQRX, do they need extra code or don’t they use calibration at all?
If anybody can give some answers I would apricate it!