Jump to content

Enable AHCI mode on laptop with no AHCI switch in BIOS


we3fan

Recommended Posts

Hi guys, I want to enable AHCI mode on my laptop, and see if that improves my SSD speed.


My specs:

CPU:
CPU.png.ad6b5e56bbf750f366a29703007c2301.png

Motherboard > Southbridge: Intel 82801GHM (ICH7-M/U) :
Motherboard.png.5f4753218d9d6034f7030c1483b772c2.png

Device Manager > SATA Controller:
2032168057_DeviceManager-SATAController.png.8e397946b44cfa2becf12244706eade0.png

SATA Controller > Hardware Ids: PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02 :
362105908_SATAController-HardwareIds.png.e18858f75efd7589add2861d125803f3.png

AS SSD Benchmark 1.8:
359958542_ASSSDBenchmark1.8.png.c07438075647608dc040aa3baafafe00.png


I know this could be tricky to pull off, so I made a Backup in case of BSOD.
I don't know if my Motherboard supports AHCI mode, I hope it does.
Because I don't have AHCI switch in BIOS I guess I have to make the switch by changing few things in Registry.

Which AHCI driver do you suggest I try?
And what changes I need to make in Registry to enable AHCI mode?

Thanks for your time.

Link to comment
Share on other sites


I don't think you can do that just in the registry, you need an AHCI driver for the SATA controller apart from anything else!
If there is no option to enable AHCI in the BIOS, it could well be that it's not fundamentally capable of supporting it.
There may be an updated version of the BIOS which does of course, if the hardware is capable.
:dubbio:

 

Link to comment
Share on other sites

AHCI driver becomes relevant when SATA controller is actually operating in AHCI mode.

Searching around gives hints that the chipset may indeed be capable of supporting AHCI mode. If official BIOS doesn't have the option, maaaybe it could be done with BIOS modding, but that's way beyond my expertise, just a speculation.

Link to comment
Share on other sites

Thanks guys.

Yes, I need to find and install AHCI driver that will copy msahci.sys (or other similar name) in C:\WINDOWS\system32\drivers .
And then disable IDE mode and enable AHCI mode from Registry.

My other HP Win 7 laptop from 2008 also doesn't have an option to enable AHCI in the BIOS but it operates in AHCI mode [SATA-2 (300) mode] and the SSD speed is double compared to my Win XP ASUS laptop which now operates in SATA-1 (150) mode, so I guess if there is no option to enable AHCI in the BIOS doesn't necessarily mean that it can't support AHCI mode. But this XP ASUS laptop is from 2006 and it's 2 years older than my HP Win 7 laptop so it's very much possible that the Motherboard doesn't support AHCI mode.

AS SSD Benchmark 1.8 shows:
XP ASUS laptop: pciide - BAD . And there is no ahci.sys or msahci.sys in C:\WINDOWS\system32\drivers .
HP Win 7 laptop: msahci - OK . And there is msahci.sys present in C:\WINDOWS\System32\drivers .

So I guess I need to find some Universal AHCI driver for XP, any suggestions?
And if the driver is bad and I get a BSOD it's no problem because I have a working Backup.

Edited by we3fan
Link to comment
Share on other sites

The controller 27C4 in IDE mode becomes 27C5 in SATA/AHCI.

AFAIK (frankly not a lot on this specific matter) the BIOS setting is simply a switch between 27C4 and 27C5 id, then the driver (either the plain IDE/ATA or the SATA/AHCI) is installed and started depending on this PCI ID.

There is some Linux trickery (via GRUB) possible, but no  idea if the PCI settings change "sticks" also in windows, nor if it actually works on your specific BIOS:

https://dreamlayers.blogspot.com/2016/11/switching-from-ide-to-ahci-on-ich7-m.html

I don't think that there is any other way than the above or a BIOS mod, this latter probably non-existing and in any case seriously dangerous/risky.

You can of course try UNIATA, but no idea if it will give you any advantage:

http://alter.org.ua/soft/win/uni_ata/

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

You're certainly right in saying that just because there's no AHCI switch in the BIOS doesn't mean that it isn't supported.
My BIOS doesn't have a switch either.

Clipboard-1.png.b971d7f203f05ce126874111527fecfb.png

My driver is using atapi.sys.
Whether my driver will work for you I cannot say of course, but here it is if you want to try it.
:)

