Jump to content

DSDT for Asus P8P67-M PRO


Time2Retire
 Share

834 posts in this topic

Recommended Posts

I recently got a new Asus P8P67 M-PRO motherboard (Sandy Bridge) and went mad by extracting & stripping the ACPI tables apart. And since it only the second time I did something like this, there's a lot of new things to learn. Let's start with some numbers of my first attempt / version:

 

Now Even Smaller (see post #6)

 

Latest version of ssdt_pr.(dsl/aml) available here

 

Latest version of ssdt_usb.dsl available here

 

Note: Also attached there is a simple Perl script called aml2struct.pl to convert AML files to structures for RevoBoot's static ACPI injection.

 

Decompiled factory tables:

 

315 KB on disk 311,992 bytes (dsdt.dsl)

4 KB on disk 1,967 bytes (ssdt.dsl)

20 KB on disk 19,002 bytes (ssdt_ist.dsl)

4 KB on disk 3,721 bytes (ssdt_cst.dsl)

=============================

This is 336,682 bytes of source code. Now look at the replacements.

 

The new / stripped tables:

 

53 KB on disk 49,449 bytes (dsdt.dsl)

8 KB on disk 6,046 bytes (ssdt_pr.dsl)

16 KB on disk 12,655 bytes (ssdt_usb.dsl)

===========================

Only 68,150 bytes. That is 268,532 bytes less (a pretty substantial reduction in my book) Now look at the AML bits.

 

Factory AML code:

 

37 KB on disk (33,709 bytes) DSDT.aml

4 KB on disk ( 228 bytes) SSDT_CST.aml

4 KB on disk ( 1,780 bytes) SSDT_IST.aml

4 KB on disk ( 470 bytes) SSDT.aml

=============================

36,187 bytes

 

The new / stripped AML code:

 

8 KB on disk (7,403 bytes) dsdt.aml

4 KB on disk ( 825 bytes) ssdt_pr.aml

4 KB on disk (1,074 bytes) ssdt_usb.aml

===========================

9,302 bytes

 

And that gives us: 36,187 - 9,302 = 26,885 bytes... less bytes to load and compute by ACPIPlatform.kext

 

Notes:

 

1.) This work was done by me and for people using RevoBoot, but you are free to use it... under the condition that when you use my work, and change something that other people (including me) might want to know about, that you report about your change(s) here. Thank you.

 

2.) I see people (almost) begging for a sleepenabler.kext but that only shows me that they don't know jack. Please stop making a fool of your self and go to an Apple store and go get the kexts of a new Sandy Bridge based MacBookPro (8,1/2/3) notably AppleLPC.kext version 1.5.1 and AppleSMBusController.kext Great. Had to get this out of my system. This is basically all I want to say about it right now.

 

3.) This is not a/the place to ask for help with your DSDT/SSDT table (errors/problems). Yup. This is it.

 

What Works?

 

I think that the most important things are, in random order: Audio (892), LAN, Reboot, Shutdown.

 

Tips:

 

1.) Do not inject properties from your DSDT (with help of _DSM) because that will slow down the boot process, but use EFI device-properties instead. And this is exactly where RevoBoot comes into place.

 

Credits:

 

Master Chief and 'his' (P5K PRO) DSDT monster thread. The one person who made this (and a lot of other stuff around here) possible... by teaching me what to do. Thank you dad!

 

Attachments:

 

The FactoryAML.zip is attached here so that you can see (after extracting the tables) what I did – by using diff and/or FileMerge.

FactoryAML.zip

dsdt.dsl.zip

ssdt_pr.dsl.zip

ssdt_usb.dsl.zip

Link to comment
Share on other sites

Put aside the fact that you are a genius, how do you know if a particular device or method is unnecessary so it is safe to remove it? If I use ioreg explorer I can see which devices get loaded. Does it necessarily mean that all the things that ioreg dump shows are the devices that all I need for OSX?

 

For example, I have Device (SAT0) and Device(SAT1) under Device (PCI0) but I don't see Device(SAT1) in ioreg explorer. This also applies to some other devices such as Device (EJECT) and Device (TBTN). Does this mean that I can remove all these devices?

 

Devices seem to be the relatively easy ones, but what about all those Method and Name? For examples, there are lots of things under my SAT0 device and I am not really sure if they do something for OSX. Is there an easy way to find which ones are unnecessary? Trial and error?

Link to comment
Share on other sites

Put aside the fact that you are a genius, how do you know if a particular device or method is unnecessary so it is safe to remove it? If I use ioreg explorer I can see which devices get loaded. Does it necessarily mean that all the things that ioreg dump shows are the devices that all I need for OSX?

