Jump to content

[GUIDE]: The MacBookPro18 Project


valv
 Share

499 posts in this topic

Recommended Posts

Hi there,

As promised, this here is what I've accomplished to get a vanilla Snow Leopard installation flawlessly working on my HDX18t 1200CTO.

 

First,

things working so far:

+ Graphics: (DSDT)

+ Sound: (VoodooHDA)

+ Keyboard/Trackpad: (VoodooPS2)

+ Speed-Step: (SSDTs)

+ Wifi: (Usb)

+ Ahci: (Legacy Kext)

+ Sleep/Wake: (DSDT)

+ Firewire: (DSDT) - not tested though

+ Sudden Motion Sensor: (DSDT) - virtualized

+ Ambient Light Sensor: (DSDT) - virtualized

+ Battery: (VoodooBattery)

+ Network: (DSDT)

+ everything I couldn't remember by now

 

Things not working yet:

+ Integrated Wifi 5100

+ Infrared controller

+ Fingerprint Reader

+ Integrated Card-reader

 

Prerequisites

  1. An already in place installation
  2. One free partition for your Vanilla Snow Leopard Installation
  3. An Image of Vanilla Snow Leopard install DVD
  4. Get a copy of UInstaller from pcwiz web site (we'll get to this later on)

btw, this section will be later replaced with an appropriate way to setup directly from DVD

 

Ready?

let's get started then

 

Kernel Extensions

 

Next, download those kexts from here and put them on the same folder (I call mine SnowXT, and put it on Desktop)

 

fakesmc.kext.zipCredits: Netkas & Anv

 

VoodooBattery.kext.zipCredits: SuperHai

 

VoodooPS2Controller.kext.zipCredits: VoodooTeam

 

AppleACPIPS2Nub.kext.zipCredits: VoodooTeam

 

VoodooHDA.zipCredits: VoodooTeam & slice

 

LegacyHdx18.kext.zip

 

One's all kexts uncompressed to the same folder, we move to the real work

Link to comment
Share on other sites

DSDT Extraction

 

The most important part of ACPI hacking is to edit your own Tables. DO NOT use one's Tables (or originals from mac) just because they worked fine on another machine. this could harm yours. By the way you cannot held me for responsible if those hacks am posting here break ur machine. Be concious what u'r editing and ask if u don't understand (it's not a shame, we all learning ;) ).

 

That's said, let's get our own ACPI Tables dumped.

You can accomplish this in three ways using:

 

The Linux Geeky Way:

(if u don't have one installed, use an ubuntu live-cd or whatever)

Next I'll suppose u chosen Ubuntu.

 

One's on linux, simply type this on terminal

sudo -s

apt-get install acpidump

 

Go uncompress the archive, and set it up (double click and follow the installation wizard).

When u'r done, on the packages manager search for "iasl" and install it

apt-get install iasl.

 

When done, launch a terminal and type this

dmesg | grep ACPI

 

u will get all your ACPI Tables adresses (we need these as we'll be dumping the tables from).

For now, interesting tables are those: SSDT(CpuPm, Cpu0IST, CpuApIST, Cpu0CST & CpuApCST), DSDT, FACP

Always on terminal, locate the first & second hex values on each line (where u see those tables) and type this

acpidump -a 0xFirstValue -l 0xSecondValue > CpuPm

acpidump -a 0xFirstValue -l 0xSecondValue > Cpu0IST

acpidump -a 0xFirstValue -l 0xSecondValue > CpuApIST

...

 

this gives u one of your SSDT files, but in bin format (in home folder). So let's decompile these:

iasl -d CpuPm

iasl -d Cpu0IST

iasl -d CpuApIST

...

 

Do this for all the tables u wishing to extract and copy them to usb/partition or elsewhere u can access 'em from OsX after reboot.

 

The Mont Everest:

Go get Everest Ultimate (unregistered) edition and install/unzip on windows

Launch it and click on the status bar (rights). from there u will get the possibility to dump your Tables

post-498884-1277376610_thumb.pngpost-498884-1277376881_thumb.png

 

The Consolation Winner:

Download iasl build for windows

Open a terminal, and type: iasl -g Now u have a file called DSDT_XXX-XX.dsl and few .BIN files.

u'll only need the .dsl one: this is your decompiled DSDT file u'll be later editing. keep it in a safe place till then.

 

The ACPI-Boot Loader

 

Go get it from this topic. Better to stick with latest version.

 

my boot.plist

post-498884-1275756807_thumb.png

these keys are available only when using the above bootloader.

Edit: pay attention to the value of SMBIOSdefaults key. This have to be changed to Yes.

Only then u can get rid of CPUInjector.kext from the above list. After reboot, your processor's model will be handled directly by the boot-loader.

 

my smbios.plist

post-498884-1272832663_thumb.png

Pay attention to the SMexternalclock key. U can always keep 266 as value (280 is purely for OC'ing intentions :()

hope this helps

Link to comment
Share on other sites

DSDT Fix

 

Ok, now that we all have DSDT extracted, go get this nifty editor from www.osx86.es and set it up. when done open your DSDT file with it, and let's start editing it.

 

As is this file would compile successfully, but to get rid of every warning/remark, we have to fix our file like this:

 

1) Type _T_0 on the search field and T_0 on the Replace field like showing here,

post-498884-1272800989_thumb.png

then click on Replace

 

2) Do a search for the string ThermalZone, and add this at the end of the _HOT Method

Return (Zero)

u'll end up with this

ThermalZone (TZ01)

{

Method (_HOT, 0, Serialized)

{

If (LEqual (\_SB.PCI0.LPCB.EC.QUAD, One))

{

Return (0x0E94)

}

Else

{

If (LEqual (TJMX, 0x64))

{

Return (0x0EC6)

}

}

 

If (LEqual (TJMX, 0x55))

{

Return (0x0E30)

}

 

Return (Zero)

}

 

Method (_CRT, 0, Serialized)

Now do the same for the _CRT and the _PSV Methods.

 

4) Next find Device (PRID) located into Device (SAT0) & Device (SAT1) Sections and add the same line at the end of the _GTM Method.

 

5) Below the PRID Device, u'll find these devices (P_D0), (P_D1), (SECD), (S_D0) and (S_D1).

