Jump to content











Photo
- - - - -

Switch XP on AMD from IDE to AHCI


  • Please log in to reply
39 replies to this topic

#1 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 03 March 2012 - 02:50 PM

I need to switch my friend's XP install from IDE to AHCI. It's a Biostar TA790GXBE which has AMD 790GX / SB750. There seems to be a lot of guides around for doing this with Intel boards, but not for AMD.

I guess I need the Serial ATA AHCI/RAID drivers at the bottom of the Driver tab here http://www.biostar.c...on.php?S_ID=419 which are rather old being from 2009 but I don't know if there's any more recent ones.

I don't really know what I need to do from there though, so hopefully someone's done this before and can show me what I need to do.

#2 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 03 March 2012 - 02:57 PM

Is pretty easy when you know how to do it :)
Do you have any WinPE around?

In WinPE 3.x would work with just this:
Try with this:
reg LOAD HKLMSYSTEM_00 c:WINDOWSSYSTEM32CONFIGSYSTEM

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86Enum" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Type /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Start /t REG_DWORD /d 0 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Group /t REG_SZ /d "SCSI miniport" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v ErrorControl /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v ImagePath /t REG_SZ /d "system32driversahcix86.sys" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v tag /t REG_DWORD /d 4 /f

reg add "HKLMSYSTEM_00ControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v Service /t REG_SZ /d "ahcix86" /f

reg add "HKLMSYSTEM_00ControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v ClassGUID /t REG_SZ /d "{4D36E97B-E325-11CE-BFC1-08002BE10318}" /f

reg UNLOAD HKLMSYSTEM_00

Then copy the ahcix86.sys,ahcix86.inf and ahcix86.cat in c:windowsinf, so Windows will find it to install it, but also copy ahcix86.sys in c:windowssystem32drivers for it to boot the first time.

#3 sambul61

sambul61

    Gold Member

  • Advanced user
  • 1568 posts
  •  
    American Samoa

Posted 03 March 2012 - 03:17 PM

I don't really know what I need to do.

Try booting into a backup tool like Acronis, backing up XP from IDE only disk and restoring it to SATA & IDE Emulation disk (don't restore from inside running XP to avoid changing new disk Signature). Switch to IDE Emulation mode in your Mobo BIOS, boot from the disk, add SATA drivers support , reboot to BIOS, switch to AHCI, save and reboot. Should boot to SATA disk now.

#4 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 03 March 2012 - 03:44 PM

Try booting into a backup tool like Acronis, backing up XP from IDE only disk and restoring it to SATA & IDE Emulation disk (don't restore from inside running XP to avoid changing new disk Signature). Switch to IDE Emulation mode in your Mobo BIOS, boot from the disk, add SATA drivers support , reboot to BIOS, switch to AHCI, save and reboot. Should boot to SATA disk now.


That should do it too, but I think it's even more complicated than injecting the driver manually. Also your solution requires some Acronis software which is not free.

About the ahcix86 driver from AMD for XP, don't worry: It's a so standard driver that it won't need any update.

#5 sambul61

sambul61

    Gold Member

  • Advanced user
  • 1568 posts
  •  
    American Samoa

Posted 03 March 2012 - 03:56 PM

Injecting a driver isn't enough to move OS from one disk to another. It still needs to be moved somehow, with or without Acronis, if original disk has IDE connector (unless one would use an IDE-to-SATA adapter). :)

#6 sambul61

sambul61

    Gold Member

  • Advanced user
  • 1568 posts
  •  
    American Samoa

Posted 03 March 2012 - 03:56 PM

Deleted duplicate.

#7 sambul61

sambul61

    Gold Member

  • Advanced user
  • 1568 posts
  •  
    American Samoa

Posted 03 March 2012 - 03:56 PM

Deleted duplicate.

#8 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 03 March 2012 - 04:06 PM

Injecting a driver isn't enough to move OS from one disk to another. It still needs to be moved somehow, with or without Acronis, if original disk has IDE connector (unless one would use an IDE-to-SATA adapter). :)

Mmmm... As far as I know, when changing from one disk to another you have to change also the Dos Letters stuff (or something like that)
If you're changing the motherboard, you'll probable need to change the HAL, inject the ide/ahci/raid driver and do some driver and legacy services cleaning.

But it seems that he just wants to turn on AHCI in a motherboard, he is not changing the hard disk, right?

#9 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 03 March 2012 - 04:35 PM

Thanks for the advice so far. I can see now that I wasn't very clear about exactly what I'm trying to do .

He has a SATA HD but it's running in IDE mode in the BIOS, so I want to make sure that XP is set up correctly so that when I switch to AHCI in the BIOS, it will boot. He's not changing any hardware at all.

I do have WinPE but I'm going to have to do this remotely (I don't trust him to do it right himself!) so I'm thinking I could get him to boot into his Win7 partition and install Logmein in that, so that I can remote in.

#10 steve6375

steve6375

    Platinum Member

  • Developer
  • 7566 posts
  • Location:UK
  • Interests:computers, programming (masm,vb6,C,vbs), photography,TV,films
  •  
    United Kingdom

Posted 03 March 2012 - 05:52 PM

http://www.rm.com/Su...cref=TEC1602013

#11 ilko

ilko

    Silver Member

  • Advanced user
  • 500 posts
  •  
    Bulgaria

Posted 03 March 2012 - 07:31 PM

Is pretty easy when you know how to do it :)
Do you have any WinPE around?

