I recently purchased a WD SATA2 320gb hard drive to to add to my fileserver at home to bring it to ~2TB. I bought the SATA2 drive thinking I wouldnt have any major dramas trying to run it off a SATA onboard mobo controller. What ensued was 2 days of pain, frustration and a lot of killing. (ok, maybe not the last part.)

Anyway, my fileserver is nothing special, just a streamlimed copy of WinXP running on an Asus P4C800 motherboard and 2gigs of ram. The P4C800 motherboard only has a SATA1 controller onboard - which is ok, since the mobo is a couple of years old. After installing the new hdd, to my disappointment, Windows XP kept running it in PIO mode instead of DMA.

For those who do not know, PIO is a slow and inefficient data transfer mode when XP isnt able to use DMA. PIO mode is much, much slower than DMA. I was actually getting a ridiculous 3MB/sec data transfer rate compared to ~13-14MB/sec which you normally get.

Anyway, I tried everything from jumper’ing the hdd to sata1 mode via its jumper pins, the mobo BIOS, drivers, numerous registry ‘fixes’ that other people have gotten to work etc etc but nothing worked, until I came across this fix a couple of hours ago.

To anyone who comes across this page via Google and is looking for an answer, this is what worked for me:

HKEY_LOCAL_MACHINE > SYSTEM > CURRENTCONTROLSET > CONTROL > CLASS > {4D36E96A-E325-11CE-BFC1-08002BE10318}

Create a DWORD entry called EnableUDMA100 with the value set as “1“.

Do this for each sub directory (0000,0001,0002,0003,0004..) and reboot.

dma

This is what worked for me :)