Do locate their _GTM or _GTF Method and do the same as above.

 

6) For each line 806 & 820,

replace Name (BCL1, Package (0x0D)

with Name (BCL1, Package (0x0B)

 

7) the last one is special, delete the line in red to get rid of the last warning

...
[color="#708090"]line-10038[/color]                Store (Zero, Index (DerefOf (Index (Local0, 0x02)), Local2))
[color="#708090"]line-10039[/color]                Sleep (0x96)
[color="#708090"]line-10040[/color]                Release (^^PCI0.LPC.EC0.MUT1)
[color="#708090"]line-10041[/color][color="#FF0000"]                Return (Local0)[/color]
[color="#708090"]line-10042[/color]                Store (Package (0x02)
[color="#708090"]line-10043[/color]                    {
...

I know this seems complicated at first sight, but I can help u fix yours if u cannot find out by your self.

Link to comment
Share on other sites

DSDT Hacks

 

 

DTGP

 

this one is one of the most important as it'll be needed to get later hacks (usb, sleep, sound, graphics..) working.

First search for the string _S0, something like this will show up on the editor

    Name (_S0, Package (0x04)
   {
       Zero, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S3, Package (0x04)
   {
...

then copy the code in green and paste it straight above the _S0 section and/or after the _WAK Method, u'll end up with something like this

[color="#006400"][b]    Method (DTGP, 5, NotSerialized)
   {
       If (LEqual (Arg0, Buffer (0x10)
               {
                   /* 0000 */    0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, 
                   /* 0008 */    0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
               }))
       {
           If (LEqual (Arg1, One))
           {
               If (LEqual (Arg2, Zero))
               {
                   Store (Buffer (One)
                       {
                           0x03
                       }, Arg4)
                   Return (One)
               }

               If (LEqual (Arg2, One))
               {
                   Return (One)
               }
           }
       }

       Store (Buffer (One)
           {
               0x00
           }, Arg4)
       Return (Zero)
   }[/b][/color]

   Name (_S0, Package (0x04)
   {
       Zero, 
       Zero, 
       Zero, 
       Zero
   })
   Name (_S3, Package (0x04)
   {
...

 

HPET

 

Now we'll be locating the HPET section using the editor capability as shown below

post-498884-1272801471_thumb.png

we need to add two IRQs to the ones already there. It has to end up like below

                Device (HPET)
               {
                   Name (_HID, EisaId ("PNP0103"))
                   Name (BUF0, ResourceTemplate ()
                   {
                       IRQNoFlags ()
                           {0}
                       IRQNoFlags ()
                           {8}
[color="#006400"][b]                      IRQNoFlags ()
                           {11}
                       IRQNoFlags ()
                           {15}[/b][/color]  
                       Memory32Fixed (ReadOnly,
                           0xFED00000,         // Address Base
                           0x00000400,         // Address Length
                           _Y10)
                   })

 

RTC - Snow CMOS Fix

 

Locate the RTC device, then modify BUF1 into BUF0. This way u don't have to mess with IRQs.

               Device (RTC)
               {
                   Name (_HID, EisaId ("PNP0B00"))
                   Name (BUF0, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x01,               // Alignment
                           0x08,               // Length
                           )
                   })
                   Name (BUF1, ResourceTemplate ()
                   {
                       IO (Decode16,
                           0x0070,             // Range Minimum
                           0x0070,             // Range Maximum
                           0x01,               // Alignment
                           0x08,               // Length
                           )
                       IRQNoFlags ()
                           {8}
                   })
                   Method (_CRS, 0, Serialized)
                   {
                       If (LEqual (HPTS, One))
                       {
                           Return (BUF0)
                       }
                       Else
                       {
                           Return ([color="#006400"][b]BUF0[/b][/color])
                       }
                   }
               }

 

PIC/IPIC

 

After locating the PIC Device, remove these lines (from the end of that section)

[color="#006400"][b]                        IRQNoFlags ()
                           {2}[/b][/color]

 

TIMR

 

On this one, we also remove IRQ

[b][color="#006400"]                        IRQNoFlags ()
                           {0}[/color][/b]

 

USB, aka. Sleep

 

Into the Scope (_GPE) edit Method _L03, _L04 and _L0C by adding Notify (\_SB.PWRB, 0x02) to each, like this

        Method (_L03, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC1, 0x02)
           [color="#006400"][b]Notify (\_SB.PWRB, 0x02)[/b][/color]
       }

       Method (_L04, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC2, 0x02)
           [color="#006400"][b]Notify (\_SB.PWRB, 0x02)[/b][/color]
       }

       Method (_L0C, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.UHC3, 0x02)
           [color="#006400"][b]Notify (\_SB.PWRB, 0x02)[/b][/color]
       }

Now we move on to UHC devices. there we inject device-ids to make the system think we use compatible hardware

            Device (UHC0)
           {
               Name (_ADR, 0x001D0000)
[b][color="#006400"]                Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x02)
                       {
                           "device-id", 
                           Buffer (0x04)
                           {
                               [color="#0000FF"]0x34, 0x3A, 0x00, 0x00[/color]
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)[/color][/b]
               }
           }

Done? not yet. we have to do the same thing for the remaining UHC devices.

Pay attention here, for devices UHC1 & UHC2 the _DSM method should be added into the end of the device sections and before the last bracket.

Thus, we keep the green code above (_DSM method) and change the blue string with these:

  • UHC1 --> 0x35, 0x3A, 0x00, 0x00
  • UHC2 --> 0x36, 0x3A, 0x00, 0x00
  • UHC3 --> 0x37, 0x3A, 0x00, 0x00
  • UHC4 --> 0x38, 0x3A, 0x00, 0x00
  • UHC5 --> 0x39, 0x3A, 0x00, 0x00

The last one is the trickiest (thanks to hdx18 for making me remember this one). we have to change the Address of that device, thus the device-id and the Address concord. For this, we modify the string in red

Device (UHC5)
{
Name (_ADR, [color="#FF0000"]0x001A0002[/color])
Method (_DSM, 4, NotSerialized)
{

with this one 0x001D0003

Next comes the turn of EHC devices. We mod those two in a slightly different way.

For EHC1 we'll be adding the code below, at the end of the device and before the last bracket

                [color="#006400"][b]Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x11)
                       {
                           "device-id", 
                           Buffer (0x04)
                           {
                               [color="#0000FF"]0x36, 0x28, 0x00, 0x00[/color]
                           }, 

                           "AAPL,clock-id", 
                           Buffer (One)
                           {
                               0x0A
                           }, 

                           "built-in", 
                           Buffer (One)
                           {
                               0x00
                           }, 

                           "device_type", 
                           Buffer (0x05)
                           {
                               "EHCI"
                           }, 

                           "AAPL,current-available", 
                           0x04B0, 
                           "AAPL,current-extra", 
                           0x02BC, 
                           "AAPL,current-in-sleep", 
                           0x03E8, 
                           "AAPL,device-internal", 
                           0x10, 
                           Buffer (One)
                           {
                               0x00
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }[/color][/b]

For EHC2, we place the same code in green (from above) at its end, but we modify the string in blue to read 0x3A, 0x28, 0x00, 0x00

 

 

Firewire

 

Now that we understood how our DSDT is structured, we go back into Scope (_GPE), and right after the _L0C method, we add the code below

        [color="#006400"][b]Method (_L1A, 0, NotSerialized)
       {
           Notify (\_SB.PCI0.EXP5.J380, Zero)
           Notify (\_SB.PWRB, 0x02)
       }[/color][/b]

After this, we jump into Device (J380) and add the code in green right after the address line, like this

                Device (J380)
               {
                   Name (_ADR, Zero)
                   [color="#006400"][b]Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x0A)
                           {
                               "fwhub", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x00
                               }, 

                               "AAPL,slot-name", 
                               Buffer (0x0F)
                               {
                                   "PCI Slot@6,0,0"
                               }, 

                               "built-in", 
                               Buffer (One)
                               {
                                   0x01
                               }, 

                               "device_type", 
                               Buffer (0x13)
                               {
                                   "IEEE 1394 Open HCI"
                               }, 

                               "name", 
                               Buffer (0x11)
                               {
                                   "JMicron FireWire"
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }[/color][/b]

                   OperationRegion (PCFG, PCI_Config, Zero, 0xFF)

 

Ethernet

 

This hack can help us get rid of an other kext. Reload your DSDTable and search for Device (EXP4), and straight above this one there should be the famous Ethernet card section. So we inject this code at its end, like this

                   Method (_PSW, 1, NotSerialized)
                   {
                       If (LGreaterEqual (MCHD, 0x04))
                       {
                           Store (Arg0, LAWK)
                       }
                   }

[color="#006400"][b]                   Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x08)
                           {
                               "AAPL,slot-name", 
                               Buffer (0x0F)
                               {
                                   "PCI Slot@3,0,0"
                               }, 

                               "built-in", 
                               Buffer (One)
                               {
                                   0x01
                               }, 

                               "device_type", 
                               Buffer (0x09)
                               {
                                   "Ethernet"
                               }, 

                               "name", 
                               Buffer (0x24)
                               {
                                   "Realtek RTL8111/8168B PCI-E Gigabit"
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }
[/b][/color]                }
           }

           Device (EXP4)
           {

Take care that the device we injecting to is named Device (PXSX). And since there is another device with the same name (more probably it is the wi-fi card), don't do a search for that one, instead search for Device (EXP4) like we said above. This way u are sure it is the good one to edit. If for any reason, your DSDTable is not the same as mine, u can differentiate those two devices by that string in blue

                Device (PXSX)
               {
                   Name (_ADR, Zero)
                   OperationRegion ([color="#0000FF"][b]RTLD[/b][/color], PCI_Config, Zero, 0x02)
                   Field (PXCS, AnyAcc, NoLock, WriteAsZeros)

seems to reference a "Realtek" device. If we have not the same LAN cards look for something there that resembles to the name of the manufacturer of your card. Remove the r1000.kext or whatever it is named and reboot. To be sure it worked (when u cannot test connection), go to the "System Profiler" and tick on "PCI Cards". Once there, u should find something like the picture below

post-498884-1273796233_thumb.png

And now up to fine tuning. bring "System Preferences" forth, go to "Network", select your Ethernet card and push "Advanced" (bottom rights). Now click on last tab "Ethernet". Once there, change Configuration to "manually", then change Speed to 1000baseT and Duplex to full-duplex keeping the MTU on Standard (1500). This way you gain about additional 30Mbs.

post-498884-1273834026_thumb.png

It still depends on the router speed though.

 

 

Lid-Sleep

 

Ok, this one here, would help us go further on our way to bed..

It is as easy as finding Device LID0 onto the DSDTable, and add the line in green like below

        Device (LID0)
       {
           Name (_HID, EisaId ("PNP0C0D"))
           Name (LSTS, Zero)
           Method (_LID, 0, NotSerialized)
           {
               If (ECOK)
               {
                   If (LEqual (^^PCI0.LPC.EC0.ECLS, One))
                   {
                       Store (Zero, LSTS)
                       [color="#006400"][b]Notify (SLPB, 0x80)[/b][/color]
                   }
                   Else
                   {
                       Store (One, LSTS)
                   }

                   If (IGDS)
                   {
                       Store (LSTS, LIDS)
                       Store (LSTS, ^^PCI0.OVGA.CLID)
                   }

                   Return (LSTS)
               }
               Else
               {
                   If (IGDS)
                   {
                       Store (LIDS, ^^PCI0.OVGA.CLID)
                   }

                   Return (LIDS)
               }
           }
       }

 

ThermalZone

 

Before we begin, go to the bios menu and verify that the option related to fan is "always on". It is always better safe than sorry.

Back into our DSDTable. Once positioned on the section labeled ThermalZone (TZ01), we remove those lines in red

        ThermalZone (TZ01)
       {
           Method (_HOT, 0, Serialized)
           {
[color="#FF0000"][b]                If (LGreaterEqual (OSYS, 0x07D6))
               {[/b][/color]
                   If (LEqual (\_SB.PCI0.LPC.EC0.QUAD, One))
                   {
                       Return (0x0E94)
                   }
                   Else
                   {
                       If (LEqual (TJMX, 0x64))
                       {
                           Return (0x0EC6)
                       }
                   }

                   If (LEqual (TJMX, 0x55))
                   {
                       Return (0x0E30)
                   }
               [b][color="#FF0000"]}[/color][/b]
           Return (Zero)
           }
           Method (_CRT, 0, Serialized)
           {
[b][color="#FF0000"]                If (LLess (OSYS, 0x07D6))
               {[/color][/b]
                   If (LEqual (\_SB.PCI0.LPC.EC0.QUAD, One))
                   {
                       Return (0x0E94)
                   }
                   Else
                   {
                       If (LEqual (TJMX, 0x64))
                       {
                           Return (0x0EC6)
                       }
                   }

                   If (LEqual (TJMX, 0x55))
                   {
                       Return (0x0E30)
                   }
               [b][color="#FF0000"]}[/color][/b]
              Return (Zero)
           }

           Method (_TMP, 0, NotSerialized)
           ...

 

Win 2006

 

Next we make a jump into Device (PCI0) section. On the _INI method we remove all the lines in red

           ...
           Name (TPOS, Zero)
           Method (_INI, 0, NotSerialized)
           {
[b][color="#FF0000"]                If (CondRefOf (_OSI, Local0))
               {
                   If (_OSI ("Linux"))
                   {
                       Store (0x03E8, OSYS)
                       Store (0x80, TPOS)
                   }
                   Else
                   {[/color][/b]
                       Store (0x07D1, OSYS)
[b][color="#FF0000"]                        Store (0x08, TPOS)
                   }

                   If (_OSI ("Windows 2001 SP2"))
                   {
                       Store (0x07D2, OSYS)
                       Store (0x11, TPOS)
                   }

                   If (_OSI ("Windows 2006"))
                   {
                       Store (0x07D6, OSYS)
[/color][/b]                        Store (0x40, TPOS)
                   }
[b][color="#FF0000"]
                   If (_OSI ("Windows 2009"))
                   {
                       Store (0x07D9, OSYS)
                   }
               }
               Else
               {
                   Store (0x07D0, OSYS)
                   Store (0x04, TPOS)
               }
           }[/color][/b]

           OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
           Field (HBUS, DWordAcc, NoLock, Preserve)
           {
           ...

Our code should now look like this

           ...
           Name (TPOS, Zero)
           Method (_INI, 0, NotSerialized)
           {
               Store (0x07D[b][color="#FF0000"]1[/color][/b], OSYS)
               Store (0x40, TPOS)
           }

           OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
           Field (HBUS, DWordAcc, NoLock, Preserve)
           {
           ...

and we continue by altering the "1" (in red) with a "9".

 

 

Power Adapter Support

 

Sometimes when we take the power adapter off, ugly things may happen. We are going to remediate to that issue by making our Power adapters natively supported. Can we do this ? How ?

This one is one of the easiest hacks ever. Simply load your DSDTable and search for Device (ACAD). Once there, add those lines in green

       Device (ACAD)
       {
           Name (_HID, "ACPI0003")
           [b][color="#006400"]Name (_PRW, Package (0x02)
           {
               0x18, 
               0x03
           })[/color][/b]

That's it.

 

 

Low Pin Count - ala Apple

 

Thankfully our notebooks have the LPC device that plays an crucial role in speed-stepping (mainly C-States). But oob, it is useless, because the device-id detected tells the system that this device isn't compatible, even though it could do the job. This is just a matter of ID. So let's try injecting a fake device-id into our DSDTable and see what happens. For this we search for that device (Device (LPC)). Once located, we add the _DSM method ("Device Specific Method" if u wanted to know) into the section of that device. With the help of that method, we can inject the fake ID. Pay attention though that not any ID would work. For that u'll need an ID already used by apple on one of its machines. It is better to used the closest ID to the one u have though. Mine is 2919 from intel, and looking at a machine that comes with an ICH9R (used by apple already), I can see the ID of the LPC device being 2916. So I'll be using that ID for my notebook. I add the lines in green Just like shown below

            Device (LPC)
           {
               Name (_ADR, 0x001F0000)
[b][color="#006400"]                Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x02)
                       {
                           "device-id", 
                           Buffer (0x04)
                           {
                               0x16, 0x29, 0x00, 0x00
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }
[/color][/b]
               OperationRegion (PRR0, PCI_Config, 0x60, 0x04)
               Field (PRR0, AnyAcc, NoLock, Preserve)
               {

Just to be sure the hack did work for me, I go with IORegEx, select the LPC device, and on the right pane, I look for the device-id and the compatible values there.

 

 

SMBus

 

Find the Device (SBUS) section, or by searching this address 0x001F0003, then add a new _DSM method at the beginning and straight after the _ADR name, like below:

            Device (SBUS)
           {
               Name (_ADR, 0x001F0003)
[color="#006400"][b]                Method (_DSM, 4, NotSerialized)
               {
                   Store (Package (0x08)
                       {
                           "name", 
                           Buffer (0x0D)
                           {
                               "pci8086,3a30"
                           }, 

                           "device-id", 
                           Buffer (0x04)
                           {
                               0x30, 0x3A, 0x00, 0x00
                           }, 

                           "subsystem-id", 
                           Buffer (0x04)
                           {
                               0x70, 0x72, 0x00, 0x00
                           }, 

                           "subsystem-vendor-id", 
                           Buffer (0x04)
                           {
                               0x86, 0x80, 0x00, 0x00
                           }
                       }, Local0)
                   DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                   Return (Local0)
               }[/b][/color]

               OperationRegion (SMBP, PCI_Config, 0x20, 0xC0)
               ...

 

 

nVidia GeForce 9600M GT

 

Goto Device (VGA) and straight above Device (CRT) add this Method

                    Method (_DOD, 0, NotSerialized)
                   {
                       Return (Package (0x03)
                       {
                           0x00010100, 
                           0x00010118, 
                           0x00010121
                       })
                   }

[color="#006400"][b]                    Method (_DSM, 4, NotSerialized)
                   {
                       Store (Package (0x24)
                           {
                               "AAPL,HasPanel", 
                               Buffer (0x04)
                               {
                                   0x01, 0x00, 0x00, 0x00
                               }, 

                               "AAPL,Backlight-control", 
                               Buffer (0x04)
                               {
                                   0xEE, 0x01, 0x00, 0x00
                               }, 

                               "AAPL01,DualLink", 
                               Buffer (0x04)
                               {
                                   0x01, 0x00, 0x00, 0x00
                               }, 

                               "AAPL01,EDID", 
                               Buffer (0x80)
                               {
                                   /* 0000 */    0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 
                                   /* 0008 */    0x4C, 0xA3, 0x4A, 0x31, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0010 */    0x00, 0x12, 0x01, 0x03, 0x80, 0x29, 0x17, 0x78, 
                                   /* 0018 */    0x0A, 0x87, 0xF5, 0x94, 0x57, 0x4F, 0x8C, 0x27, 
                                   /* 0020 */    0x27, 0x50, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 
                                   /* 0028 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
                                   /* 0030 */    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x79, 0x3A, 
                                   /* 0038 */    0x80, 0x20, 0x71, 0x38, 0x32, 0x40, 0x30, 0x20, 
                                   /* 0040 */    0x26, 0x00, 0x98, 0xE6, 0x10, 0x00, 0x00, 0x19, 
                                   /* 0048 */    0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0050 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xD2, 0x02, 
                                   /* 0058 */    0x32, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x53, 
                                   /* 0060 */    0x41, 0x4D, 0x53, 0x55, 0x4E, 0x47, 0x0A, 0x20, 
                                   /* 0068 */    0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0xFE, 
                                   /* 0070 */    0x00, 0x31, 0x38, 0x34, 0x48, 0x54, 0x30, 0x33, 
                                   /* 0078 */    0x2D, 0x30, 0x30, 0x31, 0x0A, 0x20, 0x00, 0xD2
                               }, 

                               "AAPL,slot-name", 
                               Buffer (0x0F)
                               {
                                   "PCI Slot@1,0,0"
                               }, 

                               "@0,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@0,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@0,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-A"
                               }, 

                               "@1,compatible", 
                               Buffer (0x0B)
                               {
                                   "NVDA,NVMac"
                               }, 

                               "@1,device_type", 
                               Buffer (0x08)
                               {
                                   "display"
                               }, 

                               "@1,name", 
                               Buffer (0x0F)
                               {
                                   "NVDA,Display-B"
                               }, 

                               "NVCAP", 
                               Buffer (0x14)
                               {
                                   /* 0000 */    0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
                                   /* 0008 */    0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0B, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "VRAM,totalsize", 
                               Buffer (0x04)
                               {
                                   0x00, 0x00, 0x00, 0x20
                               }, 

                               "NVPM", 
                               Buffer (0x1C)
                               {
                                   /* 0000 */    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0018 */    0x00, 0x00, 0x00, 0x00
                               }, 

                               "device_type", 
                               Buffer (0x0D)
                               {
                                   "NVDA,GeForce"
                               }, 

                               "model", 
                               Buffer (0x18)
                               {
                                   "nVidia GeForce 9600M GT"
                               }, 

                               "rom-revision", 
                               Buffer (0x26)
                               {
                                   "nVidia GeForce 9600M GT OpenGL Engine"
                               }, 

                               "reg", 
                               Buffer (0x78)
                               {
                                   /* 0000 */    0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0010 */    0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x02, 
                                   /* 0018 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0020 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
                                   /* 0028 */    0x14, 0x00, 0x01, 0x42, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0030 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0038 */    0x00, 0x00, 0x00, 0x10, 0x1C, 0x00, 0x01, 0x02, 
                                   /* 0040 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0048 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
                                   /* 0050 */    0x24, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0058 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0060 */    0x80, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x02, 
                                   /* 0068 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                                   /* 0070 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00
                               }
                           }, Local0)
                       DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                       Return (Local0)
                   }[/b][/color]

                   Device (CRT)
                   {
                       Name (_ADR, 0x0100)

When done, get rid of all the video injectors u 've been using till today. Reboot, and look what happens.

p.s.: Ensure u 're using same boot keys (video related) as mine.

 

more to come later :(

Link to comment
Share on other sites

Hi, I've got about the same computer as you: a HDX16 X16-1050ef.

I installed successfully SL using snow OSX 3.6. But, there is a but, the screen resolution was locked, no sound and the network was strange (I did have an ip address but I was unable to join any server).

 

Then I tried Leo Hazard but it ended with a kernel panic. I'm now trying Leo Hazard 10.6.2 with other drivers using the informations provided in your post.

Link to comment
Share on other sites

Hi, I've got about the same computer as you: a HDX16 X16-1050ef.

I installed successfully SL using snow OSX 3.6. But, there is a but, the screen resolution was locked, no sound and the network was strange (I did have an ip address but I was unable to join any server).

 

Then I tried Leo Hazard but it ended with a kernel panic. I'm now trying Leo Hazard 10.6.2 with other drivers using the informations provided in your post.

 

Maybe Now u can try a Vanilla setup. but first let us go step by step on this, as I don't want to talk about pre-built distributions found elsewhere (most have own topics, and even forums).

so be cool, this here is meant to people wishing to setup the closest vanilla os possible :) .

Link to comment
Share on other sites

Maybe Now u can try a Vanilla setup. but first let us go step by step on this, as I don't want to talk about pre-built distributions found elsewhere (most have own topics, and even forums).

so be cool, this here is meant to people wishing to setup the closest vanilla os possible ;) .

 

I really would like to do that. But I don't have enough time. I looked at the DSDT thing a little bit and didn't understood much :-/ Maybe I'll try when I'll be less busy. Keep on giving us precious information.

Link to comment
Share on other sites

Valv, Can this be done with the retail DVD?

 

My friend, this is exactly what we're accomplishing over here, but in the mean time I am going step-by-step to help people understand how I got it all working (hdd setup with image of vanilla dvd from a pre-installed leo).

Sure, as further as we go into this, we'll be making it all working from a vanilla dvd. watch out.

 

Greetz

Link to comment
Share on other sites

Yeah! I can't wait to see your DSDT and SSDT files!

I already made some modifications to my DSDT, but I'm not sure about Speedstepping...

It seems a bit complicated!

 

Thanks a lot!

Link to comment
Share on other sites

Hi valv,

thanks for this great topic.

As you suggested me i am replying here to hdx18 questions.

Talking about Battery, it still doesn't work properly here in my hdx18 machine and i am using the voodoobattery.kext here , as you suggested.

If you would be so nice to share your complete extra folder, it would be amazing. I really did everything i could to get it working properly without success and trying to see what's different between my and your extra folder might help me to understand the errors i am doing.

Thanks!

Mal

Link to comment
Share on other sites

Hi valv,

thanks for this great topic.

As you suggested me i am replying here to hdx18 questions.

Talking about Battery, it still doesn't work properly here in my hdx18 machine and i am using the voodoobattery.kext here , as you suggested.

If you would be so nice to share your complete extra folder, it would be amazing. I really did everything i could to get it working properly without success and trying to see what's different between my and your extra folder might help me to understand the errors i am doing.

Thanks!

Mal

Dear Mal,

this is really weird. try editing the AC Adapter into your DSDT like this

       Device (ACAD)
       {
           Name (_HID, "ACPI0003")
[color="#8B0000"]            Name (_PRW, Package (0x02)
           {
               0x18, 
               0x03
           })[/color]

don't rename your device though, unless you know what u're doing.

Link to comment
Share on other sites

Hi Valv,

 

First of all, thanks a lot for sharing your modifications...

 

I did everything you said, but I still get 1 warning and 2 remarks. I did it from scratch with an unmodified DSDT. Must I do something about it?

See compilation results:

 

 

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20091214 [Dec 16 2009]

Copyright © 2000 - 2009 Intel Corporation

Supports ACPI Specification Revision 4.0

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 806: Name (BCL1, Package (0x0D)

Remark 5048 - Initializer list shorter than declared package length ^

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 820: Name (BCL2, Package (0x0D)

Remark 5048 - Initializer list shorter than declared package length ^

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 9991: Store (Package (0x02)

Warning 1100 - Statement is unreachable ^

 

ASL Input: /Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl - 11443 lines, 405339 bytes, 5543 keywords

AML Output: /Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.aml - 47141 bytes, 981 named objects, 4562 executable opcodes

 

Compilation complete. 0 Errors, 1 Warnings, 2 Remarks, 40 Optimizations

Link to comment
Share on other sites

Hi Valv,

 

First of all, thanks a lot for sharing your modifications...

 

I did everything you said, but I still get 1 warning and 2 remarks. I did it from scratch with an unmodified DSDT. Must I do something about it?

See compilation results:

 

 

Intel ACPI Component Architecture

ASL Optimizing Compiler version 20091214 [Dec 16 2009]

Copyright © 2000 - 2009 Intel Corporation

Supports ACPI Specification Revision 4.0

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 806: Name (BCL1, Package (0x0D)

Remark 5048 - Initializer list shorter than declared package length ^

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 820: Name (BCL2, Package (0x0D)

Remark 5048 - Initializer list shorter than declared package length ^

 

/Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl 9991: Store (Package (0x02)

Warning 1100 - Statement is unreachable ^

 

ASL Input: /Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.dsl - 11443 lines, 405339 bytes, 5543 keywords

AML Output: /Users/MacOSX/Library/Application Support/EvOSoftware/DSDT/DSDTFiles/dsdt.aml - 47141 bytes, 981 named objects, 4562 executable opcodes

 

Compilation complete. 0 Errors, 1 Warnings, 2 Remarks, 40 Optimizations

EDIT: corrected and moved to third post

If u don't get it, or if it shows up more errors on compile, upload your file and I'll be correcting it for you.

Link to comment
Share on other sites

Ok, I managed to make 2 corrections:

Name (BCL1, Package (0x0B)

Name (BCL2, Package (0x0B)

So there are no more remarks after changing 0X0D for 0X0B in BCL1 and BCL2 names.

 

But 1 warning remains:

dsdt.dsl 9991: Store (Package (0x02)

Warning 1100 - Statement is unreachable ^

 

And I don't know what to do with it. I used DSDT file from the last BIOS for HDX18.

The only modifications I made are those mentioned by valv, and the corrections in BCL1 and BCL2.

 

Any idea?

 

 

 

I saw you sent the first corrections while I was writing about it! ;)

 

I upload my DSDT.dsl file.

 

Thanks!

 

PS: Excuse me if I make errors while I write. I'm way better in French! ;)

pas de problème, corrected

Link to comment
Share on other sites

Hi valv,

i changed it to this :

 

Device (ACAD)

{

Name (_HID, "ACPI0003")

Name (_PRW, Package (0x02)

{

0x18,

0x03

})

 

 

But i have the same behaviour... dunno how i could solve this.

Any clue?

Mal

 

 

Dear Mal,

this is really wired. try editing the AC Adapter into your DSDT like this

       Device (ADP1)
       {
           Name (_HID, "ACPI0003")
[color="#8B0000"]            Name (_PRW, Package (0x02)
           {
               0x18, 
               0x03
           })[/color]

don't rename your device though, unless you know what u're doing.

Link to comment
Share on other sites

Hi valv,

i changed it to this :

 

Device (ACAD)

{

Name (_HID, "ACPI0003")

Name (_PRW, Package (0x02)

{

0x18,

0x03

})

 

 

But i have the same behaviour... dunno how i could solve this.

Any clue?

Mal

ok, First off, make a backup of your chameleon boot file (dunno wich version you've been using)

next replace it with the one from the Anv's ACPI Loader topic (my sig). will look further into

 

Greetz

Link to comment
Share on other sites

Hi valv,

thanks for your reply.

2 questions :

 

1) do you have native speedstep ? If yes , why do you have dropssdt=no in your boot.plist ?

2) is your SMexternalclock=280 correct in your smbios.plist? Isn't it 266?

 

Thanks !

Mal

Link to comment
Share on other sites

First, Thank you so much , VALV

Your technic is cool.

Now my HDX is almost perfect for snow leopard.

 

 

Now it can sleep and wake. ( I removed Nullcpupowermanagement.kext)

The first time that it wake up. Bluetooth is working perfect.

But after that when it sleep and wake.

The bluetooth isn't working, and the wifi symbol ( on the top right) turn to red.

It must restart to make the bluetooth work.

 

Did you have this problem?

How to fix it?

 

Thank you, and sorry about my english. ;)

pepe

Link to comment
Share on other sites

Hi valv,

thanks for your reply.

2 questions :

 

1) do you have native speedstep ? If yes , why do you have dropssdt=no in your boot.plist ?

2) is your SMexternalclock=280 correct in your smbios.plist? Isn't it 266?

 

Thanks !

Mal

hi Mal,

to be short:

1) yes, speed-step is working fine.

regarding DropSSDT key, I think u misunderstanding how it works. In fact DropSSDT=No means u load these tables. It depends though, either u load 'em from Bios or from HDD. please play with these values a little, it'll help u understand. If u still confused, give feedback into the right topic.

2) It may seem like I was mistyping the external clock value, but I ensure this and many more will be cleared later on the guide :D

 

btw: why quote my post like that. no need for it guys. please think about people suffering to follow what we accomplish here :D .

Sorry, maybe u was trying to show me something :borg:

could u please edit your post . thanx

Greetz,

 

The first time that it wake up. Bluetooth is working perfect.

But after that when it sleep and wake.

The bluetooth isn't working, and the wifi symbol ( on the top right) turn to red.

It must restart to make the bluetooth work.

 

Did you have this problem?

How to fix it?

Sorry, I don't have Bluetooth actually (was planning to buy an usb dongle though). But don't worry I wrote this one on my ToDo list. we'll get to it soon.

 

Greetz,

Link to comment
Share on other sites

hi Mal,

to be short:

1) yes, speed-step is working fine.

regarding DropSSDT key, I think u misunderstanding how it works. In fact DropSSDT=No means u load these tables. It depends though, either u load 'em from Bios or from HDD. please play with these values a little, it'll help u understand. If u still confused, give feedback into the right topic.

2) It may seem like I was mistyping the external clock value, but I ensure this and many more will be cleared later on the guide :D

 

btw: why quote my post like that. no need for it guys. please think about people suffering to follow what we accomplish here. sorry for being harsh, maybe u was trying to show me something.

could u please edit your post. thanx

Greetz,

 

 

Sorry, I don't have Bluetooth actually (was planning to buy an usb dongle though). But don't worry I wrote this one on my ToDo list. we'll get to it soon.

 

Greetz,

 

Why you don't buy the internal bluetooth?

It'll be better.

http://www.impactcomputers.com/483113-001.html

maybe you can find it on ebay for cheaper.

 

Thank you

Link to comment
Share on other sites

Why you don't buy the internal bluetooth?

It'll be better.

http://www.impactcomputers.com/483113-001.html

maybe you can find it on ebay for cheaper.

 

Thank you

It's not a matter of bucks (it remains affordable), but people over on hphdx scared me a little when it comes to antennas workout..

thank u anyway.

Link to comment
Share on other sites

 Share

×
×
  • Create New...