首页 > 技术 > 对DSDT打补丁实现黑苹果电量显示

对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,重启即可。

成果: