Ubuntu 18.04 ThinkPad 立即从挂起状态恢复

Ubuntu 18.04 ThinkPad 立即从挂起状态恢复

我有一台联想 ThinkPad X1 Carbon 第 7 代。当我进入挂起状态(无论使用哪种方法)时,笔记本电脑会自动从挂起状态唤醒。我注意到,这种行为仅在笔记本电脑对接时发生(联想 USB-C 第 2 代对接),因为我 90% 的时间都使用对接的笔记本电脑,所以让挂起工作很重要。

我尝试过的事情:

禁用所有 PCI 唤醒:

cat /proc/acpi/wakeup

然后设置echo <deviceHere> > /proc/acpi/wakeup所有启用的设备(除非LID我可以通过盖子恢复)

禁用所有 USB 唤醒:

cat /sys/bus/usb/devices/*/power/wakeup

ll /sys/bus/usb/devices/*/power/wakeup

然后echo "disabled" > /sys/bus/usb/devices/<deviceHere>/power/wakeup为所有启用的设备进行设置

答案1

在这里添加这个,因为我遇到了类似的问题和相同的计算机。

我的 Carbon X1 一直运行良好……直到突然间,它拒绝挂起。此外,CPU 利用率很高——它变得非常热,风扇全速旋转,但 htop 什么也没显示出来。运行powertop确认发生了一些事情,显示“cpu 核心”消耗 13-20 W(空闲计算机的正常值为 3-5 W)。我尝试升级(从 20.10 升级到 21.04)看看是否有帮助——没有。

我尝试systemctl suspend在控制台中输入,结果显示一些有关 USB 设备无法正确挂起的错误消息。奇怪的是,这些消息没有显示在任何日志中,也没有显示journalctl

最后,帮我解决问题的是rmmodingxhci_pcixhci_pci_renesas。突然间,CPU 空闲下来,风扇也跟着空闲下来,并且挂起功能又开始工作了。

答案2

PXSX我注意到运行时有两个设备cat /proc/acpi/wakeup

PXSX      S4    *disabled
PXSX      S4    *enabled   pci:0000:05:00.0

当我尝试PXSX通过命令禁用echo PXSX > /proc/acpi/wakeup时,什么也没有发生(一个PXSX保留enabled,一个保留disabled,我认为这是因为该命令无法到达第二个PXSX

我还尝试运行acpitool -w然后acpitool -W <deviceNumberHere>禁用第二个PXSX,但没有成功。我不确定为什么无法在第二个PXSX设备上禁用唤醒。

该设备仅在笔记本电脑停靠时才会出现,因此可以安全地假设该设备是停靠的一部分。

下一步是以某种方式禁用此设备以阻止其唤醒笔记本电脑。我发现该命令echo 1 > /sys/bus/pci/devices/0000:05:00.0/remove将禁用此 PCI 设备。运行此命令后,挂起工作正常!唯一的问题是,如果我尝试再次执行挂起,笔记本电脑将表现出之前的行为(立即唤醒)。通过运行以cat /proc/acpi/wakeup查看设备PXSX是否已重新启用,可以确认这一点:在唤醒期间,设备不知何故重新启用了自身。

我的下一个想法是在预挂起期间禁用此设备。我创建了这个文件:/lib/systemd/system-sleep/pre-suspend.sh,使其可执行并写入以下内容:

#!/bin/sh

case $1 in
  pre)
    echo 1 > /sys/bus/pci/devices/0000:05:00.0/remove
    ;;
esac

此代码可确保在挂起之前立即禁用有问题的设备。目前,我的笔记本电脑可以成功进入睡眠状态,并且不会 100% 自行唤醒。

相关内容