Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 2434|回复: 24

[DSDT] DSDT解决睡眠唤醒的发现 [复制链接]

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-5-16 23:38:39 |显示全部楼层
曾经看到过一位大佬的帖子,睡眠唤醒问题,尤其在笔记本上,很多都是USB的问题。有一部分是因为USB遮蔽所导致的,但有些即使USB接口全部正常还是会出现睡眠秒醒或者唤醒死机的问题。一般问题出在DSDT中对应硬件的_PRW方法上。很多时候直接把这玩意儿删了问题就解决了(就是0x6D和0x0D的补丁)。比如删掉下面这个Method:Device (XHC)
{
    ......
    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
    {
        Return (GPRW (0x6D, 0x03))
    }
    ......
}
但这样做只能通过按电源按键唤醒,USB被完全屏蔽。根据那位大佬所说,第一个参数除了少数几个会影响睡眠的硬件之外,其他的都是0x69,所以我先改了第一个参数。但经过数次改动实验之后发现,并不能解决问题。所以我主要改了第二个参数。

首先在终端用log show -style syslog | grep "Wake reason"看唤醒的硬件是啥(我的是XHC,USB总线),然后在DSDT中搜Device (XHC),在里面找到_PRW方法。
一开始我把第二个参数全改成了和后面一样的0x04,依旧没解决问题。知道我看到了另一个方法:
Method (_S0W, 0, NotSerialized)  // _S0W: S0 Device Wake State
            {
                If (LEqual (XFLT, Zero))
                {
                    Return (Zero)
                }
                Else
                {
                    Return (0x03)
                }
            }

看到后面的注释我觉得我可能找对了地方。既然这个方法决定设备唤醒状态,还有熟悉的if else语句......既然一个参数不行那就换另一个......然后就成了???虽然一直以为0x00会无法唤醒,但事实上现在不仅可以睡眠,甚至还可以用鼠标键盘唤醒。


不太确定是不是每一个硬件都有_S0W方法,是不是都有这样判断语句,也不知道是不是运气好......但是我确实搞定了两个阻止睡眠的硬件,一个是XHC,另一个是HDEF(似乎是音频有关)。这个是原来的:
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            ......
            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (GPRW (0x6D, 0x04))
            }

把第二个参数改成0x03就解决了问题。
不知道这个方法能不能适用所有的电脑,希望有大佬帮忙试试,感谢。
1

查看全部评分

Rank: 9

UID
750326
帖子
4132
PB币
2733
贡献
0
技术
102
活跃
2364
发表于 2019-5-17 08:44:17 |显示全部楼层
就喜欢这种探索精神

Rank: 5Rank: 5Rank: 5

UID
4634221
帖子
680
PB币
843
贡献
0
技术
0
活跃
1149
发表于 2019-5-17 08:48:43 |显示全部楼层
有空我也开机试试看看

Rank: 2Rank: 2

UID
4824605
帖子
391
PB币
616
贡献
0
技术
1
活跃
762
发表于 2019-5-17 10:41:10 |显示全部楼层
楼主可以参考下我之前发的评论:http://bbs.pcbeta.com/forum.php? ... ight=USB&page=4

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-5-17 11:05:23 来自手机 |显示全部楼层
xc233 发表于 2019-5-17 10:41
楼主可以参考下我之前发的评论:http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1795909&extra=&high ...

感谢,之前说的就是这个帖子……寒假的时候做的实验,但只看懂了注释,参数传递一头雾水完全没懂,后来就一直没研究了……

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-5-17 13:04:29 |显示全部楼层
xc233 发表于 2019-5-17 10:41
楼主可以参考下我之前发的评论:http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1795909&extra=&high ...

课上仔细看了一下我的DSDT,比较尴尬的是没找到_L6D这个方法,估计也是如你所说直接Notify(XHC,0x02)了,但是现在却可以正常睡眠,同时使用usb键鼠唤醒。不知道你能不能帮我看一下,有没有研究价值......

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 2Rank: 2

UID
2435757
帖子
52
PB币
0
贡献
0
技术
0
活跃
209
发表于 2019-5-17 13:07:31 来自手机 |显示全部楼层
mark一下,学习

Rank: 2Rank: 2

