Hard Drive Active Protection System

Related articles
hpfall
Hard Drive Active Protection System
(HDAPS) protects 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 do not cause them to crash into the drive's platters. Hopefully, this will prevent catastrophic failure.
Note
SSD
drives do not need HDAPS as they lack any mechanical components.
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
tp_smapi
is a set of drivers for many ThinkPad laptops.  It is highly recommended if you have a supported ThinkPad, even if you do not 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
. 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. The
tp_smapi
package installs
hdaps.ko
to
/lib/modules/$(uname -r)/updates
, which will let it supersede the built-in module.  Thus, you can simply add
hdaps
to your
MODULES
array.
Note
According to
this bug report
, certain ThinkPad laptops use different firmware which tp_smapi does not support and is unlikely to support in the near future. This includes the following series: Edge, SL, L, X1xxe. Only one of these is listed in the "unsupported hardware" page for the project, however, and that listing suggests that the x121e should mostly work. I get the same error with the x121e listed at the bottom of the bug report as a different and more fundamental problem, though, so it may be that some models of the x121e are mostly supported and others are entirely unsupported.
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 add the option in
/etc/modprobe.d/modprobe.conf
:
options hdaps invert=1
invert=1
is an example value used for a ThinkPad T410. 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".
As an alternative to reloading the
hdaps
module, the
invert
value can also be written directly to
/sys/devices/platform/hdaps/invert
.
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
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.
You should check your "Load cycle count" in
SMART
when setting up hdaps, if it is too sensitive the head would park too often and load cycle count would rise too rapidly.
Install
hdapsd
. You can
start
hdapsd with
hdapsd@device.service
, however you do not need to enable it.
The package installs udev rules. Udev will start one hdapsd instance for each rotational, non-removable disk it finds.
For more information, see the
hdapsd github page
.
It may be desirable to tweak the parameters used by hdaspd.
Edit
hdapsd.service
and add e.g
--sensitivity=40 -blp
to the parameters.
GUI Utilities
Utilities exist to monitor hdapsd's status so you know what is going on while you are using your laptop. These are entirely optional.
xfce4-hdaps
— Xfce4 panel applet that can represents the current status of your hard drive.
https://michael.orlitzky.com/code/xfce4-hdaps.xhtml
||
xfce4-hdaps
AUR
HDAPSicon
— Formerly thinkhdaps, standalone GTK applet for HDAPS disk protection status.
https://github.com/thpani/thinkhdaps
||
hdapsicon-git
AUR
hdaps-gl
— Simple OpenGL application showing the 3D animation of your Thinkpad. Similar to the apllication Lenovo distributes with Windows.
https://github.com/evgeni/hdapsd
||
hdaps-gl
AUR
See also
Active hard-drive protection
How to protect the harddisk through APS