Jump to content

[GUIDE] Making a DSDT.aml for Dell XPS M1330, XPS M1530, and XPS M1730


immo
 Share

2,030 posts in this topic

Recommended Posts

Making a DSDT.aml for Dell XPS M1330, XPS M1530, and XPS M1730
October 5, 2009

 

Modified October 11, 2017 -> @fusion71au never disappoints.

He's gotten High Sierra working on our dinosaurs. It amazes me how long these machines have been going with every OS-X release since Tiger. 8 years since I made this original post!

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=2500694

 

Modified September 26, 2016 -> fusion71au has gotten Mac OS Sierra working since the betas, and the GM is also working. Refer to his post:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/page-99?do=findComment&comment=2243207

I have not tried it myself.

 

Modified October 7, 2015 -> Got El Capitan running on my M1330 and loving it! fusion71au had it all figured out long before release and has put a mini install guide here:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=2169368

Included in his post is where to find everything you need for M1530.

MacGirl proved it can be done with M1330 just as easily. Use the latest DSDT from this first post (dated Sept 29, 2012) and FakeSMC posted by fusion71au here:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=2173352

fusion71au gives alternate options for how to do the install. I personally got Clover 2.3k r3270 working on my Mavericks install (I didn't like Yosemite) and installed it using the Install El Capitan app: no USB key necessary! fusion71au reports that it is also possible to do this using Chameleon Enoch F2773. Note on mine and other machines you have to manually set the BusSpeedkHz parameter in config.plist as it detects double what it should be, causing animations to go half speed and sound to stutter.  I got the number to use by taking my top speed divided by the multiplier when using Chameleon as reported by HWMonitor and then multiply by 1000 (2388/12*1000=199000). Take care when using fusion71au's guides that kexts are installed in the correct location (in bootloader folders, not /System/Library/Extensions) for installer app and vanilla USB key install methods to work. Also make sure to configure SMBios Mac model to MacBookPro5,1.

 

Modified October 18, 2014 -> fusion71au has been busy getting our rigs working with Yosemite using Clover (and has been using pre-releases since June). See his post here:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=2023821

 

Reportedly working as well as 10.9.5 on M1530 (including an issue where the computer reboots on wake after sleeping the second time),

and I haven't heard anything on how it works on M1330 (but M1330 does not have the sleep issue on 10.9.5 so I'm hopeful...)

Anyone who gets it working on M1330 please share your experiences.

 

Thanks fusion71au!

 

Modified October 20, 2014 -> indiandragon got Yosemite working on his Inspiron 1520. He posted a guide here:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=2072275

He notes that there are no sleep issues.

 

Thanks indiandragon!

 

Also, one of these days I have to fix the DSDT code in this first post. It all still works as is presented but the formatting got ruined at some point somehow.

 

 

Modified February 2nd, 2014 -> I finally upgraded my M1330 to Mavericks this weekend. I know I'm too late to help many of you since you are already happily using it with the help of the always helpful DarwinX (thanks yet again) and others, but I got it working a little different than some of you. I posted my method to upgrade Mountain Lion to Mavericks here:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=1990876

I am still using the same DSDT that I've been using since September 2012 on the bottom of this post, and newer FakeSMC.kext and others posted by DarwinX (link in the guide). As mentioned in my mini guide, I think the key to avoiding heat issues is to use MacBook5,2 in smbios. I managed to get it to work by upgrading the existing installation; I did not have to do a clean install.

 

There is no need to roll back AppleACPIPlatform.kext as was necessary in the past, however if you have an M1530, you might want to roll back to an alternate version of it to solve sleep issues as mentioned in fusion71au's mini guide linked below:

http://www.insanelymac.com/forum/topic/190780-guide-making-a-dsdtaml-for-dell-xps-m1330-xps-m1530-and-xps-m1730/?p=1966524

The method in his guide has worked well for others, and for all I know it may be the only way to get it to work on M1530. Thanks fusion71au.

 

Modified October 10, 2012 -> The last DSDTs from 2011 worked well for Mountain Lion up to 10.8.1. As with 10.7.4, AppleACPIPlatform.kext has to be downgraded to 1.3.5 to prevent KPs on boot. Use Champlist to upgrade Chameleon to a recent version. For 10.8.2, crashes occur in VoodooHDA unless the HDEF section of the DSDT is stripped out (thanks for pointing this out LatinMcG). I've done this on the latest DSDTs posted below. I've also posted a very quick guide to installing Mountain Lion in MacGirl's thread here:
http://www.insanelymac.com/forum/topic/83039-compilation-dell-xps-m1330-m1530-vostro-1400-1700-inspiron-1420-1520-1720/page__st__4300?do=findComment&comment=1844454

Modified July 7, 2012 -> The M1530 and M1330 are not compatible with AppleACPIPlatform.kext that ships with 10.7.4. However it has been discovered that replacing AppleACPIPlatform.kext with the older version 1.3.5 (from Snow Leopard) makes everything appear to work fine. See the always helpful DarwinX's post here: http://www.insanelym...post&p=1820079. If you use the combo updater to do the upgrade you have an opportunity to swap the kext (and remove AppleHDA.kext) after the installer is finished and before you press restart (I didn't swap the kext out this way so if it doesn't work for you sorry!)
It has been suggested that the "darkwake=0" boot flag in org.chameleon.Boot.plist is necessary for working sleep. I can tell you that I have this flag and sleep works so long as hibernatemode is set to 0.
Also, I've successfully used Chameleon 2.1 svn r1996 (packaged by Ermac) and an SMBios.plist generated by Champlist to get iCloud working. I used MacBook 5,2 for both the serial and database parameters. I imagine a number of you already have this working but for anyone who is still using the SMBios.plist below here is a much better option.

Modified October 29 2011 -> After discussion in this topic I've decided to drop the NVidia patch altogether. It's not needed if GraphicsEnabler=Yes is in org.chameleon.Boot.plist, and the patch was the source of all the 10.7.2 issues. New M1330 and M1530 DSDTs with no video patch are now posted. If you are happy with last week's DSDT you don't really have to change it.
Modified October 23 2011 -> Changed NVidia patch to be compatible with 10.7.2. The original would cause a black screen on boot. Also in the kext section moved VoodooPS2Controller.kext from /Extra/Extensions to /System/Library/Extensions (the trackpad kext will not load automatically in /Extra/Extensions since 10.7.2).


This guide shows the steps necessary to dump, assemble, patch, and compile a DSDT.aml for your M1330, M1530, and M1730. This DSDT.aml will allow vanilla speed stepping, vanilla sleep, enable the clamshell lid, and inject NVidia graphics. The latest DSDTs are tested under Snow Leopard and Lion. The DSDT.aml will vary depending on your graphics option (NVidia or Intel).

What Should Work with this Guide and Recommended Kexts

