How to enable AHCI in Windows XP without reinstalling

I'll start with why you cannot use AHCI mode without modification. When Windows is installed, it only installs (enables) AHCI/RAID drivers if you have a storage controller it recognises as AHCI/RAID. Windows Vista and 7 would (usually) have the drivers anyway, but typically disable them. Vista and 7 come with a generic AHCI driver, with a more hardware-specific driver potentially available from the controller manufacturer. A manufacturer provided driver is necessary for 'FakeRAID'. The generic AHCI driver can be enabled with two quick, easy registry modifications.

However, Windows XP does not come with a generic AHCI driver. That means no out-of-the-box AHCI support. The reason? Intel only released preliminary (not even complete!) specifications to the AHCI standard mid-2003 - a year and a half after XP was first released. Microsoft has apparently not seen fit to include an AHCI driver as part of a service pack.

Motherboard manufacturers often include an AHCI driver on a CD or on their websites. This driver is provided by the manufacturer of the storage controller, typically Intel on systems with an Intel CPU. Some other candidates are nVidia (nForce) and Marvell (on some AMD boards). They are generally not interchangeable.

When installing XP, it is possible to load an AHCI driver from a floppy disk (!!!) or slipstream them onto the install CD. However, you want to add the driver to an existing installation.

  1. The first step is to determine the manufacturer of your storage controller, or at least motherboard chipset. This is usually listed in the motherboard specifications.

  2. The next step is to make sure you have a System Restore point available. System Restore can usually roll back changes in drivers, which provides a safeguard against mistakes while installing the drivers.

  3. Then it's all dependant on your controller manufacturer. There are many registry scripts that can insert the correct registry entries (the driver file is required, and a download is often provided). Since this is very specific to what hardware you have, you'll have to provide that information or search yourself (Google is a good place to start).

    If the motherboard manufacturer provides a SATA driver installer package specifically for XP, try installing that first. If it doesn't work, or one isn't provided, installing a driver manually may be necessary. If they don't provide the drivers at all, there isn't much you can do.

    Personally, I recommend the non-registry method if you can get away with it. This involves selecting the SATA controller entry(ies?) in the device manager and using the Update Drivers option to select the AHCI/RAID drivers you should obtain from the manufacturer. For Intel, it should be manually extracted from the installer package. Some people note that nVidia change a hardware ID in IDE mode so this method may not be possible for nForce chipsets. It all depends on your controller manufacturer.

Yes, I use storage controller, chipset and motherboard somewhat interchangeably. The controller is often part of the chipset. The chipset (and/or controller) on a specific motherboard model is almost always the same.


After arriving home, and without doing any backup at all XD, I finally got the job done.

It took no more than 10 minutes. My method is based on this blog post so its author is the one that deserves most credit. Also I have to mention Bob which quickly posted this link as a comment (my apologies Bob, yes it worked). Still I'd like to post the steps I followed since there are some differences and it may be helpful for some other people.

