Standby funktioniert nicht

Nach systemctl hibernate ist der Rechner aus! Ich kann die Steckdosenleiste, die den Rechner mit Strom versorgt ausmachen - der Rechner hat also keinen Strom mehr. Wenn ich den danach wieder anstelle, sind alle Programme und Fenster so geöffnet wie zum Zeitpunkt von systemctl hibernate
Also scheint suspend to disk zu funktionieren.

Schön, da sind wir uns einig. Ja, es funktioniert nicht. Er geht aus und sofort wieder an!

gut.
Dann solltest Du wohl mal ein paar detailierte System/Hardware Informationen posten
damit andere Leute eine Chance haben Dir zu helfen.

Ich kann es nicht.

Stichwort: inxi

Graphics:
  Device-1: AMD Cezanne [Radeon Vega Series / Radeon Mobile Series]
    driver: amdgpu v: kernel
  Device-2: Sunplus Innovation FHD Camera Microphone type: USB
    driver: snd-usb-audio,uvcvideo
  Display: x11 server: X.Org v: 21.1.6 driver: X: loaded: amdgpu
    unloaded: modesetting dri: radeonsi gpu: amdgpu resolution: 3840x2160~60Hz
  API: OpenGL Message: Unable to show GL data. Required tool glxinfo
    missing.
System:
  Kernel: 5.15.84-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.0 Desktop: Cinnamon
    v: 5.6.4 tk: GTK v: 3.24.35 dm: LightDM Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Desktop System: Gigabyte product: B550M S2H v: N/A serial: <superuser required>
  Mobo: Gigabyte model: B550M S2H v: x.x serial: <superuser required> UEFI: American Megatrends
    v: F11d date: 10/29/2020
Battery:
  Device-1: hidpp_battery_2 model: Logitech K520 serial: <filter> charge: 70% (should be ignored)
    status: discharging
  Device-2: hidpp_battery_3 model: Logitech Wireless Mouse M310/M310t serial: <filter>
    charge: 55% (should be ignored) status: discharging
