Hello, I'm just googling now for a solution to have eSATA eject and I so far rethrieved some information on having the bracket plugged to the purple JMicron SATA ports w/ AHCI enabled in BIOS. I'll report later if this works
adding JMicronATAInjector.kext to .mkext and will link references. This post is useful to me as notepadding. Now I'm backupping my HDDs and it will take long. I must be careful because I had the newly bought 1Tb HDD replaced today after the summer vacation as it probably failed and broke off because of hot ejecting while in OS X (yet unmounted before from Disk Utility. I did not try unmounting by Terminal).
Credit goes to:
How to enable hot swap for eSATA on Intel ICH10R, Mac OS X 10.5.4, GA-EP45-DS3R moboPost #4 eSata P5W DH Deluxe hotplugineSATA Hot Plug working on iATKOS v5 updated to 10.5.6, Finally got hot plug working with my other eSATA drive on Abit IP35ProMac Pro on-board SATA connectors are not hot-swappablePost #11 Gigabyte P35-DS3 Leo-DVDs are booting with ACPI Error, TOH & Brazilmacs DVD: "unable to find driver for... ACPI"Post #109 Gigabyte GA-965P-DS3 Leopard How-to (Updated 1/10), iATKOS (TOH, Brazilmac, EFI emulation, Vanilla Kernel)Gigabyte's JMicron363 SATA2 device and vendor IDs are 0x2363197b (at least on my EP35-DS4 Rev. 2.1)
JMicronATAInjector.kext is used to add ATA support, not SATA as needed in present situation.
Possible considered solutions:
AHCIPortInjector.kext (legacy from Chameleon-2.0-RC2-r640) has to be edited removing the IOKitPersonalities' JMicronAHCI child:
CODE
<key>JMicronAHCI</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleAHCIPort</string>
<key>Chipset Name</key>
<string>JMB36x AHCI</string>
<key>IOClass</key>
<string>AppleAHCI</string>
<key>IOPCIPrimaryMatch</key>
<string>0x2360197b&0xfff0ffff</string>
<key>IOProbeScore</key>
<integer>2000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>Vendor Name</key>
<string>JMicron</string>
</dict>
So Gigabyte's JMicron SATA2 controller is recognized (IODeviceTree:/PEX4@1C,4/JMB0@0 in EP35-DS4) and managed by retail 10.5.8 AppleAHCIPort.kext in S/L/E as Unknown AHCI Standard Controller in System Profiler.
I suppose this is the IOKitPersonalities' GenericAHCI child involved:
CODE
<key>GenericAHCI</key>
<dict>
<key>CFBundeIdentifier</key>
<string>com.apple.driver.AppleAHCIPort</string>
<key>Chipset Name</key>
<string>AHCI Standard Controller</string>
<key>IOClass</key>
<string>AppleAHCI</string>
<key>IOPCIClassMatch</key>
<string>0x01060100&0xffffff00</string>
<key>IOProbeScore</key>
<integer>800</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>Vendor Name</key>
<string>Unknown</string>
</dict>
Otherwise AHCIPortInjector.kext can be deleted.
A suitable DSDT.aml can be compiled to solve the Unknown AHCI Standard Controller being recognised as ICH10R in System Profiler or whatever ICHx fits to your hackintosh.
Now I'll test adding
CODE
<key>JMicronAHCI</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleAHCIPort</string>
<key>Chipset Name</key>
<string>JMB36x AHCI</string>
<key>IOClass</key>
<string>AppleAHCI</string>
<key>IOPCIClassMatch</key>
<string>0x01060100&0xffffff00</string>
<key>IOPCIPrimaryMatch</key>
<string>0x2368197b 0x2363197b 0x2361197b 0x2360197b</string>
<key>IOProbeScore</key>
<integer>2000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>Protocol Characteristics</key>
<dict>
<key>Physical Interconnect</key>
<string>ESATA</string>
<key>Physical Interconnect Location</key>
<string>External</string>
</dict>
<key>Vendor Name</key>
<string>JMicron</string>
</dict>
to AHCIPortInjector.kext, the bold strings used to have them ports recognised as eSATA.
I do not know if I'll keep the bold part. They should already be eSATA capable because of AHCI.
USB drives have indeed false Ejectable key value in IORegistryExplorer. I read correcting this report is merely cosmetic.
About the AppleAHCIDiskDriver child in IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/Info.plist
CODE
<key>AppleAHCIDiskDriver</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.iokit.IOAHCIBlockStorage</string>
<key>IOClass</key>
<string>AppleAHCIDiskDriver</string>
<key>IOProviderClass</key>
<string>IOAHCIDevice</string>
<key>Physical Interconnect</key>
<string>ESATA</string>
<key>Physical Interconnect Location</key>
<string>External</string>
<key>Protocol Characteristics</key>
<dict>
<key>Physical Interconnect</key>
<string>ESATA</string>
<key>Physical Interconnect Location</key>
<string>External</string>
</dict>
</dict>
I do not want to mess up S/L/E so, to keep vanilla, I'll try to create a legacy .plist kext to put in E/E