Re: RTC on 2.6.36 for PowerMac 8600

2 messages, 2 authors, 2012-01-31 · open the first message on its own page

Re: RTC on 2.6.36 for PowerMac 8600

From: Andreas Schwab <hidden>
Date: 2012-01-29 08:30:08

kevin diggs [off-list ref] writes:
[root@PowerMac8600B root]# hwclock --debug
hwclock from util-linux-2.12pre
Using /dev/rtc interface to clock.
Last drift adjustment done at 1317444443 seconds after 1969
Last calibration done at 1317444443 seconds after 1969
Hardware clock is on local time
Assuming hardware clock is kept in local time.
Waiting for clock tick...
/dev/rtc does not have interrupt functions. Waiting in loop for time
from /dev/rtc to change
RTC_RD_TIME: Invalid argument
Perhaps the RTC was reset due to battery running out?  That would set
the year to 1900, but the kernel RTC interface cannot represent dates
before 1970.  Unfortunately hwclock insists on reading the RTC even when
you just want to write to it, so you cannot fix that with hwclock -w.
When the battery of my iBook has run out I'm using the following to
reset RTC to current time so that it is usable again.

Andreas.

#include <time.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/rtc.h>

int
main (void)
{
  time_t now;
  struct tm gmt;
  struct rtc_time rtc;
  int fd;

  now = time (0);
  gmt = *gmtime (&now);
  rtc.tm_sec = gmt.tm_sec;
  rtc.tm_min = gmt.tm_min;
  rtc.tm_hour = gmt.tm_hour;
  rtc.tm_mday = gmt.tm_mday;
  rtc.tm_mon = gmt.tm_mon;
  rtc.tm_year = gmt.tm_year;
  rtc.tm_wday = gmt.tm_wday;
  rtc.tm_yday = gmt.tm_yday;
  rtc.tm_isdst = gmt.tm_isdst;
  fd = open ("/dev/rtc", O_RDONLY);
  if (fd < 0)
    fd = open ("/dev/rtc0", O_RDONLY);
  if (fd < 0)
    {
      perror ("/dev/rtc");
      return 1;
    }
  if (ioctl (fd, RTC_SET_TIME, &rtc) < 0)
    {
      perror ("RTC_SET_TIME");
      return 1;
    }
  return 0;
}

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

Re: RTC on 2.6.36 for PowerMac 8600

From: kevin diggs <hidden>
Date: 2012-01-31 19:31:19

Hi,

On 1/29/12, Andreas Schwab [off-list ref] wrote:
kevin diggs [off-list ref] writes:


Perhaps the RTC was reset due to battery running out?  That would set
the year to 1900, but the kernel RTC interface cannot represent dates
before 1970.  Unfortunately hwclock insists on reading the RTC even when
you just want to write to it, so you cannot fix that with hwclock -w.
When the battery of my iBook has run out I'm using the following to
reset RTC to current time so that it is usable again.

Andreas.
Thanks! I did not know about this problem with the year. This vintage
of mac sets the year to 1956.

Yes, the battery is dead. It is one of those $20 1/3 AA lithium cells.
I can't afford to replace it. I went into the MacOS Classic date
control panel and set the year to 1971 and it worked!

Thanks for the tip. I would have never figured this one out!

kevin
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help