Thanks, but I'm not a genius. I just happen to have a great bunch of people around me. This time it was my father who told me what to do, but this week alone I got help from dgsga with both audio and my new Radion 6850. Wouldn't have sound without his help. Anyway. This work took me almost a day to complete and I still don't know much about ACPI tables, but I can tell you that seeing devices in IORegistryExplorer doesn't mean you need them. In fact most of them were added for Windows so they can go.

 

For example, I have Device (SAT0) and Device(SAT1) under Device (PCI0) but I don't see Device(SAT1) in ioreg explorer. This also applies to some other devices such as Device (EJECT) and Device (TBTN). Does this mean that I can remove all these devices?

Intel puts two SATA devices in chipsets but OSX supports the first one only. This may change any time soon, but for now... the second one (0x001F0006) can go. Names don't matter much. What I do is to use is: grep -re devicename . in /System/Library/Extensions If you see it being used in one of the kexts, then don't rename it. Otherwise I am using the name used in the ioreg dump.

 

Devices seem to be the relatively easy ones, but what about all those Method and Name? For examples, there are lots of things under my SAT0 device and I am not really sure if they do something for OSX. Is there an easy way to find which ones are unnecessary? Trial and error?

For SATA everything but the address can go. The rest can be compared with a real Mac, and yes it is pretty much trial and error when you don't know what you are doing, and that was why I put that credit line in there... since I still don't know jack about ACPI tables :D

Link to comment
Share on other sites

Thanks, but I'm not a genius. I just happen to have a great bunch of people around me. This time it was my father who told me what to do, but this week alone I got help from dgsga with both audio and my new Radion 6850. Wouldn't have sound without his help. Anyway. This work took me almost a day to complete and I still don't know much about ACPI tables, but I can tell you that seeing devices in IORegistryExplorer doesn't mean you need them. In fact most of them were added for Windows so they can go.

 

Intel puts two SATA devices in chipsets but OSX supports the first one only. This may change any time soon, but for now... the second one (0x001F0006) can go. Names don't matter much. What I do is to use is: grep -re devicename . in /System/Library/Extensions If you see it being used in one of the kexts, then don't rename it. Otherwise I am using the name used in the ioreg dump.

 

For SATA everything but the address can go. The rest can be compared with a real Mac, and yes it is pretty much trial and error when you don't know what you are doing, and that was why I put that credit line in there... since I still don't know jack about ACPI tables :)

Thank you Samantha, I was able to save 15KB by removing unnecessary devices. Just in case people may wonder, I removed second Sata, G-Sensor, a few hard coded buttons etc. I'll try to advance it later.

 

I think from now on, what I really need is a lightweight, custom bootloader which will have the following features:

 

- MacBookPro5,5 is the default and only mac model.

- All graphics injectors are removed as I am using a DSDT fix for 9600M GT.

- DSDT and two SSDT tables are incorporated into the bootloader.

- A custom theme is embedded into the bootloader.

- Settings in my boot.plist are set to yes/no by default depending on the settings.

- Restart & Shutdown fixes. :(

 

Keep up the good work.

Thanks,

Link to comment
Share on other sites

Thank you gentlemen. Very kind of you.

 

And I got a few more tips so here is V1.1 (see attachments). Much smaller. Much cleaner. Much more fun.

 

You still need ssdt_pr.dsl and ssdt_usb.dsl from post #1. Simply drag the uncompressed file into iASL me (a neat little but very handy app) to get a 3070 byte small copy of dsdt.aml.

 

There is room for at least another 10% off but let's go use this for a while first.

 

Notes: People using Chameleon should renamed ssdt_pr.aml and ssdt_usb.aml to ssdt-n.aml so that it can load the files, because you do need these files!

dsdt.dsl.zip

Link to comment
Share on other sites

Hi :)

I'm planning to change my actual PC's configuration (see my signature) and I'm thinking to buy an Asus P8P67-M PRO like yours so I'll follow you.

I see that you started to mod ACPI's tables.

I'm now using Chameleon and I'll use it also with my new configuration because I don't have knowledge to use Revolution.

To use SSDT tables that you create I only to rename it to SSDT.aml, SSDT-1.aml, SSDT-2.aml, (...), right?

I also see that your CPU have 8 threads, while mine (i5-2500) have only 4.

So I've to modify ssdt_pr.aml, right?

Thanks in advance.

 

Cheers ;)

 

Simone

Link to comment
Share on other sites

Hi ;)

I'm planning to change my actual PC's configuration (see my signature) and I'm thinking to buy an Asus P8P67-M PRO like yours so I'll follow you.

Cool. And you're not the first as this is a serious good board for little money.

 

I see that you started to mod ACPI's tables. I'm now using Chameleon and I'll use it also with my new configuration because I don't have knowledge to use Revolution.

