zhtengw 发表于 2016-4-7 11:47

睡眠问题解决之路(秒醒->唤醒死机->正常)

我的机子是Thinkpad SL400,芯片组ICH9M,14年成功装上了Yosemite,加载AppleLPC后就可以正常睡眠了。后来升级了El Capitan,在DSDT未作修改、驱动也都正常加载的情况下,睡眠秒醒。一直没去解决,最近几天花时间把问题解决了,问题还是在USB设备的_PRW方法上,在此跟大家交流交流,下面是正题。

第一步就是查看系统日志的唤醒原因:Wake reason: USB0 GBE USB3 USBE EUSB 或者 Wake reason: HDAC USBE EUSB
确定是USB设备的问题导致的睡眠秒醒(其中GBE不知道是什么设备),首先我考虑的是_DSM方法,尝试过注入device ID,添加AAPL字段等等,睡眠情况与之前没有任何区别;后来看到这篇帖子,我开始考虑_PRW方法。
打开DSDT查看_PRW(Power Resources for Wake)的内容,是这样的:               Method (_PRW, 0, NotSerialized)
                {
                  Return (GPRW (0x03, 0x03))
                }
但各个设备的返回值都不一样,这里列一个表:

设备名称 _PRW类型 值
USB0 Method 0x03, 0x03
USB3 Method 0x0E, 0x03
USBE Method 0x0D, 0x03
EUSB Method 0x0D, 0x03
GBE Method 0x0D, 0x04
HDAC
Method 0x0D, 0x03
根据上面提到的帖子里的说法,将返回值更改为0x09,0x04,结果可以睡眠,但是唤醒后死机(可以用键盘或电源键唤醒,唤醒后屏幕黑屏,试用各种键盘快捷键如调音量、重启等都得不到相应的反馈,所以我判断是死机了)。

现在变成这么解决唤醒死机的问题了,同样的,还是先尝试修改_DSM方法,仍然是没有变化(我的USB设备,不管有没有注入deviceID,在系统信息里都不会显示为内建,也不知道为什么),所以问题还是在_PRW方法上。我尝试了各种返回值,如0x0D,0x00、0x00,0x00、0x09,0x00,甚至直接删除_PRW方法,结果都是要不秒醒,要不睡死。

在爬帖的过程中注意到,好多人的_PRW的类型不是方法(Method),而是命名(Name),于是我尝试将我自己_PRW都改成Name,即是将               Method (_PRW, 0, NotSerialized)
                {
                  Return (GPRW (0x0D, 0x00))
                }
改成=>               Name (_PRW, Package (0x02)
                {
                  0x0D,
                  0x00
                })
这里的值参考了RehabMan大神的修复USB3.0导致睡眠秒醒的补丁。重启载入新DSDT后成功睡眠,并可正常唤醒!
最后尝试只要修改USBE、EUSB、GBE和HDAC这四个设备的_PRW方法就可以了,再列表说明一下(作过修改的红色标记):


设备名称 _PRW类型 值
USB0 Method 0x03, 0x03
USB3 Method 0x0E, 0x03
USBE Name 0x0D, 0x00
EUSB Name 0x0D, 0x00
GBE Name 0x0D, 0x00
HDAC
Name 0x0D, 0x00

至此,升级到El Capitan后的睡眠问题解决,但我仍然不清楚这些返回值的意义,希望坛友们多多交流。

xidibo 发表于 2016-4-7 12:03

支持下!!!

zhtengw 发表于 2016-4-7 12:08

xidibo 发表于 2016-4-7 12:03
支持下!!!

谢谢支持(﹒﹒)

zgfoerty 发表于 2016-4-7 13:12

看看先、谢谢分享

甘新平 发表于 2016-4-7 13:49

谢谢楼主分享,我的现在睡眠只是显示器关了,主机还是一直在转,以前是正常的

最爱的小雨 发表于 2016-4-7 14:20

好贴,我之前直接删除方法后,一睡不起,待我用楼主的办法试试去

wagsin 发表于 2016-4-7 14:22

问下楼主,对A卡有效吗

Loueos 发表于 2016-4-7 14:39

可以鼠标唤醒吗?

zhtengw 发表于 2016-4-7 16:16

Loueos 发表于 2016-4-7 14:39 https://www.pcbeta.com/static/image/common/back.gif
可以鼠标唤醒吗?

不行,现在睡眠后usb是断电的,请问您有什么建议吗?

ppforwork 发表于 2016-4-7 16:24

虽然看不懂.但是感觉到了很厉害!!!!

tanpengsccd 发表于 2016-4-7 16:27

顶起来,希望更多人能分享成果

biggreat 发表于 2016-4-7 16:37

支持楼主的折腾,黑苹果就是要折腾

风扑 发表于 2016-4-7 17:28

我也是ICH9M,打了补丁只能睡一次……先马一个等会试试

yb111155 发表于 2016-4-7 17:42

不错~支持一下,黑苹果就是需要这种举一反三的折腾精神

zhtengw 发表于 2016-4-7 17:46

甘新平 发表于 2016-4-7 13:49 https://www.pcbeta.com/static/image/common/back.gif
谢谢楼主分享,我的现在睡眠只是显示器关了,主机还是一直在转,以前是正常的

找个时间睡一下,然后看看当时的系统日志有没有sleep和wake相关的内容,找一找问题所在。

比如说你今晚(4月7日)八点多试着睡眠,然后开机后,打开终端,输入:syslog | grep -i "sleep"| grep -i "Apr7" | grep "20:"和syslog | grep -i "wake"| grep -i "Apr7" | grep "20:"看看两个命令的输出,应该能看出点端倪来。

zhtengw 发表于 2016-4-7 17:47

ppforwork 发表于 2016-4-7 16:24 https://www.pcbeta.com/static/image/common/back.gif
虽然看不懂.但是感觉到了很厉害!!!!

谢谢!{:5_273:}

zhtengw 发表于 2016-4-7 17:47

tanpengsccd 发表于 2016-4-7 16:27 https://www.pcbeta.com/static/image/common/back.gif
顶起来,希望更多人能分享成果

谢谢你!{:5_264:}

zhtengw 发表于 2016-4-7 17:51

wagsin 发表于 2016-4-7 14:22 https://www.pcbeta.com/static/image/common/back.gif
问下楼主,对A卡有效吗

这个我不清楚哦,没用过A卡,不知道A卡的情况,你搜索一下论坛吧,不好意思啊

Loueos 发表于 2016-4-7 18:03

zhtengw 发表于 2016-4-7 16:16 https://www.pcbeta.com/static/image/common/back.gif
不行,现在睡眠后usb是断电的,请问您有什么建议吗?

对啊,笔记本因为蓝牙,摄像头,导致睡眠秒醒。在想能不能只搞蓝牙,摄像头usb端口禁用。

zhtengw 发表于 2016-4-7 19:06

Loueos 发表于 2016-4-7 18:03 https://www.pcbeta.com/static/image/common/back.gif
对啊,笔记本因为蓝牙,摄像头,导致睡眠秒醒。在想能不能只搞蓝牙,摄像头usb端口禁用。

这样的话,你可照我的办法试试。我的蓝牙和摄像头就是挂在USBE和EUSB两个设备下的,另外HDAC是声卡,改了这几个之后就可以睡眠了。USB口睡眠断电应该是另外的问题,可能跟我的USB无法内建有关,但这样改了以后起码能睡眠了。

如果你有其他好办法,麻烦分享一下啊{:5_266:}
页: [1] 2 3
查看完整版本: 睡眠问题解决之路(秒醒->唤醒死机->正常)