2014年7月20日星期日

Install AHCI Driver for Motherboard with AMD/ATi SB600/700/750/800 without reinstall Windows XP

Computer Characterustic:
Motherboard: ONDA A770S (NB:AMD A770, SB: AMD SB6XX Series)
CPU: AMD Athlon X2 5000+ (Black Edition)
GPU: AMD Radeon HD3850
RAM: Kingston DDR2 800MHz 1GB×2
HDD: ST 250GB SATA 3Gb/s
Date of purchase: Dec. 2007

Problem:
This computer is definitely capable to run Microsoft Windows 7, but you know, parents would always prefer older Operating Systems (OSs) because they don't want to change themselves to get used to a new one. Therefore the computer is running Microsoft Windows XP Professional with Onboard SATA Controllder configured as Native IDE in BIOS in the compromise of compatibility.

But I noticed that SATA HDD running in IDE mode has a significantly performance drop. Therefore I was seeking solution to install AHCI driver and let Windows XP runs without reinstall the OS. This's kind of hard, because Windows XP does NOT support SATA originally, and without SATA driver it even cannot load the system and will lead to the classical blue screen which you may encountered before.

Solution:
I searched the Internet, and I found that AMD official site stop the support for any Motherboard Chipsets. Damn!! They can just offer APU/CPU/GPU drivers now. What the fxxk!!! And luckily I found AHCI driver for AMD/ATi SB700/750/800 Series for Windows XP (32 or 64bit) on Mydrivers.com. Some bloggers said that this driver will also work on SB6XX Series and I think this deserves a try.

I download the driver installer and instead double-clik and just install it, I uncompressed it directly, because officially it does NOT support SB6XX. There after uncompression, enter a folder called RAID7XX, and enter the correct architecture folder (x86 or x64), then you'll find three files. Here I'll take x86 as example. That is
ahcix86.sys
ahcix86.inf
ahcix86.cat
Well, ahcix86.sys is the module that Windows XP will load while booting, ahcix86.inf and ahcix86.cat will be the driver for installation. To begin copy ahcix86.sys to
%SystemDrive%\Windows\system32\drivers 
and copy ahcix86.inf ahcix86.cat two files to a hidden folder
%SystemDrive%\Windows\inf

Wait!! I almost forgot you have to modify the ahcix86.inf file before copying it.

Officially, this driver will only support AMD SB700/750/800, and in the ahcix86.inf file there will be only those modules will be in the supported list. So I have to manually add a line.

[ATI]
%NapaDesc%=Napa_Inst,PCI\VEN_1002&DEV_4392&CC_0104
%NapaDesc%=Napa_Inst,PCI\VEN_1002&DEV_4391&CC_0106
%NapaDesc%=Napa_Inst,PCI\VEN_1002&DEV_4393&CC_0104
%NapaDesc%=Napa_Inst,PCI\VEN_1002&DEV_4380&CC_0106

Note that the red line is newly added. Which is stand for SB6XX. You must use the correct identification code of your SB chipset. The Specific code of your SB chip (Vendor Code and Device Code and CC Code), you can turn SATA Mode to AHCI and load a Live-Linux and use command /sbin/lspci to observe and turn SATA mode back to IDE to enter Windows XP. Please change the file with caution, and you will take the risk for your own. The solution posted here is provided at an "AS IS" basis.

After you copied the above three files to correct folder. You still need to manually change your Register Table. Create a text file like this:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\PCI#VEN_1002&DEV_4380&CC_0106]
"Service"="ahcix86"
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ahcix86]
"Type"=dword:00000001
"Start"=dword:00000000
"Group"="SCSI miniport"
"ErrorControl"=dword:00000001
"ImagePath"="system32\\drivers\\ahcix86.sys"
"tag"=dword:00000019
"DisplayName"="ATI AMD AHCI Controller"

Note that you need to ensure that you use the correct vendor number device number and CC number. Save it as a reg file, and double-click to add those lines to Register Table. This works as described below: when Windows XP boots, it found a PCI device which is identified as VEN_1002&DEV_4380&CC_0106 and according to the register table the OS will start a service called ahcix86 and the file of which is located in "system32\\drivers\\ahcix86.sys", and the OS will them recognized the SATA HDD in AHCI Mode.

Reboot your computer and enter BIOS, change SATA Mode to AHCI, and save and start your computer. If you have done it correctly you will not run into Blue Screen, and boot into Windows Xp successfully. System pop up a bubble indecating system has just found a new PCI device and will install the driver. If the automatic installation fails and OS asks you for the driver, just type in the folder which contains the modified inf and cat files (don't use system32 folder, copy those two files to another newly created folder which contains only these two files, you can use the umcompressed x86/x64 folder when you extract the driver installer if you modified the inf there).

After driver installation Windows need another reboot. After reboot for the second time, you will see in the Device Manager, there will be a AMD SCSI/RAID Controller. That means you has successfully let your Windows Xp supports native SATA HDD in a native way. Congratulations!!

To download the driver, go to the following webpage (Chinese)
http://news.mydrivers.com/1/166/166108.htm