resume klappt nicht nach suspend/hibernate, was kann man noch testen?

Hallo,

bei meinem Desktop Rechner klappt seit längerem suspend / hibernate nicht. Hatte früher ein ASUS Mainboard, mit dem es ging. Das jetzige Mainboard ist ein Gigabyte MA785GM-US2H. Habe folgendes versucht:

  1. Upgrade auf opensuse 12.2
  2. Einspielen der neuesten Bios Version (v11)
  3. Die Tricks von https://en.opensuse.org/SDB:Suspend_to_RAM (init=/bin/bash, …, s2ram -f versch. Optionen)
  4. Ruhezustand von 12.2 live CD initiieren

Der Rechner fährt jedesmal runter, die Festplatte stoppt. Nach Drücken des Power-On Buttons startet die Festplatte, der Bildschirm kriegt ein Signal und wird schwarz, das war’s. CAPS-Lock, NUM-Lock oder Scroll-Lock reagieren nicht. Habe ein Suspend mit PM_DEBUG=true initiiert Das Ende sieht so aus:

  • sync
  • do_suspend
  • get_s2ram_opts
  • ‘’ -n ‘’ ‘]’
  • ‘’ ‘’ = s2ram ‘]’
  • echo ‘INFO: using built-in quirks database from HAL.’
    INFO: using built-in quirks database from HAL.
  • uswsusp_get_quirks
  • OPTS=
  • ACPI_SLEEP=0
  • for opt in ‘$PM_CMDLINE’
  • case “${opt##–quirk-}” in
  • continue
  • ‘’ 0 -ne 0 ‘]’
  • ‘’ ‘’ = true ‘]’
  • S2RAM_OPTS=’ ’
  • echo ‘INFO: S2RAM_OPTS from HAL quirks: ‘’’ ‘’’.’
    INFO: S2RAM_OPTS from HAL quirks: ’ '.
  • ‘’ -n ’ ’ ‘]’
  • S2RAM_OPTS=’–force ’
  • ‘’ -z '–force ’ ‘]’
  • s2ram --force

Habe mir echt die Zähne ausgebissen. Was kann man denn jetzt noch machen/testen?

Hallo,

ich würde mal mit “nomodeset” starten. Und auch die Energieverwaltung mir noch mal anschauen.

Viel Erfolg.

Energieeinstellungen sind default (habe auch einen Versuch mit Boot Option powersaved=off gemacht, hat nicht geholfen).

Habe beim Bootmanager nomodeset zugefügt, aber das hat nicht geholfen. Allerdings hat sich das Ende des ausführlichen Logs geändert:

INFO: S2RAM_OPTS from HAL quirks: ’ --vbe_post --vbe_save --vbe_mode’.

  • ‘’ -n ’ --vbe_post --vbe_save --vbe_mode’ ‘]’
  • S2RAM_OPTS=’–force --vbe_post --vbe_save --vbe_mode’
  • ‘’ -z ‘–force --vbe_post --vbe_save --vbe_mode’ ‘]’
  • s2ram --force --vbe_post --vbe_save --vbe_mode
    Allocated buffer at 0x11000 (base is 0x0)
    ES: 0x1100 EBX: 0x0000

Anzumerken ist noch, dass der 55Networkmanager Hook “failed”, bzw. komisch aussieht:

Running hook /usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend:

  • hook_ok /usr/lib/pm-utils/sleep.d/55NetworkManager

  • local hook=55NetworkManager

  • ‘’ -f /var/run/pm-utils/pm-suspend/storage/disable_hook:55NetworkManager ‘]’

  • ‘’ -f /var/run/pm-utils/pm-suspend/storage/disable_hook:NetworkManager ‘]’

  • ‘’ -x /usr/lib/pm-utils/sleep.d/55NetworkManager ‘]’

  • return 0

  • /usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend

  • case “$1” in

  • suspend_nm

  • printf ‘Having NetworkManager put all interaces to sleep…’
    Having NetworkManager put all interaces to sleep…+ dbus_send --system --print-reply --reply-timeout=200 --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.Sleep boolean:true

  • command dbus-send --system --print-reply --reply-timeout=200 --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager.Sleep boolean:true

  • return 254

  • echo Failed.
    Failed.

  • log ‘’

  • is_set true

  • case ${1-UNSET} in

  • return 0

  • local 'fmt=%s

  • ‘’ ‘’ = -n ‘]’

  • printf '%s
    ’ ‘’

  • log -n '/usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend: ’

  • is_set true

  • case ${1-UNSET} in

  • return 0

  • local 'fmt=%s

  • ‘’ -n = -n ‘]’

  • fmt=%s

  • shift

  • printf %s '/usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend: ’
    /usr/lib/pm-utils/sleep.d/55NetworkManager suspend suspend: + hook_exit_status 0

  • case $1 in

  • log success.

  • is_set true

  • case ${1-UNSET} in

  • return 0

  • local 'fmt=%s

  • ‘’ success. = -n ‘]’

  • printf '%s
    ’ success.
    success.

  • LAST_HOOK=55NetworkManager

  • IFS=’

  • for base in ‘$(IFS="${oifs}"; for f in “$syshooks/”!~] “$phooks/”!~];
    do -O “$f” ] && echo ${f##*/} ; done | $sort | uniq)’

  • IFS=’

  • ‘’ ‘’ -a ‘’ = reverse -a 55NetworkManager ‘]’

  • ‘’ ‘!’ ‘’ ‘]’

  • inhibited

Habe dann als letzten Versuch versucht mit acpi=off zu booten, aber da kommt der Rechner nicht hoch.

Und nu?

suspend klappt jetzt. Habe im nächsten Schritt die DSDT ausgelesen, gefixt und mit custom dsdt gearbeitet => keine Verbesserung.

Mehr aus Verzweifelung habe ich eine alte nicht mehr benutzte Netzwerkkarte ausgebaut (der Rechner wurde mal als Netzwerkserver genutzt). Danach ging suspend to RAM sofort. Erstaunlich finde ich, dass suspend nicht geklappt hatte ich das zugehörige Kernelmodul (ne2k_pci) vorher entladen hatte.

hibernate tut nichts, aber das ist wohl nur eine Einstellungssache.

Hibernate erforderte 2 Änderungen:

  1. in /etc/suspend.conf musste manuell “resume device = /dev/sda2” gesetzt werden. danach funktionerte s2disk, nicht aber Tiefschlaf aus dem (KDE-) Menü heraus. Es war mir nicht möglich herauszufinden, ob da pm-hibernate oder “powersave -U” aufgerufen wird.
  2. powersave -U funktionierte nicht, weil ein ungültiges resume device angeben war (resume=/dev/disk/by-id/ata-SAMSUNG_HD160JJ_S08HJ1OL912214-part1). Es ist mir unklar, woher diese Angabe stammt, vermutlich aus dem grub2 Parameter resume=… Dort stand aber die richtige Angabe resume=/dev/disk/by-id/ata-SAMSUNG_HD160JJ_S08HJ1OL912214-part2. Mit yast konnte man den Bootloader nicht anpassen (hing sich beim Parsen der Einstellungen auf). Mit
    /usr/sbin/grub2-install --force --skip-fs-probe /dev/sda1
    konnte man ihn überbügeln und anschliessend klappte auch hibernate.

Gibt es irgendwo eine verständlich Doku, wie das alles funktionieren soll?