Friday, 8 May 2015

Setting the Time

I'll admit it. I'm a little bit obsessed with time. I like it when every clock in the house ticks over in perfect synch. Indeed, I will avoid ever buying a clock or device that doesn't keep perfect time.

It is only a minor obsession. I'm satisfied to be within a second which is good for digital communications modes that depend on accurate time, rather than the millisecond or even microsecond precision. Human technology can keep time to within 1 part in 1,000,000,000,000,000 or so but I would soon find myself single if I started investing the family nest egg in Cesium or Hydrogen Maser clocks.

Around a second accuracy is good for the JT modes like JT65 and JT9 (in the WSJT-X or JT65-HF programs), as well as WSPR. It is also handy if you're networking the N1MM logger program so that stations do not enter logs that are in the future, as far as the other stations are concerned.

There are 3 ways I've used to satisfy the craving for accuracy.

  1. The Network Time Protocol (NTP). This protocol runs over an IP network and does a great job of keeping computers in synch with each other despite the delays inherent in networks. Windows supports NTP but the implementation is not the best, so I generally use another free package from Meinberg to keep the system aligned with expensive atomic clocks at the National Research Council and other centres around the world. My only complaint with Meinberg is that it takes its time setting the clock after the system starts - around a 1/2 hour - which is pesky, especially on a laptop. All Linux systems have an NTP client available to install.
  2. Short Wave Stations. WWV, CHU and others transmit precise time signals, although they are somewhat skewed by the ionosphere unless you happen to live near one. I have an inexpensive clock that is always right which uses WWV. I'm sure there's also an inexpensive way to use WWV to set the computer clock but I've never tried to find one because GPS is so readily available.
  3. GPS - GPS (also GLONASS and Galileo) satellites send out very accurate time signals as each satellite contains a Cesium timepiece. Technology is available to use GPS to keep very accurate time for advanced computer and telephony systems but simple software is available for using a standard GPS dongle (either a USB or Serial Port) that usually runs around $20-30 to keep the system clock from drifting. The GPS solution is useful if you don't have an Internet connection, like with portable operation, although NTP works just fine over a mobile phone hotspot.
At home I run NTP. Rather than have each of the computers (and some other devices like NAS storage, TV sets and music players) connect directly to external time servers, I have my Raspberry-Pi single board computer handle the external connection and then act as a server for all the other devices over my local area network. This reduces the load on the external servers and the network traffic, as well as keeping the computers together if the Internet becomes unavailable (together, although only as correct as the Raspberry Pi's clock can maintain).

Computer clocks drift. My desktop system is pretty good at 1-2 seconds per day. The laptops drift several seconds per day. This isn't good enough for JT65 and it is very hard to set them manually. 

I've tried two software applications with my GPS dongle. The first thing you should know is that these applications have to be run with Administrator privileges (e.g. right-click, "Run as Administrator") so that they can change the system time. You wouldn't want any old app doing that.

The first one was a free app from TimeTools called "GPS Clock". It is a very simple app in which you just tell it the com port and it runs, displaying your position, the time and the NMEA messages coming from the GPS dongle. Unfortunately it is a very cranky application so I will only give it two starts out of five (two instead of one because it does work if you're nice to it). There is a configuration setting that determines how many seconds elapse between clock updates ranging from 1 to 60. If it is set to anything but 1 the program will bomb with an error. Also, if you forget to run the program with administrator privilege, it reports an error every second until you kill the program.

The other program is NMEATime from VisualGPS. It works solidly and can use both GPS and a somewhat less accurate NTP called Simple Network Time Protocol (SNTP). In addition to the latitude, longitude, altitude and time, it shows the position of the GPS satellites it can see and the signal strengths from each. It also managed to find my GPS dongle on its communication port without me having to tell it which COM port it was on. Unfortunately, perhaps inevitably, the program that works the best is not free - but you get a one month trial and the registration key is a reasonable $15. 

If your GPS unit has the capability, the program will also accept a hardware 1 PPS (pulse-per-second) input, which will give you sub-second accuracy. The 1 PPS output from even very inexpensive GPS devices is usually accurate to a microsecond, and over long periods can be used to synchronize a very stable oscillator to within a picosecond of "atomic time".

For both programs you must make sure that the speed of the COM port matches the device and the program you're using. It won't work otherwise.

For most of us, installing Meinberg, as recommended by the authors of both N1MM and WSJT-X, is all we need to do to guarantee accurate time-keeping by our computers.


No comments:

Post a Comment