[time-nuts] Software Defined MSF and DCF Receiver

Bob Camp kb8tq at n1k.org
Sun May 18 11:20:49 EDT 2014


Hi

One thing to be careful with when running VLF into NTP - make sure you work out the propagation delay to your site and put it into the driver. As your data shows, the jitter is low enough to make it worth doing.

We get so used to GPS (that corrects automatically) that we forget about doing it for VLF. I have a couple of local VLF based NTP servers that have issues because they don’t have the delay set right. 

Bob

On May 18, 2014, at 10:33 AM, Iain Young <iain at g7iii.net> wrote:

> Hi Folks,
> 
> While not exactly nanosecond class, I thought at least some of you
> might be interested in my latest experiments with writing a MSF and
> DCF decoder in SDR (gnuradio in this case)
> 
> The gnuradio flowgraph is shown here:
> 
> http://hal.g7iii.net/GRC/Radio_Clocks/Multi_Radio_Clock_Receiver.png
> 
> (The GRC file itself is also there for those who wish to play with it
> in the gnuradio companion, along with some prototypes)
> 
> This tunes to 250Hz off the carrier, and uses a Goertzel filter at
> 250Hz to detect it. We then do a Complex to Mag^2 to effectively
> get rid of any negative values, before a threshold block essentially
> converts the signal to a square wave (via a moving average to help
> with interference and noise, as well as general signal level changes
> throughout the day]
> 
> The eventual output is a 1 kHz stream of 1s and 0's, sent via UDP
> (You will notice the significance of the port numbers selected
> - 12360 and 12377 in the flowgraph :)].
> 
> A separate application (currently using nc and stdin/stdout) looks for
> the Start of Minute marker, then grabs the rest of the second's data.
> Once completed it decodes[1] it, and sends it on to NTP via the SHM
> driver.
> 
> This code is currently running on the same machine, but could be run
> on any capable UDP host. I intend to try it on a beaglebone[2], and see
> what the difference is.
> 
> Now, I was expecting some pretty awful jitter etc, but have been rather
> surprised. Here are a few random ntpq outputs taken over a few hours
> (nothing scientific):
> 
> ntpq> pe
>     remote           refid      st t when poll reach   delay   offset
> jitter
> ==============================================================================
> SHM(0)          .MSF.            0 l    7   64  377    0.000    6.622
>  0.859
> SHM(1)          .DCF.            0 l    6   64  377    0.000   -3.321
>  0.900
> *cerberus.local  192.36.143.153   2 u   15   64  377    0.061   -0.265
> 0.347
> 
> ntpq> pe
>     remote           refid      st t when poll reach   delay   offset
> jitter
> ==============================================================================
> SHM(0)          .MSF.            0 l   13   64  377    0.000    6.932
>  0.193
> SHM(1)          .DCF.            0 l   12   64  277    0.000   -2.913
>  0.107
> *cerberus.local  192.36.143.153   2 u  255  256  377    0.099    0.606
> 2.365
> 
> ntpq> pe
>     remote           refid      st t when poll reach   delay   offset
> jitter
> ==============================================================================
> SHM(0)          .MSF.            0 l   10   64  377    0.000    7.062
>  0.146
> SHM(1)          .DCF.            0 l    9   64  325    0.000    7.193
>  3.888
> *cerberus.local  192.36.143.153   2 u  174  256  377    0.099    0.606
> 4.162
> 
> Both radio clocks were set to noselect. cerberus was serving as a
> reference, and was talking to a cesium over the internet, but for
> this experiment was more than sufficient.
> 
> The jitter and offset figures are far better than I had been expecting,
> and more than sufficient for numbering the seconds and Time-Of-Day,
> before a PPS source takes over (See [2]). They are also far better
> than I had been getting from one of the available modules
> 
> 
> For anyone wanting to try this, the hardware was simply my LF
> Antenna/Preamp [which primarily does LORAN duty, but has a 4 way
> splitter on the end], plugged into my 192k soundcard.
> 
> Those in UK/Europe may get by with a long wire (I haven't tried
> it yet - my own has other duties right now), but I could audibly still
> detect MSF with it when I did a quick check]
> 
> 
> If HF ever recovers here, I shall have a go at detecting and decoding
> the MIKES IRIG station in Finland on 25 MHz. I'm also trying to
> write a flowgraph for RBU, but that it proving a challenge (it uses
> 100Hz and 312.5 Hz tones to indicate 0 and 1 in the time code,
> but even with SDR techniques it's difficult to separate the two, not
> to mention it's far less powerful and further away than both MSF and
> DCF from me.
> 
> 
> Iain
> 
> [1] At present, this code is a lash up. It doesn't check for leap
> seconds, will break come the 3rd weekend in October here in Europe,
> and doesn't check Parity. That said, the decoding is so solid for
> me, that even when (usually the DCF side) decodes things incorrectly
> it's so far out, NTP just laughs at it. I'm lazy. The RF code was far
> more interesting to write than "is this bit set, is that bit set ?" :)
> 
> [2] Said beaglebone currently has a PPS input from an Austron 2100
> locked to Anthorn, but needs an internet host to set the time-of-day
> _______________________________________________
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.



More information about the time-nuts mailing list