sukka 发表于 2020-4-3 23:57

S3 睡眠唤醒后 EC Query 不再触发(ThinkPad Ex80)

本帖最后由 sukka 于 2020-4-5 00:01 编辑


[*]使用 SSDT 定制了 Fn 快捷键(如亮度小太阳等)、加上原来已经支持的 Fn 快捷键(音量加减)在 S3 睡眠前正常,在 S3 睡眠唤醒后不再有效
[*]S3 睡眠前,合盖睡眠正常;S3 睡眠唤醒后,合盖睡眠不再有效。
[*]在 S3 睡眠前电池状态正常更新;S3 睡眠唤醒后电池电量可以读取,但是插拔 AC 交流电电源后电池图标不再更新。


ThinkPad 上的 Fn 快捷键设备、以及合盖开盖事件,都是 EC Query(ThinkPad E480 机型的 LID 设备 EC Query 是 _Q2B)。使用 ACPIDebug 和 SSDT-RMDT 为 EC Query 和 SSDT-PTSWAK 打断点输出。重新启动进入系统后,使用 Fn 快捷键调节亮度,小太阳正常、日志正常通过 ACPIDebug 输出 EC Query。

通过左上角苹果菜单睡眠之后再唤醒,ACPIDebug 捕捉到 _WAK 函数接收的参数为 0x3。唤醒后,Fn 快捷键全部失效(小太阳不再出现、音量不能通过快捷键调整)、同时 ACPIDebug 也不再打印 EC Query。

在 S3 睡眠前后,日志中 没有 任何 ACPI Error。


目前认为是 S3 睡眠流程或者 S3 唤醒流程 导致了 EC Query 不能正常触发的问题。

ThinkPad 原始的 PTSWAK 流程如下:


[*]_PTS () -> 睡眠
[*]_WAK () -> OWAK ()(位于 DSDT 中的 OWAK 函数)-> 唤醒

SSDT Patch 后的 PTSWAK 流程如下:


[*]位于 SSDT-PTSWAK 中的 _PTS () -> SSDT XHC.PMEE 置零补丁(修复关机变重启)-> ZWAK () (由 DSDT 中原始的 _PTS 重命名而来)
[*]位于 SSDT-PTSWAK 中的 _WAK() -> SSDT 重置 LED 状态补丁 -> SSDT 唤醒亮屏补丁 -> ZWAK () (由 DSDT 中原始的 _WAK 重命名而来)-> SSDT-BATT 中的 OWAK ()(由于 OWAK 函数涉及到 高位电池变量 HWAK、已经在 SSDT-BATT 电池补丁中重写;DSDT 中原始 OWAK 已被重命名为 XWAK)-> 唤醒


除 ThinkPad E480 以外,ThinkPad E580 机型(其 DSDT 与 E480 高度相似)有一样的问题: https://www.tonymacx86.com/threads/lid-close-stop-working-after-sleep.279447

希望有 ThinkPad / Lenovo 机型的 DSDT 相关经验的大佬、菊苣们帮忙查看一下原始 DSDT 中关于 ACPI S3 以及 EC 的相关问题。

附件 ACPI.zip 中包含了以下文件:


[*]通过 Clover F4 提取的原始 ACPI 表
[*]已经反编译和除错过的原始 DSDT.dsl
[*]上述提到的相关 SSDT 补丁(PTSWAK、关机变重启修复、LED 重置、唤醒亮屏修复、电池补丁)
[*]OpenCore (0.5.7) 的 config.plist 以供检查相关重命名




futureisnow 发表于 2020-4-5 10:57

之前就碰到了这个问题,一直也没有办法解决,好像关注这个问题的人很少。
还是think pad 480580才有这些问题?

sukka 发表于 2020-4-5 11:12

futureisno 发表于 2020-4-5 10:57 https://www.pcbeta.com/static/image/common/back.gif
之前就碰到了这个问题,一直也没有办法解决,好像关注这个问题的人很少。
还是think pad 480580才有这些 ...

感觉 470 490 590 机型都没这个问题(没见有人问),唯独 480 580 有,也不知道为什么。
不知道升降级 BIOS 版本能不能换一版 DSDT 的。

futureisnow 发表于 2020-4-5 11:36

sukka 发表于 2020-4-5 11:12 https://www.pcbeta.com/static/image/common/back.gif
感觉 470 490 590 机型都没这个问题(没见有人问),唯独 480 580 有,也不知道为什么。
不知道升降级 B ...

我昨天晚上看到一个贴子,和你表述的问题差不多,主要是电池这块。

你要不尝试一下别的版本的bios,如果可以解决就告知一下,我也被这个问题困扰好久了。

futureisnow 发表于 2020-4-5 11:42

