对DSDT打补丁实现黑苹果电量显示
内容
教程向
原地址,精简了很多
写在前面
macOS的ACPI(电源管理)和其他的系统有很大的不同。在直接使用的时候会出现很多bug(电池电量不显示,各种奇怪的睡眠问题)。对此,我们可以对DSDT和SSDT打补丁来解决。现在的流行方式是热补丁(hot patch),但是电源电量方面,一般很难成功。。这里介绍对自己的DSDT打静态补丁的方法。主要是方法论。。。简洁一点
准备工作
首先需要两个工具:MaciASL, iasl。这里提供一个打包下载。将MaciASL放入应用文件夹。(不必去找新版的了,黑苹果传奇人物RehabMan已经两年没有出现了。。)
然后确定以后不会再改变BIOS的选项,因为一换就要再patch一遍。。。
获取ACPI文件
这里直接使用clover。在启动的主页摁下F4(或者Fn+F4,最好都摁下试试),然后clover就会自动把原生的ACPI文件放在EFI/Clover/ACPI/origin下面。不推荐任何其他形式
反编译ACPI文件
把提取出来的ACPI文件放在单独的文件夹里面,将下载的isal也放在里面:
在此文件夹打开一个terminal,输入iasl -da -dl DSDT.aml SSDT*.aml
,最后出现Disassembly completed即成功
使用MacIASL打开生成的DSDT.dsl,点击上面的Compoile:
因为反编译不会很完美,可能会出现各种错误,比如我这个错误就是由两行多余的“One”(154和166行)引起的。这里每台电脑都不一样,有一点编程基础应该没什么问题。。删除以后:
这样没有error就好了
对DSDT打补丁
点开上面的patch,然后在左边找到ran的库,里面有各种机型的battery补丁,比如我的x1c5th:
可以见到虽然我点的x230i,但是里面说works for x1 carbon 5th,我就可以用这个补丁,点击apply后就好了。
然后,按照相同的步骤,找到如下的几个常用patch并使用:
- Fix _WAK Arg0 v2
- HPET Fix
- “SMBUS Fix”
- “IRQ Fix”
- “RTC Fix”
- “OS Check Fix”
- “Fix Mutex with non-zero SyncLevel”
- “Add IMEI”
注意最好按照顺序进行。
最后:点击File-save as,选择ACPI Machine Language Binary,然后保存。
使用补丁
将DSDT.aml放入EFI/Clover/ACPI/patched,重启即可。