Daylight Saving Adjustment
I guess those of you on the emulator have NTP or some other way of correcting the time for Daylight Savings. I have only just found out that it is happening "tonight" and as I run mine standalone (no internet access) I have made an attempt to automate it using cron.
I have created a script called Daylight_Savings.sh whose code has been included below.
Code:
# ===========================
# Adjust for Daylight Savings
# ===========================
# Daylight Time commences at 2.00am Standard Time on the last
# Sunday in September each year. It ends at 2.00am Standard
# Time (3.00am Daylight Time) on the first Sunday in April of
# the following year.
#
# ===============
# Crontab Entries
# ===============
# Correct time for Daylight Saving
# 0 2 * 9 0 /var/hack/DST/DST_Adjust.sh >> /var/hack/DST/log 2>&1 &
# 0 3 * 4 0 /var/hack/DST/DST_Adjust.sh >> /var/hack/DST/log 2>&1 &
PATH=/bin:/sbin:/tvbin:/devbin:/var/hack/bin:/var/hack/scripts
StartDST() {
time=`date -d "now +1 hour" "+%Y%m%d%H%M%S"`
settime $time
}
StopDST() {
time=`date -d "now -1 hour" "+%Y%m%d%H%M%S"`
settime $time
}
date "+%w %e %b %k" |\
while read day dom mon hour; do
# Check if it is the last Sunday in September
if [ $dom -ge 22 -a $day -eq 0 -a "$mon" = "Sep" -a $hour -eq 2 ]; then
StartDST
fi
# Check if it is the first Sunday in April
if [ $dom -le 7 -a $day -eq 0 -a "$mon" = "Apr" -a $hour -eq 3 ]; then
StopDST
fi
done
The following is my crontab entry whose first line will trigger the script to run at 2am every Sunday during September... the script will check that it is the last Sunday before performing an action (sorry but this is a limitation of the cron scheduler). The second line will trigger the script to run at 3am every Sunday during April... the script will check that it is the first Sunday before performing an action.
Code:
# Correct time for Daylight Saving
0 2 * 9 0 /var/hack/DST/DST_Adjust.sh >> /var/hack/DST/log 2>&1 &
0 3 * 4 0 /var/hack/DST/DST_Adjust.sh >> /var/hack/DST/log 2>&1 &
Note: You may think that the script may loop in April as the time will be adjusted from 3am back to 2am... but the cron scheduler is smart enough to only run the script once (otherwise it would get stuck in a continuous one-hour loop).
2 Attachment(s)
TiVo rdate(1) implementation
As I have recently acquired an Internet connection I have been playing around with time synchronisation. There are a few tools on the oztivo image that deal with this (ntpdate/rtimetz), but they have a few shortcomings (especially for those of us that do not use the emulator) so I have put together an rdate implementation.
Note: This is likely to only be of use to a very select few... If you have a working setup that you are happy with, then there is little need to read any further...
This program supports a “set time” option as well as being friendly to DOS CR's that are sometimes found within peoples /etc/postcodezones file :) It will use the TZ/TZDIR environment variables (if defined) rather than performing database lookups.
There are many ways of executing it. By adding an ‘–s’ it will set both the hardware (CMOS) and the software (O/S) time on the TiVo. If the '-s' option is not used, then it will output the time in a format that is suitable for use by settime (to remain compatable with rtimetz).
Example 1
The following will lookup the postalcode in the database and then lookup your timezone in the /etc/postcodezones file and using that information attempt to find the timezone information by looking in /var/hack/zoneinfo.
Code:
# rdate –v 129.6.15.28 132.163.4.101 128.138.140.44
# rdate –vs 129.6.15.28 132.163.4.101 128.138.140.44
Example 2
The following does not require the /etc/postcodezones file as we have specified which timezone to use, it will look in TZDIR for the information files (TZDIR defaults to /var/hack/zoneinfo).
Code:
# TZ=Pacific/Auckland rdate –v 129.6.15.28 132.163.4.101
# TZ=Pacific/Auckland rdate –vs 129.6.15.28 132.163.4.101
Example 3
The following tells the application the exact location of the zoneinfo file (take note of the the colon ':'), thus allowing you to place the zoneinfo file where-ever you wish.
Code:
# TZ=:/var/hack/zoneinfo/Pacific/Auckland rdate –v 129.6.15.28
# TZ=:/var/hack/zoneinfo/Pacific/Auckland rdate –vs 129.6.15.28
QUICK INSTALLATION FOR NEW ZEALAND USERS
Code:
1. Make the rdate program executable
# chmod 755 rdate
2. Move it into the /var/hack/bin directory
# mv rdate /var/hack/bin
3. Create a directory to hold the "Auckland" zoneinfo file
# mkdir -p /var/hack/zoneinfo/Pacific
4. Move the provided "Auckland" zoneinfo file into this directory
# mv Auckland /var/hack/zoneinfo/Pacific
5. Run the command and check that things look okay
# TZ=Pacific/Auckland rdate –v 129.6.15.28
6. Run the command with the "set" (-s) option to change the date/time
# TZ=Pacific/Auckland rdate –vs 129.6.15.28
Daylight Savings this weekend
It's that time of year again. Daylight Savings starts this weekend so your TiVo may be running out of sync until your next daily call occurs on Sunday. If you notice that the time is incorrect on Sunday then you might like to force a daily call (this can be done via the "phone" module in the web interface).
I script I have used for the last few years to perform the adjustment via cron can be found here.