Zulu.Walker Posted April 13, 2007 Share Posted April 13, 2007 Hi guys. I've been bashing my head over this issue for quite a while, and up until now my lack of technical expertise on the BSD/OS X platform has led me to ask around if people have gotten all four ports on their ICH8 AHCI controller working because I haven't found any workarounds for the detection of the last two ports. So basically, why isn't it working? First a comparison of the ICH8 (82801HB) and ICH8R (82801HR): ICH8 HB: 4x3Gbit AHCI SATA on Ports-00/01/04/05 without Intel Matrix Support (IMS) ICH8R HR: 6x3Gbit AHCI SATA on Ports-00/01/02/03/04/05 with IMS (meaning it supports RAID) From Intel's ICH8 DataSheet: 5.15 SATA Host Controller (D31:F2, F5) The SATA function in the ICH8 has three modes of operation to support different operating system conditions. In the case of Native IDE enabled operating systems, the ICH8 utilizes two controllers to enable all six ports of the bus. The first controller (Device 31: Function 2) supports ports 0 -3 and the second controller (Device 31: Function 5) supports ports 4 and 5. When using a legacy operating system, only one controller (Device 31: Function 2) is available that supports ports 0 – 3. In AHCI or RAID mode, only one controller (Device 31: Function 2) is utilized enabling all six ports. As stated by the datasheet, the ICH8 uses TWO controllers to drive the 6ports in native IDE and only ONE under AHCI. I have found these two controllers on my Gigabyte GA-965P-S3 (0x28208086 and 0x28258086) and tried using them for GenericAHCI or ICH7M/ICH8 kextmods to no success. AFAIK, the 0x28208086 controls the first four ICH8 ports (Ports-00/01/02/03) while 0x28258086 is indicated as a 2-port Serial ATA Storage Controller, and my guess that it is the "missing link" to make the last two orange ports work on the ICH8s. Is there any way to "initialize" this device manually or through a kextmod? OS X cannot detect this serial controller, and if Intel says that only one controller is needed to drive all 6 ports in AHCI mode, then why does AHCI detection stop at Port01 and does not detect the last two? Any thoughts, info, help, ideas... anything will help. It's just annoying that I cannot utilize those ports and have the ICH8 HB chipset working 100%. I just hope that I can make this work and also help those who want to use those two AHCI. Long post I know. Help Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/ Share on other sites More sharing options...
Zulu.Walker Posted April 14, 2007 Author Share Posted April 14, 2007 Oh well, I guess I'm back to using legacy mode. After countless tries I haven't gotten all four ports to work under AHCI, only under legacy mode. Disabled ICH8 AHCI, turned off Native Ports00-03 Support, added my two GA-965P-S3 82801HB Device IDs under the SerialATA section of AppleVIAATA.kext, and I'm back to non-AHCI. At least all four ICH8 ports work, with the two JMicron SATA and two IDE. Time to expand my storage. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346493 Share on other sites More sharing options...
deathman Posted April 14, 2007 Share Posted April 14, 2007 Hi, ive got all 6 intel ports and both jmicron ports working on my gigabyte 965p-ds4 motherboard, if you want the kext i made pm me your email and i'll send it over, btw both the intel and jmicron need to be in ahci mode for the kext to work, and you also have to remove the appleahciport.kext from your extensions folder too as i have integrated it into my kext Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346655 Share on other sites More sharing options...
Zulu.Walker Posted April 14, 2007 Author Share Posted April 14, 2007 I have tried every known method and even my own methods. The AHCI method for the ICH8 really won't work, I just set everything at Legacy support and have all 4 ICH8 SATA working without any definite differences in performance. The DS4 and S3 have different chipsets, and there are only 4 ICH8 ports on the S3. The device IDs I tested were from my mobo (0x28208086 and 0x28258086) as well as ICH8R (0x28218086) and also the generic ICH8 "fix" Device ID which is 0x28248086. AHCI works for JMicron controller (0x2363197B) under GenericAHCI in AppleAHCIPort.kext, but I'm getting mixed speed results from XBench HD tests but I am experiencing a faster bootup when the GBB36X Controller is set to IDE. AHCI works only for the first two ports of the ICH8 on my S3 mobo in whatever configuration I set, so I just returned it to Legacy mode to access all four ICH8 ports to add more drives for SoftRAID. It took me approximately 3-4 hours of rebooting and testing the various AHCI/SATA DeviceIDs and BIOS settings, and AHCI only works on the top two ICH8 ports when set to 0x28248086, there's no way I could get the others to get detected. I would like to see what you have made with your kext, but I'm unsure if it'll work. Still would be great for reference though. VIA8237 works though, so I'm using it to drive all four non-AHCI ICH8 ports, and I can see no difference (yeah I'm pretty sure after 40 reboots on different BIOS and AHCI/SATA settings that I each tested using only one of the DevIDs used per test). Anyway, here's what I'm using right now to be able to use all IDE/SATA ports on the GA-965P-S3, it might benefit someone who needs a lot of SATA devices like me. AppleAHCIPort.kext/Contents/Info.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> <string>AppleAHCIPort</string> <key>CFBundleGetInfoString</key> <string>Version 1.0.5, Copyright 2005-2006, Apple Computer, Inc.</string> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleAHCIPort</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>AppleAHCI</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleShortVersionString</key> <string>1.0.5</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0.5</string> <key>IOKitPersonalities</key> <dict> <key>GenericAHCI</key> <dict> <key>CFBundeIdentifier</key> <string>com.apple.driver.AppleAHCIPort</string> <key>IOClass</key> <string>AppleAHCI</string> <key>IOPCIClassMatch</key> <string>0x2363197B</string> <key>IOProbeScore</key> <integer>800</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>Vendor Name</key> <string>Generic AHCI</string> </dict> <key>ICH6 ESB2 AHCI</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleAHCIPort</string> <key>Chipset Name</key> <string>ESB2 AHCI</string> <key>IOClass</key> <string>AppleAHCI</string> <key>IOPCIPrimaryMatch</key> <string>0x26818086</string> <key>IOProbeScore</key> <integer>2000</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>Vendor Name</key> <string>Intel</string> </dict> <key>ICH8 AHCI</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleAHCIPort</string> <key>Chipset Name</key> <string>ICH8 AHCI</string> <key>IOClass</key> <string>AppleAHCI</string> <key>IOPCIPrimaryMatch</key> <string>0x28248086</string> <key>IOProbeScore</key> <integer>2000</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>Vendor Name</key> <string>Intel</string> </dict> </dict> <key>OSBundleLibraries</key> <dict> <key>com.apple.iokit.IOAHCIFamily</key> <string>1.0.0</string> <key>com.apple.iokit.IOPCIFamily</key> <string>1.0.0</string> <key>com.apple.kpi.bsd</key> <string>8.0.0</string> <key>com.apple.kpi.iokit</key> <string>8.0.0</string> <key>com.apple.kpi.libkern</key> <string>8.0.0</string> <key>com.apple.kpi.mach</key> <string>8.0.0</string> </dict> <key>OSBundleRequired</key> <string>Local-Root</string> </dict> </plist> AppleVIAATA.kext/Contents/Info.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> <string>AppleVIAATA</string> <key>CFBundleGetInfoString</key> <string>1.0.2, Copyright Apple Computer, Inc. 2004</string> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleVIAATA</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>Apple VIA ATA Driver</string> <key>CFBundlePackageType</key> <string>KEXT</string> <key>CFBundleShortVersionString</key> <string>1.0.2</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0.2</string> <key>IOKitPersonalities</key> <dict> <key>VIA ATA Driver</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleVIAATA</string> <key>IOClass</key> <string>AppleVIAATADriver</string> <key>IOProviderClass</key> <string>AppleVIAATAChannel</string> </dict> <key>VIA PATA Controller</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleVIAATA</string> <key>Hardware Name</key> <string>82C571</string> <key>IOClass</key> <string>AppleVIAATARoot</string> <key>IOPCIPrimaryMatch</key> <string>0x05711106</string> <key>IOProbeScore</key> <integer>1000</integer> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>ISA Bridge Matching</key> <dict> <key>IOPCIClassMatch</key> <string>0x06010000&0xffff0000</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> </dict> <key>Serial ATA</key> <false/> </dict> <key>VIA SATA Controller</key> <dict> <key>CFBundleIdentifier</key> <string>com.apple.driver.AppleVIAATA</string> <key>Hardware Name</key> <string>8237 SATA</string> <key>IOClass</key> <string>AppleVIAATARoot</string> <key>IOPCIPrimaryMatch</key> <string>0x2363197B 0x28208086 0x28258086</string> <key>IOProbeScore</key> <string>1000</string> <key>IOProviderClass</key> <string>IOPCIDevice</string> <key>Serial ATA</key> <true/> </dict> </dict> <key>OSBundleLibraries</key> <dict> <key>com.apple.iokit.IOATAFamily</key> <string>1.5.0d1</string> <key>com.apple.iokit.IOPCIFamily</key> <string>1.1</string> <key>com.apple.kernel.iokit</key> <string>1.1</string> </dict> <key>OSBundleRequired</key> <string>Local-Root</string> </dict> </plist> I don't have AHCI enabled on my ICH8 but I don't care as long as I'll be able to use all the ports available on the motherboard without any performance hits. ICH8 XBench 1.3 results on AHCI mode and Legacy mode for the same drive (Maxtor 160GB SATA) are roughly the same, around 75 +- 2%, so having AHCI now for me = no biggie. Still, if anyone finds any leads on how to enable all AHCI ports on the ICH8 (82801HB 4ports), I would still be interested to know of course. It just annoyed me to hell that I had to find out for myself why it wasn't working, but couldn't find a reason to make OS X see those stupid ports. End of really long post. PS. By adding the JMicron DevID under GenericAHCI I can switch between AHCI/IDE modes in BIOS without any booting problems in OS X. I also have the generic ICH8 DevID under ICH8 AHCI IOPCIPrimaryMatch and everything is also working when I turn on ICH8 AHCI in BIOS. However, ICH8 AHCI will only detect my top two SATA drives, so I'm keeping it at Legacy Mode (I repeat myself a lot I know). Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346696 Share on other sites More sharing options...
deathman Posted April 14, 2007 Share Posted April 14, 2007 The ds4 which is what ive got has 6 intel sata ports and is the same as the s3 as far as im aware. they both have the same dev/ven id anyway Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346734 Share on other sites More sharing options...
Zulu.Walker Posted April 14, 2007 Author Share Posted April 14, 2007 GA-965P-S3 82801HB: 2SATA JMicron, 4SATA ICH8. Intel ICH8 2-Port Serial ATA Storage Controller - 0x28258086 Intel ICH8 4-Port Serial ATA Storage Controller - 0x28208086 Gigabyte GBB36X Controller - 0x2363197B GA-965P-DS4 82801HR: 2SATA JMicron, 6SATA ICH8 Not exactly the same, quite similar. As you can see from my first long post, the middle ports of the ICH8 AHCI were "not included" by Intel, so AHCI detection stops at the first two ports and does not detect the last two. Still a mystery. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346761 Share on other sites More sharing options...
deathman Posted April 14, 2007 Share Posted April 14, 2007 ok .. can you get the ich8 ports working at all in ahci mode? or is the problem when you enable the jmicron ports? also i had problems getting everything to work when the appleahci and appleviaata kexts were in the extensions folder. i moved them into the plugins folder of ioatafamily.kext and everything works 100% for me now Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346799 Share on other sites More sharing options...
Zulu.Walker Posted April 14, 2007 Author Share Posted April 14, 2007 ok .. can you get the ich8 ports working at all in ahci mode? or is the problem when you enable the jmicron ports? Yes, I can get Ports-00/01 (the two orange ports at the right in the pic) working in AHCI using ICH7M AHCI name-modded as ICH8 AHCI (check out the lines at the codebox in my earlier posts). I can use AHCI on my JMicron, no problems. What I cannot get to work is the two leftmost orange ports, which are Ports-04/05 as designed by Intel. They "crippled" the 82801HB chipset by reducing the number of SATA ports supported by two and chose those damned two middle ports (Ports-02/03) rather than just scrap the last two. Intel's 82801HB/HR/HDH/DH/HDO/DO DataSheet: that, Intel. Good job. also i had problems getting everything to work when the appleahci and appleviaata kexts were in the extensions folder. i moved them into the plugins folder of ioatafamily.kext and everything works 100% for me now I don't think that will help, seriously. I need a way for OS X to go past the detection of the third and fourth ports to detect the fifth and sixth, the ones I need to work. Does increasing the IOProbeScore value from 800 to 1000 or 2000 do anything? Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346832 Share on other sites More sharing options...
deathman Posted April 14, 2007 Share Posted April 14, 2007 Like i said with the appleahci and applevia kexts in the extensions folder i could only get the first 4 ich8 ports working with jmicron 2 ports, when i put them all in the ioatafamily kext all 6 ports worked as well as the jmicron. worth trying for yourself wont do any harm. if you wont at least try it then i cant help you. As i previously stated as well your ven/dev ids are exactly the same as mine. so should work exactly the same way. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346851 Share on other sites More sharing options...
Zulu.Walker Posted April 14, 2007 Author Share Posted April 14, 2007 So you just "sudo mv" the two kexts to IOATAFamily.kext and it just worked? What ports weren't working when both kexts were outside in /S/L/E, Ports-04/05 or the same ports I'm having trouble with? And you can still boot no problems even if you don't have a copy of the two in the /S/L/E folder? I'll give it a try, I hope you're right that it'll work. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346857 Share on other sites More sharing options...
deathman Posted April 14, 2007 Share Posted April 14, 2007 yes you just move them into the plugins folder of the ioatafamily kext, they will still load no problem, the worse that can happen is you will only get working what you have got now. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-346914 Share on other sites More sharing options...
Zulu.Walker Posted April 15, 2007 Author Share Posted April 15, 2007 Moving the two kexts to the Plugins folder of IOATAFamily.kext didn't do anything for me, sorry deathman. If you could give me a link to your kexts to see what you did, maybe it will help. OS X still stops detecting after the first two AHCI ports and can't "see" the last two. Thanks for your input by the way. Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-347142 Share on other sites More sharing options...
deathman Posted April 15, 2007 Share Posted April 15, 2007 Havent got them on a site but if u pm me your email, i'll mail it to you Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-347278 Share on other sites More sharing options...
Nuphor Posted November 8, 2007 Share Posted November 8, 2007 Zulu.Walker, did you ever get any further with this? Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-499649 Share on other sites More sharing options...
gu3d3s Posted November 18, 2007 Share Posted November 18, 2007 hi guys, zulu i have ths same board and the same problem, u have new about ich8 ports 2 and3? []'s EDIT: look at ioreg app, i see this: OS see ths ports 2 and 3 but dont load any for this posrts, maybe change io range in ahciport.kext can help!? and now guys, any idea ? Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-510038 Share on other sites More sharing options...
neocui Posted February 12, 2008 Share Posted February 12, 2008 From digging through the Linux kernel code, here's the story. Both ICH8 and ICH8R have 6 AHCI ports, they are the same exact controller. But in order to sell the ICH8R at a premium, Intel disabled ports 3 and 4 on the ICH8. The AHCI controller tells the driver how many ports it has (up to 16). The ICH8 reports 4. In most cases, the driver will linearly probe the the port numbers. With the weird port arrangement in ICH8, the driver has to read a PCI register, called HOST_PORTS_IMPLEMENTED, which gives you a map (32bits) of all implemented ports in order to find out that the 4 implemented ports are actually 5,6 not 3,4. This was recently fixed in the Linux kernel. Now if only we can get access to the source code of AppleAHCIPorts, we can fix this problem once and for all... Hmm.. ahci.c in the linux kernel source code is 1700 lines. Not bad. I wonder what it would take to port that to IOKit... Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-619478 Share on other sites More sharing options...
Abacax86 Posted April 15, 2008 Share Posted April 15, 2008 Hey guys, I gotta something called All ports ACHI, which claims to make all 4 ports work on ICH8. I don't know how to make it work these kext things or where I got it from. Inside the zip file there is AppleAHCIPort.kext, AppleUSBAudio.kext, AppleUSBMuiltitouch.kext, AppleUSBTopCase.kext, IOACHIFamily.kext, IOATAFamily.kext and IOUSBFamily.kext. PM me if interested Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-709864 Share on other sites More sharing options...
cyclonefr Posted April 15, 2008 Share Posted April 15, 2008 Did you guys even try that ? http://forum.insanelymac.com/index.php?sho...p;p=679562& Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-709874 Share on other sites More sharing options...
formerglory Posted July 10, 2008 Share Posted July 10, 2008 Check cyclonefr's link, folks. It works, confirmed on a GA-965P-DS3 Rev. 3.3 (BIOS version F12) with ICH8, running 10.5.4 and all the current updates. I've got all my orange ports working on Enabled AHCI in the BIOS and Native SATA going on. Also, System Profiler reports the chipset as an ICH8, not an Unknown AHCI set, so all my icons are hard drive ones, not the generic external orange icons. Now I just need to get Windows XP to work with AHCI ! Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-814855 Share on other sites More sharing options...
Trauma! Posted July 10, 2008 Share Posted July 10, 2008 Just wanted to say that AppleAHCIPort.kext from 10.5.4 is working perfectly... All 4 ports for ICH8. Otherwise the one into the 10.5.2 Kalyway working fine has well ! Link to comment https://www.insanelymac.com/forum/topic/48315-the-ich8-quest-for-fully-working-orange-ahci-ports/#findComment-814880 Share on other sites More sharing options...
Recommended Posts