CPU:
  Info: 6-core model: AMD Ryzen 5 5600G with Radeon Graphics bits: 64 type: MT MCP arch: Zen 3
    rev: 0 cache: L1: 384 KiB L2: 3 MiB L3: 16 MiB
  Speed (MHz): avg: 1679 high: 2991 min/max: 1400/4464 boost: enabled cores: 1: 1397 2: 1394
    3: 1757 4: 1922 5: 1763 6: 1826 7: 2991 8: 1696 9: 1331 10: 1331 11: 1390 12: 1352
    bogomips: 93456
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Graphics:
  Device-1: AMD Cezanne [Radeon Vega Series / Radeon Mobile Series] vendor: Gigabyte driver: amdgpu
    v: kernel arch: GCN-5.1 pcie: speed: 8 GT/s lanes: 16 ports: active: HDMI-A-1
    empty: DP-1,HDMI-A-2 bus-ID: 09:00.0 chip-ID: 1002:1638 temp: 27.0 C
  Device-2: Sunplus Innovation FHD Camera Microphone type: USB driver: snd-usb-audio,uvcvideo
    bus-ID: 3-2.1:9 chip-ID: 1bcf:28c4
  Display: x11 server: X.Org v: 21.1.6 driver: X: loaded: amdgpu unloaded: modesetting
    alternate: fbdev,vesa dri: radeonsi gpu: amdgpu display-ID: :0 screens: 1
  Screen-1: 0 s-res: 3840x2160 s-dpi: 96
  Monitor-1: HDMI-A-1 mapped: HDMI-A-0 model: LG (GoldStar) HDR 4K res: 3840x2160 dpi: 163
    diag: 690mm (27.2")
  API: OpenGL Message: Unable to show GL data. Required tool glxinfo missing.
Audio:
  Device-1: AMD Renoir Radeon High Definition Audio driver: snd_hda_intel v: kernel pcie:
    bus-ID: 3-2.1:9 chip-ID: 1bcf:28c4 speed: 8 GT/s lanes: 16 bus-ID: 09:00.1 chip-ID: 1002:1637
  Device-2: AMD Family 17h/19h HD Audio vendor: Gigabyte driver: snd_hda_intel v: kernel pcie:
    speed: 8 GT/s lanes: 16 bus-ID: 09:00.6 chip-ID: 1022:15e3
  Device-3: Sunplus Innovation FHD Camera Microphone type: USB driver: snd-usb-audio,uvcvideo
  Sound API: ALSA v: k5.15.84-1-MANJARO running: yes
  Sound Server-1: JACK v: 1.9.21 running: no
  Sound Server-2: PulseAudio v: 16.1 running: yes
  Sound Server-3: PipeWire v: 0.3.63 running: no
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Gigabyte driver: r8169
    v: kernel pcie: speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 07:00.0 chip-ID: 10ec:8168
  IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Drives:
  Local Storage: total: 465.76 GiB used: 386.21 GiB (82.9%)
  ID-1: /dev/nvme0n1 vendor: Kingston model: SA2000M8500G size: 465.76 GiB speed: 31.6 Gb/s
    lanes: 4 serial: <filter> temp: 33.9 C
Partition:
  ID-1: / size: 440.15 GiB used: 386.2 GiB (87.7%) fs: ext4 dev: /dev/nvme0n1p2
  ID-2: /boot/efi size: 299.4 MiB used: 468 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1
Swap:
  ID-1: swap-1 type: partition size: 17.21 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/nvme0n1p3

Hier kann man sehen, warum es nicht einschläft:

s2idle ist ein rein softwaremäßiger Bereitschaftsmodus. Bedeutet, es setzt alles in low-power Mode. Wenn von einem Gerät verweigert → Fehler.

Wenn du den üblichen S3 Modus verwendest, dann wäre das BIOS/UEFI unterstützt. Beispiel:

kernel: ACPI: PM: Preparing to enter system sleep state S3
kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
kernel: ACPI: PM: Saving platform NVS memory

Da i2idle verwendest wird, hat Linux keinen S3 Modus erkannt und vermutlich hast du auch keinen. S4 (Suspend-to-disk) scheint bei dir im BIOS/UEFI aktiviert zu sein, deswegen funktioniert es, aber das ist nur eine Vermutung. Wenn den PC sich einfach ausschaltet, dann würde ich eher von vom Softwaremodus swsusp ausgehen und nicht BIOS/UEFI Modus S4.

https://www.kernel.org/doc/Documentation/power/states.txt


Es gibt jetzt die Möglichkeit im BIOS/UEFI nach S3 zu ändern, oder eventuell im Kernel zu erzwingen.

Kernel parameter: mem_sleep_default=deep

Das zeigt den aktuellen Zustand:

cat /sys/power/mem_sleep

Hallo @megavolt

vielen Dank für deine Erklärung. Ich bin die letzten Tage leider nicht dazu gekommen alles auszuprobieren, aber heute hatte ich ein wenig Zeit.

Erstmal zu s2idle: Das stimmt. Es wird wohl benutzt!

[xyz@hostname ~]$ cat /sys/power/mem_sleep 
[s2idle]

Ich hab jetzt im BIOS nach einer Option für S3/S5 gesucht, aber nicht wirklich was gefunden. Entweder es ist gut versteckt, oder im BIOS kann da nichts eingestellt werden.

Mein Board ist ein Gigabyte B550M S2H

Normalerweise in etwa unter: Advanced → ACPI Settings → ACPI Sleep State

Auf jeden Fall ist das größtenteils ein UEFI Problem.

Falls aktiviert, könnte es auch sein, dass Linux in den ACPI Tables dafür nicht erwähnt wurde. Daher könnte man auch die OSI ändern, um dem UEFI ein Windows vorzugaukeln:

Ich würde mich schon schwer wundern, dass kein S3 oder S4 auf so einem Mainboard vorhanden ist, aber könnte von der Initative vn Windows entfernt/deaktivert worden sein? Kein Ahnung.

Ich persönlich mag das nicht, da es im S0 Modus verbleibt und alles software basierend ist. Man versucht den “Smartphone-Standby” auf den Desktop zu etablieren. Das ist auch in etwa s2idle, aber mit S0 und man fährt zb. die cstates (cpu) runter.

Ich habe jetzt das Handbuch 2x gelesen. Da gibt es echt nichts mit S3/S5.

schöne neue Welt

Das Board soll aber ACPI 5.0 kompatibel sein … was auch immer das heißt.

Könnte es daran liegen ? Welche USB Geräte sind denn so dran ?

Also, ich hab jetzt noch ein bisschen gelesen. Und Weingeist hatte vor einiger Zeit auch mal Probleme mit einem Laptop und Energissparmodus.

Da hat er was von Kernelversionen geschrieben. Ich bin ja auf einem Kernel 5.15.84 unterwegs. Also hab ich es als erstes mit einem 6er Kernel versucht. Gleiches Problem. Dann bin ich auf den Kernel 5.10.161 zurück. Und siehe da, es klappt. Der Rechner geht nach 5 Minuten aus.

ABER: Ich habe eine Master/Slave Steckdosenleiste. Wenn der Master wenig Strom verbraucht, werden die SLAVE ausgeschaltet. Das passiert auch. Allerdings kann ich den Rechner mit einem Tastendruck an der Funktastatur wieder hochfahren - innerhalb weniger Sekunden ist das Bild wieder da. Das geht mir fast zu schnell. Ich gehe also davon aus, das der Rechner zwar so wenig Strom verbraucht, das die SLAVE alle ausgeschaltet werden, aber er immer noch nicht in den S3 oder S4 geht, sondern wohl eher im S0 bzw. S1 landet. Praktisch ist es ja, aber n icht dass was ich will.

Dann hab ich mir das hier noch mal durchgelesen: https://www.kernel.org/doc/Documentation/power/states.txt

Wenn ich das richtig verstehe, ist mein System der Meinung, das es S3 und auch S4 kann (Ausgabe mit dem Kernel 5.10):

$ cat /sys/power/state
freeze mem disk
$ cat /sys/power/mem_sleep
s2idle [deep]

Das bestätigt erstmal die Aussage von @megavolt das es hier um Energiesparen in Software geht (s2idle) - aber eigentlich müsste auch deep (richtiges suspend to ram) gehen. Sonst würde es nicht in der Ausgabe auftauchen. Das wäre ja mal ein Anfang. Allerdings hilft der Kernelparameter mem_sleep_default=deep nicht weiter. Ich hab das in /etc/default/grub eingetragen und grub-update gemacht. Es ändert sich aber nichts am Verhalten.

sudo dmesg | grep ACPI | grep supports

Was kommt da raus ?

Irgendwie hilft der schon. deep ist ja markiert.

Ne, der war auch ohne den Kernelparameter schon markiert.

$ sudo dmesg | grep ACPI | grep supports
[    0.268037] ACPI: (supports S0 S3 S4 S5)

Macht es nicht besser …

Ich hab jetzt auch schon versucht den Tip von megavolt umzusetzen.

GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi='Windows 2018'

Hilft aber auch nicht.

Ich sehe da schon einen Unterschied

Ich habe Gigabyte nach ACPI im BIOS gefragt. In meiner ersten Frage wurde darauf verwiesen, das Linux nicht unterstützt wird. Ich habe dann noch mal nachgehakt. Hier die Antwort:

@speerwerfer Ja wunderbar… “Installieren Sie Windows… und Ruhe.”

Mich würde ja mal die ACPI Table interessieren, ob S3 denn auch mit drin ist.

Im Terminal:

pamac install acpica

und

acpidump > acpidump.bin

Könntest du mir die Datei acpidump.bin hochladen und hier verlinken? Danke.

Auf jeden Fall sehe ich bei mir, dass_PS3 verfügbar ist:

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

Falls dich das auch interessiert, hier was zu lesen: Upgrading ACPI tables via initrd — The Linux Kernel documentation

Außerdem wäre ein journal hilfreich, falls dort UEFI Bugs gemeldetet werden.

journalctl --boot -1 > journal.log

Gruß

EDIT: Das wäre auch hilfreich:

cat /proc/acpi/wakeup 

In jedem Fall würde ich behaupten, dass das UEFI mit Windows getestet wurde und manchaml mit einer sehr speziellen Windows Version. Hintergründe zu dem ganzen kann man hier lesen: ACPI _OSI and _REV methods — The Linux Kernel documentation Man müsste wirklich jede mögliche Windows Version testen, wie oben beschrieben.

@megavolt: Danke für deine Mühe! Die Antwort von Gigabyte fand ich auch befremdlich. Wieder eine Firma die auf der “nicht kaufen” Liste steht.

Klar, ich bin ja gewillt dazuzulernen. Bin seit 4 Jahren nun komplett weg von Windows … merke aber immer wieder, dass mir noch viel Wissen fehlt.

Hier die acpidump.bin HiDrive
Wie genau ließt du die Datei? Gibts einen Editor, der die Daten vernünftig darstellt?

Und hier das journal.log HiDrive

[ ~]$ cat /proc/acpi/wakeup
Device	S-state	  Status   Sysfs node
GP17	  S4	*enabled   pci:0000:00:08.1
XHC0	  S4	*enabled   pci:0000:05:00.3
XHC1	  S4	*enabled   pci:0000:05:00.4
PS2K	  S3	*disabled
PS2M	  S3	*disabled
GPP0	  S4	*disabled
PTXH	  S4	*enabled   pci:0000:01:00.0
PT20	  S4	*disabled
PT23	  S4	*disabled
PT24	  S4	*disabled
PT26	  S4	*disabled
PT27	  S4	*disabled
PT28	  S4	*disabled
PT29	  S4	*enabled   pci:0000:02:09.0

Jetzt wird es seltsam…

Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Module Device)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Processor Device)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(3.0 _SCP Extensions)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Processor Aggregator Device)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Linux-Dell-Video)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
Dez 30 12:51:49 Waldorf kernel: ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
Dez 30 12:51:49 Waldorf kernel: ACPI: 12 ACPI AML tables successfully acquired and loaded
Dez 30 12:51:49 Waldorf kernel: ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
Dez 30 12:51:49 Waldorf kernel: ACPI: Interpreter enabled
Dez 30 12:51:49 Waldorf kernel: ACPI: (supports S0 S3 S4 S5)
Dez 30 12:51:49 Waldorf kernel: ACPI: Using IOAPIC for interrupt routing

