Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/25/18 in all areas

  1. 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
    1 point
×
×
  • Create New...