Karl Uppiano

Home
The Weather Station
Java Weather Software
Software Tech Notes
Reliable Wind Speed Data
Science vs. Religion
My Resume

Engineering Web Site

Archive Newer | Older

Sunday, August 31, 2008

NTP Pool Project
By the way, if you're looking for a good place to sync time, check out NTP Pool Project. They discuss being a time server, as well as being a client. I am using us.pool.ntp.org for my clock sync client experiments.
1:11 pm pdt

Windows Time Sync Experiment -- Update
The registry settings I published in my first post on this subject are working beautifully. The system clock smoothly "chases" the time standard, and w32time is so confident that it increased the polling interval to nine hours on my "always on" weather server.
 
The polling interval on various other computers that I turn off at night hovers between two and four hours. W32time retains some of the clock heuristics when turned off. However, the large temperature changes that occur when I turn the computers on and off has a deleterious effect on the accuracy of the system clock, requiring more frequent updates to keep the clock accurate. Still, network traffic is negligible, and the clock does not require stepwise corrections.
12:51 pm pdt

Thursday, August 28, 2008

Windows Time Sync Experiment Part III
I have received some feedback on my earlier posts, suggesting that I use other time sources, or a time sync program other than w32time.
 
Since my 1-Wire Weather Service for Java is a cross-platform program, I would have to write interfaces to whatever other time source might be available on any platform that I want to support. If this were a Windows-only program, I would definitely consider using the timer interrupt instead of the system clock. However, the system clock is universally available on all platforms through Java (in other words, Sun Microsystems already did the platform-specific work in the Java VM).
 
I realize that programs other than w32time are available for synchronizing the system clock. However, part of my interest here is better understanding how to work with the native Windows features. Although w32time is not as convenient to configure as one might like (you have to edit the registry -- Microsoft doesn't expose all of the w32time features in any UI), it does seem to provide everything someone might need to make a reliable time source. It is a full implementation of RFC1305. I am toying with the idea of writing my own GUI configuration utility for w32time.
10:44 pm pdt

Wednesday, August 27, 2008

Windows Time Sync Experiment Part II
Windows Time implements RFC1305 - Network Time Protocol (pdf). Fascinating reading for anyone who is interested in electronic timekeeping technology, especially over TCP/IP. I am attempting to map the parameters in the Windows registry used by w32time to the parameters discussed in the NTP protocol. Too bad Microsoft decided to use different names. Keeping them the same would have simplified analysis, and made obvious which ones were part of NTP and which ones were specific to Windows features.
 
I have been watching my w32time internet time server polling interval. It started out at around 15 minutes, and has gradually increased to about four and a half hours, as the system clock becomes increasingly accurate. W32time is "dialing in" the clock frequency. If all goes as planned, this configuration should eliminate the need for stepwise corrections to the system clock.
9:27 pm pdt

Tuesday, August 26, 2008

Windows Time Sync Experiment
I am experimenting with configuring the Windows Time Service (w32time) so that it doesn't upset my anemometer data when Windows synchronizes with Internet time. The anemometer, and most real-time applications, requires a smooth, continuous timebase. Jumps and discontinuities in the time sequence cause huge errors in rate calculations such as wind speed.
 
Windows computers can run as domain controllers, domain members, or stand-alone. I will not concern myself with domain computers. If your computer is part of a domain, you probably won't have this problem. Most home computers operate as stand-alone machines, even if you have several on a network. You can identify a stand-alone computer because it has an "Internet Time" tab on the Date and Time Properties dialog that you use to set Windows date and time. This gives you the option to "Automatically synchronize with an Internet time server".
 
W32time actually has a very good algorithm for synchronizing Windows time, if it is properly configured. Unfortunately, when you check "Automatically synchronize with an Internet time server", it is optimized for intermittent network access. This is not appropriate for real-time operation. Fortunately, you can edit two Windows registry settings to configure w32time to be real-time friendly. Standard disclaimer: it is dangerous to edit the Windows registry, blah, blah, blah. Be careful.
 
Changing the following two settings should allow w32time to "dial in" the clock rate gradually, and to then be able to poll only as frequently as needed to keep the clock running "on time", all without any discontinuities.
 
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
 
MaxAllowedPhaseOffset

Domain members are 300 milliseconds by default. The default for stand-alone machines is 1 millisecond. If the system clock differs from the Internet time server by more than the specified amount, w32time will set the clock, instead of adjusting the rate. No PC can maintain millisecond accuracy for the default seven-day polling interval. Set this value to 300 milliseconds to allow w32time to "dial in" the clock rate, instead of setting the clock directly.
 
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
 
NtpServer

This value contains the name of the NTP server you want to synchronize with, followed by the value 0x1. The 0x1 tells w32time to use a fixed polling interval (seven days) to synchronize the system time, instead of adaptive mode. Delete ",0x1" from the NTP server name so w32time will use the adaptive polling interval.
 
If my experiments are successful, I will post this as on the tech note page.
 
8:38 pm pdt


Archive Newer | Older

Contact Us
Use the form below to send comments about this site.

Name:
Email:
Comments:
 

Welcome!
This site is dedicated to my interest in engineering. I use it as a place to just put stuff "out there" for anyone who might be interested, as well as a job search tool. This page contains my engineering web log (to your left). Anything that seems timeless enough, or too involved for a log entry may get it's own page as a full-blown article. And, of course, my resume is here for anyone who might be considering hiring me to do something. Email me.

About Me
I have worked as a broadcast engineer, electronics designer (analog and digital) and software developer. I especially enjoy audio engineering, although I've been writing software for the last several years, since that's where the opportunities are in the Pacific Northwest (this is Microsoft country after all). I'm currently working as a Senior Staff Engineer -- Resume at another large independent software vendor in Washington State.

Futurama Web Site
(not my best side)

I majored in mathematics and physics in college. Other interests include music appreciation (baroque, classical and early romantic, ragtime, and 60's and 70's rock & roll), high fidelity audio electronics, meteorology and of course, computing hardware and software. I tend to think a lot like this guy.