I've a Gigabyte board and it comes with a Utility DVD that contains, among other things, the AHCI drivers. Here is my installation explained:

  1. (This step is only for Gigabyte MB owners. You can get the drivers somewhere else and go to #3) Go to \BootDrv folder and copy the file MSM32.exe to a USB drive or a hard drive partition. This is the correct file for 32bit OS (Windows XP). According to the motherboard manual, it is also the one to choose for Windows Vista 32bit. In case you have a 64bit OS, copy MSM64.exe instead. There's another one named MSM2k.exe, I suppose it is the driver for Windows 2k, but I'm guessing here.

  2. In the folder where you copied that file, double click on it and it will open a command-line prompt asking for confirmation to extract the files. Type "yes" and then enter. Several files will be extracted at that folder. these are the actual drivers. We'll need these files to tell the Device Manager where to search for the drivers. Open the Device Manager and expand the "IDE ATA/ATAPI controllers" node. In my case, there were listed the regular IDE channels, and a couple of generic Intel ICH10 SATA controllers. These were the generic drivers installed by Windows, and I can tell you for sure that these don't work (tested enabling AHCI in BIOS and trying to load the OS resulted in beeps and reboots).

  3. Select one of the SATA controllers -> Right click over it -> update driver -> Install from a list or specific location (Advanced) -> check the "don't search" radio button and click next -> click on "Use disc" -> click on "browse" button and select the folder with the drivers from wherever you have copied them. If you have the drivers in a CD or DVD, make sure it doesn't contain an AUTORUN.INF file at the root folder, because the file picker dialog is looking for .INF files and it won't let you browse to subfolders.

  4. Now the list with drivers is populated with at least a new option. Here I selected the correct one for my chipset (ICH10R). Windows shows a warning message. Click yes.

  5. The driver is installed and Windows ask for a reboot, BUT don't reboot yet. Instead, select the remaining SATA Controller in Device Manager and repeat #3 and #4.

  6. After the second driver install, Windows does not ask for a reboot. BUT now it is time for rebooting. Be ready to enter BIOS as soon as the computer starts.

  7. Change in BIOS (in my case, under "Integrated peripherals" -> "SATA RAID/AHCI Mode") from IDE mode to AHCI. This can vary depending on your system and BIOS, and maybe you even need to select RAID if no AHCI option is available. There are better questions on this site where this topic is better explained, so I won't delve into it. In my case, there was a second option, just after the IDE/AHCI one, named "SATA port0-3 native mode". It was disabled, I enabled it. The explanation for this option in my motherboard manual is that DISABLED allows the SATA controllers to operate in legacy IDE mode, and that it should be selected for OSes that do not support native mode (like Windows 9X/ME). Windows XP supports native mode so I enabled it. I guess more modern OSes will also support it. Save BIOS and continue with the boot.

  8. Windows is loaded correctly. It starts recognising the existent drives in the new AHCI mode, and showing yellow bubbles. After that, it asks for a second reboot. Select OK to reboot.

  9. Windows is loaded again and this time everything should be ready.


The "Update driver" method didn't work for me, but I found another way that's simple too, and guaranteed to work.

Trying the above method on my pc made it reboot before the driver had updated completely. I have an Ivy Bridge (Z77) motherboard.

So I did it like this

Using your functioning XP in IDE mode do these steps:

  1. Find the Intel RST driver package on your motherboard cd (or download latest if you don't have cd). Extract this to get the 2 files iaAHCI.inf and iaStor.sys.

  2. Get a registry file from here. Read his short description and do as it says. And Edit the _07b-AHCI-SATA-forPE.reg file to add Intel 7 series AHCI SATA. Open iaAHCI.inf that you got in the previous step in Notepad. Copy/paste 2 older entries in the registry file and modify the 2 new entries with values found in iaAHCI.inf. Put the modified _07b-AHCI-SATA-forPE.reg file and iaStor.sys (from step 1) together in their own folder.

  3. Make a BartPE disc - download and install Bart's PE builder and get the Registry Editor PE plugin v1.0a here (http://regeditpe.sourceforge.net). Put your XP install cd in a folder. It has to have SP3. You can slipstream SP3 to your cd with nLite from (http://www.nliteos.com/download.html) if you need. Don't make or burn iso with nLite. We only need the slipstreamed source for BartPE. Run Bart's PE Builder. In the builder, select the folder with your XP SP3 as source and add the folder where you put _07b-AHCI-SATA-forPE.reg and iaAHCI.inf as source for Custom files so they get included in the BartPE disc we build. And lastly, add Registry Editor PE plugin that you downloaded by clicking on Plugins button. Make sure Registry Editor PE plugin is enabled. Now build the iso and then burn it to an empty cd.

  4. Boot with your BartPE cd. In Bart PE menu (in lower left corner) load the registry of your real XP system with Registry Editor PE. Click Ok when it shows a message. In the regular looking Regedit window you then import the _07b-AHCI-SATA-forPE.reg file in File menu/Import ... and copy iaStor.sys to \windows\system32\drivers folder on your C: drive. The 2 file should be in the root folder of your BartPE disc either in a folder or as separate files, depending on how you included them in the PE Builder.

  5. The registry of your XP installation is changed and saved and iaStor.sys is copied to it's system32\drivers folder. Now you can reboot into bios and set SATA to AHCI mode and then save bios and reboot into your XP installation. XP will now detect new hardware and install it. Wait, and you'll be prompted to reboot. After this reboot you can see in the Device Manager that your SATA devices now operate in AHCI mode. You may want to install the Intel RST package the normal way now to get all software from it. All done :)

Note: for future needs it may be good to include _07b-RAID-SATA-forPE.reg in the process, if you ever should want to run your SATA in RAID. You don't need to edit that file, just include it in BartPE and import it with Registry Editor PE.


Some of the options I found here or elsewhere didn't work for me for a AMD SB750 chipset on an MSI GA-MA790XT-UD4P, so I used an alternative method that is somewhere in-between the fully automatic one and the manual registry hacks.

I downloaded the drivers from the MSI website and unpacked them. Then I manually installed the INF file using:

rundll32 setupapi.dll,InstallHinfSection Napa_Inst 132 .\ahcix86.inf

Right-click install of the INF does not work because there is no DefaultInstall section, Napa_Inst is the section prefix in the INF file. Documentation for the install function is here (there are other function calls that can install an INF from the CLI too if you Google). This copied the driver file to System32\Drivers and created registry entries for the service. However, it was still not present at boot and resulted in BSOD. I used part of these instructions to create a critical device database entry:

HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1002&CC_0106\Service -> "ahcix86" (REG_SZ)
HKLM\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1002&CC_0106\ClassGUID -> "{4D36E97B-E325-11CE-BFC1-08002BE10318}" (REG_SZ)

The class GUID matches the value in the INF file. The vendor ID is for AMD (also shown in INF file), the compatibility code is for AHCI. As per the link, 0104 could be used for RAID.

Windows then boots properly and detects new devices, asking for another reboot. All is fine now.