Difference between revisions of "Problems with hwclock"
(Added X60s to the list) |
StephenKell (Talk | contribs) m (My T22 and A22m (now stolen )-: also suffer from this) |
||
(15 intermediate revisions by 12 users not shown) | |||
Line 11: | Line 11: | ||
== Possible solutions == | == Possible solutions == | ||
− | The '''hwclock''' command knows the parameter ''--directisa'' to access the system clock directly. | + | === 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 | ||
+ | |||
<pre>#!/bin/sh | <pre>#!/bin/sh | ||
− | /sbin/hwclock.dist --directisa $ | + | /sbin/hwclock.dist --directisa "$@"</pre> |
Make the script executable (apply the same permissions you had for ''hwclock'' before) and keep your packaging system from overwriting it on updates. | 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''': | ||
+ | |||
+ | <pre>HWCLOCKPARS="--directisa"</pre> | ||
+ | |||
+ | ==== 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/conf.d/clock''' and set ''CLOCK_OPTS'' to | ||
+ | <pre>CLOCK_OPTS="--directisa"</pre> | ||
+ | |||
+ | === Compiling RTC-support into the kernel instead of as a module === | ||
+ | |||
+ | Compiling RTC-support {{kernelconf|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''' {{kernelconf|CONFIG_GEN_RTC||||||}}: A generic RTC emulation driver. | ||
+ | * '''rtc class''' {{kernelconf|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: | ||
+ | |||
+ | <pre># modprobe rtc | ||
+ | # hwclock --show | ||
+ | # rmmod rtc | ||
+ | # modprobe genrtc | ||
+ | # hwclock --show | ||
+ | # rmmod genrtc | ||
+ | # modprobe rtc_dev | ||
+ | # hwclock --show | ||
+ | # rmmod rtc_dev</pre> | ||
== Affected Models == | == Affected Models == | ||
− | *Thinkpad {{T60}} | + | *Thinkpad {{T60}} (not all models) |
+ | *Thinkpad {{T61}} (type 7662, maybe others) | ||
*Thinkpad {{T60p}} | *Thinkpad {{T60p}} | ||
*Thinkpad {{X60s}} | *Thinkpad {{X60s}} | ||
+ | *Thinkpad {{X61s}} | ||
+ | *Thinkpad {{Z61m}} | ||
+ | *Thinkpad {{Z61t}} (type 9440-CTO, maybe others) | ||
+ | *Thinkpad {{R60e}} (type 0657, maybe others) | ||
+ | *Thinkpad {{T22}} (type 2647, maybe others) | ||
+ | *Thinkpad {{T42}} (type 2373, maybe others) | ||
+ | *Thinkpad {{R52}} (type 1846) | ||
+ | *Thinkpad {{R61}} {type 8944, maybe others} | ||
+ | *Thinkpad {{A22m}} | ||
+ | |||
+ | Note: Also affects Compaq Presario C300 | ||
== Affected Operating Systems == | == Affected Operating Systems == | ||
− | *Linux, all flavours. Tested with kernel 2.6.18 | + | *Linux, all flavours. Tested with kernel 2.6.18, 2.6.19, 2.6.20.6, 2.6.21.1, 2.6.22.5 |
Latest revision as of 21:14, 3 November 2008
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/conf.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 X61s
- Thinkpad Z61m
- Thinkpad Z61t (type 9440-CTO, maybe others)
- Thinkpad R60e (type 0657, maybe others)
- Thinkpad T22 (type 2647, maybe others)
- Thinkpad T42 (type 2373, maybe others)
- Thinkpad R52 (type 1846)
- Thinkpad R61 {type 8944, maybe others}
- Thinkpad A22m
Note: Also affects Compaq Presario C300
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