SourceForge project page Download files Get support SVN access
Idle3-tools provides a linux/unix utility that
can disable, get and set the value of the infamous idle3 timer found
on recent Western Digital Hard Disk Drives.
It can be used
as an alternative to the official wdidle3.exe proprietary utility,
without the need to reboot in a DOS environement.
A power off/on cycle of the drive will still be mandatory for new settings to be taken into account.
Idle3-tools
is an independant project, unrelated in any way to
Western Digital Corp.
WARNING : THIS SOFTWARE IS EXPERIMENTAL AND NOT WELL TESTED. IT ACCESSES LOW LEVEL INFORMATION OF YOUR HARDDRIVE. USE AT YOUR OWN RISK.
Modern Western Digital "Green" Drives include the Intellipark feature that stops the disk when not in use.
Unfortunately, the default timer setting is not perfect on linux/unix systems, including many NAS,
and leads to a dramatic increase of the Load Cycle Count value (SMART attribute #193).
If you have a Western Digital EADS or EARS drive, please check you SMART information before it's too late :
$ sudo smartctl -A /dev/sda | grep "^193" 193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 14493If the Load cycle count exceeds 1000, you're probably affected by the idle3 timer problem.
# idle3ctl -g /dev/sda
# idle3ctl -d /dev/sda
# idle3ctl -s 100 /dev/sda
Idle3ctl should be compatible with all modern Western Digital HDD driven by a real SATA controler.
Compatibility with SATA-to-USB adapters is uncertain.
Since idle3ctl uses SMART ATA commands to get and set the idle3 timer, it should work if SMART information can be read from your drive.
The idle3 timer seems to be a power on only setting. That means that the drive needs to be powered OFF and then ON to use the new setting.
Source code and releases can be found on the SourceForge project pages.
After downloading the tarball, for example the 0.9.1 release (idle3-tools-0.9.1.tar.gz), uncompress it :
$ tar xzvf idle3-tools-0.9.1.tar.gzChange to the source directory, and compile the tool :
$ cd idle3-tools-0.9.1 $ makeYou should get the idle3ctl executable :
$ ls idle3ctl idle3ctl $ ./idle3ctl -V idle3ctl v0.9.1And run it with root permissions to get or set the idle3 value :
$ sudo ./idle3ctl -g /dev/sdaNow you can optionnally install the tool to the /sbin directory
$ sudo make installPlease note that, as the idle3 setting of your disk is permanent, you only need to run idle3ctl once per drive.
Christophe Bothamy is the author of this software.
Low level ata I/O is done using the sgio.c file of the hdparm project.
The idle3-tools project is release under the GNU GPL v3.
The Bochs project has been an invaluable tool for reverse engeeniring the proprietary WD ATA commands.
Feedback is welcome ! Please report which HDD model you had success (or not). Report bugs to the SourceForge tracker.
Feature : 0x45 Count : 0x00 LBA16-24: 0x57 LBA08-15: 0x44 LBA00-07: 0x00 Device : 0xA0 Command : 0x80 (Vendor Specific)
Feature : 0xD6 Count : 0x01 LBA16-24: 0xC2 LBA08-15: 0x4F LBA00-07: 0xBE Device : 0xA0 Command : 0xB0 (SMART Function D6 Write Log) Log page sent (512 bytes, 00 padded) : 2a 00 01 00 02 00 0d 00 16 00 01 00 00 00 00
Feature : 0xD5 Count : 0x01 LBA16-24: 0xC2 LBA08-15: 0x4F LBA00-07: 0xBF Device : 0xA0 Command : 0xB0 (SMART Function D5 Read Log) Log page read (512 bytes) : Timer value is in 1st byte of the received log page
Feature : 0x44 Count : 0x00 LBA16-24: 0x57 LBA08-15: 0x44 LBA00-07: 0x00 Device : 0xA0 Command : 0x80 (Vendor Specific)
Feature : 0x45 Count : 0x00 LBA16-24: 0x57 LBA08-15: 0x44 LBA00-07: 0x00 Device : 0xA0 Command : 0x80 (Vendor Specific)
Feature : 0xD6 Count : 0x01 LBA16-24: 0xC2 LBA08-15: 0x4F LBA00-07: 0xBE Device : 0xA0 Command : 0xB0 (SMART Function D6 Write Log) Log page sent (512 bytes, 00 padded) : 2a 00 02 00 02 00 0d 00 16 00 01 00 00 00 00
Feature : 0xD6 Count : 0x01 LBA16-24: 0xC2 LBA08-15: 0x4F LBA00-07: 0xBF Device : 0xA0 Command : 0xB0 (SMART Function D6 Write Log) Log page sent (512 bytes, 00 padded) : Send Timer value as 1st byte of log page
Feature : 0x44 Count : 0x00 LBA16-24: 0x57 LBA08-15: 0x44 LBA00-07: 0x00 Device : 0xA0 Command : 0x80 (Vendor Specific)
The value 0 is used when the timer is disabled.
The values 1 to 128 are reported in .1s by all wdidle3.exe versions.
The values 129 to 255 are in .1s for version 1.00, but in 30s for versions 1.03 and 1.05
The difference only affects the output, the stored timer is identical between versions.
Maybe different WD drives have different beheviour.
wdidle3 | v1.00 | v1.03 | v1.05 |
---|---|---|---|
0 | disabled | disabled | disabled |
1 | 100ms | 100ms | 100ms |
100 | 10s | 10s | 10s |
128 | 12.8s | 12.8s | 12.8s |
129 | 12.9s | 30s | 30s |
130 | 13s | 60s | 60s |
254 | 25.4s | 3780s | 3780s |
255 | 25.5s | 3810s | 3810s |