暂停/恢复期间关闭/打开所有电源

暂停/恢复期间关闭/打开所有电源

我在使用 Ubuntu 18.04 LTS 的 MacBook Pro 上遇到了暂停问题。
这个问题在一定程度上取决于雷电以太网适配器是插入还是拔出(以太网电缆是否插入似乎不会改变任何事情)。
我几乎只能在拔出适配器的情况下才能成功暂停,但即使在这种情况下,它也只能在重启后工作几次。几次成功尝试后,下一次尝试将不再起作用,直到重启。

为了获得更多见解,我通过不同配置的“暂停”按钮测试了暂停功能,主要是无需登录。

有 4 种不同的配置:
1 雷电以太网适配器已拔出
2 适配器已插入
3 适配器在启动期间插入,并在尝试挂起之前拔出
4 适配器仅在启动后插入(因此在尝试挂起之前)

以及六种状态:
A 暂停成功
B 暂停似乎成功(风扇关闭)但是它在一秒后重生
C 它只是在睡眠(风扇打开)并且屏幕黑着,按下按键后它会重生
D 它只是在睡眠并且屏幕黑着,并且它无法重生,它似乎被冻结了
E 它只是在睡眠并且屏幕黑着,并且在一秒后重生而没有按下按键
F 暂停似乎成功(风扇关闭)但是它在一秒后重生然后似乎被冻结了。

配置 1 在第一次尝试时总是导致状态 A(OK),有时在第二次、第三次和第四次尝试时也会导致状态 B;
配置 2 导致状态 D(冻结);
配置 3 在第一次尝试时导致状态 C,然后下一次尝试导致状态 E;
配置 4 第一次尝试可能导致状态 F(冻结)或 A(OK),然后下一次尝试导致状态 B、D 或 F

知道发生什么事了吗?

答案1

暂停/恢复期间关闭/打开所有电源

很难找出到底发生了什么。使用这个脚本可以让一切正常工作:

#!/bin/bash

# Original script was using /bin/sh but shellcheck reporting warnings.

# NAME: custom-xhci_hcd
# PATH: /lib/systemd/system-sleep
# CALL: Called from SystemD automatically
# DESC: Suspend broken for USB3.0 as of Oct 25/2018 various kernels all at once

# DATE: Oct 28 2018.

# NOTE: From comment #61 at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998

TMPLIST=/tmp/xhci-dev-list

# Original script was: case "${1}" in hibernate|suspend)

case $1/$2 in
  pre/*)
    echo "$0: Going to $2..."
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind xhci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
  post/*)
    echo "$0: Waking up from $2..."
    for i in `cat $TMPLIST`; do
              # Bind xhci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

家政

使用 root 权限创建脚本:

  • sudo -H gedit /lib/systemd/system-sleep/custom-xhci_hcd

插入上面的文本并保存文件。将脚本标记为可执行:

  • sudo chmod a+x /lib/systemd/system-sleep/custom-xhci_hcd

重启并测试

如果脚本无法帮助删除它:

  • sudo rm -f /lib/systemd/system-sleep/custom-xhci_hcd

相关内容