Jump to content
20 posts in this topic

Recommended Posts

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 :rolleyes:

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.

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 :dance_24:

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).

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

 

Picture87.png

 

 

GA-965P-DS4 82801HR: 2SATA JMicron, 6SATA ICH8

Picture88.png

 

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.

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 :tomato:

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:

Picture89.png

 

:thumbsup_anim: 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?

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.

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.

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.

  • 6 months later...
  • 2 weeks later...

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 ?

post-43278-1195408575_thumb.png

  • 2 months later...

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...

  • 2 months later...

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

  • 2 months later...

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 :( !

×
×
  • Create New...