How To Fix Hard Drive Stuck In PIO Mode

 Posted by on March 28, 2011  storage
Mar 282011
 

How to test for and fix a (very slow) hard drive that is stuck in PIO mode. Many hard drives (and DVD drives) operate in UDMA mode which allows for the very quick transfer of data. However, if they encounter difficulties in reading or writing data (e.g. due to a scratched CD) they may change into the older PIO mode.

PIO mode is a vastly slower method of transferring data – even worse, the drive may get permanently ‘stuck’ in slow PIO mode even, after the original data reading difficulties have gone away…

How To Check If A Drive Is In PIO Mode – A hard drive in PIO mode will be incredibly slow compared to normal and therefore so will your computer. E.g. opening (My) Documents may take 10 seconds+ rather than opening instantly and startup/shutdown may take several minutes.

This problem particularly affects older hard drives in computers from the XP or Vista era. However, there are many other reasons for a slow computer so first you need to check if PIO mode is indeed the problem:

  • Click Start, right click (My) Computer and click Manage to open the Computer Management window.
  • Click Device Manager in the left panel then double click IDE ATA/ATAPI Controllers in the right panel to show the items underneath it – example below (don’t worry if you only 1 Primary and/or no Secondary Channel listed):
ide1

Note: if you do not see any Primary IDE Channels or Secondary IDE Channels listed, you have a different type of hard drive which uses a newer technology so this PIO mode issue is NOT a problem for you – skip this article but if you think your hard drive is very slow then see how to check if your hard drive is failing.

Step 1: Double click the first Primary IDE Channel to open the Primary IDE Channel Properties window. Click on the Advanced Settings tab as shown below:

ide2

  • If Transfer Mode is set to DMA If Available and Current Transfer Mode is showing as Ultra DMA Mode x (where x is a number) that device is ok. In our example our device zero is ok.
  • If Current Transfer Mode is set to Not Applicable there is no device present which is ok. Our device 1 is not present so that is fine.
  • If Transfer Mode is set to PIO Only and/or Current Transfer Mode is PIO then your drive is in PIO mode – use the drop down menu to change the Transfer Mode to DMA If Available.

Now click on OK (confirm any warnings that appear) and repeat this same process for the next Primary IDE Channel (if there is one), followed by each of the Secondary IDE Channels in turn. In our example we have to follow this process 4 times in all (once for each of the 4 IDE Channels we have listed) to check if any of our drives are in PIO mode.

Step 2: If none of your drives were set to PIO mode then the PIO issue is NOT a problem for you – skip this article but if you think your hard drive is very slow then see how to check if your hard drive is failing.

If any of your drives were set to PIO mode then you should have just changed their Transfer Mode to DMA If Available. Now shut down and restart your computer. On restart you may see a message telling you that your hardware has changed and you need to restart – this is a good sign. Shut down your computer and restart again.

Now repeat the same process from Step 1 for each one of the IDE Channels listed to see if your changes worked. Hopefully this time all your drives will have the Current Transfer Mode showing as Ultra DMA Mode x (or Not Applicable if there is no drive present) – if so then you have finished and your computer should be noticeably quicker :-)

If A Drive Still Shows Current Transfer Mode As PIO Mode

Unfortunately a drive sometimes gets permanently ‘stuck’ in PIO Mode which the above process is unable to fix – you need to make changes to the Windows registry to resolve this:

Warning: The registry is an important database containing Windows configuration settings. Before editing it, always create a new System Restore point in case you need to revert back to before the changes.

  • Hold down the Windows key on your keyboard and press the letter R to open the Run command
  • In the Run command type the word regedit and press OK to open the Registry Editor – you navigate down it by opening the folders and subfolders in the left panel (double click to open or click on the + sign to open subfolders and the – sign to close them)

1.  Navigate to [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 0] and double click DMAEnabled in the right panel – enter a value of 1 and press OK.

2.  Navigate to [HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\Scsi\Scsi Port 1] and double click DMAEnabled in the right panel – enter a value of 1 and press OK.

3.  Navigate to [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}] and double click it to reveal the subfolders under it – they will be called 0000, 0001, 0002 etc – you may have 6 or more of them and you have to do the following on each and every one of these folders:

