Oct 29, 2015 For Mac users who utilize third party SSD volumes, the new trimforce command allows OS X to forcibly enable the TRIM function on those drives. Trimforce is built directly into newer releases of OS X and is really quite easy to enable (or disable), requiring a quick visit to the command line and a reboot of the Mac to complete. I had just done a BIOS update and it reset from AHCI mode back to IDE, and Windows ended up trying to boot before I caught it. It loaded the IDE drivers and then wouldn’t finish booting. I got the board to finally keep settings set for AHCI mode and then Windows kept giving me bootdeviceinaccessible because it was trying to load the IDE.
Advanced Host Controller Interface | |
Latest version | 1.3.1 November 11, 2011 |
---|---|
Organization | Intel |
Website | www.intel.com/content/www/us/en/io/serial-ata/ahci.html |
The Advanced Host Controller Interface (AHCI) is a technical standard defined by Intel that specifies the operation of Serial ATA (SATA) host controllers in a non-implementation-specific manner in its motherboard chipsets.
The specification describes a system memory structure for computer hardware vendors to exchange data between host system memory and attached storage devices. AHCI gives software developers and hardware designers a standard method for detecting, configuring, and programming SATA/AHCI adapters. AHCI is separate from the SATA 3 Gbit/s standard, although it exposes SATA's advanced capabilities (such as hot swapping and native command queuing) such that host systems can utilize them. For modern solid state drives, the interface has been superseded by NVMe.[citation needed]
As of December 2019, the current version of the specification is 1.3.1.
- 2Operating system support
Operating modes[edit]
Many SATA controllers offer selectable modes of operation: legacy Parallel ATA emulation (more commonly called IDE Mode), standard AHCI mode (also known as Native Mode), or vendor-specific RAID (which generally enables AHCI in order to take advantage of its capabilities). Intel recommends choosing RAID mode on their motherboards (which also enables AHCI) rather than AHCI/SATA mode for maximum flexibility.[1] Legacy mode is a software backward-compatibility mechanism intended to allow the SATA controller to run in legacy operating systems which are not SATA-aware or where a driver does not exist to make the operating system SATA-aware.
When a SATA controller is configured to operate in Legacy Mode, the number of storage devices per controller is usually limited to four (two IDE channels, primary and secondary, with up to two devices per channel), compared to the maximum of 32 devices/ports when configured in AHCI mode.[2][3]
Operating system support[edit]
AHCI is supported out of the box on Windows Vista and later, Linux-based operating systems (since version 2.6.19 of the kernel), OpenBSD (since version 4.1), NetBSD (since version 4.0), FreeBSD (since version 8.0), macOS, eComStation (since version 2.1), and Solaris 10 (since version 8/07).[4]DragonFlyBSD based its AHCI implementation on OpenBSD's and added extended features such as port multiplier support. Older versions of operating systems require hardware-specific drivers in order to support AHCI. Windows XP and older do not provide AHCI support out of the box.
System drive boot issues[edit]
Some operating systems, notably Windows Vista, Windows 7, Windows 8, Windows 8.1 and Windows 10, do not configure themselves to load the AHCI driver upon boot if the SATA controller was not in AHCI mode at the time the operating system was installed. Although this is an easily rectifiable condition, it remains an ongoing issue with the AHCI standard.
The most prevalent symptom for an operating system (or systems) that are installed in IDE mode (in some BIOS firmware implementations otherwise called 'Combined IDE mode'), is that the system drive typically fails to boot, with an ensuing error message, if the SATA controller (in BIOS) is inadvertently switched to AHCI mode after OS installation. In Microsoft Windows the symptom is a boot loop which begins with a Blue Screen error, if not rectified - and through no fault of the Windows OS.
Technically speaking, this is an implementation bug with AHCI that can be avoided, but it has not been fixed yet. As an interim resolution, Intel recommends changing the drive controller to AHCI or RAID before installing an operating system.[1] (It may also be necessary to load chipset-specific AHCI or RAID drivers at installation time, for example from a USB flash drive).
On Windows Vista and Windows 7, this can be fixed by configuring the
msahci
device driver to start at boot time (rather than on-demand). Setting non-AHCI mode (i.e. IDE or Combined mode) in the BIOS will allow the user to boot into Windows, and thereby the required registry change can be performed. Consequently, the user then has the option of continuing to use the system in Combined mode or switching to AHCI mode.[5]With Windows 10, this can be fixed by forcing the correct drivers to reload during Safe Mode.[6]In Windows 8, Windows 8.1 and Windows Server 2012, the name of the controller has changed from
msahci
to storahci
,[7] and the procedures to upgrade to the new controller is similar to that of Windows 7.[8] On Windows 8, 8.1 and Windows Server 2012, changing from SATA mode to AHCI mode without first updating the registry will make the boot drive inaccessible (i.e. resulting in a recurring boot loop, which begins with a Blue Screen error).A similar problem can occur on Linux systems if the AHCI driver is compiled as a kernel module rather than built into the kernel image, as it may not be included in the initrd (initial RAM disk) created when the controller is configured to run in Legacy Mode. The solution is either to build a new initrd containing the AHCI module, or to build the AHCI driver into the kernel image.[9]
Power management[edit]
Power management is handled by the Aggressive Link Power Management (ALPM) protocol.
See also[edit]
- Open Host Controller Interface (OHCI)
- Universal Host Controller Interface (UHCI)
- Enhanced Host Controller Interface (EHCI)
- Extensible Host Controller Interface (XHCI)
- Wireless Host Controller Interface (WHCI)
References[edit]
- ^ ab'Intel Matrix Storage Technology - Changing and/or choosing Serial ATA Modes'. Intel. Retrieved 2007-09-30.
- ^'PCI IDE Controller Specification 1.0'(PDF). Berg Software Design. Retrieved 2015-05-03.
- ^'Serial ATA AHCI: Specification, Rev. 1.3.1'. Intel Corp. Retrieved 2015-05-03.
- ^'What's New in the Solaris 10 8/07 Release - Driver Enhancements'. Oracle. Retrieved 2010-10-20.[permanent dead link]
- ^'Error Message when you start a Windows 7 or Windows Vista-based computer after you change the SATA mode of the boot drive: 'STOP 0x0000007B INACCESSABLE_BOOT_DEVICE''. Microsoft. Archived from the original on 24 May 2011. Retrieved 2011-04-20.
- ^'Enabling AHCI mode AFTER Windows 10 installation'. tenforums.com user Toobad. Retrieved 2015-12-19.
- ^'StorAHCI replaces MSAHCI (Windows)'. Microsoft.
- ^'Improving performance of SATA drives on Windows 2012'.
- ^'Support | How to enable AHCI support after install'. Novell.com. Retrieved 2014-05-11.
External links[edit]
- 'AHCI Specification'. Intel.
- 'AHCI'. OSDev Wiki
Retrieved from 'https://en.wikipedia.org/w/index.php?title=Advanced_Host_Controller_Interface&oldid=933191055'
Recently a very loyal reader of my blog requested me to create a guide on enabling the Advanced Host Controller Interface (AHCI) in Windows 10. Before we proceed, let me tell you what exactly the AHCI is. It makes NCQ (Native Command Queuing) along with hot-plugging or hot swapping with the help of SATA Serial-ATA host controllers.
Nowadays, nearly all the motherboards have the AHCI enabled in their BIOS or UEFI. However, some old motherboards may not have this feature enabled. Enabling the AHCI in BIOS or UEFI is crucial, especially when you desire to install Windows with the help of AHCI rather than IDE. Below is a very easy step-by-step guide with relevant images to turn it on:
Enable AHCI in Windows 10
1: On your Windows 10’s Desktop, press the “Win + R” key. This will open the Run. Now, type “regedit” and hit ok to access the registry editor.
Note: In case you are prompted by the UAC, simply click “Yes”.
2: Now from the left pane of Registry Editor navigate to the following location.
HKEY_LOCAL_MACHINESSYSTEMCurrentControlSetServices|iaStorV
3: From the right pane of iaStorV key, double click on the Start DWORD option to edit it.
4: Now, you have to type 0 (zero) for the AHCI and then hit OK.
5: Again from the left pane of the Registry Editor, navigate to the below location.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesiaStorVStartOverride
6: Here we need to modify the 0 DWORD. For this, double click on the 0 DWORD from the right pane of StartOverride.
7: Type 0 (zero) and hit OK.
8: Once again from the left pane of Registry Editor, navigate to the following location.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesstorahci
9: Here from the right pane of storahci, double click on the Start DWORD in order to modify it.
10: Again type 0 (zero) for the AHCI and hit OK.
11: For the last time, again navigate to the below location. This is just to ensure that whether you have the StartOverride or not. In case you don’t see it, jump to step number 14, else continue below.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesstorahciStartOverride
12: From the right pane of StartOverride key, double click on 0 DWORD to edit it.
13: Type 0 (zero) and then click on OK.
14: That’s all! Now close your Registry Editor.
15: Finally boot your computer to BIOS or the UEFI firmware settings. From the settings enable AHCI, Save and Exit. And once again for the final time restart the computer and you are all done enabling AHCI.
16: As soon as your Windows 10 restarts, it will automatically begin installing the AHCI drivers.
17: Once the drivers are successfully installed, you need to restart the Windows when prompted to finalize the settings.
I hope you were successful in enabling AHCI following this guide. Please do leave your thoughts in comments, and, if you are facing any issues, let us know and we’ll help you ASAP.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesiaStorVStartOverride
All my values are “0” in the registry locations outlined; but when I go to set the “StartOverride” values to “0” , upon reboot they revert back to a value of “3” and the option to switch to AHCI in the BIOS isn’t there. It isn’t even a “greyed out” option, it just simply is absent.
Quote after step 17 above:
I hope you were successful in enabling AHCI following this guide. Please do leave your thoughts in comments, and, if you are facing any issues, let us know and we’ll help you ASAP.
Please let me know how the StartOverride values are reverting back to 3 when I manually change them to 0.
Thank you kindly, because I’m stumped.
Thank you kindly, because I’m stumped.