Sleep (with hibernate mode set to zero, don't need any kexts if you use a patched DSDT)
Speed Step (P-States) (make sure Mac model is set to MacBook5,1 in smbios.plist, you do not need GeneratePStates or GenerateCStates)
NVidia Accelerated Graphics (make sure to use GraphicsEnabler in com.apple.Boot.plist)
Wireless: Out of the box with TrueMobile 1505 Draft N. Others may need patching. If you have an Intel, do yourself a favor and buy a TrueMobile 1505 on Ebay.
Ethernet: M1330 needs BCM5722D.kext. M1530 needs a hack?
Bluetooth: Out of the box.
Video Camera: Out of the box.
Keyboard/Trackpad: Needs VoodooPS2Controller.kext. Note on M1530 the Trackpad settings panel is only available in 32bit mode! Two finger scrolling should work.
Card Reader: Needs VoodooSDHC.kext. Unreliable for me.
Shutdown on M1530: No luck with M1330.
Restart: With EvoRestart.kext. Has never been reliable for me.

What Will Not Work:

C-States - Brilliant minds are still working on this one.
HDMI - Broken since 10.6.2.
Shutdown on M1330

Prerequisits

- A working Vanilla install of Leopard
You can use wingrunr's guide as a reference:
http://www.insanelym...mp;#entry847294

or Snow Leopard
You can use Superhai's guide as a reference:
http://www.projectos...p?showtopic=561

- Installed and working copy of Chamelleon RC1 or higher (RC3 required for Snow Leopard).

Posting Rules:

1. Please keep this topic specific to making custom DSDT.aml files for Dell XPS M1330/M1530. More general M1330/M1530 questions can be posted in MacGirl's topic:
http://www.insanelym...showtopic=83039

2. If you'd like to request help about issues with a DSDT.aml that is known to work and you are running a distro, please try it on a vanilla install first. There is no reason to use a distro on these machines as vanilla works great, and there's a very good chance that issues are related to something non-standard about the distro. It is very hard to offer help on distros because it's near impossible to know what has been changed from vanilla on the distro.

Contributing:

- If you successfully use this guide on a configuration different from a DSDT.aml posted here, post it! This will help others with your configuration.

- If you find a patch that works better or adds more functionality than what is shown here, share it!

Credits

Chrysaor for his DSDT.aml for M1530. This motivated me to figure out how to do it on my M1330, and I used his DSDT.aml as a reference.
Wingrunr and MacGirl for their awesome threads.
Superhai for his great kexts and snow leopard work.
Zhell for his guide on dumping the ACPI tables.
ApexDE for his work on the USB fix.
I'm not sure who came up with the NVidia and HDEF fixes, but whoever did, thanks.
The contributes in this thread.. There have been some great contributions which have been credited throughout the guide.

2009/11/17
Alternative to Step One and Step Two - Makes a CPU generic DSDT, is much easier, and No Linux BootCD Required!


It's been found that it is possible to get Vanilla SpeedStep and sleep working without SSDT tables (thanks Brett Whinnen). The DSDT table can be dumped from OS-X, so a boot CD is not required. The only disadvantage is that you will be unable to customize your speed stepping. You will still need to apply the patches listed in Section 3.

1. Download and unzip DSDT Patcher from this thread.
http://www.insanelym...howtopic=133683

2. Under the "Tools" subfolder, copy "iasl" and "getDSDT.sh" to the /sbin directory (this is the compiler/decompiler, and the DSDT dumping script respectively).

3. In the folder where you want to work, execute the command:
getDSDT.sh

A file called DSDT.dat will appear in the working folder.

4. Decompile the DSDT.dat using the following command:
iasl -d dsdt.dat

The file will be decompiled to dsdt.dsl in the same folder.

5. Open the dsdt.dsl file in TextEdit.

6. In the DefinitionBlock line near the top of the file, replace the filename with the name "DSDT.aml" with no path. Otherwise it will overwrite the original.

7. Continue on to Step 3: Patching the DSDT. When installing the finished DSDT (Step 4), do NOT use the DropSSDT=y flag.


Step One: Dumping the ACPI Tables

The DSDT is built by assembling and compiling ACPI tables dumped from the computer's bios. This is best done from Linux as the complete tables cannot be dumped from OS-X. Don't worry you don't have to install linux, you can use an Ubuntu Live-CD (allows you to boot Ubuntu from your CD drive). After this step is done, we do the remainder in OS-X (although it is possible to do most of the remaining steps in Linux if you really wanted to). Here's the steps involved.

1. Download an Ubuntu Live CD (9.04 Jaunty Jackalope is the current version, I used the 64 bit version)
http://www.ubuntu.co...ubuntu/download
and burn it to CD.
EDIT 2009/10/22 -> It's been reported that Ubuntu 9.10 beta did not work for this, but 9.04 definately does (thanks Jisare).

2. Boot from the CD, and choose the option "Try Ubuntu without any change to your computer".

3. Open a terminal window (under Accessories).

4. Enable "Universe" repositories (this allows you to install the required software to do your dump)
sudo nano /etc/apt/sources.list
Uncomment the "Universe" lines, exit and save.

5. Install the ACPIDump package.
sudo apt-get updatesudo apt-get install acpidump

6. Change to root (sudo su) and dump the tables and store them in ACPI-Tables.zip (thank you zhell)

mkdir ACPI && dmesg | perl -we '$n=0; while (<>) { if (($t,$a,$l,$o) = (/^[^a-zA-Z]*ACPI: ([-._A-Z0-9]{4,4}) +([0-9A-F]{8,8}), ([0-9A-F]{4,4})+(?:\s*\(([^)]+))?/)) { $o && $o=~s/[^-._a-zA-Z0-9]+/-/g; ($cmd="acpidump -a $a -l $l > \"ACPI/${t}".($o?"_$o":"").".aml\""); print "Running command: \"$cmd\"\n"; system($cmd); ++$n; } } die("No match") unless $n;' && zip -r ACPI-Tables.zip ACPI


7. Copy the ACPI-Tables.zip to a USB drive or network share where you can access it later from OS-X.

Step Two: Decompiling and Assembling the Tables

Look at the contents of the ACPI-Tables.zip files. The ones that are needed are the DSDT table and the SSDT PmRef tables (there are five). These six have to be assembled into a single DSDT.aml file. Each one must be decompiled, assembled together.

1. Download and unzip DSDT Patcher from this thread.
http://www.insanelym...howtopic=133683

2. Under the "Tools" subfolder, copy "iasl" to the /sbin directory (this is the compiler/decompiler)

3. Decompile each of the required .aml files using the following command:
iasl -d [file.asl]
A [file].dsl file will be created in the same folder.

4. Open the DSDT dsl file (called DSDT_r2-INT430-SYSFexxx-1001-INTL-20050624.aml on my computer) in TextEdit.

5. In the DefinitionBlock line near the top of the file, replace the long unfriendly filename with the name "DSDT.aml" (this is so when you compile the file it will have the name DSDT.aml. Otherwise it will overwrite the original)

6. Remove the last curly brace } at the bottom of the file.

