Jump to content

[GUIDE] Snow Leopard with 100% vanilla /S/L/E - Comprehensive DSDT patching guide


Silencers
 Share

125 posts in this topic

Recommended Posts

Can this DSDT thing be done for any hardware (almost any hardware) for which kexts may not be available... given enough time spent on it?

Or is it that certain HARDWARE will just not work at all?

 

Is it easier to do for hardware that has more info on their Windows / Linux / BSD drivers?

 

Especially Video, Sound & Wireless cards etc?

Link to comment
Share on other sites

  • 2 weeks later...

If you have ThinkPad T500, you're in luck, ready to use /Extra with basic instructions available here: http://www.insanelymac.com/forum/index.php?showtopic=216051

 

----------------------------------------------------------------------

 

I have a thinkpad r61i.

Now ,i use snow leopard 10.6.3 on my thinkpad.

but,I have three problem:

1 I dont want use voodoohda.kext.Can you use Legacy.kext and AppleHDA.kext to make sound work?

2 Atheros wireless's ID,I can't find it.(like your 168c,24)

3 When My thinkpad sleep,I can't make wake up.How to do ?

 

1. Not really. I have somewhat working solution, but it doesn't work straight after the boot (need to go to Sleep first and then wake up), microphone needs to be enabled from console and there are some sound glitches. VoodooHDA is the only way for us :)

2. Do you have it working? If yes, check in System Profiler. If not, you need to check IORegistryExplorer, it will show you if you ask nicely :)

3. This is VoodooHDA problem. For test, enable HDEF device in DSDT, make sure that you have vanilla AppleHDA. Disable VoodooHDA.kext and reboot. You will not have sound, but you will be able to Sleep and wake up.

Link to comment
Share on other sites

Hi Silencers, nice work! Any idea about native fan control injection in DSDT? Because now Im using AppleACPIThermal.kext by Prasys for activate the thermal zones (TZ0, TZ1...), but the extension break my sleep.

Link to comment
Share on other sites

Hi Silencers, nice work! Any idea about native fan control injection in DSDT? Because now Im using AppleACPIThermal.kext by Prasys for activate the thermal zones (TZ0, TZ1...), but the extension break my sleep.

Well, this is probably hardware dependent. I'm thinking about writing a custom kext for Thinkpads to allow fan control, but it cannot be universal solution I'm afraid. I've currently enabled in DSDT ThinkPad button. When I press it, fan swtiches off, when I press again - it switches to automatic mode.

Link to comment
Share on other sites

Has anyone upgraded to 10.6.3 with these DSDT fixes in place?

 

I just upgraded and it seemed to go smoothly until I tried to sleep, then I had a problem resuming. Sleeping itself works just fine, no errors or anything, but when I resume it just comes up to a blank blue screen with a movable mouse cursor.

 

Just wondering if anyone else has seen this or fixed it.

 

Thanks.

Link to comment
Share on other sites

Has anyone upgraded to 10.6.3 with these DSDT fixes in place?

 

I just upgraded and it seemed to go smoothly until I tried to sleep, then I had a problem resuming. Sleeping itself works just fine, no errors or anything, but when I resume it just comes up to a blank blue screen with a movable mouse cursor.

 

Just wondering if anyone else has seen this or fixed it.

I have upgraded to 10.6.3 as soon as it came out, had no problems. What configuration do you have?

Link to comment
Share on other sites

I have upgraded to 10.6.3 as soon as it came out, had no problems. What configuration do you have?

 

I'm running pretty much the same configuration you are. The only thing I've noticed different in my logs is now I'm getting the following error in /var/log/kernel.log

 

ACPI_SMC_CtrlLoop::loadStepperProgram - pmCPUControl (PMIOCSETPSTATESTEPPER) failed, result = 0x4

 

I've tried pfix and manual recreation of extension caches and permission fixes but so far no luck.

Link to comment
Share on other sites

I've tried pfix and manual recreation of extension caches and permission fixes but so far no luck.

That error means you have broken SpeedStep. Check my guide SpeedStep section on how to make it work for your particular CPU.

Link to comment
Share on other sites

  • 4 weeks later...

I have tested 10.6.3 on an Intel 965OT board with ATI 4850 PCIe graphics and so far it runs great. The only issue is Shut Down does not work. When it is selected, the machine appears to turn off correctly (power indeed turns off and fans and disk start to spin down) but the machine comes right back on and boots into OS X. I am new to the OSx86 thing and feel lucky to get where I have (had to install with different video card installed, etc.) Now both dual DVI outputs are working, sound is working, and audio is working. I have Sleepenabler.kext installed in S/L/E.

 

Do you think DSDT is the key to the system shutting down correctly, or could the restart fixed in the new bootloader discussed fix the problem? I am using standard Chameleon RC4.

 

Thank you.

Link to comment
Share on other sites

Do you think DSDT is the key to the system shutting down correctly, or could the restart fixed in the new bootloader discussed fix the problem? I am using standard Chameleon RC4.

With shutdown and restart there are might be various problems depending on the particular hardware you have. Most of the time you can sort problems by using either EvOReboot.kext or OpenHaltRestart.kext. Give them a try.

Link to comment
Share on other sites

With shutdown and restart there are might be various problems depending on the particular hardware you have. Most of the time you can sort problems by using either EvOReboot.kext or OpenHaltRestart.kext. Give them a try.

 

 

Thank you for the reply. I tried those individually using kext util, reboot, and tested shutdown and it still wanted to power back up. So far that seems to be the only "glitch" I have run into. It is an Intel board. Any other ideas?

 

Thank you

Link to comment
Share on other sites

Thank you for the reply. I tried those individually using kext util, reboot, and tested shutdown and it still wanted to power back up. So far that seems to be the only "glitch" I have run into. It is an Intel board. Any other ideas?

 

The only thing I can think of is to try something in BIOS. But also check this forum thoroughly, some people might have had this problem before.

Link to comment
Share on other sites

But what application do you use to view the extracted ACPI binary files? I have 5 SSDT binary files and I'm looking for the one with my CStates. Thanks.

It's easy, I use DSDTSE for compiling/decompiling binaries, and then any text editor.

Link to comment
Share on other sites

@Silencers, thanks. Actually, I just found out you had the answer in your post# 27 on how to open the *.bin files. I didn't realize I had to rename the *.bin to *.aml first.

 

Good point. Here are basic steps:

 

1. Rename all extracted tables to *.aml

2. Open each *.aml file with DSDTSE and then save as *.dsl

 

That's the beauty of DSDTSE, it can open binary *.aml files and decompile them automatically.

Link to comment
Share on other sites

  • 3 weeks later...

Hi Silencers.. I have been reading your guide over on the thinkpad forum. Glad you brought it here. Now I can ask you some question.. :-)

 

I have a lenovo 3000 N200 and some of the same things apply as a thinkpad, some but not all anyway.

 

1. I have following your guide and my first question is how did you figure out that OSX was picking up the p-states from the SSDT table? I do not think my p-states are being picked up? I have extracted all of my ACPI tables and can provide any of them. Can you help me figure out if I have native p-state detection?

 

