24 mai 2010

Western Digital Caviar Green WD20EADS

I have built a Linux-based computer which serves as a Network Attached Storage server; it has several Western Digital Caviar Green WD20EADS disks. As fate would have it, those disks suffer from the well-known mismatch between Linux and Western Digital's ideas about how to make hard disks use less power.

By default, Western Digital Caviar Green drives will park the read/write heads after 8 seconds of inactivity; on the other hand, Linux (Ubuntu Server 10.04 in my case) will write to the log files and synchronize the cache every 30 seconds or so. This mismatch results in unreasonably frequent parking and uparking of the disk heads. The problem is well-documented (try searching Google for Caviar Green 193 counter) and the recommended solution is to use the WDIDLE3 utility to disable the Idle3 timer or to set it to a larger value.

This post is not intended to give advice. I have simply documented what I did to my disks. I am not responsible for your disks or for their contents. You have been warned.

WDIDLE3 is a DOS-based program. In order to run it the computer had to be started using MS-DOS or FreeDOS. I have solved this issue by making a FreeDOS boot disk on a USB flash drive on my (Windows-based) laptop.

On a Windows-based computer:

  1. Download HP USB Disk Storage Format Tool and install it.
  2. Download the WDIDLE3 utility and save the file WDIDLE3.EXE; remember where you saved it.
  3. Get the minimal FreeDos files archive kernel.zip from FDOS.org and upack its contents in the folder where you saved WDIDLE3.EXE.
  4. Obtain an old USB flash disk; the smaller its capacity the better. The USB flash disk will be formatted as FreeDOS boot disk and all its contents will be lost -- so save it if you need it.
  5. Use the HP USB Disk Storage Format Tool to format the USB flash disk as a FreeDOS boot disk:
    • Take care to identify your USB flash disk; the tool will blindly format the drive you choose, so be careful.
    • Check the box "Create a DOS startup disk" and tell the tool to use the files saved in Step 3.
  6. Copy WDIDLE3.EXE to the newly formatted USB flash disk.

On the Linux computer:

  1. Shutdown the system and power it off.
  2. Insert the USB flash disk prepared on the Windows-based computer.
  3. Power on the computer and invoke BIOS setup.
  4. Do what you have to do in BIOS to make the computer boot from the USB flash disk. (On my computer the trick was to go into "Hard disk boot priority" and move the USB flash disk to the top of the list.)
  5. Boot from the flash disk.
  6. At the DOS prompt enter the command WDIDLE3; this should display the current status of all the supported Western Digital disks attached to the computer.
  7. To disable the Idle3 timer say WDIDLE3 /D. To set it to the maximum allowed value of 300 seconds say WDIDLE3 /S300.
  8. Enter the command WDIDLE3 again to check the results.
  9. Ctrl-Alt-Del to reboot, enter BIOS setup, undo what you did in Step 4 -- you don't want to leave the computer in a state where it prefers to boot from random USB sticks.


  • Western Digital does not support WDIDLE3 for WD20EADS disks. So use it if you wish but on your own risk.
  • Before anything else check whether hdparm -B 254 /dev/sdx works on your computer. On mine it didn't work -- that's why I had to use WDIDLE3.

Niciun comentariu:

Trimiteți un comentariu