Jump to content
qwerty12

Kext to disable Intel Turbo Boost on Battery Power

Recommended Posts

DisableTurboBoostBatery.kext doesn't work with VirtualSMC.kext and SMCBatteryManager.kext.

 

Problem is here:

void DisableTurboBoostBattery::actOnChangedPowerState()
{
	if (pPowerSource && isOnAC != pPowerSource->externalChargeCapable() && pPowerSource->batteryInstalled()) {
		if ((isOnAC = pPowerSource->externalChargeCapable()))
			enable_tb();
		else
			disable_tb();
	}
}

Reason is simple - externalChargeCapable returns different values with VirtualSMC.kext and SMCBatteryManager.kext than with FakeSMC.kext and ACPIBatteryManager.kext.

 

ExternalChargeCapable property has same value as ExternalConnected in case of FakeSMC.kext and ACPIBatteryManager.kext. On battery both values are false, on charger both values are true.

With VirtualSMC.kext and SMCBatteryManager.kext only ExternalConnected property change value. It's true on charger and false on battery. ExternalChargeCapable is always true.

 

This is the reason why disable_tb() is never called with VirtualSMC.kext and SMCBatteryManager.kext and Turbo Boost remains active.

 

Fix should be simple as this:

void DisableTurboBoostBattery::actOnChangedPowerState()
{
	if (pPowerSource && isOnAC != pPowerSource->externalConnected() && pPowerSource->batteryInstalled()) {
		if ((isOnAC = pPowerSource->externalConnected()))
			enable_tb();
		else
			disable_tb();
	}
}

This should work in both usage cases - VirtualSMC.kext with SMCBatteryManager.kext and FakeSMC.kext with ACPIBatteryManager.kext.

 

VirtualSMC implementation of ExternalChargeCapable looks proper based on documentation:

 ExternalConnected
 Type: bool
 IORegistry Key: kIOPMPSExternalConnectedKey
 True if computer is drawing external power
 
 ExternalChargeCapable
 Type: bool
 IORegistry Key: kIOPMPSExternalChargeCapableKey
 True if external power is capable of charging internal battery

 

 

  • Like 3

Share this post


Link to post
Share on other sites

This is fixed version of DisableTurboBoostBattery.kext that should work with both SMCBatteryManager and ACPIBatteryManager.

DisableTurboBoostBattery_2.3.zip

 

I performed tests on battery and on charger with SMCBatterManager and looks like everything finally works as expected.

 

Please test properly with ACPIBatteryManager since I only did brief test on battery to see if TurboBoost is disabled or not, but I didn't done any tests on charger. Please let me know if there is any problem so I could fix this.

 

  • Like 1

Share this post


Link to post
Share on other sites

thanks viking, I have added that to my kexts on system.

 

Now curious. does disableturboboost battery kext need to go inside /L/E or is /kext/Other fine?

 

also how about the other VirtualSMC drievers? do they do anything on latitude systems?

Share this post


Link to post
Share on other sites

You need VirtualSMC.kext and SMCBatteryManager.kext. You can install other SMC* kexts if you want. They are not essential but will make your sensors available to monitoring apps. Just do not use Rehabman's HWMonitor.app with VirtualSMC. Use HWMonitorSMC2.app instead. Same apply for FakeSMC.kext and ACPIBatteryManager.kext. Those two are needed, others are optional.
 

You do not need DisableTurboBoostBattery.kext on EFI partition. It works just fine from /L/E. Just do not forget to fix permissions and rebuild cache.

Share this post


Link to post
Share on other sites

Thanks for all that good info viking1304!

 

I have been googling for Use HWMonitorSMC2.app that you referred to but cannot find a download for it.

 

can you show me?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...