In WinPE 3.x would work with just this:
Try with this:

reg LOAD HKLMSYSTEM_00 c:WINDOWSSYSTEM32CONFIGSYSTEM

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86Enum" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Type /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Start /t REG_DWORD /d 0 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v Group /t REG_SZ /d "SCSI miniport" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v ErrorControl /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v ImagePath /t REG_SZ /d "system32driversahcix86.sys" /f

reg add "HKLMSYSTEM_00ControlSet001Servicesahcix86" /v tag /t REG_DWORD /d 4 /f

reg add "HKLMSYSTEM_00ControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v Service /t REG_SZ /d "ahcix86" /f

reg add "HKLMSYSTEM_00ControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v ClassGUID /t REG_SZ /d "{4D36E97B-E325-11CE-BFC1-08002BE10318}" /f

reg UNLOAD HKLMSYSTEM_00

Then copy the ahcix86.sys,ahcix86.inf and ahcix86.cat in c:windowsinf, so Windows will find it to install it, but also copy ahcix86.sys in c:windowssystem32drivers for it to boot the first time.

Why from WinPE? :)
Since the system is already working the above records could be added directly to the working Windows while in IDE mode.
So it becomes something like this:
reg add "HKLMSystemCurrentControlSetServicesahcix86" /f

reg add "HKLMSystemCurrentControlSetServicesahcix86Enum" /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v Type /t REG_DWORD /d 1 /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v Start /t REG_DWORD /d 0 /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v Group /t REG_SZ /d "SCSI miniport" /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v ErrorControl /t REG_DWORD /d 1 /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v ImagePath /t REG_SZ /d "system32driversahcix86.sys" /f

reg add "HKLMSystemCurrentControlSetServicesahcix86" /v tag /t REG_DWORD /d 4 /f

reg add "HKLMSystemCurrentControlSetControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v Service /t REG_SZ /d "ahcix86" /f

reg add "HKLMSystemCurrentControlSetControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v ClassGUID /t REG_SZ /d "{4D36E97B-E325-11CE-BFC1-08002BE10318}" /f

edit: corrected the missed System

Edited by ilko, 03 March 2012 - 08:28 PM.


#12 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 03 March 2012 - 07:59 PM

True, but incorrect code!

I don't think changing Currentcontrolset is going to make a difference. As far as I know you need to modify ControlSet00x in order to have those changes next time you reboot.
Also, you forgot SYSTEM :)


reg add "HKLMSYSTEMControlSet001Servicesahcix86" /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86Enum" /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v Type /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v Start /t REG_DWORD /d 0 /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v Group /t REG_SZ /d "SCSI miniport" /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v ErrorControl /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v ImagePath /t REG_SZ /d "system32driversahcix86.sys" /f

reg add "HKLMSYSTEMControlSet001Servicesahcix86" /v tag /t REG_DWORD /d 4 /f

reg add "HKLMSYSTEMControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v Service /t REG_SZ /d "ahcix86" /f