According to thestevo and also eluded to in your guide there are two needed components to having working P-States controlled by AppleIntelCPUPowerManagement.

 

1. A DSDT with p-states defined.

 

2. The second step involves editing the macmodel plist in

 

/System/Library/Extensions/IOPlatformFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents add an entry under "PlimitDict"

 

I have made a DSDT with help from Kdawg and it has defined p-states and am able to boot with that in place but it does nothing, I still get the error in console about using native stepper. If I have native p-states id rather stick with that over what I made here as I dont know if its as good. Either way it wont load without the edit to ACPI_SMC_PP

 

Ok so I thought I had this 2nd part figured out since it involves just editing a plist so I followed your idea. I already have my model defined as MacBookPro4,1 as this model has the same CPU as my N200 a T9300. I wanted to keep my system vanilla and update proof so I am using your legacy kext idea to make the edits to the MacBookPro4,1.plist in ACPI_SMC_PlatforumPlugin.

 

Ok so let me tell you what I did. First I got legacy kext and I added under IOKitPersonalities an entry for ACPI_SMC_PlatformPlugin.

 

I got the values from the MacBookPro4_1.plist located in /System/Library/Extensions/IOPlatformFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

 

I copied from IOPlatformThermalProfile down to IOPlatformSensor.

 

All was imported properly under Plistedit Pro... Great app by the way. Just a lil buggy in SL but still worth the crashes.

 

I then opened up MacBookPro5,1 (this is one of the models where PlimitDict is defined according to thestevo) and copied the section with PLimitDict and placed it in the missing section of my new legacy kext to include the value in MacBookPro4,1.

 

Here is a copy of my Legacy kext Its all Vanilla except for the addition of PLimitDict value that was not in the MacBookPro4,1 kext.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.00D.driver.LegacyN200</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Legacy fixes for N200</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>999.9.9</string>
<key>IOKitPersonalities</key>
<dict>
	<key>ACPI_SMC_PlatformPlugin</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.apple.driver.ACPI_SMC_PlatformPlugin</string>
		<key>IOClass</key>
		<string>ACPI_SMC_PlatformPlugin</string>
		<key>IOPlatformThermalProfile</key>
		<dict>
			<key>ConfigArray</key>
			<array>
				<dict>
					<key>WWEN</key>
					<true/>
					<key>model</key>
					<string>MacBookPro4,1</string>
				</dict>
			</array>
			<key>ControlArray</key>
			<array>
				<dict>
					<key>Desc-Key</key>
					<string>CPU_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>10</integer>
					<key>location</key>
					<string>cpu plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>CPU_STATE</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>13</integer>
					<key>location</key>
					<string>cpu state</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>GPU_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>11</integer>
					<key>location</key>
					<string>gpu plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>GPU_STATE</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>14</integer>
					<key>location</key>
					<string>gpu state</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>MEM_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>12</integer>
					<key>location</key>
					<string>mem plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
			</array>
			<key>CreationDate</key>
			<string>Wed May 27 14:33:24 PDT 2009</string>
			<key>CtrlLoopArray</key>
			<array>
				<dict>
					<key>Description</key>
					<string>SMC_CPU_Control_Loop</string>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>PLimitDict</key>
					<dict>
						<key>MacBookPro4,1</key>
						<integer>0</integer>
					</dict>
					<key>StepDataDict</key>
					<dict>
						<key>MacBookPro4,1</key>
						<array>
							<dict>
								<key>num-states</key>
								<integer>6</integer>
								<key>program</key>
								<string>SP4</string>
							</dict>
						</array>
						<key>SP1</key>
						<data>
						6gQAAAEAAAIJAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACwgAABUA
						AAAUAAAAAQoAAAEAAAAB
						AAAA9QABDQAAAQAABf8A
						AQAAAAEAAAABBgAAAgAA
						AAQCAACsANMAfQDWAMMA
						KwcAAAIAAAABAAAAAQAA
						AAIAAAACAgAAAgYAAAEA
						AAABAAAA9QABDQAAAwAA
						Bf8AAwIAAAMGAAACAAAA
						BAAAAOAAyAAQDAAABQAA
						AAQAAAAFAAAABAAAAAMA
						AAABAAAABAYAAAIAAAAE
						AQAACQA9DAAAAwQAAAUA
						AAAEAgAABQYAAAEAAAAB
						AAAA6AADDQAABgAABf8A
						BQIAAAYGAAACAAAABAAA
						AEAAQgAPDAAACAAAAAcA
						AAAIAAAABwAAAAUAAAAB
						AAAABwYAAAIAAAAEAQAA
						CQA9DAAABgQAAAgAAAAG
						AgAACAYAAAEAAAABAAAA
						6AADDQAACQAABf8ABwIA
						AAkGAAACAAAABAAAAMAA
						zwBqDAAACwAAAAoAAAAL
						AAAACgAAAAcAAAABAAAA
						CgYAAAIAAAAEAQAACQA9
						DAAACQQAAAsAAAAIAgAA
						CwYAAAEAAAABAAAA6AAD
						DQAADAAABf8ACQIAAAwG
						AAACAAAABAAAAGAAGAAj
						DAAADgAAAA0AAAAOAAAA
						DQAAAAkAAAABAAAADQYA
						AAIAAAAEAQAACQA9DAAA
						DAQAAA4AAAAKAgAADgYA
						AAEAAAABAAAA6AADDQAA
						DwAABf8ACwIAAA8GAAAC
						AAAABAAAAEAArAAnDAAA
						EQAAABAAAAARAAAAEAAA
						AAsAAAABAAAAEAYAAAIA
						AAAEAQAACQA9DAAADwQA
						ABEAAAAMAgAAEQYAAAEA
						AAABAAAA9AABDQAAEgAA
						Bf8ADQIAABIGAAACAAAA
						BAIAAKwA0wB9ANYAwwAr
						BwAAEgAAABMAAAASAAAA
						EwAAAA0AAAABAAAAEwYA
						AAIAAAAEAQAACQA9DAAA
						EgQAABQAAAAOAgAAFAYA
						AAIAAAAEAAAAoACGAAEM
						AAACAAAAAgAAAAIAAAAC
						AAA=
						</data>
						<key>SP4</key>
						<data>
						UAUAAAEAAAIJAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACw0AAP8P
						AAALDQAA/w8AAAsNAAD/
						DwAACw0AAP8PAAALDQAA
						/w8AAAsNAAD/DwAACw0A
						AP8PAAALDQAA/w8AAAsN
						AAD/DwAACw0AAP8PAAAL
						DQAA/w8AAAsNAAD/DwAA
						Cw0AAP8PAAALDQAA/w8A
						AAsNAAD/DwAACwgAABgA
						AAAXAAAAAQoAAAEAAAAB
						AAAA9QABDQAAAQAABf8A
						AQAAAAEAAAABBgAAAgAA
						AAQCAACsANMAfQDWAMMA
						KwcAAAIAAAABAAAAAQAA
						AAIAAAACAgAAAgYAAAEA
						AAABAAAA9QABDQAAAwAA
						Bf8AAwIAAAMGAAACAAAA
						BAAAAOAAyAAQDAAABQAA
						AAQAAAAFAAAABAAAAAMA
						AAABAAAABAYAAAIAAAAE
						AQAACQA9DAAAAwQAAAUA
						AAAEAgAABQYAAAEAAAAB
						AAAA6AADDQAABgAABf8A
						BQIAAAYGAAACAAAABAAA
						AEAAQgAPDAAACAAAAAcA
						AAAIAAAABwAAAAUAAAAB
						AAAABwYAAAIAAAAEAQAA
						CQA9DAAABgQAAAgAAAAG
						AgAACAYAAAEAAAABAAAA
						6AADDQAACQAABf8ABwIA
						AAkGAAACAAAABAAAAOAA
						ZwA1DAAACwAAAAoAAAAL
						AAAACgAAAAcAAAABAAAA
						CgYAAAIAAAAEAQAACQA9
						DAAACQQAAAsAAAAIAgAA
						CwYAAAEAAAABAAAA6AAD
						DQAADAAABf8ACQIAAAwG
						AAACAAAABAAAAOAAZwA1
						DAAADgAAAA0AAAAOAAAA
						DQAAAAkAAAABAAAADQYA
						AAIAAAAEAQAACQA9DAAA
						DAQAAA4AAAAKAgAADgYA
						AAEAAAABAAAA6AADDQAA
						DwAABf8ACwIAAA8GAAAC
						AAAABAAAAGAAGAAjDAAA
						EQAAABAAAAARAAAAEAAA
						AAsAAAABAAAAEAYAAAIA
						AAAEAQAACQA9DAAADwQA
						ABEAAAAMAgAAEQYAAAEA
						AAABAAAA6AADDQAAEgAA
						Bf8ADQIAABIGAAACAAAA
						BAAAAEAArAAnDAAAFAAA
						ABMAAAAUAAAAEwAAAA0A
						AAABAAAAEwYAAAIAAAAE
						AQAACQA9DAAAEgQAABQA
						AAAOAgAAFAYAAAEAAAAB
						AAAA9AABDQAAFQAABf8A
						DwIAABUGAAACAAAABAIA
						AKwA0wB9ANYAwwArBwAA
						FQAAABYAAAAVAAAAFgAA
						AA8AAAABAAAAFgYAAAIA
						AAAEAQAACQA9DAAAFQQA
						ABcAAAAQAgAAFwYAAAIA
						AAAEAAAAoACGAAEMAAAC
						AAAAAgAAAAIAAAACAAA=
						</data>
					</dict>
					<key>ctrlloop-id</key>
					<integer>0</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
				<dict>
					<key>Description</key>
					<string>SMC_GPU_sensor_Control_Loop</string>
					<key>GPUPowerMgmtFloorArray</key>
					<array>
						<integer>1</integer>
					</array>
					<key>GPUThresholdDict</key>
					<dict>
						<key>MacBookPro4,1</key>
						<string>TA2</string>
						<key>TA2</key>
						<array>
							<dict>
								<key>high-threshold</key>
								<integer>20</integer>
								<key>low-threshold</key>
								<integer>0</integer>
								<key>threshold-method</key>
								<integer>1</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>41</integer>
								<key>low-threshold</key>
								<integer>25</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>72</integer>
								<key>low-threshold</key>
								<integer>50</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>100</integer>
								<key>history-length</key>
								<integer>1</integer>
								<key>low-threshold</key>
								<integer>88</integer>
							</dict>
						</array>
					</dict>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>SensorIDArray</key>
					<array>
						<integer>6</integer>
					</array>
					<key>ctrlloop-id</key>
					<integer>1</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
				<dict>
					<key>Description</key>
					<string>SMC_Memory_Control_Loop</string>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MCHThrottleDict</key>
					<dict>
						<key>MT3</key>
						<array>
							<dict>
								<key>DTC_WAB</key>
								<integer>32</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>32</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>32</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>32</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
						</array>
						<key>MacBookPro4,1</key>
						<string>MT3</string>
					</dict>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>ctrlloop-id</key>
					<integer>2</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
			</array>
			<key>SensorArray</key>
			<array>
				<dict>
					<key>Desc-Key</key>
					<string>GPU</string>
					<key>IOClass</key>
					<string>IOPlatformSensor</string>
					<key>sensor-id</key>
					<integer>6</integer>
				</dict>
			</array>
		</dict>
	</dict>
	<key>IOProbeScore</key>
	<integer>1000</integer>
	<key>IOPropertyMatch</key>
	<dict>
		<key>IOCPUNumber</key>
		<integer>0</integer>
	</dict>
	<key>IOProviderClass</key>
	<string>AppleACPICPU</string>
	<key>IOResourceMatch</key>
	<string>ACPI</string>
