projct
Member
With some Intel Macs, AHCI mode is disabled for BIOS emulation modes so that Windows XP will install without needing a driver disk. Unfortunately Apple does not provide a method to turn AHCI support on later.
In legacy mode, transfers are capped at 133MB/s (SSDs suffer greatly from this), it also disables the fifth and sixth SATA port on Mac Pros, and features like hotplug, trim, and (I think) NCQ don't work.
Bypassing the BIOS emulation by loading windows via EFI doesn't work well, because Apple's EFI was created before UEFI, so the two don't really mix.
The solution to enabling AHCI at boot time for any BIOS-booted OS is to set the SATA controller's PCI register each time you boot, prior to booting the OS. With grub2, this can be done with 'setpci'. There are also a few shell scripts and an OSX tool that can be used to patch the windows standard MBR. Further reading can be done at for example this InsanelyMac post and utilities for enabling AHCI in BIOS emulation mode.
Each chipset has a different device ID (obviously) and also a different register that needs setting. Here are a list of a few common ones (in the format accepted by setpci) that could be added in a dropdown, but even simply having a section or configuration file setting for picking your own device and register would be great.
The cleaner way that requires a bit of assembly would be to patch the MBR or drive's bootsector itself so that this is done before bootmgr is loaded, bypassing the need for grub etc. Unfortunately all the existing patches floating around on the net are for each specific controller. I don't have time to disassemble one and see if you could just swap the PCI IDs and registers and redo the patch, but it seems fairly likely.
As it stands the way this is accomplished with EasyBCD is by chaining grub2. this isn't too bad but it would be wonderful if EasyBCD could do it natively.
Thanks!
In legacy mode, transfers are capped at 133MB/s (SSDs suffer greatly from this), it also disables the fifth and sixth SATA port on Mac Pros, and features like hotplug, trim, and (I think) NCQ don't work.
Bypassing the BIOS emulation by loading windows via EFI doesn't work well, because Apple's EFI was created before UEFI, so the two don't really mix.
The solution to enabling AHCI at boot time for any BIOS-booted OS is to set the SATA controller's PCI register each time you boot, prior to booting the OS. With grub2, this can be done with 'setpci'. There are also a few shell scripts and an OSX tool that can be used to patch the windows standard MBR. Further reading can be done at for example this InsanelyMac post and utilities for enabling AHCI in BIOS emulation mode.
Each chipset has a different device ID (obviously) and also a different register that needs setting. Here are a list of a few common ones (in the format accepted by setpci) that could be added in a dropdown, but even simply having a section or configuration file setting for picking your own device and register would be great.
- MacPro1,1 (2006) intel 631xESB/632xESB chipset: setpci -d 8086:2680 90.b=40
- MacBookPro5,2 (mid 2009) with MCP79 chipset: setpci -d 10de:0ab5 9c.b=06
- MacBookPro6,2 intel 3400 chipset: setpci -d 8086:3b28 90.b=60
The cleaner way that requires a bit of assembly would be to patch the MBR or drive's bootsector itself so that this is done before bootmgr is loaded, bypassing the need for grub etc. Unfortunately all the existing patches floating around on the net are for each specific controller. I don't have time to disassemble one and see if you could just swap the PCI IDs and registers and redo the patch, but it seems fairly likely.
As it stands the way this is accomplished with EasyBCD is by chaining grub2. this isn't too bad but it would be wonderful if EasyBCD could do it natively.
Thanks!