FOR EACH AND EVERY xxxx numbered subfolder

1. Look in the right hand panel to see if the DriverDesc data is ‘Primary IDE Channel’ or ‘Secondary IDE Channel’ – if it is not then skip to the next xxxx numbered folder.

2. If the DriverDesc data IS ‘Primary IDE Channel’ or ‘Secondary IDE Channel’ then do the following in the right hand panel (if some of these are not present it does not matter, just do the ones that are there):

  • Delete MasterIdDataCheckSum (right click on it and select delete, confirm when asked)
  • Delete SlaveIdDataCheckSum
  • Delete MasterDeviceDetectionTimeout
  • Delete SlaveDeviceDetectionTimeout
  • Right click on an empty space in the right hand panel, point to New and select DWORD value.
  • Type in as the name of this new item the following text: ResetErrorCountersOnSuccess then press Enter to create this new item.
  • Now double click this new item and enter a value of 1. Click OK to save.

[Remember to follow these steps for every single xxxx numbered folder if the DriverDesc data is ‘Primary IDE Channel’ or ‘Secondary IDE Channel’]

When you have finished all the relevant subfolders, close the Registry Editor, turn off and restart your computer. On restart you should see a message telling you that your hardware has changed and you need to restart. Shut down your computer and restart again.

Your drives should now all be set to UDMA mode and your computer should be much faster. If this process also failed and you still have a drive stuck in PIO mode then it is likely that the drive is failing – follow the link above to test it.

  14 Responses to “How To Fix Hard Drive Stuck In PIO Mode”

  1. I had this problem and followed the steps and it seems to have fixed it. My drive now shows UDMA6 which is ok I think. Will it happen again though and can I stop it happening?

  2. The steps above should stop it getting stuck in PIO mode again.

    You may like to follow our guide on testing a hard drive to see if it is failing just to be on the safe side as a failing drive is one reason it may have got stuck in the first place. The other is a faulty CD which your computer had trouble reading.

  3. Your the man….

  4. Wow, this really worked for me, and the steps were easy to follow. Thank you!

  5. Thank you very much!
    Although i didnt got any message on restart, but this worked like a charm!
    Thanks once again!

  6. Thanks a lot for this great detailed guide! I had the same problem, harddisk always in PIO model and I initially thought it was a hardware problem. I’ve even replaced the 80 wire cable, but with no result. Now with the registry modifications the hard drive returned to a safe UltraDMA 6. I’m currently checking if I’ve got a failing disk with your guide. Just a quick question, in HD Tune – Health, if everything is OK on the right, but Reallocated Sector Count is highlighted in yellow does this mean it’s okay or failing? The OK on the right next to it makes me think it’s not such a big problem….or is it? Anyway. I’ll be on the lookout for further problems, but I’m just happy it’s working for now. Thanks again!!!

  7. If i replace the drive will the new drive return the setting to ultra dma

    • @Greg – the settings are in the Windows registry so if you replace the drive and reinstall Windows on the new one you will get a new registry with ultra dma working ok.

      [If you clone the old drive (or it was a slave, non-system drive) you should check the settings to see if the driver install for the new drive has corrected them – if not, you may need to apply the fix]

  8. Bingo! I had tried Seagate tools in win and DOS mode: no success. For more than 6 months I suffered running under PIO mode…!! (Don’t know why your page didn’t show up 6 months ago… ;-) I think my trouble had started with a corrupt boot record… thanks a lot!

  9. Thank you, your useful tip really fix my problem, My hard disk is still doing those grinding sounds but it is much faster, now in DMA5. Was stuck in PIO mode, the option been grayed out to change it.

  10. I tried following these instructions but editing the DWORD value in Scsi Port 0 gave the error message ‘cannot edit DMAEnabled. Error writing the values new contents?
    XP service pack 3.

    • @Ian – that looks like a registry permissions issue. Strange as all the keys above are not normally protected so I guess your registry is either locked down very tightly (e.g. in an ex-corporate PC) or has some corruption.

      Either way, you should be able to give yourself full permissions to the relevant key(s) – see http://techlogon.com/2012/11/26/how-to-change-permissions-of-a-registry-key/ for a guide to change the permissions.

      ps test your hard drive too as a failing drive can cause registry corruption.