</dict>
<key>OSBundleLibraries</key>
<dict>
	<key>com.apple.iokit.IOGraphicsFamily</key>
	<string>1.1</string>
	<key>com.apple.iokit.IOPCIFamily</key>
	<string>1.0</string>
	<key>com.apple.kpi.iokit</key>
	<string>8.3.1</string>
	<key>com.apple.kpi.libkern</key>
	<string>8.3.1</string>
	<key>com.apple.kpi.mach</key>
	<string>8.3.1</string>
</dict>
<key>OSBundleRequired</key>
<string>Local-Root</string>
</dict>
</plist>

 

I still see in the console This warning.. WARNING - ACPI_SMC_CtrlLoop::initCPUCtrlLoop - no sub-config match for MacBookPro4,1 with 6 p-states, using default stepper instead

 

So obviously I did something wrong with my plist edit but what? I thought I understood the concept right from your topic. Maybe Its not pointing at the right plist to edit. I did not want to make up a new mac model as mine so closely matches the MacBook4,1 (same GPU) and MacBookPro4,1 (same CPU) I use the latter because it has the same CPU. so I stuck with editing the plist that were already there.

 

Can you take a look at this and tell me what I missed? Are there more values then the PlimitDict that I need to include?

 

Thanks

00D

Link to comment
Share on other sites

I have a lenovo 3000 N200 and some of the same things apply as a thinkpad, some but not all anyway.

 

1. I have following your guide and my first question is how did you figure out that OSX was picking up the p-states from the SSDT table? I do not think my p-states are being picked up? I have extracted all of my ACPI tables and can provide any of them. Can you help me figure out if I have native p-state detection?

 

Well, your luck with p-states heavily depends on your BIOS. I've checked all SSDT tables of my ACPI and all p-states were already defined there. The next step was to enable Plimit=0 (this means that the minimal p-state can be ID=0, which is the lowest frequency defined).

 

To check if you are in luck you should open IORegistryExplorer and then ACPI_SMC_PlatformPlugin. Value "PerfrmanceStateArray" should be set and contain more than one value (I have 5). You can also check if CPUPlimit is set to 0x0, but by default it usually set to the maximum p-state ID (total p-states - 1).

 

