The speed at which your hard drive transfers
data is very important, right? Especially if you
need to copy a 20-gigabyte file, like I did. My
laptop was initially copying the file at 2 MB/s
because it was transferring in PIO-only mode, which
would have taken almost three hours. Not only is PIO
terribly slow, it consumes lots of CPU power. While
copying that 20-gigabyte file, my CPU usage stayed
at 100%. Therefore, I tried to figure out the best
way to increase the transfer rate. I changed the
transfer mode to UltraDMA-6, speeding it up by 600%
to 12 MB/s, and the 20-gigabyte file copied in a
little over 30 minutes. Plus, my CPU usage was only
about 20-30%.
So, how did the drive get lowered from UltraDMA
to PIO-only mode in the first place? Well, because
Windows has a particularly dumb way of handling
transfer modes for storage devices. After six
cumulative (all-time total) errors while reading or
writing a storage device, Windows will automatically
lower its transfer mode. Worse, it never goes back
up unless you reinstall the device. This is bad if
you put in a scratched CD, causing those
six-in-a-lifetime errors happen all at once. Even
your hard drive will experience an occasional
hiccup, so eventually its transfer rate is not safe
either.
However, there is a setting to force Windows to
only lower the transfer rate after six consecutive
(in a row) errors, and then raise it back up when
the errors stop. Therefore, you can keep your drives
in UltraDMA-6 mode.
If you would like to try changing the transfer
mode for your drives, follow the instructions below.
Going from PIO-only mode to UltraDMA-6 will show you
the most significant performance boost. However,
your results may vary. Of course, your drive and
motherboard must support UltraDMA-6, or you won't
see much of a difference. Be careful while you are
doing this; I am not responsible for any mistakes
you make. Please back up your registry first in case
something goes wrong!
How to Check Current Transfer Mode
Open Device Manager
Expand IDE ATA/ATAPI Controllers
Double click on Primary IDE Controller
or Secondary IDE Controller
Go to the Advanced Settings tab to see
the current transfer modes. If you see
anything besides UltraDMA-6, and especially
if you see PIO Mode, then follow the steps
below.
How to Force UltraDMA-6
Open up the Registry Editor.
Navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}.
There are several sub-keys under this
one, such as 0000, 0001, etc. You are
interested in two of them that say Primary
IDE Channel and Secondary IDE Channel.
Make the following changes to both of
those keys:
Delete any attributes named
MasterIdDataCheckSum or
SlaveIdDataCheckSum. This resets the
tracking for errors that Windows uses to
determine when the transfer mode should
be lowered.
Add an attribute with the name
ResetErrorCountersOnSuccess and a DWORD
value of 1. This tells Windows that it
should lower the transfer mode when
there are six consecutive errors instead
of six cumulative errors.
If they exist, set the following
keys to a hexadecimal value of ffffffff
(eight F's). This will change the
transfer modes to UltraDMA-6:
MasterDeviceTimingMode
MasterDeviceTimingModeAllowed
SlaveDeviceTimingMode
SlaveDeviceTimingModeAllowed
UserMasterDeviceTimingModeAllowed
UserSlaveDeviceTimingModeAllowed
Reboot your computer and check the
devices to see if they are set to
UltraDMA Mode 6.