Difference between revisions of "HDAPS"
(→Input device support) |
(→Input device support) |
||
Line 42: | Line 42: | ||
{{cmdroot|addgroup joy}}<br> | {{cmdroot|addgroup joy}}<br> | ||
{{cmdroot|adduser <you> joy}}<br> | {{cmdroot|adduser <you> joy}}<br> | ||
− | + | <code># echo 'SUBSYSTEM=="input", KERNEL=="js*", MODE="0660", GROUP="joy"' >> /etc/udev/hdaps-joy.rules</code><br> | |
{{cmdroot|ln -s ../hdaps-joy.rules /etc/udev/rules.d/z60_hdaps-joy.rules}}<br> | {{cmdroot|ln -s ../hdaps-joy.rules /etc/udev/rules.d/z60_hdaps-joy.rules}}<br> | ||
Revision as of 08:37, 25 March 2008
HDAPS - IBM Active Protection System Linux DriverThis is the Linux driver for monitoring the accelerometer known as IBM Active Protection System. The driver only enables reading of the acceleration data. It does not perform automatic disk head parking. But there are already some other useful applications for HDAPS, using the /sys interface it provides. ATTENTION!
There are two versions of the hdaps driver, one in the Linux kernel mainline, and another provided by tp_smapi. Use of the tp_smapi version of hdaps is strongly recommended by the current hdaps developers.
|
Features
- provides accelerometer values via sysfs
- provides a joystick type input device
Project Homepage / Availability
- Project Homepage
- The driver is included in the 2.6-mm series of kernels since August, 26th 2005.
- The driver is now in the mainline (2.6.14).
- The tp_smapi package contains some patches to this driver. These are necessary for some recent models, and recommended for all.
Status
A driver is included in recent Linux kernels and is actively maintained, but it is very inferior to the driver in tp_smapi (which provides its own hdaps module).
How to install the driver
Recent Linux kernels include the hdaps driver. However, the driver in the mainline Linux kernel has two problems with recent models:
- It doesn't whitelist them (you have to edit hdaps_init() in drivers/hwmon/hdaps.c to include a line like HDAPS_DMI_MATCH_LENOVO("ThinkPad T60"))
- It doesn't work reliably, e.g., it may read out constant values (0,0). See here.
To solve both problems, install the modified hdaps that is bundled with tp_smapi.
Harddisk Protection
As mentioned above, the hdaps kernel driver is only responsible for reading the accelerometer data and exporting it through the sysfs interface. In order to use this information to protect the disk, some additional steps are required.
See How to protect the harddisk through APS.
Input device support
In more recent versions of the Linux kernel, (2.6.14 and later?) hdaps also exports a joystick type input device which must be handled by the additional kernel module joydev
. When both modules are loaded, files /dev/input/js0 and /dev/input/js1) are created by udev for use by user space programs that access the joystick. It appears that js0 gives output that is automatically calibrated to some degree, while js1 gives raw output.
In order for non-root users to access these device files, their permissions must be tweaked a little through an appropriate udev rule and corresponding "joy" group.
# addgroup joy
# adduser <you> joy
# echo 'SUBSYSTEM=="input", KERNEL=="js*", MODE="0660", GROUP="joy"' >> /etc/udev/hdaps-joy.rules
# ln -s ../hdaps-joy.rules /etc/udev/rules.d/z60_hdaps-joy.rules
Programs you can use to test and calibrate the device files include jscalibrator
(gui) and jstest
/jscal
(cli) packaged together (at least in Debian) simply as "joystick".
Applications
Disk head parking
You will need the kernel patch and userspace daemon. The GUI monitoring is optional.
See How to protect the harddisk through APS for more information.
Kernel patch
Due to significant changes in the way the libata module which handles disk i/o, applying any of the currently available patches to kernel 2.6.24 will intermittently cause system hangs when the queue is frozen (i.e., the heads are parked). It is recommended either that you stay at kernel 2.6.23 or do without disk protection in 2.6.24 until the kinks have been worked out. There has been significant work on the part of Elias Oltmanns, author of the more recent patches, to get this worked out and eventually get shock protection built into the mainline kernel.
Below are patches for various Linux kernel versions. As noted above, your mileage may vary with the 2.6.24-rc3 patch as it was after this release candidate that things stopped working nicely.
patch -p1 -l < hdaps_xx.patch
- New interface
- disk-protect patch for kernel 2.6.24-rc3 — may cause system locks (see here, here and try this fix)
- disk-protect patch for 2.6.23.8 + error check fix
- disk-protect patch for 2.6.22.9 and 2.6.23-rc9
- disk-protect patch for 2.6.20-rc6
- Old interface
- Latest sata/ide disk protection patch for 2.6.20
- Latest sata/ide disk protection patch for 2.6.19-rc6
- Latest sata/ide disk protection patch for 2.6.18.3
- Untested patch for 2.6.17.1: see [1]
- Latest sata/ide disk protection patch for use with the libata hotplug 2.6.17.4 patches - See How_to_hotswap_UltraBay_devices
- Latest sata/ide disk protection patch for use with the libata hotplug 2.6.16.16 patches - See How_to_hotswap_UltraBay_devices
- Latest sata/ide disk protection patch for 2.6.16
- sata/ide disk protection patch for 2.6.15
- disk park patch adapted for the t41p model kernel 2.6.15 (capability detection disabled, no libata support)
- disk park patch adapted for the t41p model kernel 2.6.14 (capability detection disabled, no libata support)
- disk park patch an experimental patch for parking the disk (Linux 2.6.14 for 2.6.15 see below)
Userspace daemon
- Recommended version
- Reduced power version - reduces timer interrupts, as measured by PowerTOP. This leads to lower power consumption on tickless kernels. Interrupt reduction requires the hdaps kernel module from tp_smapi 0.32 or newer, and a udev rule.
- Modified adaptive algorithm version - uses a different (and potentially better) algorithm for the adaptive sensivity threshold.
GUI monitoring
- khdapmonitor KDE System Tray Monitor
- gnome-hdaps-applet visual display of disk protection status in gnome panel
Security & safety
Tilt monitoring
- gkhdaps a GKrellM applet displaying tilt data
- gnome-tilt a gnome applet showing tilt data
Visualisation of ThinkPad orientation
- hdaps-gl a little app animating a 3D-ThinkPad
- hdapsgl-applet a GNOME applet animating a 3D-ThinkPad
- wmadhps a WindowMaker DockApp animating a 3D-ThinkPad
- OpenGL gyroscope hack keeps your display levelled when tilting the ThinkPad
Games
- Neverball is quite fun with HDAPS. (You'll need to have the HDAPS joystick device)
- Turn your ThinkPad into a Jedi Weapon (hey, it works for Mac laptops)
Other
- smack.py - switch workspace by smacking your laptop, inspired by the SmackBook (uses EWMH)
- an improved version adds stabilization (by comparing smacks to previous ones, uses EWMH)
- another approach adds stabilization (by requiring a certain type of value deflection, uses xmacroplay)
- GTollina is another smack program for use with compiz (video here).
- xmms-smack.py - move through your xmms playlist by smacking, based on the two smack scripts above.
- KnockBasedCommands - Execute commands by tapping your laptop.
- rotate.py - rotate desktop by turning your laptop
- HDAPS mailinglist and its archive
- #hdaps channel on irc.freenode.org
- hdaps projects overview of userspace programs using hdaps
- IBM ThinkPads hardware drive firmware site
- http://www.paul.sladen.org/thinkpad-r31/accelerometer/
- http://bugs.gentoo.org/show_bug.cgi?id=119845 Gentoo ebuild for hdaps driver and daemon including a initscript*
- http://bugs.gentoo.org/show_bug.cgi?id=137345 Gentoo ebuild for gkhdaps gkrell plugin
- http://bugs.gentoo.org/show_bug.cgi?id=137350 Gentoo ebuild for hdaps-gl application
- http://bugs.gentoo.org/show_bug.cgi?id=137351 Gentoo ebuild for gnome hdapsgl-applet
- http://bugs.gentoo.org/show_bug.cgi?id=137352 Gentoo ebuild for gnome tilt application
- http://bugs.gentoo.org/show_bug.cgi?id=137353 Gentoo ebuild for wmhdaps
- Why the ThinkPad accelerometer is only 2D - explanation by Lenovo