Problem of calibration with Heimdall

Hi,

I’m trying to use Heimdall to calibrate a Kraken SDR. Heimdall is running on a raspberry pi where the Kraken is attached and I have GNU Radio running on my computer. I tried to receive the radio signals at 97.9 MHz and I did two different tests. For the first one i wanted to see if the phase is stable and if I compare the phase of my standard channel (the 0 one) to the other it would be close to zero (since all the antenna are very close to each other I expected it to be close to zero). And the result was what I expected.

However if I watch at the real part of every signals, the signal 5 has an opposite phase compare to the other and it’s not coherent with what I had before. I don’t understand why.

Also could one, in theory, use the off-the-shelf gr-osmosdr with their https://gitea.osmocom.org/sdr/rtl-sdr.git for all 5 antennas separately and implement a custom adaptive calibration during runtime using the AIS signals bursts or should one somehow disable all Heimdall calibration features and still use the gr-krakensdr block for this?

Thank you in advance for your help!

You can’t just watch the real part, because it’s a complex signal. So you need to calculate the phase from BOTH the I and Q.

In theory if you have a signal source at a known bearing via the AIS data, you could potentially use the AIS signal for calibration. It’s an interesting idea. I would probably try to add your residual correction to the heimdall code itself, rather than trying to hack it in via GNU Radio, but if you’re wanting to implement your own custom algorithm from scratch then treating it as 5 individual RTL-SDRs would be the way to start.

Thank you very much for your answer!

Also there is a pdf explaining how Heimdall is working for the Kerberos SDR but not for the Kraken SDR. Is it working the exact same way for the Kraken SDR or some modifications were made ?

Thank you in advance for your help!

It works almost exactly the same. However, in newer versions of heimdall we use a slightly different method for sample alignment, based on the rational resampler. Basically we pulse the rational remsapler on each channel until the samples are aligned with channel 0.