According to thestevo and also eluded to in your guide there are two needed components to having working P-States controlled by AppleIntelCPUPowerManagement.

 

1. A DSDT with p-states defined.

 

2. The second step involves editing the macmodel plist in

 

/System/Library/Extensions/IOPlatformFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents add an entry under "PlimitDict"

Well, all points are true, but with ThinkPads (at least series 60) p-states are properly defined in SSDT tables and are picked by OSX automatically, so no need to edit DSDT.

 

With the second step I actually describe how to do the same thing from /E/E. I simply create a legacy kext and override data for the model I chosen. This allows to keep /S/L/E 100% vanilla. But PLimitDic=0 is the correct way to enable p-states (but not to define them).

 

I have made a DSDT with help from Kdawg and it has defined p-states and am able to boot with that in place but it does nothing, I still get the error in console about using native stepper. If I have native p-states id rather stick with that over what I made here as I dont know if its as good. Either way it wont load without the edit to ACPI_SMC_PP

Try to boot without any p-states related changes in DSDT and check IORegistryExplorer as described above. If you see PerformanceStateArray defined, than you have p-states already and only need to enable them.

 

Ok so I thought I had this 2nd part figured out since it involves just editing a plist so I followed your idea. I already have my model defined as MacBookPro4,1 as this model has the same CPU as my N200 a T9300. I wanted to keep my system vanilla and update proof so I am using your legacy kext idea to make the edits to the MacBookPro4,1.plist in ACPI_SMC_PlatforumPlugin.

 

Ok so let me tell you what I did. First I got legacy kext and I added under IOKitPersonalities an entry for ACPI_SMC_PlatformPlugin.

 

I got the values from the MacBookPro4_1.plist located in /System/Library/Extensions/IOPlatformFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources

 

I copied from IOPlatformThermalProfile down to IOPlatformSensor.

 

All was imported properly under Plistedit Pro... Great app by the way. Just a lil buggy in SL but still worth the crashes.

Never crashed for me :)

 

I then opened up MacBookPro5,1 (this is one of the models where PlimitDict is defined according to thestevo) and copied the section with PLimitDict and placed it in the missing section of my new legacy kext to include the value in MacBookPro4,1.

I don't think that there are any models except for one of the early MacPro which have Plimit unlocked. And you should always copy plist from your close model, and then make some additions.

 

I still see in the console This warning.. WARNING - ACPI_SMC_CtrlLoop::initCPUCtrlLoop - no sub-config match for MacBookPro4,1 with 6 p-states, using default stepper instead

 

So obviously I did something wrong with my plist edit but what? I thought I understood the concept right from your topic. Maybe Its not pointing at the right plist to edit. I did not want to make up a new mac model as mine so closely matches the MacBook4,1 (same GPU) and MacBookPro4,1 (same CPU) I use the latter because it has the same CPU. so I stuck with editing the plist that were already there.

 

Can you take a look at this and tell me what I missed? Are there more values then the PlimitDict that I need to include?

I had a brief look at the part from plist you copied, and it looks as it is missing a few parts. For example, in ConfigArray you don't have restart-actions->cpu-p-state=0. I have it, not sure how important it is. Below I copied my entire ACPI_SMC_PlatformPlugin section, please check carefully for the stuff you don't have.

 

I would also suggest you to create new model, not to use the real one. For example, my T60p is very close to MacBookPro2,1, so I "created" new model MacBookPro2,3 (2,2 is also a real one). This way you ensure that system optimizations for a particular model (there might be some, who knows for sure?) don't interfere with your changes.

 

Also, make sure you regenerate kext caches with pfix after any changes in your legacy kext. Otherwise changes won't get picked up.

 

