Time Syncronization
The Vera units use by default rdate to synchronize the time.
Rdate is a client program which uses the Time protocol and does one time query and synchronization. Rdate servers are running the Time service protocol on port 37 which conforms to RFC 868. Clients can use either TCP or UDP.
The Time Protocol (RFC 858) is not related or compatible with Network Time Protocol (RFC 958) used by ntpclient/ntpd/openntp.
Contents |
Prerequisites
- Vera hardware
- Root acces to your OpenWRT
Instructions
Gain ssh access to your Vera (root) and use the password that is provided on the bottom of your vera2. More info on how to can be found here:[1]
Time Servers are listening on port 37 and Network Time Servers on 123.
Note: In order for you Vera unit to successfully syncronize its time you have to allow connections from it to the time servers on port 37 for rdate and port 123 for ntpclient if you install it.
Check if Vera can sync with a Time Server :
rdate -p server
The -p switch prints the date and time from the server.
Set the time from a Time Server:
rdate -l -s server
The -l switch allows for logging results to Syslog, -s sets the system time.
There is no worldwide list of Time servers available. Many, but not all, Network Time Protocol (NTP) servers also serve Time on port 37. There is a list of NTP servers here [2]
The National Institute of Standards and Technology (United States Gov't) offers about a dozen Time servers to the public. Their server list is available here [3]
Here is a list of working servers (at this moment):
nist1.aol-va.symmetricom.com nist1.columbiacountyga.gov nist1-atl.ustiming.org nist1-chi.ustiming.org nist.expertsmi.com nisttime.carsoncity.k12.mi.us nist1-lnk.binary.net wwv.nist.gov time.nist.gov utcnist.colorado.edu utcnist2.colorado.edu ntp-nist.ldsbc.edu nist1-lv.ustiming.org nist-time-server.eoni.com nist1.aol-ca.symmetricom.com nist1.symmetricom.com nist1-sj.ustiming.org nist1-la.ustiming.org
To test on your Vera unit which servers are working, log in by ssh and then create a new file called timeservers.txt in /tmp with this command :
touch /tmp/timeservers.txt
Then edit it and copy the servers from the list using vim, and then run this command at least 5 times :
while read server; do echo -n "Server $server :"; rdate -p $server && echo "OK" || echo "FAILED"; done < /tmp/timeservers.txt
After that compare the results and pick the servers that only display OK, these will be the most reliable, and then add them to the list here /etc/config/timeserver .
Note: Please remember to keep the same format of the file when you edit it.
To sync the time use the following command :
ash -x /usr/bin/sync_time.sh
Creating a local time server
If you want to create a local time servers you can use xinetd and you can read more about it here [4]
Once all the settings have been made you need to restart xinetd by using this command :
/etc/init.d/xinetd reload
Installing the NTP client
Optionally you can install the ntpclient also. Run the following commands to install the NTP client by ssh:
opkg update
opkg install ntpclient
The ntp servers are define in this file : /etc/config/ntpclient
To edit the file you can use vim editor:
vim /etc/config/ntpclient
To view the current entries in it type:
cat /etc/config/ntpclient
Note: Please remember to keep the same format of the file when you edit it.
Check if Vera can connect to the default ntp servers :
BASE_NTP_SRV="openwrt.pool.ntp.org"; for i in 0 1 2 3 5; do NTP_SRV="$i.$BASE_NTP_SRV"; echo -n "$NTP_SRV : "; ntpclient -c 1 -p 123 -h $NTP_SRV || echo "FAILED"; done
Force ntpclient to re-read the ntp servers and to do a time sync : <br>
/etc/init.d/ntpclient restart
To check if the ntp client is running use this command :
ps fax | grep ntp
If you see this message then you've successfully installed the NTP client:
4188 root 1068 S /usr/sbin/ntpclient -i 600 -s -l -D -p 123 -h 0.openwrt.pool.ntp.org 14454 root 1672 S grep ntp