Jump to content
5 posts in this topic

Recommended Posts

Hello everybody... this is my first post here and I'd like to share this case...

 

After many weeks of researches on this great forum I managed to setup a full working Hackintosh on my Asus P5E-SLI (intel Core 2 Duo E6600, 4GB RAM, ATI x1950 with QE/QI) running with vanilla kernel 10.5.0 (comboupdate to 10.6.5). Everything looks running fine including USB, Audio (VoodooHDA), etc. And I didn't need to specify any DSDT file... so far.

 

The problem is with the eSATA external HDD which is not automatically detected at boot time. I found this thread:

 

JMicron SATA/IDE PCIe Card eSATA problem

 

When I issue 'lspci' I get this output:

 

02:00.0 SATA controller: JMicron Technologies, Inc. JMicron 20360/20363 AHCI Controller (rev 02)

 

Also, I confirm that I'm able to fully use the eSATA drive by manually issuing this command (thx to ApexDE!)

 

sudo setpci -s 02:0.0 40.b=b3 41.b=a1 42.b=c2

 

but the problem is that I'm still unable to see this HDD at boot time as I get the infamous message "Still waiting for the root device..." when trying to boot OSX from there! :(

 

Note: the same HDD drive (eSATA/USB2) is perfectly booting via the USB2 connection (much slower than eSATA :) ), so I think problem is with eSATA driver not enabled at boot time.

I've tried a lot of injection kexts (JMicron...) but nothing changed. Also I've tried to look at the disassembled DSDT as suggested by ApexDE in above post, but I cannot find any JMB device to be edited.

 

One last note: it's not a BIOS issue, as the same HDD can boot from second partition (Windows XP) using eSATA connection.

 

Is there something I did wrong? Any similar experience?

 

EDIT:

 

I have resolved as follows.

 

The only kext which is able to detect the eSATA interface at BOOT-TIME is the one from the EmpireEFI CD v1.085.

 

size of JMicronATA.kext = 74135 bytes

size of binary MacOS/JMicronATA = 71540 bytes

 

contents of pbdevelopment.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PBXProjectSourcePath</key>
<string>/Users/slashack/Development/ATADrivers/JMicronATA</string>
</dict>
</plist>

 

contents of Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//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>JMicronATA</string>
<key>CFBundleGetInfoString</key>
<string>1.0.1, Copyright JMicron Technology Corporation</string>
<key>CFBundleIdentifier</key>
<string>com.jmicron.JMicronATA</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>JMicron JMB ATA Driver</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0.6</string>
<key>IOKitPersonalities</key>
<dict>
	<key>JMicronATA Driver</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.jmicron.JMicronATA</string>
		<key>Hardware Vendor</key>
		<string>JMicron</string>
		<key>IOClass</key>
		<string>JMicronATA</string>
		<key>IOProviderClass</key>
		<string>JMicronATAChannel</string>
	</dict>
	<key>JMicronATA PCI</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.jmicron.JMicronATA</string>
		<key>Hardware Vendor</key>
		<string>JMicron</string>
		<key>IOClass</key>
		<string>JMicronATAPCIRoot</string>
		<key>IOPCIPrimaryMatch</key>
		<string>0x2360197b, 0x2361197b 0x2363197b 0x2365197b 0x2366197b 0x2368197b</string>
		<key>IOProbeScore</key>
		<integer>10000</integer>
		<key>IOProviderClass</key>
		<string>IOPCIDevice</string>
	</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
	<key>com.apple.iokit.IOATAFamily</key>
	<string>1.6.1f3</string>
	<key>com.apple.iokit.IOPCIFamily</key>
	<string>2.0</string>
</dict>
<key>OSBundleRequired</key>
<string>Local-Root</string>
</dict>
</plist>

 

So, what I did, is to copy this kext in Extra/Extensions. I've also copied AHCIPortInjector, IOAHCIBlockStorageInjector, IOATABlockStorage, IOATAFamily and IOPCIFamily kexts from the same empireEFI CD, but I'm not sure they're really needed.

 

Hope this helps!

Cheers.

 

EDIT:

 

Here is the zip with all my kexts from /Extra/Extension directory. Tested on Snow Leopard 10.6.5 @ 32bit.

eSATA_for_boot_KEXTs.zip

Hey guys... so, isn't there anyone who is able to boot his Snow Leopard using eSATA?

 

Some additional info: I'm using the following kexts in the Extra/Extensions (Chameleon 2.0 RC4)

 

AHCIPortInjector.kext

ATAPortInjector.kext

IOAHCIBlockStorageInjector.kext

JMicronATAInjector.kext

Disabler.kext

 

As said in my original post above, if I connect the HDD via USB2 it's able to boot..

 

Waiting for boot volume with UUID CDA42......

...

....

Got boot device = IOService ...

 

But if I connect the same HDD drive using eSATA cable it loads the kernel, initialize it and then it hangs just after the "Waiting for boot volume" message... I get "Still waiting for root device".

 

So I'm assuming there is some problem with eSATA device detection at boot time. Is there some way to force the device detection using the EFI strings in chameleon? Or they are just for video cards?

 

PLEASE HEEELP! :)

Hey guys... so, isn't there anyone who is able to boot his Snow Leopard using eSATA?

 

Some additional info: I'm using the following kexts in the Extra/Extensions (Chameleon 2.0 RC4)

 

AHCIPortInjector.kext

ATAPortInjector.kext

IOAHCIBlockStorageInjector.kext

JMicronATAInjector.kext

Disabler.kext

 

As said in my original post above, if I connect the HDD via USB2 it's able to boot..

 

Waiting for boot volume with UUID CDA42......

...

....

Got boot device = IOService ...

 

But if I connect the same HDD drive using eSATA cable it loads the kernel, initialize it and then it hangs just after the "Waiting for boot volume" message... I get "Still waiting for root device".

 

So I'm assuming there is some problem with eSATA device detection at boot time. Is there some way to force the device detection using the EFI strings in chameleon? Or they are just for video cards?

 

PLEASE HEEELP! :)

 

Try this .kext perhaps removing the ATA one you have as they may conflict.

 

JMicron36xeSATA.kext.zip

Try this .kext perhaps removing the ATA one you have as they may conflict.

 

JMicron36xeSATA.kext.zip

 

It didn't work, but I've SOLVED using JMicronATA.kext from EmpireEFI 1.085. I've edited my original post with more details.

 

Thanks!

It didn't work, but I've SOLVED using JMicronATA.kext from EmpireEFI 1.085. I've edited my original post with more details.

 

Thanks!

 

Ah good to see you got it, you may want to zip them .kexts up (right click then Compress option will do it) and post as attachment(s) here so others can find the total solution in this thread itself instead of having to search around for them.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...