They should work together now without problems and we should be able to use all of the Intel SATA and JMicron SATA ports at the same time with all of the JMicron PATA ports. This way the AppleAHCIport will drive both Intel and JMicron SATA ports in AHCI/RAID mode and the JMicronATA will drive only the PATA ports.
Snapshot_2009_01_15_18_22_17.png 170.53KB 915 downloads
Here are the two plist-only kext:
They are made to work alongside with these vanilla AppleAHCIport.kext v1.5.2 and vanilla JMicronATA.kext v1.0.0 from Leo 10.5.6:
EDIT: removed the vanilla kext attachments, not sure if it goes against the rules to attach them here.
In case you dont have those particular versions you can get them from Apple Combo Update I think.
Only tested in Leo 10.5.6, it might work on older versions but not tested by me (AppleAHCIport.kext version changed in latest update I think). I still dont understand the logic behing legacy and binary kext, so maybe if you modify versions values in the plist (so binary and legacy kext match versions) it can be adapted to previous binaries.
CHANGES I MADE:
- Only plist, no binary change.
- Adding controller class matching to JMicron personalities in both kexts so only AHCI driver is used for SATA ports and only ATA driver is used for PATA ports, avoiding crashes caused by using only device id matching.
- Assign AppleICH8AHCI class to all ICH8/9/10 controllers instead of generic AppleAHCI. I dont know what are the differences between those 2 classes but ICH9 and 10 are very similar to ICH8 so it feels more right to me. If anyone knows this will break something please let me know.
- Revise all of the Intel ICHx device ids and names according to Intel infs for proper identification of each controller model in AHCI and RAID mode (except the device ids already present in vanilla kext, those I havent touched, some models might still get the wrong name). This only has a aesthetical benefit.
- Add all theoretically compatible device ids to JMicron personalities. They might or might not work with the original binary, as it only supported JMB368, but it works for me withe JMB363.
- I have only tested this on my machine config (ICH9R & JMB363) so before testing it on your own make sure you know how to go back to your original setup in case something goes wrong.
- This assumes you are running both Intel ICHx and JMicron controllers in either AHCI or RAID mode, not in IDE mode. Some motherboards might not allow you to change that so check your BIOS settings and manual to be sure.
- Some motherboards have 1 internal SATA port and 1 (hardwired) eSATA port driven by the JMicron controller. Using this kext in those boards should work but it might not give you full eSATA functionality (drives might show as internal not ejectable). If someone knows how to set SATA protocol interconnection parameters on a port by port basis please modify the kext to do it that way.
- There are at least 2 other JMicronATA binary variants, the one from DarwinATA project for +2Gb RAM and the one available from JMicron's FTP site. They should work too with this kext but I havent tried those drivers.
- Some AppleViaATA.kext version include JMicron device ids too, but they might cause some conflicts if present (like making JMicron PATA devices appear as connected to the SATA bus) so I would advice removing it if you have it installed (if you dont need AppleVIAATA to drive other hardware you might have, its definitely not needed for JMicron with these 2 kext).
This is of course based on cyclonefr and Gujal's work.
I split the AHCI plist in 2 so it can be installed separately for Intel & JMicron, so mobos without JMicron can install only Intel kext for example.
I think its cleaner to keep different manufacturer personalities in different kext instead of crowding one plist (or the vanilla kext plist).
I also included ICH6 device ids, it seems to be AHCI compliant too. So now includes all Intel ICH AHCI/RAID controllers ids from ICH6 to ICH10.
Also increased IOProbeScore for the JMicron in AHCI/RAID mode trying to avoid other JMicron kext from taking over the SATA controller.
- AppleAHCIport plist-only kext for Intel ICHx SATA ports in AHCI/RAID mode:
LegacyAppleAHCIPortIntelICHx.kext.zip 1.54KB 2368 downloads
- AppleAHCIport plist-only kext for JMicron JMB36x SATA ports in AHCI/RAID mode:
LegacyAppleAHCIPortJMicronJMB36xSATA.kext.zip 1.29KB 1145 downloads
- JMicronATA plist-only kext for JMicronJMB36x SATA ports in IDE-compatibility mode (& PATA ports):
LegacyJMicronATASATAIDEmode.kext.zip 1.2KB 1023 downloads
Alternatively, if instead of the vanilla JMicronATA from leopard you need to use the 2Gb+ memory fixed version from darwinata here its v0.6 of that kext with plist fixed to work with the SATA controller in AHCI mode:
JMicronATA.kext.darwinata.v0.6.PlistFix.IDE_mode_only.zip 27.47KB 746 downloads
If there is some mistake or I missed/mistaked some device ids please report and I'll try to fix it.
Also, according to this Linux SATA driver status report it seems some newer ATI, NVIDIA, SiS, ULi and VIA chipsets are AHCI compliant. If you have such chipset and have a BIOS option to switch the controller to AHCI/RAID you might try using it with AppleAHCI kext. The vanilla kext has a generic personality for any AHCI controller class so it should pick it up if there is no other driver taking over it.