Difference between revisions of "Hard Drive Active Protection System"

From ArchWiki
Jump to navigation Jump to search
(gnome-hdaps-applet: AUR package updated)
(invert module parameter)
Line 19: Line 19:
=== invert module parameter ===
=== invert module parameter ===
For some thinpad, the invert module parameter is needed in order to handle the X and Y rotation axes correctly. In that case, you can simply add the option to the insmod command, e.g.:
For some ThinkPads, the invert module parameter is needed in order to handle the X and Y rotation axes correctly. In that case, you can simply add the option to the insmod command, e.g.:
  insmod /lib/modules/$(uname -r)/extra/hdaps.ko invert=5
  insmod /lib/modules/$(uname -r)/extra/hdaps.ko invert=5

Revision as of 02:40, 3 September 2010

This page describes how to install HDAPS on your Arch Linux installation. HDAPS stands for "Hard Drive Active Protection System." Its purpose is to protect your hard drive from sudden shocks (such as dropping or banging your laptop on a desk). It does this by parking the disk heads, so that shocks don't cause them to crash into the drive's platters. Hopefully, this will prevent catastrophic failure.

As of Linux 2.6.28, the kernel has the ability to park disk heads on demand. Previously, this had to be patched into the kernel. Thanks to the kernel devs' hard work, we no longer have to rebuild our kernel to use this feature. Obviously, this means you need to be running 2.6.28 to follow this guide.

Shock Detection

Your hardware needs to support some kind of shock detection. This is usually in the form of an accelerometer built into your laptop's motherboard. If you have the hardware, you also need a way to communicate what the hardware is detecting to your operating system. This section describes drivers to communicate the accelerometer's state to the OS so it can detect and protect against shocks.


tp_smapi is a set of drivers for ThinkPad laptops. It is highly recommended if you have a ThinkPad, even if you don't plan to use HDAPS. Among a plethora of other useful things, tp_smapi represents the accelerometer output as joystick devices /dev/input/js# (Note! This could interfere with other joystick devices on your system).

Install tp_smapi from AUR. After installing, add tp_smapi to your MODULES array. After a reboot, this will activate most of the drivers, represented through the /sys/devices/platform/smapi filesystem.

The kernel provides its own HDAPS drivers. For this reason, the HDAPS part of tp_smapi is built separately. Attempting to add hdaps to your MODULES array will result in the default drivers being loaded. This is not what we want, as we have our special ThinkPad HDAPS drivers. Instead, modify your /etc/rc.local to include the following line: insmod /lib/modules/$(uname -r)/extra/hdaps.ko

This will load the ThinkPad HDAPS module at the end of the initialization sequence.

invert module parameter

For some ThinkPads, the invert module parameter is needed in order to handle the X and Y rotation axes correctly. In that case, you can simply add the option to the insmod command, e.g.:

insmod /lib/modules/$(uname -r)/extra/hdaps.ko invert=5

for a ThinkPad X200. The invert option takes the following values:

  • invert=1 invert both X and Y axes;
  • invert=2 invert the X axes (uninvert if already both axes inverted)
  • invert=4 swap X and Y (takes place before inverting)

Note that options can be summed. For instance, invert=5 swaps the axes and inverts them. The maximum value of invert is obviously 7. If you do not know which option is correct for you, just try them out with hdaps-gl or some other GUI (see below). Alternatively, you can determine the exact value for your thinkpad model from this table under the column labelled "HDAPS axis orientation".

Shock Protection

Now that your hardware is reporting its shock detection to the OS, we need to do something with this data. This section describes software utilities to transform the sensor output into shock protection.


hdapsd monitors the output of the HDAPS joystick devices to determine if a shock is about to occur, then tells the kernel to park the disk heads.

Install hdapsd from AUR. Be sure to review /etc/conf.d/hdapsd to ensure that it's protecting the correct hard drive.

Because we have to load the hdaps module in rc.local, which executes after the DAEMONS array is loaded, we have to put hdapsd in rc.local instead of in DAEMONS like usual. Modify /etc/rc.local again, putting this line after the insmod added above:

/etc/rc.d/hdapsd start

After a reboot, your computer will now monitor the joystick devices and park your disk heads to protect it against shocks. If you find that the HDAPS protection is too sensitive, please edit the file


and edit the sensitivity line. The larger number is defined, the less sensitive HDAPS protection gets.

Reboot your computer at this point. After init, if you jiggle your laptop, you should be able to hear the hard drive park. Don't do this too much :)

GUI Utilities

Utilities exist to monitor hdapsd's status so you know what's going on while you're using your laptop. These are entirely optional, but very handy.


This is a GNOME panel applet (Note: XFCE can use GNOME panel applets) that represents the current status of your hard drive. There's already a PKGBUILD in AUR (see here). If you don't want to monitor sda or hda by default, edit the PKGBUILD before compiling.


A KDE version exists as well. khdapsmonitor in AUR (This project was abandoned and it is for KDE3). For KDE4 there is a version of plasmoid for HDAPS monitoring HDAPS applet. HDAPS-Monitor plasmoid is available in AUR.

xfce4-hdaps applet

This is a Xfce4 panel applet that can represents the current status of your hard drive. Available in AUR. After install, add this applet to a panel.

thinkhdaps A standalone GTK applet

A standalone GTK applet for HDAPS disk protection status. While running will show applet icon in the notification area. Available in AUR.


Simple OpenGL application showing the 3D animation of your Thinkpad. Similar to the apllication Lenovo distributes with Windows. hdaps-gl is available in AUR.

See Also