sukka 发表于 2020-4-5 11:12 https://www.pcbeta.com/static/image/common/back.gif
感觉 470 490 590 机型都没这个问题(没见有人问),唯独 480 580 有,也不知道为什么。
不知道升降级 B ...

你用ACPIDebug在睡眠后得到的信息一般都是:
kernel        ACPIDebug: { "ABCD-_PTS-Arg0=", 0x3, }
kernel        ACPIDebug: { "ABCD-_WAK-Arg0=", 0x3, }

OC-little里面已经说明了,我觉得可能是主板的bios和一般的bios不一样。
e480和e580有可能用的是凤凰bios。

sukka 发表于 2020-4-5 11:48

futureisno 发表于 2020-4-5 11:42 https://www.pcbeta.com/static/image/common/back.gif
你用ACPIDebug在睡眠后得到的信息一般都是:
kernel        ACPIDebug: { "ABCD-_PTS-Arg0=", 0x3, }
kernel        A ...

我没用 OC-little 那个方法用快捷键打印参数,因为 S3 睡眠唤醒以后 Fn 快捷键都炸了。。

我的断点直接打在 _WAK 里的。

futureisnow 发表于 2020-4-5 12:13

Software name      BIOS Update Utility

Support model      ThinkPad E480
                        ThinkPad E580
                        ThinkPad R480

这三个型号的bios都是一样的。

futureisnow 发表于 2020-4-5 12:47

要不试试别的bios吧
https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-edge-laptops/thinkpad-e480-type-20kn-20kq/downloads/DS501843

我不要用户名 发表于 2020-4-5 14:29

感觉是系统问题。。我HP机型也出现了   S3睡眠后电池图标会变红,电流强度为0的情况

sukka 发表于 2020-4-5 14:38

我不要用户名 发表于 2020-4-5 14:29 https://www.pcbeta.com/static/image/common/back.gif
感觉是系统问题。。我HP机型也出现了   S3睡眠后电池图标会变红,电流强度为0的情况

ThinkPad E580 也有这个问题。但是应该和电池补丁打得不好也许有关。

liusi20000 发表于 2020-4-5 15:02

我的e470和楼主一样的病一摸一样

sukka 发表于 2020-4-5 15:05

liusi20000 发表于 2020-4-5 15:02 https://www.pcbeta.com/static/image/common/back.gif
我的e470和楼主一样的病一摸一样

连 E470 都有这个问题?那这太诡异了。

sukka 发表于 2020-4-5 16:14

futureisno 发表于 2020-4-5 12:47 https://www.pcbeta.com/static/image/common/back.gif
要不试试别的bios吧

我看 ThinkPad E580 那边有一个 EFI 维护者降级 BIOS 到 1.34,我去看一下对应的更新日志。

sukka 发表于 2020-4-5 22:38

futureisno 发表于 2020-4-5 12:47 https://www.pcbeta.com/static/image/common/back.gif
要不试试别的bios吧

刚降级了 1.3.4 的 BIOS,毫无起色。

liusi20000 发表于 2020-4-6 16:04

这个bios无解   

futureisnow 发表于 2020-4-6 17:26

sukka 发表于 2020-4-5 22:38
刚降级了 1.3.4 的 BIOS,毫无起色。

这款笔记本用的人不多,大神就更少了,最多就是能用就行。

如果可以的话,看看相近型号thinkpad的dsdt,看能不能有借鉴的地方。

sukka 发表于 2020-4-6 17:31

futureisno 发表于 2020-4-6 17:26 https://www.pcbeta.com/static/image/common/back.gif
这款笔记本用的人不多,大神就更少了,最多就是能用就行。

如果可以的话,看看相近型号thinkpad的dsdt ...

我看过 ThinkPad 大部分的 DSDT 了,都没看出过什么名堂。

futureisnow 发表于 2020-4-6 17:35

sukka 发表于 2020-4-6 17:31 https://www.pcbeta.com/static/image/common/back.gif
我看过 ThinkPad 大部分的 DSDT 了,都没看出过什么名堂。

难道别的笔记本在睡眠唤醒以后,EQ触发还是正常的,或者不需要触发EQ?

sukka 发表于 2020-4-6 17:41

futureisno 发表于 2020-4-6 17:35 https://www.pcbeta.com/static/image/common/back.gif
难道别的笔记本在睡眠唤醒以后,EQ触发还是正常的,或者不需要触发EQ?

别的笔记本应该没这问题。
主要 ThinkPad 可能他们 S3 睡眠的实现比较奇怪,所以睡眠唤醒以后 EC 控制器整个都出问题,下面绑着的电池、快捷键、合盖睡眠 都炸了。

MyMarmot 发表于 2020-4-6 18:14

页: [1] 2 3
查看完整版本: S3 睡眠唤醒后 EC Query 不再触发(ThinkPad Ex80)