reg add "HKLMSYSTEMControlSet001ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v ClassGUID /t REG_SZ /d "{4D36E97B-E325-11CE-BFC1-08002BE10318}" /f


So in the end he could do a BAT from this and copy those files in those folders, and it would work :)

#13 ilko

ilko

    Silver Member

  • Advanced user
  • 500 posts
  •  
    Bulgaria

Posted 03 March 2012 - 08:25 PM

I don't think changing Currentcontrolset is going to make a difference. As far as I know you need to modify ControlSet00x in order to have those changes next time you reboot.

Nope, that's not like this. CurrentControlSet is a copy of the current control set, i.e. ControlSet001 or whatever is in HKLMSYSTEMSelectCurrent, and one should definitely use CurrentControlSet if needs to modify the currently used control set when working with online registry. Look for details:
http://support.microsoft.com/kb/100010


Also, you forgot SYSTEM

Yep, I did, wrong search&replace in Notepad++, thanks :)

#14 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 04 March 2012 - 02:08 AM

Thanks!
I love this community, everyday I learn something new!

So in the end he should do this:



reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86Enum" /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v Type /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v Start /t REG_DWORD /d 0 /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v Group /t REG_SZ /d "SCSI miniport" /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v ErrorControl /t REG_DWORD /d 1 /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v ImagePath /t REG_SZ /d "system32driversahcix86.sys" /f

reg add "HKLMSYSTEMCurrentControlSetServicesahcix86" /v tag /t REG_DWORD /d 4 /f

reg add "HKLMSYSTEMCurrentControlSetControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v Service /t REG_SZ /d "ahcix86" /f

reg add "HKLMSYSTEMCurrentControlSetControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106" /v ClassGUID /t REG_SZ /d "{4D36E97B-E325-11CE-BFC1-08002BE10318}" /f


BTW, those tweaks are the ones I use always for every AHCI or RAID driver, and, as now, they always work.

You just need to change the following:
ahcix86 -> service name: like iastor or sisraid2
ahcix86.sys -> driver name: like iastor.sys
VEN_1002 -> 1002 means AMD, intel uses 8086, and so on.
CC_0106 -> compatible identifier of AHCI devices, change it to CC_0104 if using RAID
  • wimb likes this

#15 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 04 March 2012 - 02:23 AM

Thanks guys. Looks pretty straightforward. :thumbup:

Is it essential to change to AHCI before the next boot after doing this or will it continue to work in IDE emulation mode until the setting is changed in the BIOS?

#16 karyonix

karyonix

    Frequent Member

  • Advanced user
  • 481 posts
  •  
    Thailand

Posted 04 March 2012 - 02:38 AM

It will work in both IDE and AHCI modes.

#17 sambul61

sambul61

    Gold Member

  • Advanced user
  • 1568 posts
  •  
    American Samoa

Posted 04 March 2012 - 05:57 AM

Hey karyonix,

Welcome back! I see you browsing the forum for awhile, but not posting anything, and was wondering why. :) Any plans on FiraDisk or new developments?

As to switching modes, after a major Windows update or some packs install you made need to re-enable IDE or SATA support at boot in Registry, depending on what mode the PC was in during the upgrade.

#18 wimb

wimb

    Platinum Member

  • Developer
  • 3756 posts
  • Interests:Boot and Install from USB
  •  
    Netherlands

Posted 04 March 2012 - 09:43 AM

BTW, those tweaks are the ones I use always for every AHCI or RAID driver, and, as now, they always work.

Thanks :)

It works very well for me and thanks for sharing your knowledge.
Can boot now AMD computer with AHCI setting.

:cheers:

#19 steve6375

steve6375

    Platinum Member

  • Developer
  • 7566 posts
  • Location:UK
  • Interests:computers, programming (masm,vb6,C,vbs), photography,TV,films
  •  
    United Kingdom

Posted 04 March 2012 - 09:51 AM

So could there be a generic cmd script which would add both IDE and AHCI to an Intel and AMD system (i.e. run the script on any system and it can then boot on any platform?). Thus makin an image which would boot on any system?
On my IDE Intel XP install there is no ahcix86.sys file in windowssystem32drivers folder - so how does it work?

#20 ilko

ilko

    Silver Member

  • Advanced user
  • 500 posts
  •  
    Bulgaria

Posted 04 March 2012 - 09:55 AM