7. Open the first SSDT file in another TextEdit window (SSDT_r1-PmRef-Cpu0Cst-3001-INTL-20050624.dsl on my computer, I don't believe the order is important, but I did them in alphabetical order).

8. Copy starting AFTER the first curly brace { (probably an "EXTERN" line) to the end of the file, and paste it to the end of the DSDT file.

9. Repeat steps 6 to 8 for the remaining SSDT files.

10. Save the DSDT file with the joined DSDT tables. We'll call it myDSDT.aml.

You may also want to date code and/or version it. The DSDT's are specific not only to the model but to the CPU, and the NVidia graphics are optional.

11. Attempt to compile the file with the following command. It will fail, but it will also tell us what we have to fix.
iasl myDSDT.dsl

12. All the errors at "External" lines e.g.:

DSDT.dsl 6026: External (\_PR_.CPU0, DeviceObj)
Error 4056 - Name already exists in scope ^ (\_PR_.CPU0)

are there because the same external was specified in multiple tables, but should only be specified once. Simply delete the offending lines, leaving each external defined only once. A few cannot even be defined once, because they are defined elsewhere as code in the file (therefore they are not external).

13. You will get an error like this on the M1330, and I'm pretty sure the M1530 as well:

DSDT.dsl 5706: Name (_HID, "*pnp0c14")
Error 4001 - ^ String must be entirely alphanumeric (*pnp0c14)

I'm not sure why that asterisk is there, but simply remove the asterisk and it will compile fine.

14. You will get a number of warnings that look like this:

DSDT.dsl 5016: And (Local0, 0x0F)
Warning 1105 - ^ Result is not used, operator has no effect

Replace all of these with:

And (Local0, 0x0F, Local0)

15. Try to compile again, and if it compiles, great! But it's not ready to be used yet. If it doesn't compile, you probably messed up a step (note to anyone not using an M1330 or M1530: some bioses actually ship with acpi tables with errors!)

Step Three: Patching the DSDT

Required: DTGP Method
This method is required for the USB fix and the NVidia injection to work. If you use don't use these you don't need it.
Insert this method under the _WAK method.

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 (One) }

Required for Snow Leopard: Fix USB Devices Randomly Not Working - Added 2009/20/14
Reportedly, some are having issues with USB randomly not working on startup, but then trying again will bring the USB back. I haven't actually experienced this. Perhaps it is Snow Leopard specific? Jkbuha and FMulder have come up with this fix (thanks!):
EDIT 2009/10/22 -> I've now updated to Snow Leopard, and sure enough this is REQUIRED for proper USB function.
Remove the following two lines from the Device (TMR) section:

IRQNoFlags () {2}

Optional: USB Drive Sleep Fix
Reportedly this fix will allow M1530s to sleep and wake up without causing USB drives to disconnect, but it does not work on my M1330 :(
Find the EHC2 and EHCI sections and insert this method before the _PWR method in both sections:

Method (_DSM, 4, NotSerialized) { Store (Package (0x0B) { "AAPL,clock-id", Buffer (One) { 0x01 }, "device_type", Buffer (0x05) { "EHCI" }, "AAPL,current-available", 0x04B0, "AAPL,current-extra", 0x02BC, "AAPL,current-in-sleep", 0x03E8, Buffer (One) { 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) }

Optional: NVidia Injection EDIT October 23 2011 - Patched to work with 10.7.2 (thanks zoliky, luggi)
EDIT October 29 2011 - Not required for anything if GraphicsEnabler=Yes is used in Chameleon:

Insert this code under the Device (VID) section within the Device (AGP) section (not in the independent (VID) section) under Name (_ADR, 0x00) and above the _DOS section. The "8400M GS" is the card found within the M1330. M1530 users will want to replace this with "8600M GT". If you do not use this patch and you have a NVidia card you can use an injector instead.

Name (_SUN, One) Method (_DSM, 4, NotSerialized) { Store (Package (0x18) { "@0,built-in", Buffer (One) { 0x01 }, "@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" }, "@0,display-cfg", Buffer (0x04) { 0x03, 0x01, 0x00, 0x00 }, "@1,display-cfg", Buffer (0x04) { 0xFF, 0xFF, 0x00, 0x01 }, "@1,name", Buffer (0x0F) { "NVDA,Display-B" }, "NVCAP", Buffer (0x18) { /* 0000 */ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, /* 0008 */ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00 }, "device_type", Buffer (0x0C) { "NVDA,Parent" }, "model", Buffer (0x18) { "NVIDIA GeForce 8400M GS" } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) }

Optional: HD Audio Patching EDIT 2009/11/30: Recommended - Without it the computer may wake up instantly after sleep.
EDIT 2012/10/10 - I now recommend stripping out the HDEF section completely to prevent compatibility problems with VoodooHDA. Remove the Device(AZAL) (or Device(HDEF)) and any lines that refer to them (Thanks LatinMcG).
This patch allows the sound card to be detected as an HDEF audio card rather than an Azilla Audio card. Replace the Device (AZAL) section with this:

Device (HDEF) { Name (_ADR, 0x001B0000) Method (_DSM, 4, NotSerialized) { Store (Package (0x04) { "codec-id", Buffer (0x04) { 0x16, 0x76, 0x84, 0x83 }, "layout-id", Buffer (0x04) { 0x0C, 0x00, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } }

You will also have to change any references to AZAL to HDEF. With either the AZAL or HDEF section, a patched AppleHDA.kext can be used without HDAEnabler.kext (Leopard only solution at this time I believe), or alternatively VoodooHDA can be used. If you use this patch and VoodooHDA.kext, AppleHDA.kext must be removed otherwise it will conflict. It seems that you need this patch for working sleep if you do not include the SSDT tables (2009/11/17). One user has found this patch is needed even with the SSDT tables included, however it worked for me without for some reason :wacko: (2009/11/30). Perhaps someday this section can be improved to allow vanilla audio...

Optional: Adding SBUS Device (Added 2009/10/22) (Edit 2010/04/12 -> SMBI Address was Wrong)
jkbuha came up with this fix using a guide made by Master Chief (thank you). This allows the detection of the SBUS device, and it can be confirmed as detected using IORegistry Explorer by searching for SBUS. This device is required to get C-states working, however we still do not have working C-states even with this patch.

Add this under the first curly brace under Scope (\_SB):
Method (DBEN, 0, NotSerialized) { }

And this under the DTGP method we added:

OperationRegion (GPIO, SystemIO, 0x0500, 0x3C) Field (GPIO, ByteAcc, NoLock, Preserve) { GU00, 8, GU01, 8, GU02, 8, GU03, 8, GIO0, 8, GIO1, 8, GIO2, 8, GIO3, 8, Offset (0x0C), GL00, 8, GL01, 8, GL02, 8, GL03, 8, Offset (0x18), GB00, 8, GB01, 8, GB02, 8, GB03, 8, Offset (0x2C), GIV0, 8, GIV1, 7, GI15, 1, GIV2, 8, GIV3, 8, GU04, 8, GU05, 8, GU06, 8, GU07, 8, GIO4, 8, GIO5, 8, GIO6, 8, GIO7, 8, GL04, 8, GL05, 8, GL06, 8, GL07, 8 } OperationRegion (BSKU, SystemMemory, 0xFFBC0100, 0x01) Field (BSKU, ByteAcc, NoLock, Preserve) { , 1, BPHP, 3, Offset (0x01) } OperationRegion (GPE0, SystemIO, 0x042C, 0x04) Field (GPE0, ByteAcc, NoLock, Preserve) { , 1, GPEH, 1, , 7, PEEN, 1, , 1, PMEE, 1, Offset (0x03), PCIX, 1, Offset (0x04) }

And finally this above the section Device (ISAB):

Device (SBUS) { Name (_ADR, 0x001F0003) // pci8086,283e -> pci8086,3a30 Method (_DSM, 4, NotSerialized) { Store (Package (0x04) { "name", "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) } OperationRegion (SMBP, PCI_Config, 0x40, 0xC0) Field (SMBP, DWordAcc, NoLock, Preserve) { , 2, I2CE, 1 } OperationRegion (SMBE, PCI_Config, 0x04, 0x02) Field (SMBE, AnyAcc, NoLock, Preserve) { IOSE, 1 } OperationRegion (SMBI, SystemIO, 0x10C0, 0x10) Field (SMBI, ByteAcc, NoLock, Preserve) { HSTS, 8, Offset (0x02), HCON, 8, HCOM, 8, TXSA, 8, DAT0, 8, DAT1, 8, HBDR, 8, PECR, 8, RXSA, 8, SDAT, 16 } Name (SBOK, 0x00) Method (ENAB, 0, NotSerialized) { Store (0x01, IOSE) Store (One, SBOK) } Method (DISB, 0, NotSerialized) { Store (Zero, SBOK) } Method (SSXB, 2, Serialized) { If (STRT ()) { Return (0x00) } Store (0x00, I2CE) Store (0xBF, HSTS) Store (Arg0, TXSA) Store (Arg1, HCOM) Store (0x48, HCON) If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (0x01) } Return (0x00) } Method (SRXB, 1, Serialized) { If (STRT ()) { Return (0xFFFF) } Store (0x00, I2CE) Store (0xBF, HSTS) Store (Or (Arg0, 0x01), TXSA) Store (0x44, HCON) If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (DAT0) } Return (0xFFFF) } Method (SWRB, 3, Serialized) { If (STRT ()) { Return (0x00) } Store (0x00, I2CE) Store (0xBF, HSTS) Store (Arg0, TXSA) Store (Arg1, HCOM) Store (Arg2, DAT0) Store (0x48, HCON) If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (0x01) } Return (0x00) } Method (SRDB, 2, Serialized) { If (STRT ()) { Return (0xFFFF) } Store (0x00, I2CE) Store (0xBF, HSTS) Store (Or (Arg0, 0x01), TXSA) Store (Arg1, HCOM) Store (0x48, HCON) If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (DAT0) } Return (0xFFFF) } Method (SBLW, 4, Serialized) { If (STRT ()) { Return (0x00) } Store (Arg3, I2CE) Store (0xBF, HSTS) Store (Arg0, TXSA) Store (Arg1, HCOM) Store (SizeOf (Arg2), DAT0) Store (0x00, Local1) Store (DerefOf (Index (Arg2, 0x00)), HBDR) Store (0x54, HCON) While (LGreater (SizeOf (Arg2), Local1)) { Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (0x00) } Store (0x80, HSTS) Increment (Local1) If (LGreater (SizeOf (Arg2), Local1)) { Store (DerefOf (Index (Arg2, Local1)), HBDR) } } If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (0x01) } Return (0x00) } Method (SBLR, 3, Serialized) { Name (TBUF, Buffer (0x0100) {}) If (STRT ()) { Return (0x00) } Store (Arg2, I2CE) Store (0xBF, HSTS) Store (Or (Arg0, 0x01), TXSA) Store (Arg1, HCOM) Store (0x54, HCON) Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (0x00) } Store (DAT0, Index (TBUF, 0x00)) Store (0x80, HSTS) Store (0x01, Local1) While (LLess (Local1, DerefOf (Index (TBUF, 0x00)))) { Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (0x00) } Store (HBDR, Index (TBUF, Local1)) Store (0x80, HSTS) Increment (Local1) } If (COMP ()) { Or (HSTS, 0xFF, HSTS) Return (TBUF) } Return (0x00) } Method (STRT, 0, Serialized) { Store (0xC8, Local0) While (Local0) { If (And (HSTS, 0x40)) { Decrement (Local0) Sleep (0x01) If (LEqual (Local0, 0x00)) { Return (0x01) } } Else { Store (0x00, Local0) } } Store (0x0FA0, Local0) While (Local0) { If (And (HSTS, 0x01)) { Decrement (Local0) Stall (0x32) If (LEqual (Local0, 0x00)) { KILL () } } Else { Return (0x00) } } Return (0x01) } Method (COMP, 0, Serialized) { Store (0x0FA0, Local0) While (Local0) { If (And (HSTS, 0x02)) { Return (0x01) } Else { Decrement (Local0) Stall (0x32) If (LEqual (Local0, 0x00)) { KILL () } } } Return (0x00) } Method (KILL, 0, Serialized) { Or (HCON, 0x02, HCON) Or (HSTS, 0xFF, HSTS) } Device (BUS0) { Name (_CID, "smbus") Name (_ADR, 0x00) Device (MKY0) { Name (_ADR, 0x00) Name (_CID, "mikey") Method (_DSM, 4, NotSerialized) { Store (Package (0x07) { "refnum", 0x00, "address", 0x39, "device-id", 0x0CCB, Buffer (0x01) { 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Method (H1EN, 1, Serialized) { If (LLessEqual (Arg0, 0x01)) { If (LEqual (Arg0, 0x01)) { Or (GL04, 0x04, GL04) } Else { And (GL04, 0xFB, GL04) } } } Method (H1IL, 0, Serialized) { ShiftRight (And (GL00, 0x02), 0x01, Local0) Return (Local0) } Method (H1IP, 1, Serialized) { Store (Arg0, Local0) } Name (H1IN, 0x11) Scope (\_GPE) { Method (_L11, 0, NotSerialized) { Notify (\_SB.PCI0.SBUS.BUS0.MKY0, 0x80) } } Method (P1IL, 0, Serialized) { ShiftRight (And (GL00, 0x40), 0x06, Local0) Return (Local0) } Method (P1IP, 1, Serialized) { If (LLessEqual (Arg0, 0x01)) { Not (Arg0, Arg0) And (GIV1, 0x0B, Local0) ShiftLeft (Arg0, 0x02, Local1) Or (Local1, Local0, GIV1) } } Name (P1IN, 0x16) Scope (\_GPE) { Method (_L16, 0, NotSerialized) { XOr (GIV1, 0x04, GIV1) Notify (\_SB.PCI0.SBUS.BUS0.MKY0, 0x81) } } } Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") Method (_DSM, 4, NotSerialized) { Store (Package (0x03) { "address", 0x57, Buffer (0x01) { 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } } } }

Optional: IDE Fix (added 2009/11/17)
This fix allows you to use Snow Leopard with the vanilla IOATAFamily.kext (Thank you The King).

Under the both the Device (IDE0) and Device (IDE1) sections under the first Name line the add:

OperationRegion (IDET, PCI_Config, 0x40, 0x04) // IDE Timing RegisterField (IDET, WordAcc, NoLock, Preserve){ Offset (0x00), M1, 8, Offset (0x01), M2, 8, Offset (0x02), M3, 8, Offset (0x03), M4, 8}Method (_DSM, 4, NotSerialized){ Store (0x07, M1) Store (0xE3, M2) Store (Zero, M3) Store (0xC0, M4) Return (Zero)}

Optional: Clamshell Fix (added 2010/04/12)
This patch lets your computer sleep when you close the lid (thanks Brett Whinnen). Under _SB add the following:

Device (PNLF) { Name (_HID, EisaId ("APP0002")) Name (_CID, "backlight") Name (_UID, 0x0A) Name (_STA, 0x0B) }

Optional: Wait for it... SHUTDOWN FIX (YAY!) (added 2010/04/12)
This patch allows the computer to shut down properly with NVidia graphics. Reportedly working on M1530s but unfortunately not M1330s yet. Our friends on the Gigabyte thread figured out how to get shutdown working (sorry don't know who to credit), and Dlach and MorLipf here applied it to the M1530. Above method PTS, add the following:

OperationRegion (PMRS, SystemIO, 0x1030, One)Field (PMRS, ByteAcc, NoLock, Preserve){ , 4, SLPE, 1}

and then replace the PTS method with the following:

Method (_PTS, 1, NotSerialized) { If (LEqual (Arg0, 0x05)) { Store (Zero, SLPE) Sleep (0x10) } }

Recommended for newer 10.6 releases: USB Patch to Fix Sleep (added 2011/05/30)
Later 10.6.X releases (10.6.6+?) caused sleep to stop working when disconnected from the power supply. This patch fixes this. Under USB1, USB3, and USB4, remove the block that begins with _PSW. Do not touch the _PSW method under the other USBs or anywhere else. Thanks VMonHeros.

Here is a sample USB1 after complete (note no _PSW method):

Device (USB1) { Name (_ADR, 0x001D0000) Method (_PRW, 0, NotSerialized) { Store (UPRW (Zero, Zero), Local0) If (LEqual (Local0, 0x03)) { Return (Package (0x02) { 0x03, 0x03 }) } If (LEqual (Local0, One)) { Return (Package (0x02) { 0x03, One }) } Return (Package (0x02) { 0x03, Zero }) } Device (HUB0) { Name (_ADR, Zero) Device (CH00) { Name (_ADR, One) } Device (CH01) { Name (_ADR, 0x02) } } }

Required for 10.6.8 and Lion: PCI Patch (added 2011/07/20)
10.6.8 is much more Lion like. LatinMcG pointed out these patches that fix the DSDT for 10.6.8 (and I believe Lion but I haven't tested myself). Without these patches you will get beach balling and kernel panics. You may also need to change your Mac model in the smbios.plist to fix speed step and prevent kernel panics. MacBook5,1 works best for me.

Replace:

Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, Zero)

With:

Device (PCI0) { Name (_HID, EisaId ("PNP0A08")) Name (_CID, EisaId ("PNP0A03")) Name (_UID, Zero)

Required for 10.6.8 and Lion: RTC Patch (added 2011/07/20)

This patch replaces the RTC with one from a Mac. Replace RTC with the below code:

Device (RTC) { Name (_HID, EisaId ("PNP0B00")) Name (_CRS, ResourceTemplate () { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x01, // Alignment 0x08, // Length ) }) }

Required for 10.6.8 and Lion: SMBUS Patch (added 2011/07/20)

This is a simplified SMBUS patch that fixes the SMBuspci error that you would get if you don't do it.

Device (SBUS) { Name (_ADR, 0x001F0003) Device (BUS0) { Name (_CID, "smbus") Name (_ADR, Zero) Device (DVL0) { Name (_ADR, 0x57) Name (_CID, "diagsvault") } } Method (_DSM, 4, NotSerialized) { Store (Package (0x0A) { "built-in", Buffer (One) { 0x00 }, "name", "pci8086,283e", "device-id", Buffer (0x04) { 0x3E, 0x28, 0x00, 0x00 }, "subsystem-id", Buffer (0x04) { 0xA0, 0x00, 0x00, 0x00 }, "subsystem-vendor-id", Buffer (0x04) { 0x6B, 0x10, 0x00, 0x00 } }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } }

Required: HPET (added 2011/07/20)

The HPET is required for power management. Earlier I suggested to use "DSDT Patcher" with the -newHPET option that would automatically write a new HPET, but here is an HPET recommened by LatinMcG. If you use this HPET and the RTC above, you will no longer need to use the patcher. Replace the HPET with the one below.

Device (HPET) { Name (_HID, EisaId ("PNP0103")) Name (_CID, EisaId ("PNP0C01")) Name (BUF0, ResourceTemplate () { IRQNoFlags () {0} IRQNoFlags () {8} IRQNoFlags () {15} Memory32Fixed (ReadOnly, 0xFED00000, // Address Base 0x00000400, // Address Length ) }) Method (_STA, 0, NotSerialized) { Return (0x0B) //researching if F or B is best } Method (_CRS, 0, NotSerialized) { Return (BUF0) } }

Required: Compile the DSDT:
Run the following command:

iasl myDSDT.dsl

In the current folder you will find myDSDT.aml (possibly a different name or folder: it uses the file name specified in the DSDT). This is the final product! If it works, congratulations!

Step Four: Testing and Using the DSDT
I use Chamelleon RC2 so that's what I will give instructions for (no reason to upgrade to RC3 yet because I'm still using Leopard). Chamelleon installs an /Extra folder that contains the configuration information and can also contain your finished DSDT.aml. I don't recommend installing it there yet however because it might not work!

To prepare your machine to test/use the DSDT.aml

1. Edit the file /Extra/com.apple.Boot.plist. I use "sudo nano /Extra/com.apple.Boot.plist"

2. Under the key "Kernel Flags", add the flag "DropSSDT=Y" (flags are space separated if you already have another flag).
EDIT 2009/10/22 -> I ran into an interesting problem here. I installed 10.6 Snow Leopard on a second partition leaving 10.5 intact on it's partition, and Snow Leopard was looking at the com.apple.Boot.plist on the 10.5 partition! This appears to be a Chameleon bug.

3. Copy the attached smbios.plist file to the /Extra folder and edit it to match your hardware. Set SMmaximalclock to your processor speed in MHz, your SMexternalclock to your bus speed, and SMSerial to something unique but with the same number of characters. If you do not know the bus speed you can use the utility CPU-X to look it up.

4. If you use SMBIOSResolver.kext or something similar remove it. The smbios.plist takes the role of it.

5. Copy your DSDT.aml to the /Extra folder, and rename it to something different such as "DSDT_Test.aml" This is so that it does not load by default, so if it doesn't work, it's not that big a deal.

6. Correct all the permissions in the /Extra folder with the following commands:
sudo chmod -R 755 /Extrasudo chown root:wheel /Extra

7. If you use IntelCPUPMDisabler.kext (or NullCPUPowerManagement.kext), VoodooPower.kext, VoodooUSBEHCI.kext, and/or SleepEnabler.kext remove them. Also remove the patch necessary to make VoodooUSBEHCI.kext work. You can also remove HDAEnabler.kext if you have it, and if you did the NVidia patch you should remove your injector. Clear the kext cache if you removed any kexts. Repair permissions. Kext Utility comes in really helpful here.

8. Reboot

9. When the boot loader comes up, arrow over to the OS-X partition, and type:
DSDT=/Extra/[testdsdt.aml]

10. Press [ENTER] and cross your fingers!

11. If you are happy with the results, rename your test DSDT file to DSDT.aml in the /Extra folder, and it will load by default from now on.

Kexts I use for Lion and Snow Leopard (2011/08/25)

In /Extra/Extensions
FakeSMC.kext
: Slice's version with hardware monitoring.
NVClockX: FakeSMC plugin: Nvidia graphics specific hardware monitoring.
IntelCPUMonitor: FakeSMC plugin.
VoodooBattery.kext : From SuperHai's boot CD.
*You do not need AppleACPIPS2Nub.kext with this version!
VoodooSDHC.kext: from Voodoo Labs (note I sometimes get lockups when using this under Lion)
EvoReboot.kext: Reboot fix.

In /System/Library/Extensions
BCM5722D.kext
: Needed for M1330 Only! Ethernet. By Adlan here: http://www.insanelym...p...t&p=1638112
VoodooHDA.kext: By Slice. Not compatible with stock AppleHDA.kext -> will cause KP if both present. I tried a disabler but it didn't work for me, so I just delete it.
VoodooPS2Controller.kext
: By Andy Vandijck patched by Brett Whinnen here: http://www.insanelym...p...t&p=1623714

Kexts that must be removed if you have them:

IntelCPUPMDisabler.kext
NullCPUPowerManagement.kext
SleepEnabler.kext
SMBIOSResolver.kext
AppleHDA
(if you use the HDEF sound patch)

Other Required and Useful Software:

Chameleon 2 RC5: Not officially released but Ermak periodically packages builds here: http://www.insanelym...p...t&p=1543024 (I've always had best luck installing it manually: link to howto on Ermak's page)
Kext Utility: Repairs permissions and rebuilds kext caches after installing or removing kexts.
SMCMonitor: Monitor your current CPU speed. Useful for testing if SpeedStep is working. Your CPU frequency should change between a fraction of your CPU frequency (33% on mine) to the highest CPU frequency depending on what you are doing.
iStat Pro Monitor your temps. When your video card goes close to 100 degrees C it means you will have to get another motherboard soon.
Portal 2: For celebrating when you finally get your Hackintosh working!

Hints
To see what other people of done, decompile other people's DSDT.aml files by using the same iasl command you used to decompile the dumped tables.

Files
DSDT_M1330_T8300_NVIDIA_091014.zip - DSDT.aml for an M1330 with NVidia graphics and a T8300 (2.4GHz) CPU ONLY with USB fix, USB sleep fix, and audio fix. (2009/10/14).
DSDT_M1330_T8300_NVIDIA_091022.zip - Above DSDT with SBUS added (2009/10/22)
DSDT_M1330_NVIDIA_ANYCPU_20091117.zip - DSDT for M1330 with any CPU and NVidia graphics with all fixes listed in this guide (2009/11/17)
DSDT_M1530_NVIDIA_ANYCPU_20091117.zip - DSDT for M1530 with any CPU and NVidia graphics with all fixes listed in this guide by Brett Whinnen. Details Here. (2009/11/17)
DSDT_M1530_NVIDIA_ANYCPU_20100404.zip - DSDT for M1530 with any CPU and NVidia graphics with shutdown fix and SBUS fix by Brett Whinnen. Brett's Post Here. (2010/04/12)
DSDT_M1330_NVIDIA_ANYCPU_20100411.zip - DSDT for M1330 with any CPU and NVidia graphics with shutdown fix (not working yet), clamshell fix, and USB storage device unsafe remove on sleep fix. (2010/04/12)
DSDT_M1530_NVIDIA_ANYCPU_20110525.zip - DSDT for M1530 with any CPU and NVidia graphics with USB sleep fix and all other previous fixes. (2011/05/30)
DSDT_M1330_NVIDIA_ANYCPU_20110525.zip - DSDT for M1330 with any CPU and NVidia graphics with USB sleep fix and all other previous fixes. (2011/05/30)
DSDT_M1530_NVIDIA_ANYCPU_20110720.zip - DSDT for M1530 with any CPU and NVidia graphics with 10.6.8/Lion fixes. Confirmed working on Snow Leopard 10.6.8 and Lion. (2011/07/20)
DSDT_M1330_NVIDIA_ANYCPU_20110720.zip - DSDT for M1330 with any CPU and NVidia graphics with 10.6.8/Lion fixes. Tested on Snow Leopard 10.6.8 and Lion. (2011/07/20)
DSDT_M1530_NVIDIA_ANYCPU_20111023.zip - Same as above M1530 DSDT but with NVidia patch for 10.7.2 (2011/10/23)
DSDT_M1330_NVIDIA_ANYCPU_20111023.zip - Same as above M1330 DSDT but with NVidia patch for 10.7.2 (2011/10/23)
DSDT_M1530_NVIDIA_ANYCPU_20111029.zip - No NVidia injection patch. Use GraphicsEnabler=Yes in Chameleon. (2011/10/29)
DSDT_M1330_NVIDIA_ANYCPU_20111029.zip - No NVidia injection patch. Use GraphicsEnabler=Yes in Chameleon. (2011/10/29)
DSDT_M1530_NVIDIA_ANYCPU_20120929.zip - Strip out HDEF for Mountain Lion 10.8.2 compatibility with VoodooHDA (2012/10/10).
DSDT_M1330_NVIDIA_ANYCPU_20120929.zip - Strip out HDEF for Mountain Lion 10.8.2 compatibility with VoodooHDA (2012/10/10).
*You must use the DropSSDT=y boot flag if you use a DSDT meant for a specific CPU, and you must NOT use it if you use a DSDT meant for any CPU.

smbios.plist.zip - smbios.plist. Edit for your machine.

  • Like 11
Link to comment
Share on other sites

Great guide immo!

 

I'm now running native speedstep (with an undervolted T8300)! I've attached my DSDT for anyone who's interested in running their T8300 @ 2.4GHz on 0.975V (WARNING: this may not work for everyone!!!)

 

Questions:

 

1) I still cannot get C-states to work even using your posted dsdt file. Using MacBookPo5,1 in smbios.plist the kernel spits out an "ACPI_SMC_PlatformPlugin::registerLPCDriver - WARNING - LPC device initialization failed: C-state power management not initialized" error, and changing it to MacBookPro4,1 produces an "incorrect p-states" error. Any ideas?

 

2) How do you enable SLFM to work in a T8300? IMO The p-state tables just drop the cpu down to a 600Mhz clock with the same voltage - am I missing something here?

 

Cheers

jkbuha

dsdt_T8300_undervolted.zip

Link to comment
Share on other sites

Thanks for your DSDT! Unfortunately I haven't attempted to get the C-states working yet. Here's a guide for getting it to work, but I haven't tried it. It involves borrowing C-states from a real mac.

 

http://www.insanelymac.com/forum/index.php?showtopic=181631

 

About the P-States, apparently you can add more to the _PSS section (and it looks like SPSS contains a clone of the data). What I know is that the first number beside Package (0x06 on mine, 0x05 on yours) is the number of P-states, and the first value in each P-state is the frequency. I never tried changing these values. Actually mine does not drop lower than 800MHz. Is this where you under-volted yours? Looking at yours, you only have 5 p-states, and the lowest speed is 1000MHz, which confuses me because you say you're getting as low as 600. Did you edit these or do you have an older bios? I'm running A15. Here's a link with more details on what the values mean:

http://www.ztex.de/misc/c2ctl.e.html#c1

 

Another thing that may be useful is checking out the tables that I do not talk about in the guide. Perhaps there's something useful in them?

 

Immo

 

 

Great guide immo!

 

I'm now running native speedstep (with an undervolted T8300)! I've attached my DSDT for anyone who's interested in running their T8300 @ 2.4GHz on 0.975V (WARNING: this may not work for everyone!!!)

 

Questions:

 

1) I still cannot get C-states to work even using your posted dsdt file. Using MacBookPo5,1 in smbios.plist the kernel spits out an "ACPI_SMC_PlatformPlugin::registerLPCDriver - WARNING - LPC device initialization failed: C-state power management not initialized" error, and changing it to MacBookPro4,1 produces an "incorrect p-states" error. Any ideas?

 

2) How do you enable SLFM to work in a T8300? IMO The p-state tables just drop the cpu down to a 600Mhz clock with the same voltage - am I missing something here?

 

Cheers

jkbuha

Link to comment
Share on other sites

Hi Immo,

 

thank you for your great job!! ;)

 

I have followed your guide and everything was perfect, except one thing: I didn't get my USB to work... they worked random: one reboot I had them, one reboot I didn't have.

So I started to compare my previously working DSDT (where everything worked, except battery monitor) to the newly gene one, and I succeded getting one full working, but I have made a LOT of changes and I don't know which one are needed and which one aren't, and I don't know if I have messed something that I should not touch.

 

Can you give me an help and try to patch my generated DSDT so that USB starts working? Or, at least, try to give me an advice on where I should take a look...

 

So I attach you two dsdt:

- This one is my "vanilla" DSDT, the one generated following your guide

DSDT_vanilla.dsl.zip

- This other one is the "everything working" one, where I have made really a lot of unnecessary changes.

DSDT.USBworking.dsl.zip

 

Thank you!!!

 

[ SOLVED: scroll down to the next posts to find the solution ]

Link to comment
Share on other sites

Hi Immo,

 

thank you for your great job!! ;)

 

I have followed your guide and everything was perfect, except one thing: I didn't get my USB to work... they worked random: one reboot I had them, one reboot I didn't have.

So I started to compare my previously working DSDT (where everything worked, except battery monitor) to the newly gene one, and I succeded getting one full working, but I have made a LOT of changes and I don't know which one are needed and which one aren't, and I don't know if I have messed something that I should not touch.

 

Can you give me an help and try to patch my generated DSDT so that USB starts working? Or, at least, try to give me an advice on where I should take a look...

 

So I attach you two dsdt:

- This one is my "vanilla" DSDT, the one generated following your guide

 

- This other one is the "everything working" one, where I have made really a lot of unnecessary changes.

 

 

Thank you!!!

 

For everyone who wants to try my DSDT, my hardware is the one in the signature. The DSDT is fully working, speedstep included.

 

Hi both,

 

I've fixed the USB problems in my DSDT (it had to do with assigning the IRQs in declaring HPET, PIC and TMR - have a look at my DSDT source).

 

For those of you who are interested in undervolting, have a look at my _PSS tables:

 

Name (_PSS, Package (0x06)

{

Package (0x06) { 2401, 32000, 10, 10, 0x0D15, 0x0D15 },

Package (0x06) { 2400, 31000, 10, 10, 0x0C15, 0x0C15 },

Package (0x06) { 2000, 25000, 10, 10, 0x0A15, 0x0A15 },

Package (0x06) { 1600, 19000, 10, 10, 0x0815, 0x0815 },

Package (0x06) { 1000, 13000, 10, 10, 0x8A09, 0x8A09 },

Package (0x06) { 600, 9000, 10, 10, 0x8609, 0x8609 }

})

 

The clue lies in the final two pairs of FID and VID numbers for each state:

 

for instance: 0x0C15 means FID 12 (=0C hex = 2400MHz) and VID 21 (=15 hex = 0.975V)

 

The lowest voltage my T8300 runs at (so far) is 0.90V at 1000, 800, 600 MHz (so in practice it doesn't matter whether I run it at 1000MHz or 600MHz - it will consume the same amount of juice).

 

What I still have to figure out is:

 

1) How do I get the processor to run in IDA and SLFM modes? Is this just a _PSS configuration?

2) Is there any way to get the T8300 to run below 0.9V (ie: VID=0x09?)

3) Any change of getting C-states to work for the T8300?

 

Cheers

jkbuha

Link to comment
Share on other sites

I've fixed the USB problems in my DSDT (it had to do with assigning the IRQs in declaring HPET, PIC and TMR - have a look at my DSDT source).

 

Thank you so much jkbuha, it worked!!

 

RANDOM WORKING USB FIX

 

in Device (TMR) section I REMOVED:

			IRQNoFlags ()
			{2}

 

I had to remove that just from TMR, but there are chances you have to remove something similar also in HPET or PIC sections... just try!

 

I attach here my final DSDT, so everyone can use it.

 

Configuration:

- XPS 1330

- T7250 (2.0 ghz)

- Nvidia 8400GS

- Audio Sigmatel STAC9228

 

What works:

- USB

- Battery

- Speedstep

- Sleep

- Audio (only from jacks and not from speakers, but I don't think it's dsdt related)

 

What doesn't work:

- C-States

- Shutdown/restart

 

What isn't perfect:

- Audio problems waking up from the sleep

- USB problem waking up from the sleep, I have to unplug and plug again devices like USB to Ethernet adapter.

 

[EDIT: I changed a little the DSDT, previously I changed more than needed]

 

DSDT_1330_T7250_8400GS.dsl.zip

Link to comment
Share on other sites

I have made two changes, are both necessary or just one?

 

From my (limited) understanding of the interrupt handling, it should just be removal of the IRQ declarations that should do the trick - it essentially has to do with the timing of the IRQ assignments on bootup, so depending on the boot order timing the USB ports get a correct IRQ or not - removing the declaration simply leaves it up to the kernel to parse it.

 

Glad you found it useful!

 

Cheers

jkbuha

Link to comment
Share on other sites

From my (limited) understanding of the interrupt handling, it should just be removal of the IRQ declarations that should do the trick - it essentially has to do with the timing of the IRQ assignments on bootup, so depending on the boot order timing the USB ports get a correct IRQ or not - removing the declaration simply leaves it up to the kernel to parse it.

 

Now I had the time to try and yes, it was just the IRQ declaration :) thank you again!

 

listen, does your audio work? I have a problem with my STAC9228.. I use VoodooHDA, it works fine except that I can't hear anything from speakers, but just from headphones... both mics are also perfectly working...

 

 

@immo: maybe you could add the fix I posted to the main post...

Link to comment
Share on other sites

<br />Now I had the time to try and yes, it was just the IRQ declaration <img src="style_emoticons/default/wink_anim.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink_anim.gif" /> thank you again! <br /><br />listen, does your audio work? I have a problem with my STAC9228.. I use VoodooHDA, it works fine except that I can't hear anything from speakers, but just from headphones... both mics are also perfectly working...<br /><br /><br />@immo: maybe you could add the fix I posted to the main post...<br />

 

There's a modified VoodooHDA on the project osx website which allows for mics and speakers working - mine both work fine though I had to adjust the volume settings in the HDA prefpane. Otherwise they work fine (albeit a tad low volume for mic and speakers). Let me know if you'd like the link...

 

Now - anyone care to explain C-states and how I can enable them in my T8300 ;)

 

Cheers

jkbuha

Link to comment
Share on other sites

There's a modified VoodooHDA on the project osx website which allows for mics and speakers working - mine both work fine though I had to adjust the volume settings in the HDA prefpane. Otherwise they work fine (albeit a tad low volume for mic and speakers). Let me know if you'd like the link...

 

Now - anyone care to explain C-states and how I can enable them in my T8300 ;)

 

If you mean this one http://www.projectosx.com/forum/index.php?...;st=0#entry1165 I've already tried with both version posted... and nothing to do :(

 

About C-States, i'm trying to figure out how to make them work too.. I think we should get the CST table of a MacBookPro5,1 (the one specified in the smbios.plist) and use that or use that as a model...

Link to comment
Share on other sites

If you mean this one http://www.projectosx.com/forum/index.php?...;st=0#entry1165 I've already tried with both version posted... and nothing to do :(

 

About C-States, i'm trying to figure out how to make them work too.. I think we should get the CST table of a MacBookPro5,1 (the one specified in the smbios.plist) and use that or use that as a model...

 

I notice that you've configured the 9228 also in your DSDT (I haven't and it works fine) - could you check with my DSDT instead (just swap out the _PSS and NPSS bits for your T7250 as it won't work) and use the VoodooHDA kexts from that forum to see if it works?

 

Agreed re: MacBookPro5,1 - though I vaguely recall that proper Mac hardware uses MacBookPro4,1 when referring to the T8300. Not sure about the T7250 though, but it's definitely a start...

 

Cheers

jkbuha

Link to comment
Share on other sites

I notice that you've configured the 9228 also in your DSDT (I haven't and it works fine) - could you check with my DSDT instead (just swap out the _PSS and NPSS bits for your T7250 as it won't work) and use the VoodooHDA kexts from that forum to see if it works?

 

Agreed re: MacBookPro5,1 - though I vaguely recall that proper Mac hardware uses MacBookPro4,1 when referring to the T8300. Not sure about the T7250 though, but it's definitely a start...

 

Sorry but.. where? I followed immo's howto so I changed AZAL with HDEF and nothing more... and my HDEF section is the same as your :)

 

I'm thinking about 5,1 because with 4,1 I couldn't even get speedstep (it gave me an error regarding the P-States during boot, similar to C-states one), so I thought that 5,1 is more similar to our systems.. anyway it's just an idea...

 

I found DSDT dump from various macbook models here

Link to comment
Share on other sites

Ah ok - thought you had injected specific 9228 commands in your DSDT - my bad :)

 

One quick question - does sleep/wake work on your machine? I implemented the same _WAK and NWAK methods but the laptop attempts to go to sleep and comes back to life after one second! Do you have any sleepenabler or openhaltrestart kexts etc?

 

Cheers

jkbuha

Link to comment
Share on other sites

Ah ok - thought you had injected specific 9228 commands in your DSDT - my bad :)

 

One quick question - does sleep/wake work on your machine? I implemented the same _WAK and NWAK methods but the laptop attempts to go to sleep and comes back to life after one second! Do you have any sleepenabler or openhaltrestart kexts etc?

 

Cheers

jkbuha

 

I don't have SleepEnabler, OpenHaltRestart or other similar kext, and sleep works fine.. anyway, before this last DSDT revision, I had the same problem! Try to use my DSDT with your SPSS/PSS tables to figure out if it works... the only problem waking up is VoodooHDA that plays strange sounds, but I think it's a VoodooHDA problem :(

 

I'm giving a quick look at SSDT dumps of CST and they are quite different... in Apple one there is a ACST method that is not present! I'm going to try to copy apple sections to my dsdt... btw, do you know how could I see if C-states are loaded correctly? Surely I will not see the error at boot, but are there other methods?

 

Oh, another thing... I had problems loading custom DSDT from chameleon command line... if I put, for example, DSDT=/testingDSDT.aml it didn't work.. I don't know what loaded, maybe default settings (but not /DSDT.aml or /Extra one).. maybe I must specify the device name instead of just / ...

I understood this since I always got the same kernel panic when I tried another DSDT... and renaming the testing DSDT to the default name (so without any need for DSDT=...) it worked.

Link to comment
Share on other sites

I don't have SleepEnabler, OpenHaltRestart or other similar kext, and sleep works fine.. anyway, before this last DSDT revision, I had the same problem! Try to use my DSDT with your SPSS/PSS tables to figure out if it works... the only problem waking up is VoodooHDA that plays strange sounds, but I think it's a VoodooHDA problem ;)

 

Yep works like a treat with your DSDT - swapped out my PSS tables and am using your dsl atm.

 

I'm giving a quick look at SSDT dumps of CST and they are quite different... in Apple one there is a ACST method that is not present! I'm going to try to copy apple sections to my dsdt... btw, do you know how could I see if C-states are loaded correctly? Surely I will not see the error at boot, but are there other methods?

 

Mine don't load for sure - have a look in IORegistryExplorer and search for CSTinfo - if they load then you should find an entry somewhere (mine don't!)

Link to comment
Share on other sites

Yep works like a treat with your DSDT - swapped out my PSS tables and am using your dsl atm.

 

Mine don't load for sure - have a look in IORegistryExplorer and search for CSTinfo - if they load then you should find an entry somewhere (mine don't!)

 

I found an issue regarding sleep and USB... when the system wake up USB devices don't work, I have to unplug and replug them... this is a problem if you use internal fingerprint scanner (it's usb connected) because when you try to do something that needs authorization, a window pop up asking you for the fingerprint or for a password... fingerprint doesn't work, but the problem is that also if you put the password the authorization window freezes... moreover it should involve also bluetooth device and sdhc adapter (also if I haven't found a way to make it work)

