Home | News | Download | Packages | Forum | Wiki | Github

WD HDD idle3 timeout


#1

Big ups to everybody! :sunglasses:

I recently discovered an absolutely horrible thing with the Western Digital 2.5" HDD in my laptop.
I explain:
By reading the hdparm f***g manual I noticed the -J option:

-J     Get/set the Western Digital (WD) Green Drive's "idle3" timeout
              value.  This timeout controls how often the drive parks its
              heads and enters a low power consumption state.  The factory
              default is eight (8) seconds, which is a very poor choice for
              use with Linux.  Leaving it at the default will result in
              hundreds of thousands of head load/unload cycles in a very short
              period of time.  The drive mechanism is only rated for 300,000
              to 1,000,000 cycles, so leaving it at the default could result
              in premature failure, not to mention the performance impact of
              the drive often having to wake-up before doing routine I/O.

              WD supply a WDIDLE3.EXE DOS utility for tweaking this setting,
              and you should use that program instead of hdparm if at all
              possible.  The reverse-engineered implementation in hdparm is
              not as complete as the original official program, even though it
              does seem to work on at a least a few drives.  A full power
              cycle is required for any change in setting to take effect,
              regardless of which program is used to tweak things.

              A setting of 30 seconds is recommended for Linux use.  Permitted
              values are from 8 to 12 seconds, and from 30 to 300 seconds in
              30-second increments.  Specify a value of zero (0) to disable
              the WD idle3 timer completely (NOT RECOMMENDED!).

Using this -J option I discovered that my WD 2.5" HDD was affected by this bad 8 seconds timeout.

The manual refers to the WIDLE3.EXE DOS utility for tweaking this setting.
I found this web page to help using the DOS utility.

Instead of using a DOS utility, I found the package idle3-tools for tweaking this setting:

DESCRIPTION
       idle3ctl can disable, get and set the value of the infamous idle3 timer
       found on recent Western Digital Hard Disk Drives.  Idle3ctl can be used
       as an alternative to the official wdidle3.exe proprietary utility,
       without the need to reboot in a DOS environement.  Idle3ctl is an
       independant project, unrelated in any way to Western Digital Corp.

       THIS SOFTWARE IS EXPERIMENTAL, NOT WELL TESTED AND ACCESSES LOW LEVEL
       INFORMATION OF YOUR HARDDRIVE. USE AT YOUR OWN RISK.

I found the Arch wiki page to help using the idle3ctl command.

I disabled the timeout setting with the -d option, and now you can see:

$ sudo idle3ctl -g /dev/sda
Idle3 timer is disabled

The package smartmontools is useful too:

$ sudo smartctl /dev/sda -a | grep Load_Cycle
193 Load_Cycle_Count        0x0032   068   068   000    Old_age   Always       -       396805

396805 it’s a lot of cycles !!
At least I stopped the bleeding… :thermometer_face: