我装了很多台黑苹果了,刚装好时会出现睡眠秒醒的问题,熟练安装黑苹果的人都应该猜到了是usb造成的立即唤醒,需要对dsdt打个0x6D 或 0x0D的usb补丁,打了这个补丁后,睡眠就正常了,但唤醒只能通过点击电源键,搜索了不少的键盘唤醒教程,都没有找到具体的解决办法,这两天在完善miix 520的黑苹果时,发现了一个办法,在我的电脑上测试了下,既没有睡眠秒醒的问题,也能通过点击键盘或鼠标唤醒,两天了都很正常,现在把方法介绍一下,有需要的话,可以在自己的电脑上测试下,记住,提前备份好clover,以免这个教程的修改不成功,反而破坏了自己原有的引导。
这里描述两种方式,一种是修改dsdt,一种是hotpatch,原理都是一样的,只是修改的代码有点区别,根据自己的引导补丁方式选择。
方式一:修改DSDT
首先说下解决睡眠秒醒的补丁,用MaciASL打开dsdt文件,点击Patch,找到Rehabman补丁源里的睡眠秒醒补丁,如图,有四个,分两类,一类是0x6D,一类是0x0D,其中每一类各有两个,带有Skylake的是适合第六代及以上cpu平台的,现在我们只看关注0x6D与0x0D,不看cpu代数。
现们不打这个补丁,如果你的dsdt已经打了这个补丁(如果你有别的usb内建等问题,先修复好,但注意别破坏了与0x6D和0x0D有关的部分),就重新提取原始dsdt,然后搜索GPRW (0x6D 与GPRW (0x0D,看看哪个有结果,哪个有结果就说明你需要的补丁是哪个,记下你dsdt里有几个搜索结果,并且记下每个结果里的详细值,例如在我的电脑上搜到了4个结果,除了XHC下_PRW里的是 Return (GPRW (0x6D, 0x03)),其余3个位置都是 Return (GPRW (0x6D, 0x04)),我黑苹果睡眠秒醒时,查看日志发现与XHC设备无关,所以接下来的步骤我没有修改第二个参数为0x03的部分,如果你只通过修改第二个参数为0x04的部分,发现还存在睡眠秒醒问题的话,就再尝试修改第二个参数不是0x04的部分。
常规情况下我们把每个GPRW (参数1,参数2)里的参数2改成0x0就能解决唤醒秒醒的问题,但这样修改后USB设备就不能唤醒电脑了,只能通过电源键唤醒,所以我觉得这里的参数2改成0x0就关闭了usb设备唤醒电脑的功能,通过搜索,我又发现了解决睡眠秒醒问题的修改方法:不修改参数2,修改参数1为0x09,这个0x09应该是通用的值,在我的电脑上测试没问题。
把之前搜索到的结果都这样修改,然后重启测试睡眠会不会秒醒,测试usb键盘、鼠标能否唤醒电脑
方式二:hotpatch打补丁
通过rehabman提供的hotpatch文件,你的config里应该有了change Method(GPRW,2,N) to XPRW, pair with SSDT-GPRW.aml补丁,并且也应该用了SSDT-GPRW.aml,我们就是修改rehabman的这个SSDT-GPRW.aml文件,通过判断第一个参数是不是0x0D或0x6D和第二个参数是不是0x04来决定是否要把第一个参数改成0x09,下面附上全部的ssdt代码:
- DefinitionBlock ("", "SSDT", 2, "hack", "_GPRW", 0x00000000)
- {
- External (XPRW, MethodObj) // 2 Arguments (from opcode)
- Method (GPRW, 2, NotSerialized)
- {
- If (LEqual (0x6D, Arg0))
- {
- If (LEqual (0x04, Arg1))
- {
- Return (XPRW (0x09, Arg1))
- }
- }
- If (LEqual (0x0D, Arg0))
- {
- If (LEqual (0x04, Arg1))
- {
- Return (XPRW (0x09, Arg1))
- }
- }
- Return (XPRW (Arg0, Arg1))
- }
- }
复制代码然后重启测试睡眠会不会秒醒,测试usb键盘、鼠标能否唤醒电脑。
这个方法对我的电脑是有效的,里面提到的一些数值是否通用我就无从而知了,如果遵循了这个教程还是无法实现usb设备唤醒电脑问题的话,那估计是有数值不通用,但这个教程提供了思路,肯定有别的办法实现usb设备唤醒的。
|