Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Lower Power Mode (LPM) for older Macs in macOS Monterey #316

Open
khronokernel opened this issue Jun 19, 2021 · 3 comments
Open
Labels
enhancement New feature or request

Comments

@khronokernel
Copy link
Member

khronokernel commented Jun 19, 2021

With macOS Monterey, we've been able to unlock both Sidecar and Airplay support for legacy Macs. However we currently do not enable LPM on pre-Skylake Macs. While the majority of the power management benefits are likely tied to hardware, the OS does handle scheduling and limiting applications' CPU usage meaning there can be benefits to enabling on pre-Skylake hardware.

Currently LPM is supported on the following models:

  • MacBook9,1+
  • MacBookAir8,1+
  • MacBookPro13,x+

We believe Apple hard coded hardware support inside /System/Library/PrivateFrameworks/PowerUI.framework/Versions/A/PowerUI. Below is a binary ripped from 12.0:

Note: Compared to SidecarFixup and AirplayCore, Apple did not hard code a full model array into PowerUI. Further investigation required for how Apple handles device checks

@3wnbr1
Copy link

3wnbr1 commented Feb 21, 2022

Maybe PowerManagement-1132.141.1 would be a good place to start

@diogoterremoto
Copy link

diogoterremoto commented Feb 27, 2022

Would love getting this working on my MacBook Pro 2015, even if it's only software wise, as the hardware can be down clocked with Turbo Switcher to disable Intel Turbo Boost.

I'm new at this. Search the OP binary for some Model Identifiers but only found random models. The compatibility starts at MacBook (Early 2016 [MacBook9,1] and later) and MacBook Pro (Early 2016 [MacBookPro13,1] and later). Also didn't found anything on previous post repository.

Any tips?

@khronokernel
Copy link
Member Author

khronokernel commented Feb 28, 2022

Model lock is within the IOKit framework and is stored as minimum model integer(s) (inside IOPMFeatureIsAvailableWithSupportedTable, note not as blacklisted model strings as generally done). Additionally there needs to be an /dev/xcpm stub present (powerd verifies this, however Haswell+ already support this in macOS)

  • credit to ASentientBot for their research on this

Since symbol solving in userspace is non-functional, creating a stable patch base is difficult and unlikely. However if you're interested in researching, feel free to PR to FeatureUnlock's repository

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants