About Virtualization, VDI, SBC, Application Compatibility and anything else I feel like
Modern systems usually offer different SATA Operation Modes such as ATA, AHCI or IRRT.
The AHCI mode offers extra features such as hot swapping and native command queuing.
Many vendors set the SATA Operation Mode to ATA by default because it’s the most compatible mode but there are a few reasons why you might want to change it:
Please note that the IRRT (integrated raid) mode is supposed to support all functionality of AHCI but in my experience it doesn’t.
So the question is: how do we switch the SATA Operation Mode from ATA or IRRT to AHCI?
The switch itself is very easy, just go to your bios and change the setting. On my Dell laptop, the setting is System Configuration | SATA Operation:
But if we change this setting after we have installed the Operating System it will crash on boot with a STOP 0x0000007B INACCESSABLE_BOOT_DEVICE error:
There is a Microsoft KB Article that describes the steps required to fix this problem. However for Intel SATA Controllers (the most common) we need to perform a few additional steps.
After some experiments I was able to create a recipe for it:
On a Dell Precision M4500 the reg file to accomplish these steps looks like this:
Unfortunately both the Hardware Id and Device Instance Path differ for each SATA controller. So how do we obtain the correct values?
If you have another machine with the same SATA controller which is already in AHCI mode then you can simply look up the values in Device Manager.
Just find your AHCI controller under IDE ATA/ATAPI controllers:
Right Click, select properties and on the Details tab select Hardware Ids. The PNP id is the bottom value:
Then select the Device Instance Path Property:
But how do we obtain the proper values if you are not fortunate enough to have another system?
I figured the easiest way would be to write a tool that can lookup these values programmatically and run that under Windows PE (from CD/DVD or USB).
So how does it work? Assuming you already have a Windows PE bootdisk, the steps are:
Switch the SATA Operation Mode to AHCI, boot Windows PE and start my tool (sci.exe). It will automatically search for and display all SATA storage controllers:
Select the controller for which you would like to generate a reg file and click the Save button which allows you to pick the name and place where you want to save the reg file:
Update 21-06-2011: The Save File Dialog didn’t work properly under Windows PE, I have uploaded a new version of the tool (1.1) that contains a fix.
Here is an example file for a Dell Latitude E6500:
Windows Registry Editor Version 5.00
; Generated with SATA Controller Identifier
; by Remko Weijnen
; see http://www.remkoweijnen.nl/blog/2011/06/18/switch-sata-operation-mode/
; Set Microsoft AHCI driver to Autostart
; Add Intel(R) ICH9M-E/M SATA AHCI Controller to the Critical Device Database
; Set Intel iaStor driver to Autostart
"DisplayName"="Intel AHCI Controller"
; Add Device Instance Path to the iaStor Enum key
Now we need to import the generated reg file in your Windows installation. To be able to do this, you have to first switch back the SATA Operation Mode to the previous setting to prevent the BSOD.
After importing the generated reg file, copy the iaStor file to the Drivers folder (usually C:\Windows\System32\Drivers) and reboot.
Final step is to switch the SATA Operation Mode to AHCI for the last time and boot into the OS.
Although not strictly required it’s a good idea to install the full intel drivers (Intel Rapid Storage Technology). At the time of writing the latest version was 10.1.0.1008 which can be found here.
It would nice if we could compile a list of popular SATA controllers so we can help other people so please consider running the tool on your system and adding the results as a comment here.SATA Controller Identifier (3267)
.NET .NET FrameWork Active Directory Altiris Apple Automation Manager Citrix Dell Delphi Excel Exchange Exchange2003 Exchange2010 Hack HP iOS Java LinkedIn Linux Lync MSI Office Office 2010 Passat Password PowerPoint PowerShell RES RNS510 SasLibEx SCOM Security Terminal Server ThinApp TSAdminEx VBS VCDS Visual Basic Visual Studio VMWare Volkswagen VW Windows PE Wordpress XenApp