My ACPI_SMC_PlatformPlugin section in my legacy kext.

	<key>ACPI_SMC_PlatformPlugin</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.apple.driver.ACPI_SMC_PlatformPlugin</string>
		<key>IOClass</key>
		<string>ACPI_SMC_PlatformPlugin</string>
		<key>IOPlatformThermalProfile</key>
		<dict>
			<key>CStateDemotionDict</key>
			<dict>
				<key>MacBookPro2,3</key>
				<string>CSDD_std1</string>
				<key>Xserve3,1</key>
				<string>CSDD_std1</string>
			</dict>
			<key>CStateDict</key>
			<dict>
				<key>CSD1</key>
				<dict>
					<key>C1</key>
					<dict>
						<key>enable</key>
						<true/>
						<key>flags</key>
						<integer>16777216</integer>
						<key>hint_code</key>
						<integer>0</integer>
						<key>snoop</key>
						<integer>80000</integer>
					</dict>
				</dict>
				<key>CSD2</key>
				<dict>
					<key>C5Add</key>
					<dict>
						<key>enable</key>
						<true/>
						<key>exit_reg</key>
						<dict>
							<key>desc</key>
							<string>C5_EXIT</string>
							<key>offset</key>
							<integer>168</integer>
							<key>regFlags</key>
							<integer>134217728</integer>
							<key>type</key>
							<integer>1</integer>
							<key>width</key>
							<integer>32</integer>
						</dict>
						<key>level_reg</key>
						<dict>
							<key>desc</key>
							<string>C5_LVL</string>
							<key>offset</key>
							<integer>23</integer>
							<key>regFlags</key>
							<integer>134217728</integer>
							<key>type</key>
							<integer>2</integer>
							<key>width</key>
							<integer>32</integer>
						</dict>
						<key>primRes</key>
						<dict>
							<key>ConvM</key>
							<integer>1000</integer>
							<key>ConvN</key>
							<integer>279365</integer>
							<key>desc</key>
							<string>C3_RES</string>
							<key>maskCntr</key>
							<integer>16777215</integer>
							<key>offset</key>
							<integer>84</integer>
							<key>regFlags</key>
							<integer>134494208</integer>
							<key>shiftCState</key>
							<integer>3</integer>
							<key>type</key>
							<integer>2</integer>
							<key>width</key>
							<integer>32</integer>
						</dict>
						<key>secRes</key>
						<dict>
							<key>ConvM</key>
							<integer>1000</integer>
							<key>ConvN</key>
							<integer>279365</integer>
							<key>desc</key>
							<string>C5_RES</string>
							<key>maskCntr</key>
							<integer>16777215</integer>
							<key>offset</key>
							<integer>88</integer>
							<key>regFlags</key>
							<integer>134494208</integer>
							<key>shiftCState</key>
							<integer>5</integer>
							<key>type</key>
							<integer>2</integer>
							<key>width</key>
							<integer>32</integer>
						</dict>
						<key>snoop</key>
						<integer>55000</integer>
					</dict>
				</dict>
				<key>CSD3</key>
				<dict>
					<key>C6</key>
					<dict>
						<key>enable</key>
						<false/>
					</dict>
				</dict>
				<key>CSD4</key>
				<dict>
					<key>C2</key>
					<dict>
						<key>enable</key>
						<true/>
					</dict>
					<key>C3</key>
					<dict>
						<key>enable</key>
						<true/>
					</dict>
					<key>C4</key>
					<dict>
						<key>enable</key>
						<true/>
					</dict>
					<key>C5</key>
					<dict>
						<key>enable</key>
						<false/>
					</dict>
					<key>C6</key>
					<dict>
						<key>enable</key>
						<false/>
					</dict>
					<key>C7</key>
					<dict>
						<key>enable</key>
						<false/>
					</dict>
				</dict>
				<key>MacBookPro2,3</key>
				<string>CSD4</string>
			</dict>
			<key>ConfigArray</key>
			<array>
				<dict>
					<key>model</key>
					<string>MacBookPro2,3</string>
					<key>restart-actions</key>
					<dict>
						<key>cpu-p-state</key>
						<integer>0</integer>
					</dict>
				</dict>
			</array>
			<key>ControlArray</key>
			<array>
				<dict>
					<key>Desc-Key</key>
					<string>CPU_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>10</integer>
					<key>location</key>
					<string>cpu plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>CPU_STATE</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>13</integer>
					<key>location</key>
					<string>cpu state</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>GPU_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>11</integer>
					<key>location</key>
					<string>gpu plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>GPU_STATE</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>14</integer>
					<key>location</key>
					<string>gpu state</string>
					<key>type</key>
					<string>smc</string>
				</dict>
				<dict>
					<key>Desc-Key</key>
					<string>MEM_PLIMIT</string>
					<key>IOClass</key>
					<string>AppleSMCControl</string>
					<key>control-flags</key>
					<integer>2</integer>
					<key>control-id</key>
					<integer>12</integer>
					<key>location</key>
					<string>mem plimit</string>
					<key>type</key>
					<string>smc</string>
				</dict>
			</array>
			<key>CreationDate</key>
			<string>Tue May 26 13:39:41 PDT 2009</string>
			<key>CtrlLoopArray</key>
			<array>
				<dict>
					<key>Description</key>
					<string>SMC_CPU_Control_Loop</string>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>PLimitDict</key>
					<dict>
						<key>MacBookPro2,3</key>
						<integer>0</integer>
					</dict>
					<key>StepDataDict</key>
					<dict>
						<key>MacBookPro2,3</key>
						<string>SP1</string>
						<key>SP1</key>
						<data>
						qAYAAAAAAAEAAgQAACEA
						AAACAAAB//8A/wD/AP8A
						/wD/AAYAAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsP
						AAD/AQAD/wALDwAA/wEA
						A/8ACw8AAP8BAAP/AAsK
						AAABCgAAAQAAAAEAAAD1
						AAEFAAABAAAF/wABAAAA
						AQAAAAEGAAACAAAABAEA
						AIAAwwC3AC4ANAALAAAA
						AgAAAAEAAAABAAAAAgAA
						AAICAAACBgAAAQAAAAEA
						AAD1AAEFAAADAAAF/wAD
						AgAAAwYAAAkAAAAEAAAA
						TAAEBQAABAAABf8AAwAA
						AAEAAAAEBAAAgAAAAAoK
						AAAIAAAABQAAAAgAAAAF
						AAAAAwAAAAIAAAAFBgAA
						BwAAAAEAAAD1AAEFAAAG
						AAAF/wADAAAAAwAAAAYG
						AAACAAAABAAAAKAADwUA
						AAcEAAAHAAAAAwAAAAQA
						AAAHBgAACAoAAAMAAAX/
						AAQCAAAIBgAAAQAAAAEA
						AADoAAMFAAAJAAAF/wAF
						AgAACQYAAAIAAAAEAAAA
						6AADBQAADQAAAAoAAAAN
						AAAACgAAAAUAAAABAAAA
						CgYAAAcAAAABAAAA9QAB
						BQAACwAABf8ABQAAAAIA
						AAALBgAAAgAAAAQAAACg
						AA8FAAAMBAAADAAAAAUA
						AAADAAAADAYAAAgKAAAJ
						AAAF/wAGAgAADQYAAAEA
						AAABAAAA6AADBQAADgAA
						Bf8ABwIAAA4GAAACAAAA
						BAAAAFgAGwUAABIAAAAP
						AAAAEgAAAA8AAAAHAAAA
						AQAAAA8GAAAHAAAAAQAA
						APUAAQUAABAAAAX/AAcA
						AAACAAAAEAYAAAIAAAAE
						AAAAoAAPBQAAEQQAABEA
						AAAHAAAAAwAAABEGAAAI
						CgAADgAABf8ACAIAABIG
						AAABAAAAAQAAAOgAAwUA
						ABMAAAX/AAkCAAATBgAA
						AgAAAAQAAAD8AAgFAAAX
						AAAAFAAAABcAAAAUAAAA
						CQAAAAEAAAAUBgAABwAA
						AAEAAAD1AAEFAAAVAAAF
						/wAJAAAAAgAAABUGAAAC
						AAAABAAAAKAADwUAABYE
						AAAWAAAACQAAAAMAAAAW
						BgAACAoAABMAAAX/AAoC
						AAAXBgAAAQAAAAEAAADo
						AAMFAAAYAAAF/wALAgAA
						GAYAAAIAAAAEAAAAKAAK
						BQAAHAAAABkAAAAcAAAA
						GQAAAAsAAAABAAAAGQYA
						AAcAAAABAAAA9QABBQAA
						GgAABf8ACwAAAAIAAAAa
						BgAAAgAAAAQAAACgAA8F
						AAAbBAAAGwAAAAsAAAAD
						AAAAGwYAAAgKAAAYAAAF
						/wAMAgAAHAYAAAEAAAAB
						AAAA9AABBQAAHQAABf8A
						DQIAAB0GAAACAAAABAEA
						AIAAwwC3AC4ANAALAAAA
						HQAAAB4AAAAdAAAAHgAA
						AA0AAAABAAAAHgYAAAcA
						AAABAAAA9QABBQAAHwAA
						Bf8ADQAAAAIAAAAfBgAA
						AgAAAAQAAACgAA8FAAAg
						BAAAIAAAAA0AAAADAAAA
						IAYAAAgKAAAdAAAF/w==
						</data>
					</dict>
					<key>ctrlloop-id</key>
					<integer>0</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
				<dict>
					<key>Description</key>
					<string>SMC_GPU_sensor_Control_Loop</string>
					<key>GPUPowerMgmtFloorArray</key>
					<array>
						<integer>1</integer>
					</array>
					<key>GPUThresholdDict</key>
					<dict>
						<key>MacBookPro2,3</key>
						<string>TA1</string>
						<key>TA1</key>
						<array>
							<dict>
								<key>high-threshold</key>
								<integer>22</integer>
								<key>low-threshold</key>
								<integer>0</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>30</integer>
								<key>low-threshold</key>
								<integer>23</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>90</integer>
								<key>low-threshold</key>
								<integer>31</integer>
							</dict>
							<dict>
								<key>high-threshold</key>
								<integer>100</integer>
								<key>low-threshold</key>
								<integer>91</integer>
							</dict>
						</array>
					</dict>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>SensorIDArray</key>
					<array>
						<integer>6</integer>
					</array>
					<key>ctrlloop-id</key>
					<integer>1</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
				<dict>
					<key>Description</key>
					<string>SMC_Memory_Control_Loop</string>
					<key>IOClass</key>
					<string>ACPI_SMC_CtrlLoop</string>
					<key>MCHThrottleDict</key>
					<dict>
						<key>MT1</key>
						<array>
							<dict>
								<key>DTC_WAB</key>
								<integer>32</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>24</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>16</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>0</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
							<dict>
								<key>DTC_WAB</key>
								<integer>10</integer>
								<key>DTC_WAT</key>
								<integer>0</integer>
								<key>GTC_WAB</key>
								<integer>15</integer>
								<key>GTC_WAT</key>
								<integer>15</integer>
							</dict>
						</array>
						<key>MacBookPro2,3</key>
						<string>MT1</string>
					</dict>
					<key>MetaStateArray</key>
					<array>
						<dict>
							<key>Description</key>
							<string>Normal</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>Reduced Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User Low Power</string>
						</dict>
						<dict>
							<key>Description</key>
							<string>User High Power</string>
						</dict>
					</array>
					<key>ctrlloop-id</key>
					<integer>2</integer>
					<key>is-state-driven</key>
					<integer>1</integer>
				</dict>
			</array>
			<key>SensorArray</key>
			<array>
				<dict>
					<key>Desc-Key</key>
					<string>GPU</string>
					<key>IOClass</key>
					<string>IOPlatformSensor</string>
					<key>sensor-id</key>
					<integer>6</integer>
				</dict>
			</array>
		</dict>
		<key>IOProbeScore</key>
		<integer>1000</integer>
		<key>IOPropertyMatch</key>
		<dict>
			<key>IOCPUNumber</key>
			<integer>0</integer>
		</dict>
		<key>IOProviderClass</key>
		<string>AppleACPICPU</string>
		<key>IOResourceMatch</key>
		<string>ACPI</string>
	</dict>