Good news. We will soon have a much better (read: easier) solution for this board. Sort of plug-and-play.

 

To use SSDT tables that you create I only to rename it to SSDT.aml, SSDT-1.aml, SSDT-2.aml, (...), right?

That's the easiest option. A little more complex one is to add the required lines back into the DSDT.dsl

 

I also see that your CPU have 8 threads, while mine (i5-2500) have only 4. So I've to modify ssdt_pr.aml, right? Thanks in advance.

You basically remove everything related to CPU4-CPU7 in both dsdt.dsl and ssdt_pr.dsl and of course fix the CPU frequencies in the PSS table.

 

Good luck with your hack. Let me know when I can be of assistance :P

Link to comment
Share on other sites

Cool. And you're not the first as this is a serious good board for little money.

:P

 

Good news. We will soon have a much better (read: easier) solution for this board. Sort of plug-and-play.

I know that you'll be a good teacher.

Some anticipation?

 

That's the easiest option. A little more complex one is to add the required lines back into the DSDT.dsl

I prefer to use SSDT tables instead of a big DSDT.

 

You basically remove everything related to CPU4-CPU7 in both dsdt.dsl and ssdt_pr.dsl and of course fix the CPU frequencies in the PSS table.

Ok, thanks for the explanation.

 

Good luck with your hack. Let me know when I can be of assistance ;)

Thanks.

Link to comment
Share on other sites

Hi DutchHockeyPro,

 

I am lookiing to get P8P67-M board as well for my next hackintosh build. It looks like the lastest BIOS version for this montherboard is 0805, which is updated on April 1 according to Asus web. Are your .aml files compatible to version 0805 or do they require any changes.

 

Does your sound work flawlessly?

Does your video card HD 6850 work out of box? Did you need to install mbp ATI 68** ktexts from 10.6.6 update?

 

Thank you.

Link to comment
Share on other sites

Hi DutchHockeyPro,

 

I am lookiing to get P8P67-M board as well for my next hackintosh build.

I had to check this on the Asus.com website, but this is not the same board. Very close, but not the same still is has a different audio chipset (codec) 887 versus 892 for the board I have. There's also a PCI slot which my board doesn't have.

 

It looks like the lastest BIOS version for this montherboard is 0805, which is updated on April 1 according to Asus web. Are your .aml files compatible to version 0805 or do they require any changes.

A new BIOS doesn't necessarily mean that the ACPI changed, but since the board you are going for has a PCI slot, which requires an IRQ setup for it, I would say no. Not 100% the same, but most likely just an easy change.

 

Does your sound work flawlessly?

Oh absolutely. Can't life without my music.

 

Does your video card HD 6850 work out of box? Did you need to install mbp ATI 68** ktexts from 10.6.6 update?

No. Didn't work out of the box. Had to copy the ATI kexts from the MBP 8 series upgrade to 10.6.7 Works great but when I boot in safe mode, which is when boot loaders skip the GPU drivers, I only have a white background (plus mouse pointer). There are two, possibly three, solutions I can think of. The first one being a simple change in the Info.plist where you replace the OSBundleRequired property "Safe Boot" with "Root". The second one would involve a change in the boot loader itself. A third unknown solution might be something I'm not aware of yet.

 

I hope this helps.

 

p.s. I have attached the Info.plist (courtesy of dgsga) we are using in FakeSMC.kext This plist also takes care of audio for our P8P67-M PRO board and inject the Intel Series6 chipset (but you also need AppleAHCIPort.kext version 2.1.6) so that we don't need any other kext but NullCPUPowerManagement.kext

 

Please note that we do not inject device-properties from any _DSM methods in our DSDT, because that slows down the boot process, but our boot loader (RevoBoot) does this job for us (we just supply it what we want to inject).

huronplist.zip

Link to comment
Share on other sites

1.) This work was done by me and for people using RevoBoot, but you are free to use it... under the condition that when you use my work, and change something that other people (including me) might want to know about, that you report about your change(s) here. Thank you.

If that is what you want, then gplv3-127x51.png is for you.

Link to comment
Share on other sites

If that is what you want, then gplv3-127x51.png is for you.

In a perfect world yes. Nothing is perfect however.

 

On a side note. I found some glitches in my work (sorry still learning) and thus I need to update the files once more. Hope to have it done in no time.

Link to comment
Share on other sites

Can you upload the 2011 MBP kexts that you need for this method? Namely AppleLPC, SMBusController, and AppleAHCIPort?

You need to visit apple.com and get the DMG from there. No upload/attachments of Apple's copyright material from me.

 

I wanted to get native speedstep working for my ASUS P8P67.

So do we. Doesn't work just yet. We're still trying to figure out what we need to change.

 