...BTW, those tweaks are the ones I use always for every AHCI or RAID driver, and, as now, they always work.

You just need to change the following:
ahcix86 -> service name: like iastor or sisraid2
ahcix86.sys -> driver name: like iastor.sys
VEN_1002 -> 1002 means AMD, intel uses 8086, and so on.
CC_0106 -> compatible identifier of AHCI devices, change it to CC_0104 if using RAID

Mind you, some drivers require another subkey ParametersPnpInterface=5 :
http://forum.driverp...pic.php?id=4943
http://forum.driverp...pic.php?id=3638

#21 ilko

ilko

    Silver Member

  • Advanced user
  • 500 posts
  •  
    Bulgaria

Posted 04 March 2012 - 10:09 AM

So could there be a generic cmd script which would add both IDE and AHCI to an Intel and AMD system (i.e. run the script on any system and it can then boot on any platform?). Thus makin an image which would boot on any system?
On my IDE Intel XP install there is no ahcix86.sys file in windowssystem32drivers folder - so how does it work?

ahcix86.sys is the driver for this motherboard from the first post.
The issue with XP is that there is no yet a generic AHCI driver (apart from UniATA) like the Microsoft's one introduced with Vista. One still could add many mass storage drivers, keeping in mind there is a limit how many could be loaded at system startup, if I recall correctly the limit was about 80 for XP, this is for all the boot drivers with start=0. A 64-bit NTLDR increases this limit. For 2000 the limit is way lower.

Some details and ideas here:
http://www.911cd.net...showtopic=19397

#22 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 04 March 2012 - 02:59 PM

It will work in both IDE and AHCI modes.


That's cool then. I just wanted to check, in case he accidentally rebooted before getting into the BIOS and changing the setting, that it would still boot OK in IDE model and I'd also read somewhere that if it wasn't changed to AHCI immediately it would deactivate the driver when rebooted, meaning the driver would have to be re-activated manually again before switching to AHCI in the BIOS, but obviously that doesn't apply to this particular situation at least. :)

#23 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 07 March 2012 - 02:23 AM

I've managed to do this and it went smoothly thanks. After putting the files in place and running the batch, I tested booting again without switching to AHCI in the BIOS and it still booted fine. Then I rebooted and changed the setting and then XP installed the drivers no problem :)

I must admit I was a little concerned when I saw it had installed them under SCSI/RAID in Device Manager, as in Windows 7 it shows my AHCI Serial ATA Controller under IDE ATI/ATAPI Controllers, but I guess that's just XP for you!

Switching his Windows 7 to AHCI was a piece of cake, as I just had to set the msahci service to Start=0.

#24 panreyes

panreyes

    Member

  • Members
  • 57 posts
  •  
    Spain

Posted 07 March 2012 - 09:35 AM

:good:

#25 doveman

doveman

    Frequent Member

  • Advanced user
  • 449 posts
  • Location:Surrey
  •  
    United Kingdom

Posted 11 April 2012 - 05:15 PM

Hmm, just tried this on another PC and got a BSOD when trying to boot XP.

I did the same procedure which worked on the other PC, copied the cat, inf and sys files to c:windowsinf and the sys file to c:windowssystem32, ran the batch file to create the registry entries. I checked the XP registry from Win7 (which booted fine in AHCI mode) and I can see it's using ControlSet002 but I don't see why that should cause any problem.

The registry's got (ignore the XP part, that's just what I named the hive when I imported it in Win7):

[HKEY_LOCAL_MACHINEXPControlSet002ControlCriticalDeviceDatabasepci#ven_0e11&dev_ae33]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="pciide"

[HKEY_LOCAL_MACHINEXPControlSet002ControlCriticalDeviceDatabasePCI#VEN_1002&CC_0106]
"Service"="ahcix86"
"ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINEXPControlSet002Servicesahcix86]
"Type"=dword:00000001
"Start"=dword:00000000
"Group"="SCSI miniport"
"ErrorControl"=dword:00000001
"ImagePath"="system32driversahcix86.sys"
"tag"=dword:00000004
[HKEY_LOCAL_MACHINEXPControlSet002Servicesahcix86Enum]

The only thing I can think of is importing those entries back into ControlSet001 in case it's looking there when booting :dubbio:




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users