Feel like you’re stuck in the mud? Maybe your just stuck in PIO…
PIO mode is a legacy method of transferring information over the IDE interface; the ancestor of DMA. Hopefully, no one around here is using it because it works slower while making your CPU work harder.
However, thanks to one of Microsoft Window’s “features”, you may be running in PIO mode and not even know it. I found this out the hard way.
By default, Windows will run your drives in DMA mode when available. However, if Windows detects that you are having trouble reading a CD or DVD, it may automatically change your transfer mode back to PIO mode without your knowledge. In some situations, this will occur after a single error but in other situations windows will step down through the DMA modes on each subsequent error until PIO mode is reached.
When this happens, system slowness may become apparent but for many users this may go unnoticed and be simply dismissed to the computer “acting funny”.
Some signs this is happening are abnormal explorer.exe use in Task Manager during transfers from your CD/DVD drive. The read/write errors causing this will be logged in the system event log.
You can see these for yourself through W2K or WXP by pressing Windows+R, typing eventvwr.msc, hitting enter, then clicking on System in the pane on the left side of the Event Viewer window.
If you have had this problem, you may find errors with red icons listed – the corresponding source for these events would most likely be ATAPI, CDROM, or DVDROM. Using the Event Viewer will prove to be a valuable tool in any troubleshooting task.
To confirm what mode I was operating in, I opened Device Manager by pressing Windows+R, typing devmgmt.msc and hitting enter. I then expanded IDE/ATAPI controllers, right clicked on secondary IDE channel, and selected properties.
In the properties window I selected the advanced settings tab and found that I was currently in PIO mode.
I tried toggling the transfer mode field to PIO, hitting ok, then returning and setting it back to DMA, but this had no effect on the current transfer mode. Toggling like this is recommend by Microsoft if the setting appears to not be changing, however I was locked into PIO still.
Now, the automatic change back to PIO mode is made so that operation is slowed and successful reading of the data is more likely to occur. This isn’t altogether a bad feature, but I found that my system remained in PIO mode even after a restart which I thought was ridiculous – I didn’t have any sort of hardware failure, I was just trying to read some old discs!
If Windows makes this change, according to Microsoft you cannot change the mode back to DMA without going into Device Manager and removing the driver for the device, or uninstalling the device altogether, then rebooting.
This is half true, as rebooting is not necessary. I uninstalled the secondary IDE channel through Device Manager as my Plextor CDRW resides in my computer as Secondary Master.
To do this, I opened Device Manager again and to uninstall, I expanded IDE/ATAPI Controllers, right clicked on the secondary channel, and selected uninstall.
I then confirmed my choice, as by nature, Windows always assumes you’re an idiot and made a mistake – I selected OK:
Now at this step Microsoft would tell you that you need to restart. However, this doesn’t need to be any more painful than it already is and there’s a shortcut we can take.
Go into Control Panel, select “Add hardware,” then hit next. Windows will search for any changes and it will find that you uninstalled a component. A popup balloon will then appear in the bottom right by the clock notifying you that your hardware was found and is being reinstalled. It will tell you when it is done and then you can just hit finish.
Did it work? I went back into Device Manager to my secondary IDE channel properties, and as you see, I am now in the appropriate DMA mode:
All this left me feeling as though I was at the complete mercy of Microsoft, which left me very uncomfortable. So naturally, I set out into the registry to reclaim my dominance over the beast.
If you have SP2 installed, there is a way to change this behavior I have described. Open regedit (follow the normal precautions when editing the Registry) and find these keys:
Create a new dword value in each, name it ResetErrorCountersOnSuccess, and set its value to 1. This will reset the error counter every time there is a successful read, making it less likely for the transfer mode to be downgraded. If the registry edit is done correctly, your regedit screen should look like the following picture. I have highlighted the values which are important to get correctly.
Hopefully, this guide may be helpful to others trying to read old discs or working on someone else’s rig with slow reading or writing problems. Judging by search results on Google, there are many people experiencing similar problems with PIO transfer mode, with few understanding its source. More details are available from Microsoft at the following links.
Matthew Bidinger aka I.M.O.G @ OC Forums