UID
4824605
帖子
391
PB币
616
贡献
0
技术
1
活跃
762
发表于 2019-5-18 18:19:37 |显示全部楼层
zty199 发表于 2019-5-17 13:04
课上仔细看了一下我的DSDT,比较尴尬的是没找到_L6D这个方法,估计也是如你所说直接Notify(XHC,0x02)了, ...

你确定你电脑确实是进入了深度睡眠?

Rank: 5Rank: 5Rank: 5

UID
4080033
帖子
597
PB币
67
贡献
0
技术
14
活跃
661
发表于 2019-5-18 19:02:27 |显示全部楼层
就喜欢这种探索精神

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-5-18 21:18:03 来自手机 |显示全部楼层
xc233 发表于 2019-5-18 18:19
你确定你电脑确实是进入了深度睡眠?

额,风扇停转,只有电源灯闪,硬盘应该也停了。和windows睡眠一样的。不知道算不算深度睡眠?

Rank: 7Rank: 7Rank: 7

UID
4583288
帖子
2237
PB币
1704
贡献
0
技术
1
活跃
2242
发表于 2019-5-18 21:25:14 |显示全部楼层
感谢分享!

Rank: 5Rank: 5Rank: 5

UID
4834339
帖子
716
PB币
791
贡献
0
技术
8
活跃
529
发表于 2019-5-18 22:29:29 |显示全部楼层
我是采用第一种方式的,只能用开机键唤醒

Rank: 2Rank: 2

UID
4787590
帖子
297
PB币
479
贡献
0
技术
0
活跃
380
发表于 2019-5-27 19:19:32 |显示全部楼层
到底改哪儿啊,_PRW还是S0W啊

Rank: 2Rank: 2

UID
3282478
帖子
351
PB币
313
贡献
0
技术
0
活跃
299
发表于 2019-5-28 08:09:49 |显示全部楼层
mark一下,学习

Rank: 2Rank: 2

UID
4787590
帖子
297
PB币
479
贡献
0
技术
0
活跃
380
发表于 2019-5-28 09:05:44 |显示全部楼层
一开始我把第二个参数全改成了和后面一样的0x04,依旧没解决问题。
把第二个参数改成0x03就解决了问题。

能否详细说明修改哪个方法,怎么修改,变更前后插图对比,说实话,我没看懂你到底是修改S0W还是修改了PRW

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-5-31 17:46:26 |显示全部楼层
帅来也 发表于 2019-5-28 09:05
能否详细说明修改哪个方法,怎么修改,变更前后插图对比,说实话,我没看懂你到底是修改S0W还是修改了P ...

修改的是_PRW方法,把return的第二个参数改了。修改的参数值可以参考_S0W或者_S3W类似的方法,里面有。
截图就不放了......因为更新了几次系统之后,参数不改甚至都可以正常睡眠唤醒,这可能是个玄学问题......

Rank: 2Rank: 2

UID
4711423
帖子
193
PB币
226
贡献
0
技术
0
活跃
723
发表于 2019-6-2 18:26:23 |显示全部楼层
所以可以使用热补丁的形式来完成嘛?

黑果晓白

Rank: 2Rank: 2

UID
4781823
帖子
118
PB币
161
贡献
0
技术
0
活跃
168
发表于 2019-6-2 20:52:41 |显示全部楼层
就是喜欢这样的探索精神

Rank: 2Rank: 2

UID
4849749
帖子
348
PB币
591
贡献
0
技术
0
活跃
497
发表于 2019-6-2 22:06:18 |显示全部楼层
1286603273 发表于 2019-6-2 18:26
所以可以使用热补丁的形式来完成嘛?

好像不行,热补丁好像是可以统一把这个_PRW删掉,但是每一个有问题的函数返回的参数值不一定一样,建议一个一个单独看看......或者就干脆删掉省事

Rank: 2Rank: 2

UID
4711423
帖子
193
PB币
226
贡献
0
技术
0
活跃
723
发表于 2019-6-3 11:54:09 来自手机 |显示全部楼层
zty199 发表于 2019-6-2 22:06
好像不行,热补丁好像是可以统一把这个_PRW删掉,但是每一个有问题的函数返回的参数值不一定一样,建议一 ...

我记得热补丁可以单独修理某一个位置的数据
回顶部
Copyright (C) 2005-2021 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件