实现usb键盘、鼠标唤醒黑苹果,教程是否通用 待研究
我装了很多台黑苹果了,刚装好时会出现睡眠秒醒的问题,熟练安装黑苹果的人都应该猜到了是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设备唤醒的。
自古沙发归楼主 楼主厉害,值得学习的教程! mark 这个有用的 本帖最后由 39军小兵张 于 2018-10-7 13:39 编辑
正确的,是这样的 不错,楼主加油,楼主的钻研精神,给你点赞,马上尝试。 binlovep 发表于 2018-10-7 15:35
不错,楼主加油,楼主的钻研精神,给你点赞,马上尝试。
成功的话,回个话 不错不错
还是台式机省事,找出设备usb 内建就ok了
各种唤醒都完美 这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找usb设备唤醒的教程吧 这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找usb设备唤醒的教程吧 wp8student 发表于 2018-10-7 18:27
这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找u ...
我觉得这个教程的思路没问题,睡眠与唤醒没必要分的那么开吧 多谢楼主分享!!! wp8student 发表于 2018-10-7 18:27
这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找u ...
我刚才又试了一下,在我的机器上用rehabman提供的原版ssdt-gprw.aml确实是能睡眠,但唤醒只能通过电源键,用我修改的ssdt-gprw确实可以通过usb鼠标、键盘唤醒 测试过,无效,原因不明。 我不要用户名 发表于 2018-10-7 20:33
测试过,无效,原因不明。
睡眠秒醒问题还存在吗 13956737563 发表于 2018-10-7 20:40
睡眠秒醒问题还存在吗
不存在了,但还是不能usb唤醒 我不要用户名 发表于 2018-10-7 20:44
不存在了,但还是不能usb唤醒
最好确认一下你之前睡眠秒醒的原因,看下是dsdt里的哪个设备,然后试试只修改这个设备的return (gprw())语句 支持啦!!!! wp8student 发表于 2018-10-7 18:27 https://www.pcbeta.com/static/image/common/back.gif
这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找u ...
默认的解决睡眠秒醒问题的补丁确实是禁用了usb唤醒功能,而且确实与GPRW()函数有关,我搜了黑苹果 鼠标唤醒,还是找不到usb设备唤醒的教程
13956737563 发表于 2018-10-7 20:58
最好确认一下你之前睡眠秒醒的原因,看下是dsdt里的哪个设备,然后试试只修改这个设备的return (gprw() ...
确认是glan xhc 和hdef 另:白果第一个值是0x69 我改天试试看