Link to comment
Share on other sites

I found an issue regarding sleep and USB... when the system wake up USB devices don't work, I have to unplug and replug them... this is a problem if you use internal fingerprint scanner (it's usb connected) because when you try to do something that needs authorization, a window pop up asking you for the fingerprint or for a password... fingerprint doesn't work, but the problem is that also if you put the password the authorization window freezes... moreover it should involve also bluetooth device and sdhc adapter (also if I haven't found a way to make it work)

Interestingly enough I got this problem with USB ethernet when I tried testing a DSDT.aml with the DSDT=[file] boot flag, but it works fine normally... I'm not sure if the DropSSDT boot flag stays active when you specify the DSDT= flag at boot. I've tried putting in DropSSDT=y with the DSDT=[file] flag at boot instead of in the boot flags and it gave unstable behaviour (would freeze up for a few seconds then resume). Certainly there's something querky about the DSDT flag...

Link to comment
Share on other sites

Great, using the info in this thread I have now an almost vanilla Snow Leopard on a Dell Precision M4300. I have undervolted the processor and I'm waiting for C-States. Everything but restart/shutdown and broadcom ethernet is working. To make the Quadro FX360M works I need to change the "NVCAP" and add a "reg" entry to the GFX0 device. The info was get using an injector (NVenabler) and looking at IORegistrExplorer.

 

