Despite the many projects that I should have put on my blog lately, I have been too busy to add them and I haven’t been taking pictures of the projects anyway. However, I came across a common computer inconvenience today that sometimes can be difficult to solve. The good thing was that I have experienced this particular problem before, so it was easy to fix. Furthermore, since it was an easy fix, it will be a quick one to add to the blog, too!
The problem was that reading or writing (i.e., burning) a CD or DVD took too long on my high-speed burner (48x CD, 20x DVD.) The same problem (slow reads and writes) can also happen to IDE and SATA hard drives. I was burning a Linux CD image to a DVD (using ImgBurn), which took 10 minutes to complete. A few things about this indicate a problem. First, the image was small enough to fit on a CD – approximately 700 MB – which should have taken only a couple minutes. Second, I was burning to a DVD, and DVD drives can read and write more data per second than a CD drive, so it should have been even faster since I was burning to a DVD. Third, it made me remember that a couple movie DVDs that I recently played experienced a few jittery spots where the video and/or sound would stop and go (the discs were not scratched,) which should not happen.
I realized that I was probably experiencing a problem that had cropped up in the past, and which can happen to just about any drive that connects to an IDE (PATA) or SATA port in your computer (typically this effects CD, DVD, and hard drives.) There is a very simple fix listed below, but I will start with some background info about why this happens. If you don’t care about the background stuff, then you can skip to the solution below in the section “The Solution – Quick and Easy”.
Background Info – Why This Problem Happens
The cause of the problem is this: the drive that is acting slow has been put into “PIO” mode instead of its intended “DMA” or “Ultra DMA” (UDMA) mode. To keep my explanation simple, PIO is the older standard, now used mostly for old or slow drives. It also was sometimes used for compatibility reasons (i.e., to avoid bugs with new technology), but that is not much of an issue anymore. DMA or UDMA is a newer standard that can hand much faster data rates (faster, in fact, than most drives can actually go.)
I have seen this problem occur in two scenarios:
- The operating system (Windows XP in my case) incorrectly detects the type of drive (CD, DVD, hard drive) and sets it to PIO instead of DMA or UDMA.
- A dirty, scratched, smudged, poorly burned/stamped, or otherwise damaged CD or DVD is put in the drive (obviously this only applies to CD and DVD drives and not hard drives) so that when Windows tries to read the disc, it has problems reading it. So Windows, thinking that the problem must be with the drive instead of the disc, tries to fix the problem by taking the drive out of DMA/UDMA and putting it into PIO mode.
The first reason listed above is understandable – when Windows XP came out, drives that used PIO mode were very prevalent. So, if you added a new drive that Windows didn’t recognize, then it played it safe by setting it to PIO mode (even if the computer’s BIOS setting stated that it was a DMA device.) However, these days PIO drives are almost non-existent.
The second reason listed is unacceptable. If my drive supports DMA/UDMA, then don’t drop it down to PIO – especially if I manually set the mode to DMA/UDMA. That right – you can even manually tell Windows to use DMA/UDMA, and it will ignore you.
Note that I believe this can be an issue for SATA drives only if your computer’s BIOS has set the SATA mode to Native IDE instead of AHCI. However, if your BIOS does have the SATA mode set to Native IDE, you probably don’t want to change it to AHCI unless you plan on reinstalling Windows XP. However, I have heard that you can safely change the setting if running Windows Vista or newer versions.
The Solution – Quick and Easy
The solution is actually quite simple, though not obvious. The part that takes the longest is the process of checking to make sure that PIO mode is the source of the problem. I will try to keep the steps simple and use plenty of pictures to illustrate.
WARNING: I have never seen this solution cause any problems; however, any time that you modify computer settings, you run a slight risk of messing something up. Therefore, by following the steps below you are recognizing that risks exists (however small), and that you are responsible for negative results or effects.
- First, check to make sure that this really is the problem you are experiencing by doing the following:
- While holding down the Windows key on your keyboard, press the “Pause/Break” key. Or, to achieve the same effect a different way, you can right-click on your Desktop’s “My Computer” icon and select “Properties” in the pop-up menu.
- In the window that pops up, click the “Hardware” tab near the top. (See image in #3 below.)
- Click on the “Device Manager” button (see image below.) This will make the Device Manager window pop up.
- Expand the “IDE ATA/ATAPI controllers” list item by clicking on the [+] symbol next to it. (See image below.)
- You now will see several sub-items under the one you expanded. The ones we are interested in are labeled “Primary IDE Channel,” “Secondary IDE Channel,” and any others that end in “IDE Channel.” Note that you may have multiple items that share the same name. (See image below.)
- Double-click on one of the items that we are interested in (e.g., “Primary IDE Channel.”) This will make a Channel Properties window pop up. (See image in #8 below.)
- Click the “Advanced Settings” tab near the top. (See image in #8 below.)
- There will be two sections – named “Device 0” and “Device 1” (see image below.) Check to make sure that both of these devices have the field “Current Transfer Mode” set to a DMA or Ultra DMA (UDMA) mode. If either one (or both) is set to PIO mode, then that is usually the source of the problem. Note that there is a different field named “Transfer Mode,” and even if you set that to the value “DMA if available,” it won’t have any effect once Windows has decided to set the mode to PIO.
- Close the Channel Properties window and perform this same visual check for each of the channels listed in the Device Manager window (e.g., “Primary IDE Channel”, “Secondary IDE Channel”, etc.) Note that you need to do this for all items that end with “IDE Channel,” even if some of them have the same name. Keep track of the items that have devices set to PIO mode.
- Second, “uninstall” the IDE channels that are set to PIO mode by doing the following:
- Now that you know which of the “IDE Channel” items (listed in the Device Manager window) have PIO mode settings, you need to “uninstall” them so that Windows can automatically reinstall them correctly.
- Right-click on the first “IDE Channel” item that had a device set to PIO mode, and select “Uninstall” (see image below.) Only do this for IDE channel items that had devices set to PIO mode.
- A window will pop up warning you that you are about to uninstall that channel. Click “OK”. (See image below.)
- Repeat this for each of the IDE channels that had devices set to PIO mode.
- Third, restarting… (after it tells you to.)
- Once it finishes uninstalling the IDE channel(s), it will say that it needs to restart the computer. Click in the affirmative to allow it to restart.
- After the computer restarts and after Windows finishes loading, just sit and wait… The computer will recognize a “new” IDE channel (the one you just uninstalled) and will reinstall it for you.
- Fourth, restarting… (after it tells you to.)
- Once it finishes reinstalling the channel, it will tell you that it needs to restart your computer (again.) Once again, click in the affirmative to allow it to restart your computer.
That’s all! You can go back and check the devices in the Device Manager if you want to verify that it worked. It’s a quick fix to a fairly common problem. I would have hoped a Windows XP update would have been made to address this, but that probably won’t ever happen now that there are several versions of Windows that are newer than XP.