使用ssdtPRGen.sh生成处理器变频配置SSDT.aml
写在前面
本文最后更新时间:2020年4月28日
本文主要讲解如何使用 ssdtPRGen.sh 生成处理器变频数据,合并 CPUFriend.kext 生成的电源管理数据。但只有你的黑果变频不正常才需要进行生成,如果正常则不需要。操作略为复杂,新手请务必看仔细,过程中如果出错请务必检查细节操作并多重试,如有问题请留言。
大部分情况下,只有第五代以及更早的酷睿,以及早期特殊型号的Xeon,还有赛扬、奔腾等苹果从未使用过的处理器可能会存在无法变频问题。如果你使用了合适的 SMBIOS ID 并且是常见的较新的酷睿处理器,一般不会存在变频问题。而不同的机型ID也会使同一个CPU的变频数据不同。例如,i9-9900k 在 iMac19,1 机型中,默认变频范围一般是 1.3GHz — 5.0GHz,但在 MacPro7,1 中是 2.0GHz — 5.0GHz。
长期使用不正确的变频数据可能会损坏你的电脑,风险自担。最后,如果本文未能解决您的问题,请见谅。
准备工作
- CPUFriend.kext 生成的 ssdt-data.dsl 文件;
- ssdtPRGen.sh,添加了 Coffee Lake 家族数据;
- MaciASL.app,用于生成的 dsl/aml 文件编辑和排错;
- AppleIntelInfo.kext,输出 CPU 的 P-States;
- IORegistryExplorer.app,用于查看 CPU 的状态和数据,非必须;
- 代码编辑器,如 Visual Studio Code 或 Sublime Text(非必须)
检查变频状态
首先使用 Intel Power Gadget 观察变频情况,如果频率(Frequency)显示一条很稳定的线,并且温度和功耗很高,那代表变频有问题;如果上下起伏,代表频率在不断变化,可运行几个软件进一步观察。
如果你的CPU频率即使在待机时也类似下图,那代表变频有问题:
还可以核查是否已加载 X86PlatformPlugin 和 X86PlatformShim,运行终端(不知道什么是终端的百度一下)命令:
kextstat | grep -y x86plat
如果正常,应该会返回 X86PlatformPlugin 和 X86PlatformShim 的加载信息,如图:
或到 图标 → 关于本机 → 系统报告 → 软件 → 功能扩展检查加载状态
已载入那一栏,显示为“是”即代表是正常的。下一步验证现有变频数据是否加载,终端命令:
sysctl -n machdep.xcpm.vectors_loaded_count
如果是正常情况,应该返回1。同时,也可以使用 IORegistryExplorer 查看 CPU 的 PR00@0 下的 Plugin-Type 状态,如果是 0x1 则代表正常:
可以在 X86PlatformPlugin 看到变频数据(在Skylake家族以后,CPU状态显示为PR00@0形式,之前为CPU00@0形式),如图:
最后,如果你的 CPU 变频不正常的话,需要检查CPU的 P-States。把 AppleIntelInfo.kext 解压到到桌面,打开终端,运行以下命令:
sudo kextutil ~/Desktop/AppleIntelInfo.kext
然后系统会提示输入登陆密码。如果出现类似“Code Signing Failure: not code signed”的提示,是权限问题,使用以下两个命令解决(可直接复制运行):
sudo chown -R root:wheel ~/Desktop/AppleIntelInfo.kext
第二个:
sudo chmod -R 755 ~/Desktop/AppleIntelInfo.kext
然后回到第一步命令,完成后可能依旧提示“Code Signing Failure: not code signed”,但其实已经在 /tmp 目录生成了文件,可以使用 Visual Studio Code 打开,或使用下面这个命令在终端输出内容:
sudo cat /tmp/AppleIntelInfo.dat
案例输出内容:
图中所示 8-50 的数字,指的是 CPU 的 Multiplier(倍频),例如本文案例 i9-9900k,外频是 100MHz,8x的倍频就是 800MHz,50x的倍频是 5000MHz,也就是 5.0GHz,也就是说理论上这个CPU应该实现0.8GHz—5.0GHz的频率变化。「注意」部分特定型号处理器,尤其是 Xeon,外频可能是 133MHz,请在英特尔官网查询确认。
如果仅显示一个或几个倍频(以20或25最常见),或显示了很多倍频但却不工作,那就可以考虑阅读下一步生成变频数据(在此之前务必确认使用了合适的SMBIOS ID)。
自动生成变频数据
把 ssdtPRGen.sh-Beta 解压到桌面(直接把 ssdtPRGen.sh 放到桌面),然后打开终端,输入:
chmod +x ~/desktop/ssdtPRGen.sh
这一步是给予 sh 脚本运行权限。然后输入:
sudo ~/ssdtPRGen.sh
这一步是创建运行环境。接下来,我们可以通过以下命令简单生成 ssdt:
~/ssdtPRGen.sh -p 'i7-4790K'
比Kaby-lake 家族(第七代酷睿)更新的 CPU 可能会提示失败,不要紧,先往下看。在访达按下 Command + Shift + G,跳转到以下目录:
~/Library/ssdtPRGen/
你会发现这个目录里有一套 ssdtPRGen.sh 下载的配置文件。如果上一步你成功生成了 ssdt.aml,会在在这个目录看到生成的 ssdt 文件,见图:
接下来还需要编译 ssdt.dsl,请继续看手动生成模式后半部分。
手动生成变频数据
该脚本支持指定参数生成,下面是一个基本功能表(也可以使用 -h 参数查看):
参数 | 缩写 | 功能说明 | 备注 |
---|---|---|---|
-acpi | -a | Processor name example: CPU0, C000 | 指定第N个处理器 默认第一个是CPU0 |
-bclk frequency | -bclk | base clock frequency | 处理器外频频率 一般是100 |
-board-id | -b | example: Mac-F60DEB81FF30ACF6 | Board-ID,生成三码就有了 可以参考这里 |
-cpu type [0/1/2/3] | -c 0/1/2/3 | 0 = Sandy Bridge 1 = Ivy Bridge 2 = Haswell 3 = Broadwell | 如果你的都不是,不要指定 |
-debug output [0/1/3] | -d 0/1/3 | 0 = no debug injection/debug output 1 = inject debug statements in: ssdt.dsl 2 = show debug output 3 = both | debug 输出,需要时使用 |
-frequency | -f | clock frequency | 处理器基础频率 |
-help info | -h | this help | 帮助说明 |
-lfmode | -lfm | lowest idle frequency | 空闲最低频率 |
-logical processors | -l | logical processors | 逻辑处理器数量 4核8线程应填8 |
-model | -m | models, example: MacPro6,1 | SMBIOS ID,例如MacPro6,1 |
-open the previously generated SSDT | -o | open the previously generated SSDT | 打开之前生成的ssdt 一般不用 |
-processor model | -p | cpu model, example: 'E3-1285L v3' | cpu型号,例如 i9-9900k |
-show supported board-id and model combinations | -s | Broadwell Haswell Ivy Bridge Sandy Bridge | 显示支持的board-id和cpu型号组合 一般不用 |
-turbo maximum | -turbo | turbo frequency 6300 for Sandy Bridge and Ivy Bridge 8000 for Haswell and Broadwell | 处理器最大睿频频率 Sandy-B和Ivy-B需要填6300 Haswell和Broadwell需要填8000 |
-tdp | -t | tdp design | 处理器热设计功耗 |
-workarounds for Ivy Bridge | -w 0/1/2/3 | 0 = no workarounds 1 = inject extra (turbo) P-State at the top with maximum (turbo) frequency + 1 MHz 2 = inject extra P-States at the bottom 3 = both | Ivy Bridge特殊调整 |
-xcpm mode | -x 0/1 | 0 = XCPM disabled | 是否开启XCPM 默认开启 |
其中,内核的电源管理模式仅支持 IvyBridge、Haswell、Broadwell 家族处理器。下面以 Haswell 的 i7-4790K 举例:
参数 | 实际值 | 应用参数 | 备注 |
---|---|---|---|
名称 | i7-4790K | -a CPU0 | 大小写敏感 |
基础外频 | 100MHz | -bclk 100 | 处理器外频 |
机型的Board-ID | Mac-42FD25EABCABB274 | -b Mac-42FD25EABCABB274 | 三码附带生成 |
处理器家族 | Haswell | -c 2 | |
排错参数 | debug参数 | -d 3 | 可选0/1/2/3 |
基础频率 | 4000MHz | -f 4000 | 4.0GHz = 4000MHz |
空闲最低频率 | 800MHz | -lfm 800 | |
逻辑处理器数量 | 4核8线程 | -l 8 | 填线程总数 |
机型ID | iMac15,1 | -m iMac15,1 | 注意英文逗号 |
处理器型号 | i7-4790K | -p i7-4790K | 注意大小写敏感 |
最大睿频频率 | 4400MHz | -turbo 4400 | 4.4GHz = 4400MHz |
热设计功耗 | 88瓦 | -t 88 | |
XCPM模式 | -xcpm 1 | Haswell可开启 |
把以上参数全部组合起来,输入到终端:
~/ssdtPRGen.sh -a CPU0 -bclk 100 -b Mac-42FD25EABCABB274 -c 2 -d 3 -f 4000 -lfm 800 -l 8 -m iMac15,1 -p i7-4790K -turbo 4400 -t 88 -xcpm 1
如果看到类似“Permission Denied”的提示,打开 root 权限:
sudo -s
如果你还没有获取 root 权限,请百度一下如何获取。
下面是成功示例(点击放大):
这个时候,可以在 ~/Library/ssdtPRGen/ 目录看到生成的文件:
接下来,把 ssdt.dsl 复制一份到桌面,然后使用 MaciASL.app 打开生成的 ssdt.dsl 文件:
按下 Command + F 打开搜索,搜索关键词:plugin-type(只有1个结果):
把用 CPUFriend.kext 生成的 ssdt-data.dsl 拿出来,使用 Visual Studio Code 或类似的代码编辑器打开(也可以使用 MaciASL.app),复制以下内容,如图所示:
然后,把完成的文件导出,见图:
改为大写 SSDT.aml,并选择保存到桌面,然后选择 ACPI Machine Language Binary,完成。
最后,把生成的 SSDT.aml 放到 /EFI/Clover/ACPI/Patched(Clover方式),或者 /EFI/OC/ACPI(OpenCore方式),重启生效。
可以使用 Intel Power Gadget 查看变频情况:
不被支持的处理器
目前脚本作者因为个人时间的关系,仅更新到第七代酷睿,停更了很久,不过该脚本可以手动添加CPU型号,笔者已经手动添加了 Coffee Lake 家族的型号代码(含第8/9代酷睿、奔腾G、赛扬G),在本站下载到的版本是带有这些型号的。但从测试生成结果来看仍然有错误提示,推测其核心程序仍要处理一些额外的机型数据,而这部分并不是开源的,无从知晓。
完成后,你就可以通过使用 -p 参数+名称的方式生成,也可以手动指定各项参数。
如有错误,欢迎指正。
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
黑苹果星球 » 使用ssdtPRGen.sh生成处理器变频配置SSDT.aml
好厉害!可以试试搞搞!研究一下我的小黑果!
使用ssdt 还需要加载cpufriends吗
数据合并以后就不需要了
服务器挂了吗?点链接直接无法访问
是蓝奏云盘的问题,见无法访问蓝奏云的处理办法
命令是不是明显出现错误了啊?比如:第一步授权是在桌面上的脚本,第二步又是在home目录!??
运行桌面上的脚本,生成的文件在另一个目录哦
这个厉害了,好好研究下