Intel SATA AHCI Rapid Storage 10.1.0.1008.exe

Link to comment
Share on other sites

Thanks jaclaz, your info seems promising.
I will try to understand how this trick with Linux works.
I will also try the UNIATA drivers.

Dave, yes I see it's the same case with you as with my HP Win 7 - no AHCI switch in BIOS but AHCI is supported, so we have established that theory to be correct.
Thanks :), I will also try your driver.

Damnation, my laptop model is Asus S96J .
Yes, it's possible that latest BIOS update enables AHCI/IDE switching, but we don't know for sure, I wonder if there is a way to find out if that is really the case.


Search for "PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02" in my Registry returns 50 results:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA     18 results
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA     14 results
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA     18 results

Pics from CurrentControlSet:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA :
1.thumb.png.cd7a43f437d490dffcbc2a35935b9d77.png

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA\Control :
2.thumb.png.25b6f5226f6f5ab945f28856b43a897e.png

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\VEN_8086&DEV_27C4&SUBSYS_13471043&REV_02\3&11583659&0&FA\LogConf :
3.thumb.png.715fe9d054a09c4392d1701687a558c5.png

Is it possible to make the PCI ID switch from 27C4 to 27C5 directly here in the Registry by modifying some values?

Link to comment
Share on other sites

AFAIK the device IDs come from the devices themselves, and cannot be changed.
:no:
I'll be interested to hear if my driver works for you.
It's a long shot, but you never know!
You can add your device IDs to the INF file(s) of the driver, which may (or may not) get it to work with devices it wasn't actually intended for.
:)

Link to comment
Share on other sites

@we3fan

I'm certain that installing an AHCI driver whilst your controller is still in IDE mode will either do nothing at best, brick your install at worst.

Installing the driver will not magically switch your IDE controller into AHCI mode - that's done in BIOS.

Unfortunately, since it seems your laptop model never got an AHCI option update for your BIOS, You're going to need to get into BIOS modding if you want that controller to go into AHCI mode.

Link to comment
Share on other sites

Thanks Damnation, having no experience with AHCI mode and AHCI drivers I hoped that something can be done in the Registry, but I guess it won't be easy, or possible at all.


Dave, thanks for letting me try your driver :), here are the results from my tests:

- I can't install it with the normal Setup Wizard, it says: "This computer does not meet the minimum requirements for installing the software."
Setup Wizard starts OK on my Win 7 HP laptop (NET 4.0, C++: 2005-2017)
I installed SP3 + NET: 3.5-4.0 + C++: 2005-2017 - but normal Setup Wizard still doesn't work hmm. It probably won't make any difference but I was curious why the normal Setup Wizard gives this error message.

- Extract files, manual install > data1 > iaAHCI.inf > I selected ICH7M/MDH > gives Warning: "Installing this device driver is not recommended because Windows cannot verify that it is compatible with your hardware" > I install it anyway - copies iaStor.sys file in drivers, AS SSD Benchmark 1.8 shows: iaStor - OK, BSOD on Restart, not good.

- Extract files, manual install > data1 > iaStor.inf > I selected ICH7M/MDH > same Warning and I install anyway - copies iaStor.sys file in drivers, AS SSD Benchmark 1.8 shows: iaStor - OK, BSOD on Restart, not good.


I can try to add my device IDs to the iaAHCI.inf file, what would be the proper way to do it?

Default iaAHCI.inf file:

; Copyright (c) 2003-10 Intel Corporation
; ****************************************************************************
; ****************************************************************************
; **    Filename:  iaAHCI.INF
; **    Revision:  Version 10.1.0.1008
; **    Date:      11/6/2010
; **    Abstract:  Windows* INF File for Intel(R) Rapid Storage Technology Driver
; ****************************************************************************
; ****************************************************************************

[version]
CatalogFile=iaAHCI.cat
Signature="$WINDOWS NT$"
Class=hdc
ClassGUID={4D36E96A-E325-11CE-BFC1-08002BE10318}
Provider=%INTEL%
DriverVer=11/06/2010,10.1.0.1008

[SourceDisksNames]
1 = %DiskName%,,,

[SourceDisksFiles]
iaStor.sys= 1

[DestinationDirs]
DefaultDestDir = 12 ; DIRID_DRIVERS
CopyFullPort = 12;

[CopyFullPort]
iaStor.sys

[ControlFlags]
ExcludeFromSelect=*

[Manufacturer]
%INTEL%=INTEL_HDC,ntx86

[INTEL_HDC]

[INTEL_HDC.ntx86]
%PCI\VEN_8086&DEV_2681&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_2681&CC_0106
%PCI\VEN_8086&DEV_27C1&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_27C1&CC_0106
%PCI\VEN_8086&DEV_27C5&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_27C5&CC_0106
%PCI\VEN_8086&DEV_2821&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_2821&CC_0106
%PCI\VEN_8086&DEV_2829&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_2829&CC_0106
%PCI\VEN_8086&DEV_2922&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_2922&CC_0106
%PCI\VEN_8086&DEV_2929&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_2929&CC_0106
%PCI\VEN_8086&DEV_3A02&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_3A02&CC_0106
%PCI\VEN_8086&DEV_3A22&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_3A22&CC_0106
%PCI\VEN_8086&DEV_3B29&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_3B29&CC_0106
%PCI\VEN_8086&DEV_3B2F&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_3B2F&CC_0106
%PCI\VEN_8086&DEV_3B22&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_3B22&CC_0106
%PCI\VEN_8086&DEV_1C02&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_1C02&CC_0106
%PCI\VEN_8086&DEV_1C03&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_1C03&CC_0106

;****************************************************
[iaStor_Install]
AddReg = iaStor_Temp_parameters_AddReg
CopyFiles=CopyFullPort
FeatureScore=0x80

[iaStor_Install.HW]
AddReg = iaStorSecurity.AddReg

[iaStorSecurity.AddReg]
HKR,,Security,,"D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;;;;BU)"

[iaStor_Temp_parameters_AddReg]

[iaStor_Install.Services]
AddService = iaStor, %SPSVCINST_ASSOCSERVICE%, iaStor_Service_Inst, iaStor_EventLog_Inst

[iaStor_Service_Inst]
DisplayName    = %*PNP0600.DeviceDesc%
ServiceType    = %SERVICE_KERNEL_DRIVER%
StartType      = %SERVICE_BOOT_START%
ErrorControl   = %SERVICE_ERROR_NORMAL%
ServiceBinary  = %12%\iaStor.sys
LoadOrderGroup = SCSI Miniport
AddReg         = iaStor_parameters_AddReg

[iaStor_parameters_AddReg]
HKR,,Tag,%REG_DWORD%,25
HKR,Parameters,BusType,0x00010001,0x0000003

[iaStor_EventLog_Inst]
AddReg = iaStor_EventLog_AddReg

[iaStor_EventLog_AddReg]
HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\drivers\iaStor.sys"
HKR,,TypesSupported,%REG_DWORD%,7

;********************************************************
[Strings]
;Localizable
DiskName                                    = "Intel Rapid Storage Technology Driver"
*PNP0600.DeviceDesc                         = "Intel AHCI Controller"
PCI\VEN_8086&DEV_2681&CC_0106.DeviceDesc    = "Intel(R) ESB2 SATA AHCI Controller"
PCI\VEN_8086&DEV_27C1&CC_0106.DeviceDesc    = "Intel(R) ICH7R/DH SATA AHCI Controller"
PCI\VEN_8086&DEV_27C5&CC_0106.DeviceDesc    = "Intel(R) ICH7M/MDH SATA AHCI Controller"
PCI\VEN_8086&DEV_2821&CC_0106.DeviceDesc    = "Intel(R) ICH8R/DH/DO SATA AHCI Controller"
PCI\VEN_8086&DEV_2829&CC_0106.DeviceDesc    = "Intel(R) ICH8M-E/M SATA AHCI Controller"
PCI\VEN_8086&DEV_2922&CC_0106.DeviceDesc    = "Intel(R) ICH9R/DO/DH SATA AHCI Controller"
PCI\VEN_8086&DEV_2929&CC_0106.DeviceDesc    = "Intel(R) ICH9M-E/M SATA AHCI Controller"
PCI\VEN_8086&DEV_3A02&CC_0106.DeviceDesc    = "Intel(R) ICH10D/DO SATA AHCI Controller"
PCI\VEN_8086&DEV_3A22&CC_0106.DeviceDesc    = "Intel(R) ICH10R SATA AHCI Controller"
PCI\VEN_8086&DEV_3B29&CC_0106.DeviceDesc    = "Intel(R) 5 Series 4 Port SATA AHCI Controller"
PCI\VEN_8086&DEV_3B2F&CC_0106.DeviceDesc    = "Intel(R) 5 Series 6 Port SATA AHCI Controller"
PCI\VEN_8086&DEV_3B22&CC_0106.DeviceDesc    = "Intel(R) 5 Series/3400 Series SATA AHCI Controller"
PCI\VEN_8086&DEV_1C02&CC_0106.DeviceDesc    = "Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller"
PCI\VEN_8086&DEV_1C03&CC_0106.DeviceDesc    = "Intel(R) Mobile Express Chipset SATA AHCI Controller"

INTEL="Intel"

;*******************************************
;Non-Localizable
SPSVCINST_ASSOCSERVICE = 0x00000002
SERVICE_KERNEL_DRIVER  = 1
SERVICE_BOOT_START     = 0
SERVICE_ERROR_NORMAL   = 1
REG_EXPAND_SZ          = 0x00020000
REG_DWORD              = 0x00010001
Link to comment
Share on other sites

Quote

%PCI\VEN_8086&DEV_27C5&CC_0106.DeviceDesc% = iaStor_Install, PCI\VEN_8086&DEV_27C5&CC_0106

Quote

PCI\VEN_8086&DEV_27C5&CC_0106.DeviceDesc    = "Intel(R) ICH7M/MDH SATA AHCI Controller"

You can try adding two 27C4 lines

On 2/26/2022 at 2:07 PM, jaclaz said:

The controller 27C4 in IDE mode becomes 27C5 in SATA/AHCI.

BUT it won't work.

See it like this, if it was so easy, why the Linux trick, the BIOS provision (missing in your case) or the suggested need of a specific BIOS mod?

jaclaz

Link to comment
Share on other sites

Yes, I did say it was a long shot!
I agree that unless you solve the fundamental problem of your SATA controller not being ACHI compatible, or at least not being in AHCI mode, this will never work.
It could be that the hardware just isn't capable of doing what you want it to do.
:no:
 

Link to comment
Share on other sites

Thanks jaclaz.
I wanted to try few drivers and few Registry changes first, just so I can say: "I tried this thoroughly but it didn't work".
I kept the more difficult/risky options for last, because I am not very familiar with them, but I know they could potentially make this work.

Having no experience with this, I hoped the switch from IDE to AHCI mode can be done by modifying some values in the Registry.
Can you please confirm that this is NOT possible?

Dave, thanks again for your driver, I really appreciate it. Unfortunately it didn't work, but it's no problem.
Yes, it's very much possible that my 2006 Chipset doesn't support AHCI mode.

Link to comment
Share on other sites

2 hours ago, we3fan said:

Thanks jaclaz.
I wanted to try few drivers and few Registry changes first, just so I can say: "I tried this thoroughly but it didn't work".
I kept the more difficult/risky options for last, because I am not very familiar with them, but I know they could potentially make this work.

Having no experience with this, I hoped the switch from IDE to AHCI mode can be done by modifying some values in the Registry.
Can you please confirm that this is NOT possible?

As said, I cannot confirm (nor deny) anything, I am only pointing you at the little I know on the matter, based on what I read here and there.

All the evidence I could find point to the conclusion that the "switch" between IDE and AHCI/SATA needs to happen in the BIOS, whether this needs a modified BIOS or can be triggered (I presume only on some BIOSes/chipsets, not on all of them, but the given resource is actually about the specific ICH-7) via direct editing/poke the PCI settings, at least for Linux.

Both the above possibilities are rather low-level and complex, which makes me believe that a much simpler, I would dare to say obvious, solutions such as a Registry edit or the modification of a .inf file cannot possibly work.

I have NO idea on how a IDE, let alone SATA/AHCI driver actually works,  but I presume that loosely at every request from the OS it checks something (the 8-bit MAP—Address Map Register at offset 0x90 in the PCI area of the *whatever* hold these data)  and, depending on what it finds there, issues this (or that) slightly different command, and likely the chips themselves additionally check that value/register. 

This said, I wouldn't exclude that if you look at your PC with enough intensity (evil eye :w00t:)  you can switch the settings, but I would classify that event as highly improbable :dubbio:.

jaclaz

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...