此文为我的笔记,专机专用,其他机型可以考虑在 RehabMan 的 GitHub 里找找看。
我是配合的VirtualSMC套装使用,出现了电池电量不更新的问题。
对补丁进行修改,去掉不需要的操作之后电量已经能正常显示和更新了
注意:这是静态补丁方法,每次更换硬件(如增加/减少内存)或更新 BIOS 等操作后需要重新生成补丁!
准备:
- 将MaciASL解压并且拖拽到应用程序文件夹中安装
- 将iasl解压并且复制到
/usr/local/bin
或者其他PATH目录中
导出系统 DSDT
我们可以用 Clover 来完成这一步操作。
重启电脑,在进入到 Clover 时按下键盘上的 F4 按键(有的机器可能需要按 Fn+F4,如果不确定的话可以两个方法都尝试一遍),Clover 不会有任何提示,接着我们启动到 macOS。
挂载 EFI 分区,你会发现,在 /Volume/EFI/EFI/CLOVER/ACPI/origin
目录下出现了很多 .aml
后缀名的文件。
反编译
由于我们的 CPU 为 Skylake 系列,所以使用这个命令来反编译
iasl -dl DSDT.aml SSDT*.aml
如果你的 ACPI 为更老的型号,你应该用
iasl -da -dl DSDT.aml SSDT*.aml
完成后会出现一系列 .dsl
文件👌
patch
使用 MaciASL 打开 DSDT.dsl
点击 Patch
选择我们下载好的补丁文件
加载完成后点击 Apply 应用即可
编译查错
点击 Compile 编译看看有没有错误
我这边报了这个错误
11765, 6126, syntax error, unexpected PARSEOP_ARG1
解决方法也很简单,直接将对应位置注释掉就可以了
其他的错误可以用搜索引擎搜索解决
应用补丁
编译通过后我们点击 File -> Save as...
选择下面那一项,软件会自动将 dsl 编译回 aml 文件替换掉原本的 DSDT.aml
最后我们将生成的 DSDT.aml 复制到 /Volume/EFI/EFI/CLOVER/ACPI/patched
下,然后重启即可。
已知问题:重启后成功显示出电池图标和电量,但是电量只在启动时更新,之后用电也不会更新