On a side note: I am planning to attach the new and improved ACPI table (files) files later today.

Link to comment
Share on other sites

Hi DHP :)

I post here a suggestion.

With mozodojo's Chameleon we can enable native power management by adding two options on c.a.b.p.

Using a proper mac model identifier (MacBook Pro early 2011?) maybe we can get speedstep working.

I know that you are using Revolution bootloader so I'll test this method when I'll have my hack functioning :)

 

Cheers

Link to comment
Share on other sites

Hi DHP :ninja:

I post here a suggestion.

With mozodojo's Chameleon we can enable native power management by adding two options on c.a.b.p.

Using a proper mac model identifier (MacBook Pro early 2011?) maybe we can get speedstep working.

I know that you are using Revolution bootloader so I'll test this method when I'll have my hack functioning ;)

 

Cheers

 

 

Chameleon RC5 does not support Sandy Bridge yet. The only widely available bootloader that does is AnVal. ^Andy^ created a merged branch of AnVal and Kabyl's ATI RC5, but enabling C/P states is still not automatic. So, we are waiting for AnVal or Chameleon/Mozodojo to add automatic P/C state generation for the latest generation still.

 

I am attempting to manually add my own P/C states via DSDT or SSDT, but I still can't actually test native power management until I get the three kexts I requested of DHP.

 

I assume that is the same approach that DHP is doing (or having revo do). It would be nice if she would post the kexts so I could work on it as well. My torrent is taking another 2 weeks! >_<

 

I don't believe there is any part of the Apple EULA that forbids people from uploading a kext. While it certainly does prohibit what we are all deriving from this website. From here, her unwillingness to share 8MBs of files seems to be a moral contradiction at best. Maybe I am missing something.

Link to comment
Share on other sites

Thanks for explanations maleorderbride :ninja:

What kexts are you "waiting" for?

 

AppleLPC, SMBusController, and AppleAHCIPort from MBP 2011 10.6.6 restore DVD or directly from a MBP 2011. Really, the LPC is the most important I think. I might find I need more as this progresses.

 

My semi-rant at DHP was a bit out of place as well. Too much drinking and not enough sleep last night! Thanks for doing this DHP and I can't wait to try out the finished product.

Link to comment
Share on other sites

Chameleon RC5 does not support Sandy Bridge yet. The only widely available bootloader that does is AnVal. ^Andy^ created a merged branch of AnVal and Kabyl's ATI RC5, but enabling C/P states is still not automatic. So, we are waiting for AnVal or Chameleon/Mozodojo to add automatic P/C state generation for the latest generation still.

RevoBoot is 'widely available' and is currently the only, really, boot loader with real Sandy Bridge support. There's no need for any other boot loader, except for people who want a GUI to select a target drive. Which is not part of my mission, neither is C/P/T -state support. Can be done in the ACPI tables and that is what I use. Either use RevoBoot (for now) or wait.

 

I am attempting to manually add my own P/C states via DSDT or SSDT, but I still can't actually test native power management until I get the three kexts I requested of DHP.

There are different ways of obtaining the _PSS object data.

 

1.) Boot with RevoBoot with the PATCH_ACPI_TABLE_DATA directive set to 0 and to get them with IORegistryExplorer, which as you know is freely available from Apple's (get Xcode).

 

2.) Use any kind of Linux flavor to boot with and extract the ACPI tables with acpidump.

 

I assume that is the same approach that DHP is doing (or having revo do). It would be nice if she would post the kexts so I could work on it as well. My torrent is taking another 2 weeks! >_<

Please. Do not talk about torrents in threads where I work on stuff or I will be forced to quit.

 

I don't believe there is any part of the Apple EULA that forbids people from uploading a kext. While it certainly does prohibit what we are all deriving from this website. From here, her unwillingness to share 8MBs of files seems to be a moral contradiction at best. Maybe I am missing something.

Here's another thing I will not do; Write installation guides. I also will not share information that I promised not to share (think NDA's here).

 

Please be grateful with the little things I do around here, because that is everything you ever get to see from me.

Link to comment
Share on other sites

RevoBoot is 'widely available' and is currently the only, really, boot loader with real Sandy Bridge support. There's no need for any other boot loader, except for people who want a GUI to select a target drive. Which is not part of my mission, neither is C/P/T -state support. Can be done in the ACPI tables and that is what I use. Either use RevoBoot (for now) or wait.

I would like to try to use RevoBoot but is too much complicated for my knowledge.

If in the future RevoBoot will be more "approachable" for me I'll try it for sure :)

For the moment I'm compelled to use Chameleon.

 

Thanks for what are you doing here DHP.

 

Cheers

Link to comment
Share on other sites

 Share

×
×
  • Create New...