1. Quick solution
This is the recommended solution. If you're not interested in the details, but just want to fix this problem as quickly as possible:
- Internet Explorer: click, Firefox and other browsers: right-click here.
- Internet Explorer: Despite any warnings click on the [Open] or [Execute] buttons as required to execute the file resetdma.vbs.
Firefox and other browsers: Save the file resetdma.vbs to your hard disk. Double-click on the file in Windows Explorer and allow it to be executed.
(If you fear that this web site could be malevolent, you could use the manual method instead, which is described below. You can also download, save, and inspect the program with an editor like the Windows Notepad. It is a script text file.)
- If the program found any ATA or SATA channel to reset, reboot your computer and test all drives.
- If the problem is still not solved, set the offending channel to PIO manually, reboot your computer, set the channel back to DMA, and reboot again.
- Please report your results here. Thanks!
Please note that this works only with the Windows drivers. If your device had its own manufacturer's drivers installed, this program cannot fix the problem and will not do anything to them. Instead it will report that no resettable DMA channels were found.
Note also that many CD and DVD drives only use UDMA-2, because their data rate is much lower than that of a hard disk. This is normal and no reason to worry.
If you are interested in the details, read on.
The program tries to reenable DMA in the
registry exactly as described below, for all suitable (S)ATA channels. Windows then redetects the DMA status after the next reboot.
If you use the program again after a short while, it may again report that it has reset the channels. This is normal behavior and not a sign of any problem.
2. General description
This article also applies to Windows 2000. (Peter Frank reported successful application on Windows 2000 with Service Pack 4.)
DMA is an abbreviation for Direct Memory Access, an access method for external devices where the data transfer is not done by the central processor, but by a small special processor called DMA controller. It uses a procedure called cycle stealing, where the central processor memory access cycles are delayed for very short times to intersperse DMA controller memory access cycles. Some newer, faster DMA modes are called UDMA (Ultra DMA).
The alternative, slow and inefficient data transfer mode is called PIO, Programmed Input-Output, where the central processor transfers data byte for byte or word for word. This requires many processor commands for each data word and therefore causes a high and unwanted processor load.
A typical symptom of PIO mode is slow data transfer, accompanied by high processor load, leading, for example, to a choppy video display.
3. Possible causes for falling back to PIO mode
The most frequent use why a CD or DVD port falls back to PIO mode is a scratched or otherwise unreadable CD or DVD. For example, some newer DVDs, initially from Sony, carry a copy protection scheme that relies on defective sectors. If you try, without using special software, to copy such a DVD (which doesn't work), then this can already trigger the problem.
However, there are a few reasons why a computer may use PIO instead of DMA, particularly when it's the hard disk port that falls back, not a CD/DVD drive port. For example, David Duberman reported in 2005 that some Dell computers have DMA disabled in their BIOS by default for the second hard disk. So it is a good idea to check the BIOS settings first.
2007-05-13 – Jason Paquette confirmed that the BIOS setting in his Dell computer was wrong too and prevented DMA mode. Correcting the BIOS setting immediately enabled the DMA mode.
A not so rare hardware problem is a bad or too long IDE data cable. You need 80-way cables, not the older ones with only 40 wires. With poor cables the device may work, but Windows will probably step down to lower DMA speeds or even to PIO.
A further cause may be waking from standby mode, if one of the involved components does not perform this process correctly.
2007-02-20 – Stefan Welte wrote that on an Elitegroupsystems K7S5A computer all IDE hard disks ran in PIO mode, because automatic device recognition was disabled in the BIOS. (The computer booted from a SCSI disk.) Enabling device recognition solved the problem without any further measures.
2009-06-27 –
markvm confirmed again that the BIOS in a Dell computer prevented DMA mode. Please see
his comment below. In his case a hard disk was not recognized by the BIOS. After enabling and starting the automatic recognition, everything fell into place nicely, and DMA was automatically enabled by Windows.
2009-11-19 –
flemur13013 mentioned again in
this comment that setting the disk recognition to "Auto" in the BIOS settings solved his problem of a slow, CPU-gobbling secondary hard disk.
Occasionally a chip set or controller driver is buggy, so check with the manufacturer for updates.
2007-03-01 – Francois Eraud reports one such case in a Sony laptop, regarding an ALI M5229 chip set controller, solved with driver version 4.008.
Other reasons can show up in the event log, so check this first and see if you can find repeated Atapi errors recorded. If so, you likely have a hardware defect. You can use the procedures described on this page, but your computer will probably fall back to PIO mode again and again, until you solve the underlying problem, which may be located inside the device, on the motherboard, or in the IDE data cable and its connectors.
A dramatic example was reported on 2006-12-29 by David Hähningen:
If you (half asleep in the dark and with considerable force) try to put the ATA plug on the hard disk the wrong way around, the gap called "KEYPIN" (pin 20 on the plug) pushes pin 21 of the hard disk socket and bends it aside. (This pin is responsible for DMA requests of the hard disk.)
As the disk can no longer reach the host with its requests, there is a communications problem, and Windows XP switches into PIO mode. A blessing in disguise: You can still save the data, though slower than usual. ;)
Few will succeed in repairing the disk. Just pulling the pin straight may not quite cut it, as the connection to the printed circuit board is probably broken.
2007-02-07 – Carl Kaufmann wrote that he looked for a solution for a computer with an Intel chip set and found the Intel(R) Application Accelerator. As instructed, he first installed the Intel Chip Set Installation Utility, which already solved the problem (as observed in Task Manager). He went on anyway to install the accelerator. After that there was no longer any DMA/PIO choice in the controller options, but everything now works right automatically.
2007-05-15 – John Schumacher confirms:
I thought I was having this problem, but that isn't the case. My BIOS listed Ultra DMA as being disabled on all my drives. I looked for the Advanced Settings tabs for the IDE channels in Device Manager, but the tabs were no longer there. I ran Nero InfoTool, which confusingly listed DMA on for primary and secondary masters, but off for primary and secondary slaves. After doing some more searching, I found out that the Intel Application Accelerator I recently installed is the culprit. Running Intel Application Accelerator confirmed that everything was OK.
The Intel Application Accelerator can also have a quite adverse effect when it is run on an unsuitable processor. If in doubt, uninstall it and retest. (See the comment,
Intel Application Accelerator by dkneyle = Ausie Davo.)
4. The trap
Windows contains a trap in which quite a few computers seem to get caught sooner or later. The trap was described in a Web article whose link no longer works (and also in another one mentioned below):
The crucial paragraphs are:
PIO mode is enabled by default in the following situations:
...
For repeated DMA errors. Windows XP will turn off DMA mode for a device after encountering certain errors during data transfer operations. If more that six DMA transfer timeouts occur, Windows will turn off DMA and use only PIO mode on that device.
In this case, the user cannot turn on DMA for this device. The only option for the user who wants to enable DMA mode is to uninstall and reinstall the device.
Windows XP downgrades the Ultra DMA transfer mode after receiving more than six CRC errors. Whenever possible, the operating system will step down one UDMA mode at a time (from UDMA mode 4 to UDMA mode 3, and so on).
...
Of course, drive firmware being quite complex and certainly containing programming defects of its own, it is not all that difficult to produce such errors. In my case a scratched DVD and later also an unreadable (overburned) CD did the trick, got the drive to choke and Windows to disable DMA for good. Later my hard disk hiccupped just once and also went back to PIO for good.
I had been using my laptop for DVD viewing for years, until I inserted a borrowed and heavily scratched DVD. The player and apparently even the DVD drive choked on it, and when I finally got the DVD to play, I found that playing was jerky and processor load was 100%, roughly half of which was system overhead.
This indicated that the drive had reverted from the usual UDMA (Ultra Direct Memory Access) mode 2 to PIO (Programmed Input Output) mode. No amount of resetting or changing the relevant
registry parameters from 1 (try DMA) to 2 (force DMA) helped. Stubbornly the drive kept using PIO mode, and Windows even changed these settings back to 0 (use PIO only).
The following text will refer to the secondary IDE port because that is more often affected, but essentially the same also holds for the primary IDE port, to which the main hard disk is connected in most computers.
Before you begin to work on the problem, log on as Administrator or as a user with administrator rights.
5. Check Your IDE Port Mode
First check what mode your secondary IDE port is currently working in. Go to Device Manager: right-click on My Computer, select Properties, click on the Hardware tag, click on the Device Manager button, click on the plus sign to the left of IDE ATA/ATAPI Controller, double-click on the secondary IDE channel, click on Extended Settings and check whether it is set to DMA when available. Directly underneath that setting is a grey field that shows the actual working mode of your IDE channel. You want the highest possible DMA or Ultra DMA mode there, and you definitely don't want PIO mode.
If the Extended Settings tab is not there, perhaps another driver is used, probably from the manufacturer of the IDE ATAPI controller. You can still perform a simple test. In the Task Manager activate the option View, Show kernel times. Then put a high load on the device, for example by copying a large file, and check whether the kernel times are minimal (red line). If you observe considerable kernel times, roughly around half of the total load, then the device is running in PIO mode, which is bad. The whole purpose of the DMA mode is to relieve the processor (in kernel mode) of this load.
Assuming the Microsoft IDE ATAPI driver, normally you don't have to use the
registry editor, because the normal settings are also available through the properties dialog for the IDE port, but if you want to look at it anyway, the parameter for the secondary IDE port can be found through regedit.exe at
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1
It is named Scsi only for historic reasons. Scsi Port 0 is the primary IDE port, to which presumably your hard disk is connected.
After trying various remedies—in vain—I found the abovementioned article and went to work again. I uninstalled the DVD drive in Device Manager and rebooted, but that did not help either.
So I searched for more and better information, then I went on and did the following.
6. Re-enable DMA using the Registry Editor
This chapter describes the manual way to do what the quick solution at the top of this page does automatically through a script program. If you're not interested in the details, you can back up to the chapter "Quick solution" above and run the script.
My thanks go to my fellow MVP Alexander Grigoriev who taught me this method.
Run REGEDIT. Go to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
It has subkeys like 0000, 0001, 0002, etc. Normally 0001 is the primary IDE channel, 0002 the secondary, but other numbers can occur under certain circumstances. You have to go through these subkeys and check the DriverDesc value until you find the proper IDE channel.
Delete MasterIdDataChecksum or SlaveIdDataChecksum, depending on whether the device in question is attached as master or slave, but it can't actually hurt to delete both. Reboot. The drive DMA capabilities will be redetected.
Note that many CD and DVD drives only use UDMA-2, because their data rate is much lower than that of a hard disk. This is normal and no reason to worry.
2006-01-19 – Horst Schülke wrote that it is sufficient to empty the content of these values. But you can also delete the values entirely. Windows will automatically recreate them anyway, with new content.
Open Device Manager again and check whether the device is now actually using DMA mode. If so, congratulations, you've made it (at least until the next time Windows disables DMA). If not, you may have to change the IDE channel setting from PIO back to the highest available DMA mode and reboot again.
Many thanks to Tomáš Souček, Peter Götz, Alex Vaillant, and Cory Culbertson for piecing together the following information:
There are three keys that work together:
MasterDeviceTimingMode
MasterDeviceTimingModeAllowed
UserMasterDeviceTimingModeAllowed
Each bit in these values means a transfer mode that the device may or may not be capable of. Somewhere at MS some of these bits can be looked up.
MasterDeviceTimingMode:
This is the actual mode the device is running at.
MasterDeviceTimingModeAllowed:
This entry may be the problem child. Peter wrote: "Normally not present in XP, it is created as a reaction to errors. This entry has absolute priority." However, there are doubts whether this is the absolute truth. It is still not entirely clear where this entry comes from. Erasing it or setting it to a DWORD value of 0xFFFFFFFF, rebooting, re-enabling DMA mode, and rebooting again seems to have solved the problem in some cases.
UserMasterDeviceTimingModeAllowed:
This entry contains the user's setting, manually entered in the advanced device properties. Has the same structure as MasterDeviceTimingMode. This entry appears when the user sets a limited mode manually, such as PIO only.
Another key that seems to create the problem is MasterIdDataChecksum.
All these parameters also exist for the slave drive as SlaveDeviceTimingMode, etc.
More information is needed. If you know anything, please click on Add new comment at the end of this article and write it down.
7. Alternative Method—Uninstalling the Port
1. Uninstall the secondary IDE port
Attention: Do this only if you use the Microsoft IDE driver that comes with Windows or if you have the driver on hand, because otherwise you may find yourself unable to reinstall the proper driver.
To uninstall the port along with its driver, open Device Manager as follows. Right-click on My Computer, select Properties, click on the Hardware tag, click on the Device Manager button, click on the plus sign to the left of IDE ATA/ATAPI Controller, right-click on Secondary IDE Channel, click on Uninstall. Deactivating is not enough.
Reboot to make the changes active and permanent.
After booting Windows will automatically reinstall the IDE channel and the DVD (or CD) drive. This Plug-n-Play process can take a little while, so give it a minute after the boot process finishes.
2. Check or reactivate DMA
But this may not always be not enough, because unfortunately Windows does not always automatically activate DMA on a DVD or CD drive. You have to check and, if necessary, tell Windows to try to use DMA first. It is possible that Windows XP with Service Pack 2 re-enables DMA automatically on reboot, but I have not tested this yet.
To re-enable DMA, go to Device Manager again. Right-click on My Computer, select Properties, click on the Hardware tag, click on the Device Manager button, click on the plus sign to the left of IDE ATA/ATAPI Controller, double-click on the secondary IDE channel, click on Extended Settings and change the relevant setting from PIO only to DMA when available.
On Windows NT and 2000 you now have to reboot a second time, but Windows XP applies the change instantly. Then you can go to the same place in Device Manager again and check whether the device is now actually using DMA mode. If so, all is well.
Note that many CD and DVD drives only use UDMA-2, because their data rate is much lower than that of a hard disk. This is normal and no reason to worry.
3. Driver is not intended for this platform
If you keep getting the following error message, please read on:
There is a problem installing this hardware.
IDE channel
An error occurred during the installation of the device. Driver is not intended for this platform.
2005-03-30 – Johannes B. wrote: The reason for this error is often that Daemon Tools or Alcohol 120% are installed. In this case the solution described below would not work. But when you uninstall these programs and then restart Windows, it will then install the device drivers without any further problems.
If these programs are not installed, then one possible way out is to rename C:\WINDOWS\system32\drivers\atapi.sys (or a similar path on your computer) to something like atapi.old.
If that's not possible, you can try it from the repair console (boot from the Windows install CD and select the repair console).
If Windows always automatically recreates atapi.sys, you can try renaming it in safe mode or from a command line window or you can try to rename or remove it in the driver cache as well.
8. Desensitize Your Computer's IDE or SATA Channels
There's a bit more to it. The following article offers a way to reduce the incidence of this problem, although it still doesn't solve it altogether.
Do read this article because it contains a useful long-term workaround. But you have to go through the procedure described here to re-enable DMA first.
Assuming you've done that, insert the ResetErrorCountersOnSuccess
registry values mentioned in this article into both the primary and the secondary IDE port
registry keys as described.
Unfortunately this is only a half solution, because when you enter an unreadable DVD, you will get 6 errors in a row, and the IDE channel will revert to PIO mode, but at least when you pull out the DVD in time and then insert a good one, the error counter will be reset and it will at least be a bit more difficult for Windows to hobble your IDE drive.
A little warning: One user reported that by mistakenly putting the value into the parent key, rather than into one of the 0000, 0001, 0002, etc., subkeys, he was accused by Microsoft's Genuine Advantage check of using a pirated copy of Windows and therefore denied online updates.