/one-key-cpufriend

Generate customized CPUFriendDataProvider.kext for dynamic macOS CPU power management

Primary LanguageShell

Modify macOS CPU Performance

English | 中文

Instruction

The script is only for most 5th-10th generation CPU yet. I will try to add support for more models if needed.

The script can modify low frequency mode and energy performance preference, and use ResourceConverter.sh to generate customized CPUFriendDataProvider.kext.

By using this script, no file under the System folder will be edited. If you are not happy with the modification, just remove CPUFriend*.kext from /CLOVER/kexts/Other/ and restart.

Before install

  • Read CPUFriend WARNING
  • Good network
  • If you have FakeCPUID argument in config.plist, this script may cause issue
  • Make sure IOPlatformPluginFamily.kext untouched
  • Make sure Lilu is working
  • Make sure you are using correct SMBIOS model
  • plugin-type=1, often injected by SSDT-PLUG or SSDT-XCPM

NOTE: It is recommended to disable CPUFriend.kext and CPUFriendDataProvider.kext before a macOS upgrade. You need to re-generate CPUFriendDataProvider.kext whenever you update to a new macOS version; otherwise, you may suffer from bad PM or even kernel panic.

How to install

  • Run the following command in Terminal:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/stevezhengshiqi/one-key-cpufriend/main/one-key-cpufriend.sh)"
  • For Clover users:

    • Copy CPUFriend.kext and CPUFriendDataProvider.kext from desktop to /CLOVER/kexts/Other/ and restart.
  • For OC users:

    • Copy CPUFriend.kext and CPUFriendDataProvider.kext from desktop to /OC/Kexts/.
    • Open /OC/config.plist and add the following code into Kernel - Add:
<dict>
    <key>Arch</key>
    <string>x86_64</string>
    <key>BundlePath</key>
    <string>CPUFriend.kext</string>
    <key>Comment</key>
    <string>Power management data injector</string>
    <key>Enabled</key>
    <true/>
    <key>ExecutablePath</key>
    <string>Contents/MacOS/CPUFriend</string>
    <key>MaxKernel</key>
    <string></string>
    <key>MinKernel</key>
    <string></string>
    <key>PlistPath</key>
    <string>Contents/Info.plist</string>
</dict>
<dict>
    <key>Arch</key>
    <string>x86_64</string>
    <key>BundlePath</key>
    <string>CPUFriendDataProvider.kext</string>
    <key>Comment</key>
    <string>Power management data</string>
    <key>Enabled</key>
    <true/>
    <key>ExecutablePath</key>
    <string></string>
    <key>MaxKernel</key>
    <string></string>
    <key>MinKernel</key>
    <string></string>
    <key>PlistPath</key>
    <string>Contents/Info.plist</string>
</dict>

Recovery

  • For Clover users:

    • If you are not happy with the modification, just remove CPUFriend.kext and CPUFriendDataProvider.kext from /CLOVER/kexts/Other/ and restart.

    • If unfortunately, you can't boot into the system, and you are sure the issue is caused by CPUFriend*.kext,

      • Press Space when you are in Clover page
      • Use keyboard to choose Block Injected kexts - Other
      • Check CPUFriend.kext and CPUFriendDataProvider.kext
      • Return to the main menu and boot into the system, then delete CPUFriend*.kext from your CLOVER folder
  • For OC users:

Credits