Monday, March 11, 2024

Measuring oblique ionograms using KiwiSDRs (1)

Oblique ionogram obtained from a KiwiSDR using GNSS timestamps

How it is done

The receive bandwidth of KiwiSDRs is limited to 12 kHz (20.25 kHz in 3 user channel configuration). In order to synchronously tune to a chirp sounder GNSS-based timestamps are used:
  • For the current GNSS timestamp T0 tune the KiwiSDR to the frequency on which the chirp is expected at a time T0+DT.
  • Record 10240 IQ samples, corresponding to 20 512-sample long buffers
  • Repeat
Timing diagram

In this way, the chirp is always seen at a specific offset. Note that the tuning frequencies are different for each different complete chirp sweep because the KiwiSDR sampling rate is not GNSS-disciplined (the GNSS timestamps are exact).

abs(IQ) vs. frequency

For a chirp rate of 100 kHz/s and sampling rate 12 kHz, the frequency steps are ~85.33 kHz and the group delay resolution is 25 km.

The time offset DT, which depends on the delay between issuing a frequency change command and its effect, is measured at the beginning. It depends on internal KiwiSDR delays and on the network delay. If the KiwiSDR is on a local network this delay is about 2 buffers long, for KiwiSDRs on the internet delays between 8 and 10 buffers were seen.  

1 comment:

Ben Benson said...

Hi Christoph, it would be great if the script that you are usinig to generate these ionograms could be made available in the form of Python code.

In SE Asia there are still many chirp sounders active. The Cyprus sounders 235:300 and 240:300 also are strong at night. I can track them in frequency with e.g SuperSDR and retrieve the audio chirps, but have been unable to process this data properly to get ionograms. Your method seems to work very well

Best regards, Ben Benson