前言
对于Hackinto电脑来说,正确的clover、config.plist和kext只能确保大部分电脑可以正常安装MacOS,但并不一定能保证能正常使用。在启动时,电脑会去读取ACPI的配置,不当的DSDT和SSDT有可能会导致出现系统启动失败、无法休眠、电池电量无法显示等很多奇奇怪怪的问题。很多人都知道使用DSDT补丁可以开双核,但DSDT的功能不仅仅如此,还可以修复显卡、声卡、网卡、电池、休眠等问题。
DSDT只是描述你硬件的文件,并不是驱动文件,它只是告诉你的MacOS系统,你的主板上都有些什么硬件,如果你的MacOS并不支持这种硬件,那么DSDT也无法驱动你的这个硬件!!!
这里是你在MacOS中修复DSDT时需要用到的软件:MaciASL (RehabMan 2018-0507版)
以下例子是我在修复DSDT中常见的问题,如果以后有新的问题会继续更新。
修复例子
- switch变量未设置为Integer整数时的错误提示:
1 | Switch expression is not a static Integer/Buffer/String data type, default to integer |
例子:
1 | Method (WMBC, 3, Serialized) |
修复方法:
1 | Method (WMBC, 3, Serialized) |
2. 定义了一个局部变量,但是Method方法没有用到这个变量时的错误提示:(注:如果这个是Warnings警告的话,可以不管它,但如果是Errors错误的话,必须修复。)
1 | Method Local is set, but never used (Local 0) |
例子:
1 | Store (0x03, OSVR) |
或者
1 | Store (RGE3, PMFG) |
修复方法 ( And(Local0, Ones, Local0) ==> Local 0 set to 0x11111111 ):
1 | Store (0x03, OSVR) |
或者
1 | Store (RGE3, PMFG) |
3. 当含有不正确或未使用的方法名时的错误提示:
1 | Invalid object type for reserved name (_OSC: found Integer, Buffer Required) |
例子:
1 | Method (_OSC, 4, Serialized) // _OSC: Operating System Capabilities |
修复方法 ( 删除下划线,或者将其重命名,本例子中将重名为 “XOSC” ):
1 | Method (XOSC, 4, Serialized) // _OSC: Operating System Capabilities |
4. 方法/函数具有IF语句,如果为false时,则不会返回任何内容:
1 | Not all control paths return a value (_OSC/O1EX/TINI/TWAK...etc) |
例子:
1 | Method (_TINI, 0, NotSerialized) |
修复方法 ( 在方法关闭之前添加 Return (Zero) ):
1 | Method (TINI, 4, Serialized) |