Link to comment
Share on other sites

I've checked all SSDT tables of my ACPI and all p-states were already defined there. The next step was to enable Plimit=0 (this means that the minimal p-state can be ID=0, which is the lowest frequency defined).

To check if you are in luck you should open IORegistryExplorer and then ACPI_SMC_PlatformPlugin. Value "PerfrmanceStateArray" should be set and contain more than one value (I have 5). You can also check if CPUPlimit is set to 0x0, but by default it usually set to the maximum p-state ID (total p-states - 1).

 

I have a SSDT-2 which appears to have all of them defined and I think c-states also.. Were yours in your SSDT-2 table? I know what they should look like but my names are a lot different then what I've seen. Also as for c-states I dont have C1M1-4 or anything close. I do have values of TSSI & TSSM which looks like p-states. Anyway I was just curious what I was looking at and if they were all there. You can see my attached ioreg pic as it tells I have 9 pstates and c-states also looks like there working. I'm luckier then you in that respect.

 

 

But PLimitDic=0 is the correct way to enable p-states (but not to define them).

 

Ok so I have that value but its odd. On some boots I get a clock between 1200-2500mhz and other times I get no stepping. On this boot I am getting

hw.cpufrequency_min: 2493000000

hw.cpufrequency_max: 2493000000

 

Last boot I got:

hw.cpufrequency_min: 1200000000

hw.cpufrequency_max: 2500000000

 

I'm also seeing this in console over and over again. com.apple.launchd.peruser.502[97] (com.prosofteng.DGMonitor) Throttling respawn: Will start in 10 seconds

 

com.apple.launchd.peruser.502[97] (com.prosofteng.DGMonitor[2388]) Exited with exit code: 1

 

Is that because I have the p-states defined but not enabled properly? Again see my ioreg pic. Might also be that I need to add more values to the MacBook4,1 plist I used in my legacy kext. But that brings up another question how does a real MacBook4,1 speedstep with just that single plist located in ACPI_SMC_PlatformPlugin.kext/Contents/Resources. It must be because it has the p-states in the SSDT table and it knows which ones to use and in mine I have to tell it more. Still looking at the MacBookPro4,1 which has my same CPU the SMC plist looks almost the same but it does have StepDataDict both SP1 and SP4 where MacBook4,1 only has SP1.. Could the SP4 be for my t9300? Will I be ok just combining the Missing parts of the MacBook4,1 with the additions that the MacBookPro4,1 has? In yours you added all kinds of stuff for c-states also. Where did you get that from? Should I add that? How do I know c-states are working?

 

 

 

I would also suggest you to create new model, not to use the real one. For example, my T60p is very close to MacBookPro2,1, so I "created" new model MacBookPro2,3 (2,2 is also a real one). This way you ensure that system optimizations for a particular model (there might be some, who knows for sure?) don't interfere with your changes.

 

See this I dont get. If I create a new mac model wont this mess with other parts of OSX. My closest model match is MacBook4,1 matches chipset and GPU but not CPU exactly T8300 vs T9300. The MacBookPro4,1 has my same CPU T9300 but not GPU. Having my system think its a MacBook4,1 is good for other parts of OSX right? Having a model that does not exist could lead to other issues.

 

In smbios.plist there are 3 parts that concern model info. SMbiosversion, SMproductname and SMserial

 

What about the SMbiosversion? Do I also change the model in there? So MB41.88Z to MB42.88Z for example. The serial number I am using is from a real mac. I'd like to keep that also but using a different model number with that serial number could lead to issues. Or do you know if there would be any? Or did you only change the product name and forget the rest and have had no issues?

 

Silencer thank you so much....

post-155458-1278045328_thumb.png

Link to comment
Share on other sites

I have a SSDT-2 which appears to have all of them defined and I think c-states also.. Were yours in your SSDT-2 table? I know what they should look like but my names are a lot different then what I've seen. Also as for c-states I dont have C1M1-4 or anything close. I do have values of TSSI & TSSM which looks like p-states. Anyway I was just curious what I was looking at and if they were all there. You can see my attached ioreg pic as it tells I have 9 pstates and c-states also looks like there working. I'm luckier then you in that respect.

I have {censored}load of various SSDT tables, c-states and p-states are all over the place there. C-states are not picked up automatically, but p-states do.

 

Regarding c-states, you might use some generic solutions. C-state 0 is the same for all CPUs, you should be able to have at least that.

 

Ok so I have that value but its odd. On some boots I get a clock between 1200-2500mhz and other times I get no stepping. On this boot I am getting

hw.cpufrequency_min: 2493000000

hw.cpufrequency_max: 2493000000

 

Last boot I got:

hw.cpufrequency_min: 1200000000

hw.cpufrequency_max: 2500000000

