Looking at an HF OTH radar

Most amateur operators are familiar with over-the-horizon radars in the HF bands. They sometimes pop up in the Amateur bands, rendering several tens of kilohertzs unusable. Inspired by Balint Seeber’s talk in GRCon16, I’ve decided to learn more about radars. Here I look at a typical OTH radar, presumably of Russian origin. It was recorded at my station around 20:00UTC on 8 December at a frequency around 6860kHz. This radar sometimes appears inside the 40m Amateur band as well.

Above this post you can see a waterfall plot of the radar signal. It’s the wide red signal. It is 15kHz wide and pretty strong, but severely affected by frequency-selective fading. Looking at the IQ recording in Audacity, it is clear that the radar uses pulses with a 50Hz repetition rate. This explains the characteristic sound of this radar when received with a conventional SSB radio. It sounds similar to AC hum (here in Europe, of course).

IQ recording: pulses with 50Hz repetition rate

When looking at the pulses in GNU Radio, we see that the pulses are chirps. This means that the frequency of each pulse is not constant, but it increases as the pulse is transmitted. Thus, this radar is a pulsed FMCW radar. Using the Quadrature Demod block in GNU Radio, we can FM demodulate each pulse to see how the frequency changes during the pulse. The result is noisy, but we can average the Quadrature Demod of all the pulses to get a nice plot. The recording is about 2:30 long, so we are averaging over 7000 pulses. Averaging and plotting was done in MATLAB.

Instantaneous frequency of the pulse (averaged for all the pulses). y-axis is in radians per sample. x-axis is in milliseconds

The linear increasing slope corresponds to the pulse, which is an upchirp. The rest is noise, corresponding to the period when there is no pulse. To find the slope of the upchirp, we do a linear least squares fit to the part of the chirp between 4 and 8ms (which is cleaner). We get 3.714927791644071e-04 radians per sample\(^2\) (at 192kHz sampling rate), or 2179580.7606482995 Hz/s. The pulse lasts about 6.5ms, giving a total frequency variation of around 14kHz, which explains de width of the radar signal in the waterfall.

Since we know the characteristics of the pulse, we can now perform pulse compression. This amounts to computing the cross-correlation of the received pulse and the transmitted pulse. A Blackman-Harris window is used to reduce spectral leakage. The pulse arrives at my station by reflections off the ionosphere. Generally, there is multipath propagation, as some of the energy will be bounced off different regions or layers of the ionosphere. This is what causes the frequency-selective fading. The cross-correlation will give the time of flight for the different multipath components of the received pulse. Since we are not synchronized to the transmission time of the pulse, the time of flight we get is not absolute, but the times of flights of different multipath components can be compared. The time of flight can be converted to distance by multiplying by the speed of light.

Below you can see how signal processing is done in GNU Radio. In the lower plot we have the received pulse (converted to baseband) in blue and red and the template (transmitted) windowed pulse in green and black. The cross-correlation of these two signals is computed using FFTs and then the amplitude of the cross-correlation in dB units is plotted in the upper plot.

Signal processing in GNU Radio: cross-correlation (above) and time domain (below), with received pulse and windowed template pulse

Thus, for each pulse we get the relative distances for all the propagation paths of that pulse. This sheds some light in how the pulse is reflected off the ionosphere. We can form an image by laying all the cross-correlations side by side, so the horizontal axis indicates how multipath propagation changes with time. The image below represents the magnitude of the cross-correlation in dB scale evolving in time. The horizontal axis is seconds and the vertical axis is propagation distance (relative). This image has being produced with matplotlib.

Distance versus time. y-axis is distance in km. x-axis is time in seconds

There is a small slant in this picture because the clocks on the transmitter and the receiver are not synchronized, so they drift slowly. We see that most of the energy comes from a 50km wide region. However, there are many weaker components extending up to 200km “above” the main reflection. They probably correspond to reflections off higher layers of the ionosphere. There are also some components “below” the main reflection. Here, we can also see lots of parallel components. I’m not sure of whether they correspond to a real effect or they are caused by some artefact of signal processing. For instance, cross-correlation will always introduce some amount of side-bands. However, it is weird that these parallel components are only present below the main reflection, because cross-correlation side-bands should be symmetric.

In any case, I think that the picture above is really interesting, and it is amazing how much can be achieved with basic equipment and a little signal processing. I’ve put the GNU Radio flowgraph and the python script to generate the image in a gist, in case someone is interested.


  1. Very informative – as playing with GNU radio here also and doing
    IARUM1 monitoring for OE it is certainly widening the horizon. TNX

    Gerd OE3GSA

  2. This is one of two OTH radars that sound almost identical. The other one is 20kHz wide sweeping 1MHz/sec (so it is continuous, not a pulse-plus-gap. This other one is located at Akrotiri in Cyprus, co-located with the oblique chirpsounder which you can see at http://websdr.ewi.utwente.nl:8901/chirps/. I do not know where the 6.5msec 2.18MHz/sec radar is located. Some say Iran, but I am sure it’s not Akrotiri. Don’t assume it’s Russian.

    It’s interesting to extract the Doppler spectrum too.

    Peter G3PLX

    1. Hi Peter,

      Many thanks for the remark about the origin of the radar.

      Regarding Doppler, I thought of doing Doppler processing for speed as described in the “Pulse-Doppler signal processing” Wikipedia page. However, this requires that the pulses sent by the radar are coherent. I’m not sure if this is the case. Also, the clocks on transmitter and receiver need to be synchronized or I will get an absolute error in Doppler information (similarly to what happens for range information). Given the low speeds that I expect for ionospheric reflections, I’m not sure I would get something interesting with the equipment I’m currently using.

  3. Very nice presentation. But a small correction. This radar (the Russian 29B6) is not an FMCW radar, rather it is an FMOP (FM On Pulse) radar. Obviously the distinction is small and of no real importance, since for this purpose the processing is the same.

    The British PLUTO radar from Akrotiri is a true FMCW radar.

    A couple years ago I did a video aimed at casual listeners on how to tell the two radars apart. https://www.youtube.com/watch?v=RsmMvOuFtOs&t=2s


Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.