Difference between revisions of "Problems with hwclock"
Btreehugger (Talk | contribs) (→Affected Models) |
Btreehugger (Talk | contribs) (→Affected Operating Systems) |
||
Line 70: | Line 70: | ||
== Affected Operating Systems == | == Affected Operating Systems == | ||
− | *Linux, all flavours. Tested with kernel 2.6.18, 2.6.19, 2.6.20.6, 2.6.21.1 | + | *Linux, all flavours. Tested with kernel 2.6.18, 2.6.19, 2.6.20.6, 2.6.21.1, 2.6.22.5 |
Revision as of 19:29, 18 July 2007
This page discusses the problem with /dev/rtc on certain models.
Problem description
On bootup,a message like this shows up:
select() to /dev/rtc to wait for clock tick timed out
The RTC kernel driver can't handle the system clock.
Possible solutions
Using the --directisa switch of hwclock(8)
The hwclock command knows the parameter --directisa to access the system clock "directly" instead of accessing it by using /dev/rtc. There are several ways of doing this automatically.
Generic instructions
Move /sbin/hwclock (or wherever it is located on your system) to /sbin/hwclock.dist and create the following shell script, which you place at /sbin/hwclock
#!/bin/sh /sbin/hwclock.dist --directisa "$@"
Make the script executable (apply the same permissions you had for hwclock before) and keep your packaging system from overwriting it on updates.
Debian 4.0 (etch)
Add the following to /etc/default/rcS:
HWCLOCKPARS="--directisa"
Debian 3.1 (sarge) and previous
Edit /etc/init.d/hwclock.sh and change all instances of "/sbin/hwclock" to "/sbin/hwclock --directisa".
Gentoo
Edit /etc/init.d/clock and set CLOCK_OPTS to
CLOCK_OPTS="--directisa"
Compiling RTC-support into the kernel instead of as a module
Compiling RTC-support (CONFIG_RTC) into the kernel instead of compiling it as a module seems to work also. Tested on: 2.6.20.6 at Thinkpad Z61m 9450-3HG
Using Alternate RTC Drivers
Use of an alternate RTC driver may yield better results. RTC drivers available in recent kernels include:
- genrtc (CONFIG_GEN_RTC): A generic RTC emulation driver.
- rtc class (CONFIG_RTC_CLASS): A new RTC driver class which separates the userspace interface from the hardware-level drivers. Several user-level interfaces may be exposed, including the venerable /dev/rtc node, independently of the actual underlying hardware. These drivers are marked experimental as of kernel 2.6.21.
Strictly speaking, for the new RTC class drivers, you need to load a user-level interface driver as well as a hardware driver, making these drivers more complex to use. However, in many cases, loading just the user-level interface driver rtc_dev is sufficient to get hwclock working.
All RTC drivers may be compiled as loadable modules. To test which driver works best for you, load each driver in turn and use hwclock to test results. Example:
# modprobe rtc # hwclock --show # rmmod rtc # modprobe genrtc # hwclock --show # rmmod genrtc # modprobe rtc_dev # hwclock --show # rmmod rtc_dev
Affected Models
- Thinkpad T60 (not all models)
- Thinkpad T61 (type 7662, maybe others)
- Thinkpad T60p
- Thinkpad X60s
- Thinkpad Z61m
- Thinkpad Z61t (type 9440-CTO, maybe others)
- Thinkpad R60e (type 0657, maybe others)
- Thinkpad T42 (type 2373, maybe others)
Affected Operating Systems
- Linux, all flavours. Tested with kernel 2.6.18, 2.6.19, 2.6.20.6, 2.6.21.1, 2.6.22.5