I am also having similar problems using the DSDT parameter to chameleon RC3, until this is fixed testing new DSDT is really painfull. Once it is solved we could try to get the C-States from the posted real macbook dsdt.

 

I have attched my patched DSDT (undervolting T9300). You could change the title of the post and add the Del Precision M4300, I suppose that for the Latitude D830 and D630 it should work the same way.

DSDT.zip

Link to comment
Share on other sites

I don't have SleepEnabler, OpenHaltRestart or other similar kext, and sleep works fine.. anyway, before this last DSDT revision, I had the same problem! Try to use my DSDT with your SPSS/PSS tables to figure out if it works... the only problem waking up is VoodooHDA that plays strange sounds, but I think it's a VoodooHDA problem :P

 

Sure it is.

 

It's a known bug of VoodooHDA.

You need to unload then reload the kext at wake up.

For now, you can use sleepwatcher to do that but Slice is working on this so a bug fix will certainly be released soon.

 

Last, thanks guys for making research on how to tweak our DSDT.

 

I'm looking at this post with much enthusiasm...

 

Good luck all.

 

Josh.

Link to comment
Share on other sites

Thanks to everyone for all the support and helpful hints/tips!

 

I've uploaded my latest version of the DSL file for the M1330 (T8300 undervolted but just add your own _PSS values for flavour/flavor). This version also includes SMBusPCI functionality derived from lspci.txt as per immo/FMulder's excellent tips - to verify if correctly loaded search in IORegistry for SMBus and a key with SBus@xx,x (mine is 1f,3) should appear.

 

