Suspend

筆記型電腦在掛起後立即喚醒

  • April 10, 2022

我的筆記型電腦在掛起後立即喚醒(或者掛起失敗?它們是兩種不同的情況嗎?)。它是舊的東芝 Satellite C855D-S5105,8Gb RAM。它有一個最近安裝的 bodhi Linux(一個 Ubuntu 衍生產品,所以在很多事情上它的工作方式與 Ubuntu 相同)。我找到的解決方案都不起作用。BIOS 中的兩個候選項被禁用(Wake on LANWake on Keyboard)。還有一個觸摸板,沒有滑鼠或藍牙接收器。下面我發布相關資訊,並附有來源。

$ uname -a
Linux Orion 5.4.0-107-generic #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

試圖辨識喚醒的候選者(假設它掛起並喚醒)。

這裡似乎有一些啟用喚醒的設備(請參閱this)。

$ cat /proc/acpi/wakeup | grep enabled
Device  S-stateStatus   Sysfs node
OHC1      S3    *enabled   pci:0000:00:12.0       <- ?
OHC3      S3    *enabled   pci:0000:00:16.0       <- ?
EHC1      S3    *enabled   pci:0000:00:12.2       <- ?
EHC3      S3    *enabled   pci:0000:00:16.2       <- ?
LID0      S4    *enabled   platform:PNP0C0D:00    <- Lid

$ lspci | grep "00:1[2,6]."
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
00:16.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:16.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)

這裡似乎沒有啟用喚醒的設備(source)。

$ cat /sys/bus/usb/devices/*/power/wakeup
disabled
disabled
disabled
disabled
disabled
disabled
disabled    
$ ll /sys/bus/usb/devices/*/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/1-3/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb1/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb2/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb3/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb4/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb5/power/wakeup
-rw-r--r-- 1 root root 4,0K abr  6 07:33 /sys/bus/usb/devices/usb6/power/wakeup

試圖找出掛起失敗的原因。看起來沒有失敗(如此),但我不確定它是否真的掛起並醒來,或者它退出掛起(如果它們是兩個不同的東西)。

$ journalctl -b | grep -nH suspend
(standard input):1576:abr 06 07:28:55 Orion sudo[1196]:     root : TTY=unknown ; PWD=/home/santiago ; USER=root ; COMMAND=/usr/sbin/pm-suspend
(standard input):1578:abr 06 07:28:58 Orion kernel: PM: suspend entry (deep)
(standard input):1583:abr 06 07:29:04 Orion kernel: printk: Suspending console(s) (use no_console_suspend to debug)
(standard input):1627:abr 06 07:29:04 Orion kernel: PM: suspend exit

添加可能有用的行。看起來在第 1591 行和第 1592 行之間發生了喚醒。

$ journalctl -b | grep -nH -A 40 -B 40 suspend
...
(standard input):1578:abr 06 07:28:58 Orion kernel: PM: suspend entry (deep)
(standard input)-1579-abr 06 07:28:58 Orion kernel: Filesystems sync: 0.191 seconds
(standard input)-1580-abr 06 07:29:04 Orion kernel: Freezing user space processes ... (elapsed 0.004 seconds) done.
(standard input)-1581-abr 06 07:29:04 Orion kernel: OOM killer disabled.
(standard input)-1582-abr 06 07:29:04 Orion kernel: Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
(standard input):1583:abr 06 07:29:04 Orion kernel: printk: Suspending console(s) (use no_console_suspend to debug)
(standard input)-1584-abr 06 07:29:04 Orion kernel: wlp2s0: deauthenticating from d0:6e:de:8e:25:f6 by local choice (Reason: 3=DEAUTH_LEAVING)
(standard input)-1585-abr 06 07:29:04 Orion kernel: sd 0:0:0:0: [sda] Synchronizing SCSI cache
(standard input)-1586-abr 06 07:29:04 Orion kernel: sd 0:0:0:0: [sda] Stopping disk
(standard input)-1587-abr 06 07:29:04 Orion kernel: ACPI: Preparing to enter system sleep state S3
(standard input)-1588-abr 06 07:29:04 Orion kernel: PM: Saving platform NVS memory
(standard input)-1589-abr 06 07:29:04 Orion kernel: Disabling non-boot CPUs ...
(standard input)-1590-abr 06 07:29:04 Orion kernel: IRQ 30: no longer affine to CPU1
(standard input)-1591-abr 06 07:29:04 Orion kernel: smpboot: CPU 1 is now offline
(standard input)-1592-abr 06 07:29:04 Orion kernel: ACPI: Low-level resume complete
(standard input)-1593-abr 06 07:29:04 Orion kernel: PM: Restoring platform NVS memory
(standard input)-1594-abr 06 07:29:04 Orion kernel: LVT offset 0 assigned for vector 0x400
(standard input)-1595-abr 06 07:29:04 Orion kernel: microcode: reload patch_level=0x05000119
(standard input)-1596-abr 06 07:29:04 Orion kernel: Enabling non-boot CPUs ...
(standard input)-1597-abr 06 07:29:04 Orion kernel: x86: Booting SMP configuration:
(standard input)-1598-abr 06 07:29:04 Orion kernel: smpboot: Booting Node 0 Processor 1 APIC 0x1
(standard input)-1599-abr 06 07:29:04 Orion kernel: microcode: CPU1: patch_level=0x05000119
(standard input)-1600-abr 06 07:29:04 Orion kernel: CPU1 is up
(standard input)-1601-abr 06 07:29:04 Orion kernel: ACPI: Waking up from system sleep state S3
(standard input)-1602-abr 06 07:29:04 Orion kernel: [drm] Found smc ucode version: 0x00010601
(standard input)-1603-abr 06 07:29:04 Orion kernel: rtlwifi: rtlwifi: wireless switch is on
(standard input)-1604-abr 06 07:29:04 Orion kernel: [drm] PCIE GART of 1024M enabled (table at 0x0000000000162000).
(standard input)-1605-abr 06 07:29:04 Orion kernel: radeon 0000:00:01.0: WB enabled
...

這裡沒有 Nvidia 驅動程序顯卡是 ATI Radeon。

$ dpkg -l | grep nvidia
ii  bodhi-background-invidia              0.01                                all          Bodhi Sunshine Invidia

有關的

  1. https://bbs.archlinux.org/viewtopic.php?id=263268

我設法通過以下方式避免喚醒。我整理了一個包含以下內容的腳本(受此disable_devices_from_wakeup.sh 啟發)

#!/bin/bash

declare -a devices=(EHC1 EHC3 OHC1 OHC3)
for device in "${devices[@]}" ; do
   sudo sh -c "echo $device > /proc/acpi/wakeup"
done

將其設置為執行檔,然後執行它。現在我將所有 4 台設備都設置為disabled,並且筆記型電腦只能通過蓋子或電源按鈕喚醒。因此,在不確切知道負責喚醒的設備的情況下,問題就消失了。

在進一步的測試中,僅 4 個設備中的任何一個enabled都足以防止掛起。這對我來說看起來很奇怪,但我沒有花時間分別理解每一個。

全部:

  1. 使更改永久化。是相關的問題。

引用自:https://unix.stackexchange.com/questions/698185