Contribute
Register

[SOLVED AGAIN] Fine Tuning SATA/eSATA on Asus P8P67 Pro

Status
Not open for further replies.
Re: [SOLVED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

So got sleeping working just fine, but only at 4.1GHz max overclock.

BUT, the changes I did in the DSDT to enable eSATA on JMB362 get all screwed up somehow after wake from sleep. The registers we wrote to to set the controller in AHCI mode get rewritten, but in some kind of screwed up way. Instead of SATA, it shows as ffff, and instead of JMicron, it shows as "Illegal vendor". Nice. LOL!

Okay, no sleep for me, for now.
 
Re: [SOLVED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

stradivari said:
So got sleeping working just fine, but only at 4.1GHz max overclock.

BUT, the changes I did in the DSDT to enable eSATA on JMB362 get all screwed up somehow after wake from sleep. The registers we wrote to to set the controller in AHCI mode get rewritten, but in some kind of screwed up way. Instead of SATA, it shows as ffff, and instead of JMicron, it shows as "Illegal vendor". Nice. LOL!

Okay, no sleep for me, for now.

Yea... While I haven't done the DSDT eSATA fix yet, sleep seemed to be messing up the setpci hack as well. Had to futz with the drive to get it to recognize it again etc...
 
Re: [SOLVED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

Okay, more news here.

I've updated my DSDT hack. Some of you may have noticed that with the original hack, in fact you wound up with TWO entries for the jmicron controller: one SATA and one IDE, looking something like this:

Code:
05:00.0 SATA controller: JMicron Technology Corp. Unknown device 2362 (rev 10)
05:01.0 IDE controller: JMicron Technology Corp. Unknown device 0368 (rev 10)

I had thought that the two JMB entries in the DSDT (JMB0 and JMB1) were for the two eSATA ports, but this is incorrect. JMB0 is actually both ports, I believe, and JMB1 is some kind of spurious reference, perhaps, to other JMB chips that have both SATA and PATA ports on them.

In any case, what I've done is to write zeros to the registers on JMB1, which then disables the IDE entry:

Code:
                Device (JMB0)
                {
                    Name (_ADR, Zero)
                    OperationRegion (BAR0, PCI_Config, 0x40, 0x04)
                    Field (BAR0, WordAcc, NoLock, Preserve)
                    {
                        M1,     8, 
                        M2,     8, 
                        M3,     8
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (0xB3, M1)
                        Store (0xA1, M2)
                        Store (0xC2, M3)
                        Store (Package (0x02)
                            {
                                "name", 
                                Buffer (0x16)
                                {
                                    "J-Micron JMB36x eSATA"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }

                Device (JMB1)
                {
                    Name (_ADR, One)
                    OperationRegion (BAR0, PCI_Config, 0x40, 0x04)
                    Field (BAR0, WordAcc, NoLock, Preserve)
                    {
                        M1,     8, 
                        M2,     8, 
                        M3,     8
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        Store (Zero, M1)
                        Store (Zero, M2)
                        Store (Zero, M3)
                        Return (Zero)
                    }
                }

Now when you run lspci, you can see there is only a single entry for Jmicron again, and it is appropriately a SATA controller.

HOWEVER... for those of you running sleep, this doesn't quite fix the problem that drives connected to the eSATA ports get interrupted upon wake from sleep. With my original hack, it was messed up because when waking from sleep, the registers wound up with illegal values, and it was Bad News™. With this fix, however, now what is happening is that it is reverting from SATA to IDE upon wake from sleep. You can then reenable with the setpci command:

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

I should be able to fix this in DSDT again, but I haven't figure out yet. There is a section in DSDT for wake from sleep behaviour, but I have no idea how it works, yet.

Anyway, here is my updated .aml file, which will remove the spurious IDE entry, and will leave you with an IDE controller upon wake from sleep instead of an illegal entry in lspci.
 

Attachments

  • DSDT.aml
    30.9 KB · Views: 198
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

Can somebody please upload the 64 bit version of EvoTools. For some reason I can't access http://www.osx86.es at all. Thanks.
 
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

At work. Maybe later tonight. Cheers!
 
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

New P8P67Pro install cd image available

Brief instructions..

Boot from the cd,
Swap the cd for the OS X install DVD when the bootloader has loaded,
Wait a few minutes and press f5,
Select the install DVD and continue,
Wait for install to complete and click restart (this may hang - if so switch the pc off, wait a few mins and switch back on else the cd/dvd drive will not work),
Reboot from the boot cd and choose the hd that you installed to and boot from it,
Go through the Apple account setup,
If you have already downloaded the 10.6.7 combo update now is the time to run it, if not you need to run the p8p67pro install package to get ethernet working, reboot using the boot cd and then download the 10.6.7 combo update and run it),
Reboot again from the boot cd,
Run the package from the cd - only use the ATI6000 package if you have a supported ATI 6000 card - i.e. 6870 otherwise use the other package,
Restart once the package completes, eject the boot cd and boot from your hd

You should now have working sound, ethernet, sata, esata, bluetooth and pretty much everything except sleep (sleep even if it works will bugger up the esata support when it wakes).

Thats about the best i can do for now!

If you already have a working system do NOT use this cd - it's aimed at making install or reinstall simple. There are changes on this version of the disk that will likely cause problems if you have an existing install - I no longer install any kexts to the Extras folder but rather to the S/L/E folder (in preperation for Lion). Ignore that advice if you like but if you do I may not help you with any problems!
 
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

I think I've got eSATA on wake worked out, but I haven't actually got it to work yet. LOL (I know, I know)

Basically, you just have to make a PINI function that rewrites the registers, and call it in _WAK. However, it's not that simple. It has to go to sleep properly (write disable registers) as well. I think it's almost there. Will keep you updated.

I think the next issue for me is to get WOL (wake on lan) working. Sleep is only of use to me if I can wake the system remotely (machine doubles as a media server). Any ideas on that? I've got "allow power on through PCI" as per Asus manual (to allow Intel LAN to wake system), however I notice that when the system sleeps, the green connect lights on the Intel LAN port go off... which I'm pretty sure are supposed to remain lit when WOL works. No?

In Energy Saver panel, I have no option for "Wake on administrative access" or whatever that option is (I have it on my MacBook Pro, and I had it on my Mac Pro before I sold it last week). Any ideas?

I'd say if we get eSATA port working through sleep, and WOL set up, then everything will be 100% for me. I never used sleep on my Mac Pro anyway (never could track down what process was keeping it from working), so the point it somewhat moot.
 
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

stradivari said:
I think I've got eSATA on wake worked out, but I haven't actually got it to work yet. LOL (I know, I know)

Basically, you just have to make a PINI function that rewrites the registers, and call it in _WAK. However, it's not that simple. It has to go to sleep properly (write disable registers) as well. I think it's almost there. Will keep you updated.

I think the next issue for me is to get WOL (wake on lan) working. Sleep is only of use to me if I can wake the system remotely (machine doubles as a media server). Any ideas on that? I've got "allow power on through PCI" as per Asus manual (to allow Intel LAN to wake system), however I notice that when the system sleeps, the green connect lights on the Intel LAN port go off... which I'm pretty sure are supposed to remain lit when WOL works. No?

In Energy Saver panel, I have no option for "Wake on administrative access" or whatever that option is (I have it on my MacBook Pro, and I had it on my Mac Pro before I sold it last week). Any ideas?

I'd say if we get eSATA port working through sleep, and WOL set up, then everything will be 100% for me. I never used sleep on my Mac Pro anyway (never could track down what process was keeping it from working), so the point it somewhat moot.

To be fair sleep works in the same way that I sleep - I refuse to be woken up too lol :D
 
Re: [UPDATED] Fine Tuning SATA/eSATA on Asus P8P67 Pro

AndyStubbs said:
stradivari said:
I think I've got eSATA on wake worked out, but I haven't actually got it to work yet. LOL (I know, I know)

Basically, you just have to make a PINI function that rewrites the registers, and call it in _WAK. However, it's not that simple. It has to go to sleep properly (write disable registers) as well. I think it's almost there. Will keep you updated.

I think the next issue for me is to get WOL (wake on lan) working. Sleep is only of use to me if I can wake the system remotely (machine doubles as a media server). Any ideas on that? I've got "allow power on through PCI" as per Asus manual (to allow Intel LAN to wake system), however I notice that when the system sleeps, the green connect lights on the Intel LAN port go off... which I'm pretty sure are supposed to remain lit when WOL works. No?

In Energy Saver panel, I have no option for "Wake on administrative access" or whatever that option is (I have it on my MacBook Pro, and I had it on my Mac Pro before I sold it last week). Any ideas?

I'd say if we get eSATA port working through sleep, and WOL set up, then everything will be 100% for me. I never used sleep on my Mac Pro anyway (never could track down what process was keeping it from working), so the point it somewhat moot.

To be fair sleep works in the same way that I sleep - I refuse to be woken up too lol :D

LOL! :)

I can get the registers rewritten to put it back into SATA mode on wake, but I'm concerned that it's not done properly, that it is not being put to sleep correctly, and I worry that over time we will have corruption on any disks connected to eSATA during improper _PTS (prepare to sleep) and _WAK
 
Status
Not open for further replies.
Back
Top