I suggest you to try wither MSR Tools or VoodooMeter-something (don't remember now), they show actual stepping in real time.

 

I'm also seeing this in console over and over again. com.apple.launchd.peruser.502[97] (com.prosofteng.DGMonitor) Throttling respawn: Will start in 10 seconds

com.apple.launchd.peruser.502[97] (com.prosofteng.DGMonitor[2388]) Exited with exit code: 1

Weird stuff. looks like you have some third party software doing something (com.prosofteng.DGMonitor). Remove it and check again. Also, throttling should not be enabled by default.

 

Is that because I have the p-states defined but not enabled properly? Again see my ioreg pic. Might also be that I need to add more values to the MacBook4,1 plist I used in my legacy kext. But that brings up another question how does a real MacBook4,1 speedstep with just that single plist located in ACPI_SMC_PlatformPlugin.kext/Contents/Resources. It must be because it has the p-states in the SSDT table and it knows which ones to use and in mine I have to tell it more. Still looking at the MacBookPro4,1 which has my same CPU the SMC plist looks almost the same but it does have StepDataDict both SP1 and SP4 where MacBook4,1 only has SP1.. Could the SP4 be for my t9300? Will I be ok just combining the Missing parts of the MacBook4,1 with the additions that the MacBookPro4,1 has? In yours you added all kinds of stuff for c-states also. Where did you get that from? Should I add that? How do I know c-states are working?

Well, real Macs have other hardware and they don't have BIOS per se or something close to that. They might be picking p-states someplace else, or they do have ACPI tables properly defined or something.

 

I don't think your p-states are wrong or not working. But to be sure, install IORegistryExplorer and check under Apple_SMC_PlatformPlugin CSTInfo (should be set) and PerformanceStateArray (should have more than one value) and CPUPLimit (should be 0).

 

See this I dont get. If I create a new mac model wont this mess with other parts of OSX.

It won't, and it is better that way. No matter how close your hardware is to a real Mac, it's not Mac. Some software relying on some particular features of your set model might cause kernel panics or something else, because they will be accessing some hardware that you don't have.

 

What about the SMbiosversion? Do I also change the model in there? So MB41.88Z to MB42.88Z for example. The serial number I am using is from a real mac. I'd like to keep that also but using a different model number with that serial number could lead to issues. Or do you know if there would be any? Or did you only change the product name and forget the rest and have had no issues?

Don't bother much with real serial number and real bios version. You indeed need to change MB41 to MB42. No issues will come out of serial numbers, etc. I'm using T60p with OSX being only one OS installed for almost 8 months now, and it has been wonderful to me.

Link to comment
Share on other sites

Silencers.. You were right.. I do need the fake model number. That makes no sense but now voodoo monitor shows steps between 600mhz-2500mhz. With macbook4,1 I got a frozen step and it always changed. Thats why each boot was showing different values..

 

You were right about DGmonitor.. Its from an old speedstep app.

 

 

StepDataDict value machookpro4,1.plist has SP1 and SP4 where MacBook4,1 only has SP1.. Could the SP4 be different voltage values for the steps or are those in the SSDT tables? Do you know what the SP1 and SP4 is exactly or no clue? Is that the performance state array in ioregistry? It has to be the values look the same as in the plist file. Can you confirm that?

 

As for c-states.. If you looked at my pic from my last post: http://www.insanelymac.com/forum/index.php...st&id=73779

 

It shows CSTinfo which means the c-states are there but does that only mean c-state 0 like you said? How can I tell if the rest are there or not? How did you tell you had them working once you added the DSDT c-state info?

 

Also when I run dmesg | grep ACPI gives me no system state. Could that be related to c-states? I know its related to sleep.

Link to comment
Share on other sites

StepDataDict value machookpro4,1.plist has SP1 and SP4 where MacBook4,1 only has SP1.. Could the SP4 be different voltage values for the steps or are those in the SSDT tables? Do you know what the SP1 and SP4 is exactly or no clue? Is that the performance state array in ioregistry? It has to be the values look the same as in the plist file. Can you confirm that?

I'm not really sure what SP1 and SP4 strings are. If you compare them between different models, they look the same, so it's not stepping data. But these are essential for vanilla stepping to work, you should copy all values from the model you are mimicking.

 

It shows CSTinfo which means the c-states are there but does that only mean c-state 0 like you said? How can I tell if the rest are there or not? How did you tell you had them working once you added the DSDT c-state info?

You have c-states working correctly, all values are set to values that they need to be at. CSTInfo should be 0x1240105 and CStateOverride should be True.

 

When I said about value 0x0 or 0, this is for CPUPlimit, and it is related to speed stepping. c-states and p-states are independent from each other.

 

Also when I run dmesg | grep ACPI gives me no system state. Could that be related to c-states? I know its related to sleep.

You won't be able to check anything with that command. ACPI is not writing anything into boot log, unless there are errors.

Link to comment
Share on other sites

I wanted to take a few days to run some tests but I do still have some problems with speedstep.

 

CStateOverride should be True.

 

I dont have the value c-state override. Is that a problem?

 

Maybe it would help if I knew what c-states were. Are c-states temp steps for the CPU to tell when to punch the fan higher to compensate for higher temps? Or what are they exactly?

 

There are 2 models that kinda fit my PC. MB4,1 and MBP4,1. I decided to use the MBP4,1 for the c-state dictionary entry but then saw it had no entry at all in the c-state dictionary. The MB4,1 had 1 entry in the c-state dictionary but just to turn off C6. I decided to leave out the c-state dictionary entry all together reading that if the entry is not there at all it makes all c-states available. This may not be right but do you have any thoughts on that?

 

I just the update to 10.6.4 and it worked like a charm but I see that there are a few things off in IOregistry explorer. I no longer have many of the values I had in there before for smc. I no longer have CPUPlimit entry any longer for example. It also has stopped stepping and gets stuck at a single step again. Now I know the first thing your thinking is I need to update the bundles entry in my legacy kext. I had it updated before I made the change over actually. So all my bundle libraries say 8.4 now.

 

You won't be able to check anything with that command. ACPI is not writing anuything into boot log, unless there are errors.

 

You were right about system state. It shows as S3 in kernel log so thats not my problem with sleep. Have you gotten anywhere with your sleep? I think we have the same sleep issue. I can never autosleep and forced sleep results in no wake up and forced reboot for me.

 

Also take a look at this.. http://www.insanelymac.com/forum/index.php...1631&st=380

 

In particular the SBUS post by 399 by master cheif. Its interesting I was looking at that and noticed before I did not have all of those kext loaded in the first list which was good. But I also did not have all the ones in the second list which was bad. Now in 10.6.4 I have almost all of those bad ones loaded and only 1 of the good ones. So its gotten worse.

 

I took a look in my kextstat and look at this..

 

51 0 0x553ec000 0x3000 0x2000 com.apple.driver.AppleFileSystemDriver (2.0) <18 4 3>3 1>

62 0 0x5b470000 0x7000 0x6000 com.apple.iokit.SCSITaskUserClient (2.6.5) <54 18 5 4 3 1>

83 0 0x5b927000 0x7000 0x6000 com.apple.driver.AppleIntelMeromProfile (19) <73 6 5 4 3> <-- NOT MY CPU

96 0 0x5ba9f000 0x8000 0x7000 com.apple.driver.AppleIntelNehalemProfile (11) <73 6 4 3> <-- NOT MY CPU

103 0 0x5bb2b000 0x5000 0x4000 com.apple.driver.AppleIntelYonahProfile (14) <73 6 4 3> <-- NOT MY CPU

110 0 0x54e3f000 0x9000 0x8000 com.apple.driver.AppleTyMCEDriver (1.0.1d8) <77 14 13 7 6 5 4 3 1>

 

Off the good list I only have 35 1 0x55185000 0x3000 0x2000 com.apple.iokit.IOSMBusFamily (1.1) <5 4 3>

 

My cpu is com.apple.driver.AppleIntelPenrynProfile (17) <73 6 4 3> which is also loaded but I dont need the rest of them and they prob cause more trouble there there worth.

 

This is related to sbus and IDentifying it correctly. This brings me to this topic by the king here.

 

http://www.projectosx.com/forum/lofiversio...x.php/t889.html

 

Now hes talking about a sleep fix which the system will not ID sbus after a wake. I dont have this fix because I'm dump when it comes to the DSDT and cant figure out how to input it without 130 errors but I propose if I did have this in my DSDT I might be able to sleep it also might help with the extra kext being loaded that masterchief is talking about.. Any thoughts on that?

 

Also related is this..

 

http://www.projectosx.com/forum/lofiversio...x.php/t852.html

 

Again another king fix that I cant figure out how to implement without 130 freaking errors in my DSDT.

 

Hope you can help I would love to be able to edit my DSDT and know what I'm doing wrong..

 

THANKS 00D

 

Note: Sileners for your T60 take a look here: http://forums.gentoo.org/viewtopic.php?t=122145

& http://acpi.sourceforge.net/dsdt/view.php?...facturer=Lenovo

 

I Bet you fixed those errors in your t60 DSDT but if not that might be helpful.

Link to comment
Share on other sites

I dont have the value c-state override. Is that a problem?

It might be, but still, only related to c-states.

 

Maybe it would help if I knew what c-states were. Are c-states temp steps for the CPU to tell when to punch the fan higher to compensate for higher temps? Or what are they exactly?

Man, I have briefly explained that in my guide. Have you read it?

 

I just the update to 10.6.4 and it worked like a charm but I see that there are a few things off in IOregistry explorer. I no longer have many of the values I had in there before for smc. I no longer have CPUPlimit entry any longer for example. It also has stopped stepping and gets stuck at a single step again. Now I know the first thing your thinking is I need to update the bundles entry in my legacy kext. I had it updated before I made the change over actually. So all my bundle libraries say 8.4 now.

Upgrading from 10.6.2 to 10.6.3 or from 10.6.3 to 10.6.4 does break speed step, because Mac model plists are changing.

 

You need to open your legacy kext and a matching plist from /S/L/E/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources/ and compare them. In my case there are three new entries that I needed to add to my legacy kexts to make speed step work again.

 

You were right about system state. It shows as S3 in kernel log so thats not my problem with sleep. Have you gotten anywhere with your sleep? I think we have the same sleep issue. I can never autosleep and forced sleep results in no wake up and forced reboot for me.

Sleep in OSX is a complicated thing, a lot of things have to be right. I do have sleep working now, but for me it was audio codec that was to blame.

 

In particular the SBUS post by 399 by master cheif. Its interesting I was looking at that and noticed before I did not have all of those kext loaded in the first list which was good. But I also did not have all the ones in the second list which was bad. Now in 10.6.4 I have almost all of those bad ones loaded and only 1 of the good ones. So its gotten worse.

Well, one thing I learned from all my long battle to achieve the perfect OSX on my T60p is that you shouldn't put extra stuff in your DSDT only because someone else have it working better this way. I did use SBUS entry, which lead to a couple of problems for me. I later compared original MacBookPro2,1 with mine and noticed, that there's no SBUS on the original Mac.

 

83 0 0x5b927000 0x7000 0x6000 com.apple.driver.AppleIntelMeromProfile (19) <73 6 5 4 3> <-- NOT MY CPU

96 0 0x5ba9f000 0x8000 0x7000 com.apple.driver.AppleIntelNehalemProfile (11) <73 6 4 3> <-- NOT MY CPU

103 0 0x5bb2b000 0x5000 0x4000 com.apple.driver.AppleIntelYonahProfile (14) <73 6 4 3> <-- NOT MY CPU

I have the same. Doesn't really bother me, because everything is working just fine.

 

My cpu is com.apple.driver.AppleIntelPenrynProfile (17) <73 6 4 3> which is also loaded but I dont need the rest of them and they prob cause more trouble there there worth.

Check original Macs, what they have there. Again, I have all those kexts loaded, but absolutely no problems with CPU, speed step and whatnot.

 

Now hes talking about a sleep fix which the system will not ID sbus after a wake. I dont have this fix because I'm dump when it comes to the DSDT and cant figure out how to input it without 130 errors but I propose if I did have this in my DSDT I might be able to sleep it also might help with the extra kext being loaded that masterchief is talking about.. Any thoughts on that?

You mentioned that you had CPUPlimit=0 and speed step working in 10.6.3. Just go and compare legacy kext with original mac plist and fix the differences. Pfix, reboot and everything will work again. Unless, of course, you meddled to much with different unrelated stuff. If it works, don't break it. I don't think you need to mess with SBUS.

Link to comment
Share on other sites

Upgrading from 10.6.2 to 10.6.3 or from 10.6.3 to 10.6.4 does break speed step, because Mac model plists are changing.

 

Yeah I am still lost on this. I have updated my legacy kext to match 10.6.4. I thought I got it all but the whole SP1 & SP4 code had changed. So I got that and amazingingly those extra kext I was referring to related to sbus went away. Now all I have is my cpus kext again. However I am still missing one critical aspect. Voodoo Monitor and MSR tools is not showing my CPU stepping up and down. All I have is the CPU stuck at the lowest single step. There has to be something else I'm missing with this. What should I do? I've attached my legacy kext maybe its something simple I'm missing. Can you take a look and see if I have it setup right? Keep in mind I added a few elements from the MacBookPro4,1 specifically it has SP4 code and no cstatedict entry (the one entry in MB41 for cstatedict is to turn off 1 c-state). So I made those changes to the default MacBook4,1 plist. I have looked at everything in there and it just seems like there is nothing missing from it now yet still no steps as it was in 10.6.2. Wha could it be?

 

Sleep in OSX is a complicated thing, a lot of things have to be right. I do have sleep working now, but for me it was audio codec that was to blame.

Well, one thing I learned from all my long battle to achieve the perfect OSX on my T60p is that you shouldn't put extra stuff in your DSDT only because someone else have it working better this way. I did use SBUS entry, which lead to a couple of problems for me. I later compared original MacBookPro2,1 with mine and noticed, that there's no SBUS on the original Mac.

 

Sleep for me is probably also related to sound seeing as I use the exact same voodooHDA kext you do to get sound. I'll have to remove it and see what happens then. I'm more concerned about getting the CPU stepping again as it was in 10.6.2.

LegacyN200.kext.zip

Link to comment
Share on other sites

 Share

×
×
  • Create New...