13956737563 发表于 2018-10-7 01:48

实现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设备唤醒的。

13956737563 发表于 2018-10-7 11:55

自古沙发归楼主

hujinzhao 发表于 2018-10-7 12:05

楼主厉害,值得学习的教程!

ayun2001 发表于 2018-10-7 12:21

mark 这个有用的

39军小兵张 发表于 2018-10-7 13:03

本帖最后由 39军小兵张 于 2018-10-7 13:39 编辑

正确的,是这样的

binlovep 发表于 2018-10-7 15:35

不错,楼主加油,楼主的钻研精神,给你点赞,马上尝试。

13956737563 发表于 2018-10-7 16:41

binlovep 发表于 2018-10-7 15:35
不错,楼主加油,楼主的钻研精神,给你点赞,马上尝试。

成功的话,回个话

mrmg 发表于 2018-10-7 17:07

不错不错
还是台式机省事,找出设备usb 内建就ok了
各种唤醒都完美

wp8student 发表于 2018-10-7 18:25

这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找usb设备唤醒的教程吧

wp8student 发表于 2018-10-7 18:27

这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找usb设备唤醒的教程吧

13956737563 发表于 2018-10-7 18:41

wp8student 发表于 2018-10-7 18:27
这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找u ...

我觉得这个教程的思路没问题,睡眠与唤醒没必要分的那么开吧

wwwlhp 发表于 2018-10-7 18:54

多谢楼主分享!!!

13956737563 发表于 2018-10-7 19:12

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

我不要用户名 发表于 2018-10-7 20:33
测试过,无效,原因不明。

睡眠秒醒问题还存在吗

我不要用户名 发表于 2018-10-7 20:44

13956737563 发表于 2018-10-7 20:40
睡眠秒醒问题还存在吗

不存在了,但还是不能usb唤醒

13956737563 发表于 2018-10-7 20:58

我不要用户名 发表于 2018-10-7 20:44
不存在了,但还是不能usb唤醒

最好确认一下你之前睡眠秒醒的原因,看下是dsdt里的哪个设备,然后试试只修改这个设备的return (gprw())语句

welljun06 发表于 2018-10-7 21:16

支持啦!!!!

13956737563 发表于 2018-10-7 21:22

wp8student 发表于 2018-10-7 18:27 https://www.pcbeta.com/static/image/common/back.gif
这是睡眠的教程,不是唤醒的,唤醒的要根据成功睡眠后,加入相应代码,我的已经成功USB设备唤醒了,你找找u ...


默认的解决睡眠秒醒问题的补丁确实是禁用了usb唤醒功能,而且确实与GPRW()函数有关,我搜了黑苹果 鼠标唤醒,还是找不到usb设备唤醒的教程

我不要用户名 发表于 2018-10-7 23:43

13956737563 发表于 2018-10-7 20:58
最好确认一下你之前睡眠秒醒的原因,看下是dsdt里的哪个设备,然后试试只修改这个设备的return (gprw() ...

确认是glan xhc 和hdef 另:白果第一个值是0x69 我改天试试看
页: [1] 2 3 4 5 6
查看完整版本: 实现usb键盘、鼠标唤醒黑苹果,教程是否通用 待研究