ACPI unterstützt S3 und es wurde auch von Linux erkannt. Keine erkannten Bugs in den Logs.

Das sagt einfach das Aufwachen durch Maus- oder Keyboard-Eingabe deaktiviert ist.

Mir erschließt sich nicht warum es nicht funktioniert… ACPI und Kernel ist es defintiv nicht.

Hmm, mir ist gerade was aufgefallen. Die letzten Tage bin ich kaum am Rechner gewesen und hab ihn auch nicht laufen lassen. Heute war ich kurz weg und wurde aufgehalten. Als ich wieder kam, war er aus und ich konnte ihn per Tastatur wieder starten. Er war sofort wieder da - also wohl eher Suspend to RAM.

Ich hatte als letztes im BIOS die Option ErP deaktiviert (keine Ahnung was das genau ist - im Handbuch steht keine Erklärung - hat aber wohl was mit Energie zu tun … aber eigentlich gehts da um S5). Außerdem hatte ich den Kernel von 5.15 auf 5.10 wieder zurückgedreht. Beides habe ich nun wieder geändert und die beiden Dateien neu erstellt. ALLERDINGS: Es bleibt dabei. Nach 5 Minuten geht der Rechner aus und ich kann ihn per druck auf die Tastatur wecken.

Wenn du Zeit und Lust hast, hier noch einmal die beiden Dateien. Ich hatte zwischenzeitlich den Kernel wieder auf 5.10 zurückgedreht und im BIOS die Option ErP deaktiviert.
https://my.hidrive.com/lnk/p5CsCvMU
https://my.hidrive.com/lnk/KZisCC3b

Bei cat /proc/acpi/wakeup hat sich nichts geändert.

Also meiner Meinung nach ist das S3.

https://www.kernel.org/doc/Documentation/power/states.txt

Er hat 2 Arten zur Verfügung
s2idle = S0
deep = S3