The SBUS code was adapted from Master Chief's excellent P5K PRO DSDT guide here

 

Worth a look for any aspiring dsl gurus.

Let's try and encourage that mindset into evolving our Dell DSDT's similarly!

 

Cheers

jkbuha

dsdt_current.zip

Link to comment
Share on other sites

I am unable to create the .aml tables that contain any useful information, through Ubuntu.

 

The following is a copy of my terminal session. Do you see anything that I may have done wrong? I just get the following error:

acpi_os_map_memory: cannot open /dev/mem

 

 

To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

ubuntu@ubuntu:~$ sudo nano /etc/apt/sources.list
ubuntu@ubuntu:~$ sudo apt-get update
Ign cdrom://Ubuntu 9.04 _Jaunty Jackalope_ - Release amd64 (20090420.1) jaunty/main Translation-en_US
Ign cdrom://Ubuntu 9.04 _Jaunty Jackalope_ - Release amd64 (20090420.1) jaunty/restricted Translation-en_US
Get:1 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security Release.gpg [189B]                           
Ign [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/main Translation-en_US     
Get:2 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty Release.gpg [189B]
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/main Translation-en_US
Ign [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/restricted Translation-en_US
Ign [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/universe Translation-en_US
Get:3 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security Release [57.9kB]
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/restricted Translation-en_US
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/universe Translation-en_US
Get:4 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates Release.gpg [189B]
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/main Translation-en_US
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/restricted Translation-en_US
Ign [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/universe Translation-en_US
Get:5 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty Release [74.6kB]
Get:6 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates Release [57.9kB]
Get:7 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/main Packages [116kB]     
Get:8 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/main Packages [1251kB]                
Get:9 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/restricted Packages [2594B]
Get:10 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/main Sources [30.3kB]    
Get:11 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/restricted Sources [623B]      
Get:12 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/universe Packages [53.6kB]
Get:13 [url="http://security.ubuntu.com"]http://security.ubuntu.com[/url] jaunty-security/universe Sources [12.6kB]          
Get:14 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/restricted Packages [8858B]                                                                                         
Get:15 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/main Sources [555kB]                                                                                                
Get:16 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/restricted Sources [3156B]                                                                                          
Get:17 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/universe Packages [4732kB]                                                                                          
Get:18 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/universe Sources [2375kB]                                                                                           
Get:19 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/main Packages [193kB]                                                                                       
Get:20 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/restricted Packages [2594B]                                                                                 
Get:21 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/main Sources [54.8kB]                                                                                       
Get:22 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/restricted Sources [623B]                                                                                   
Get:23 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/universe Packages [74.4kB]                                                                                  
Get:24 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty-updates/universe Sources [21.2kB]                                                                                   
Fetched 9678kB in 2min 7s (76.0kB/s)                                                                                                                        
Reading package lists... Done
ubuntu@ubuntu:~$ sudo apt-get install acpidump
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
 acpidump
0 upgraded, 1 newly installed, 0 to remove and 253 not upgraded.
Need to get 16.5kB of archives.
After this operation, 94.2kB of additional disk space will be used.
Get:1 [url="http://archive.ubuntu.com"]http://archive.ubuntu.com[/url] jaunty/universe acpidump 20071116-1 [16.5kB]
Fetched 16.5kB in 0s (19.2kB/s)
Selecting previously deselected package acpidump.
(Reading database ... 103503 files and directories currently installed.)
Unpacking acpidump (from .../acpidump_20071116-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up acpidump (20071116-1) ...
ubuntu@ubuntu:~$ mkdir ACPI && dmesg | perl -we '$n=0; while (<>) { if (($t,$a,$l,$o) = (/^[^a-zA-Z]*ACPI: ([-._A-Z0-9]{4,4}) +([0-9A-F]{8,8}), ([0-9A-F]{4,4})+(?:\s*\(([^)]+))?/)) { $o && $o=~s/[^-._a-zA-Z0-9]+/-/g; ($cmd="acpidump -a $a -l $l > \"ACPI/${t}".($o?"_$o":"").".aml\""); print "Running command: \"$cmd\"\n"; system($cmd); ++$n; } } die("No match") unless $n;' && zip -r ACPI-Tables.zip ACPI
Running command: "acpidump -a 000FBC00 -l 0024 > "ACPI/RSDP_r2-DELL-.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF66F200 -l 005C > "ACPI/XSDT_r1-DELL-M08-27D80B13-ASL-61.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF66F09C -l 00F4 > "ACPI/FACP_r4-DELL-M08-27D80B13-ASL-61.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF66F800 -l 5733 > "ACPI/DSDT_r2-INT430-SYSFexxx-1001-INTL-20050624.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF67E000 -l 0040 > "ACPI/FACS.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF66F300 -l 0038 > "ACPI/HPET_r1-DELL-M08-1-ASL-61.aml""
acpi_os_map_memory: cannot open /dev/mem
Running command: "acpidump -a DF66F400 -l 0068 > "ACPI/APIC_r1-DELL-M08-27D80B13-ASL-47.aml""
acpi_os_map_memory: cannot open /dev/mem

Link to comment
Share on other sites

I am unable to create the .aml tables that contain any useful information, through Ubuntu.

 

The following is a copy of my terminal session. Do you see anything that I may have done wrong? I just get the following error:

acpi_os_map_memory: cannot open /dev/mem

sandwich.png

Link to comment
Share on other sites

sandwich.png

 

I'm not sure if that was meant to insult me or not, but it was helpful. After I Googled that picture and learned its meaning, I realized what I was doing wrong. Thanks.

 

I'm new to the OS X project and have very limited experience with Linux, so I apologize for my stupid question.

Link to comment
Share on other sites

 Share

×
×
  • Create New...