Install SATA AHCI Driver to Windows 7 After Install

by on March 27, 2014

setting-ahciWith the upcoming End of Support for Windows XP, I expect that many of us will be upgrading some older machines that run Windows XP to Windows 7. My suggestion is to only upgrade machines that are relatively newer, for example PCs that were bought in the Vista or early Windows 7 years but had XP pre-installed. I wouldn’t recommend upgrading older XP machines that will struggle with Windows 7. But if you have an XP machine that can handle Windows 7, then it might be a good idea to upgrade it.

I ran into a situation with a Dell Precision T3400 workstation where the installation of Windows 7 Professional 64-bit wouldn’t install properly. I had installed a brand new Seagate Hybrid Solid State/Hard Drive in the machine and was doing a clean install. It kept rebooting after the initial install sequence. It appeared to me that it was blue screening in a manner that was indicative of a SATA AHCI driver problem. Sure enough, when I went into the BIOS and set the SATA operation to ATA, the installation completed without further issue. However, now I had a Windows 7 installation with ATA drivers instead of the higher performing AHCI drivers (it was puzzling to me why the installation was able to get that far in AHCI mode if it wasn’t going to install a suitable AHCI driver and simply crash later, but I chalk that up to Windows being Windows).

Usually, this isn’t such a hard problem to fix: simply download the proper AHCI drivers, install them, change SATA operation back to AHCI in the BIOS and you’re golden. However, in this case, the AHCI drivers (Intel ICH9R/DO/DH) would not install. The installer kept claiming the computer did not meet minimum requirements or something similar. I couldn’t even force the drivers to manually install after extracting them. It appeared to me that since SATA operation was set to ATA mode, the installer/drivers didn’t recognize the controller as AHCI capable. Brilliant. I couldn’t set SATA operation back to AHCI because that caused a blue screen crash during boot, so I was almost of the mind that I would need to reinstall Windows 7 making sure to specifically add the AHCI drivers during the installation process. But I had already installed Windows 7 SP1 and a bunch of other updates that took a long time, so I didn’t want to use this nuclear option unless it was absolutely necessary.

Luckily, after much research, I found a procedure that allowed me to install the SATA AHCI drivers without reinstalling Windows 7. Thanks to Windows7Themes.net for having the answer:

  • Basically, change the following registry key to 0:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\msahci\Start
  • Restart the computer once (without changing any BIOS settings) and Windows will load default AHCI drivers. You may not notice anything happening, so let Windows sit for a minute or two after reboot to give it enough time to make sure this process happened.
  • Restart the computer again and change the SATA operation to AHCI in BIOS. Save the BIOS settings and when Windows boots again, it should not crash with a blue screen. This time you should notice that Windows is installing new hardware, which includes several SATA AHCI components (similar to what the picture above shows). Windows will probably ask to restart once more.

At this point  you should have a functioning Windows 7 install with default SATA AHCI drivers operating. I then was able to install the vendor specific drivers from Intel because they now recognized the controller properly. Yay! A few hours of my life gone, but at least I learned something!

This whole problem could have been avoided if Windows 7 would have installed the AHCI drivers properly in the first place, and/or if the Intel drivers were smart enough to recognize that the controller in ATA mode is in fact the correct controller and simply installed the drivers anyway. But issues like this are why we do what we do, so hopefully my experience will save some of you some grief!

Update: With the variety of hardware and drivers out there, it seems that my procedure above does not always work. Based on comments and other research I have done, changing the values of the following Start registry keys (to either 0 or 3) might also be necessary.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\pciide

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\iaStorV

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\iaStor

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\atapi

Previous post:

Next post: