FreeBSD 9.0 (amd64) und Thinkpad T400

juedan

FreeBSDler
Hallo Forum,

um es gleich vorweg zu nehmen, ich bekomme Suspend/Resume auf meinem T400 nicht hin. Suspend funktioniert, aber beim Resume hängt es an der Grafikkarte. Im Textmodus funktioniert alles bestens, aber sobald die Grafik ins Spiel kommt, ist Schluß.

Das habe ich bisher gemacht:
Ergänzung /etc/rc.suspend:

Code:
# if a device driver has [...] 
/usr/sbin/wpa_cli terminate
/etc/rc.d/moused stop
kldunload firewire
kldunload ehci
kldunload uhci
[...]

Ergänzung /etc/rc.resume:
Code:
# if a device driver [...]
/etc/rc.d/moused start
kldload firewire
kldload uhci
kldload ehci
/usr/sbin/wpa_cli reassociate
/usr/sbin/camcontrol cmd ada0 -a "EF 85 00 00 00 00 00 00 00 00 00 00"
[...]

/etc/sysctl.conf
Code:
hw.acpi.reset_video=1
hw.acpi.lid_switch_state=S3
hw.acpi.sleep_button_state=S3
hw.acpi.power_button_state=S5
hw.acpi.sleep_delay=3
hw.acpi.verbose=1
hw.syscons.sc_no_suspend_vtswitch=0
dev.acpi_ibm.0.events=1

/boot/loader.conf
Code:
acpi_ibm_load="YES"

Daten zum Notebook:
Thinkpad T400, Intel Core 2 Duo P8600 2,4GHz, 3072MB RAM, Intel GM45, ATI Mobility Radeon HD3470 (abgeschaltet, wird auch in dmesg nicht angezeigt), Intel PRO/1000, Intel Ultimate N Wifi Link 5300
BIOS-Version: 3.19 vom 02.08.2010
SATA-Controller ist im Kompatibilitätsmodus, also kein AHCI

Was muss ich machen, damit Suspend/Resume funktioniert. Per Google habe ich diverse Dinge gefunden, aber nirgends steht etwas über die Konfiguration. Es wird auch immer wieder berichtet, dass es mit den Thinkpads keinerlei Probleme bezüglich Suspend/Resume gebe, aber eine lauffähige Konfiguration wird auch nicht beschrieben.

Hat noch jemand eine Idee, für die ich dankbar wäre.

Viele Grüße

Jürgen
 
Hast du bei den beiden mal die jeweils andere Variante versucht, also in allen möglichen Kombis?
Code:
hw.acpi.reset_video=1
hw.syscons.sc_no_suspend_vtswitch=0

Ansonsten könnte ich mir vorstellen, dass es vielleicht mit ATI nicht gescheit klappt?
 
Was bei meinem T410 den Trick ausgemacht hat, war zwei "sleep 1" in die rc.resume zu schreiben. Seit dem geht es bei mir, allerdings benutze ich suspend/resume nicht sehr oft. Manchmal in der Bahn, oder im Flieger. Mit anderen Worten: Ich kann zur Stabilitaet nicht viel sagen. ;)
 
Hallo laemodost,

danke für die Antwort.
Die möglichen Kombinationen habe ich schin durchprobiert - ohne Erfolg.
Die ATi-GraKa ist abgeschaltet und nur die Intel ist aktiv.

Viele Grüße

JueDan
 
Hallo s-tlk,

danke für die Antwort.
Ja sleeps habe ich eingefügt und auch mehrere "/usr/bin/logger", um die Stelle herauszufinden, an der das Skript evtl stehen bleibt. Aber leider nix.

Suspend/Resume ist für mich ein wichtiges Kriterium - beim Notebook ein KO-Kriterium(!).

JueDan
 
Falls du kein DRM-Kernelmodul geladen hast: Du benötigst zum erfolgreichen Suspend / Resume mindestens vesa.ko (inzwischen wohl Teil von GENERIC), i915.ko oder i915kms.ko im Kernel. Ohne die DRM-Module werden die Register nicht korrekt wiederhergestellt und die GPU hängt im Nirvana.
 
Hallo Yamagi,

Falls du kein DRM-Kernelmodul geladen hast: Du benötigst zum erfolgreichen Suspend / Resume mindestens vesa.ko (inzwischen wohl Teil von GENERIC), i915.ko oder i915kms.ko im Kernel. Ohne die DRM-Module werden die Register nicht korrekt wiederhergestellt und die GPU hängt im Nirvana.

Ahaaaaaa. Jetzt funktioniert es :):):) Danke Yamagi.

Jetzt nur noch das WLAN auf die Reihe bekommen. Das spinnt au a wengerl: Zum Anmelden braucht es fast fünf Minuten. Die Karte funktioniert einwandfrei, was ich unter Fedora getestet habe.
Aber das finde ich schon noch heraus und werde es dann im ThinkWiki beschreiben.

Viele Grüße

Jürgen
 
Hallo,

Ich werde aus den letzten beiden Beiträgen nicht so sehr schlau. Bei einem T400, FreeBSD 9.1 amd64 mit minimalem Kernel (angelehnt an einen Thread in diesem Forum), Grafik: ausschließlich Intel GM45 , habe ich auch das Problem, dass das Gerät aus dem S3-Zustand (einen anderen habe ich noch nicht probiert) nicht mehr richtig aufwacht, wenn man X nutzt. Obwohl vesa, drm, drm2, i915kms geladen sind, erscheinen beim Aufwachen Artefakte und zum Teil Konsolen-Ausgaben (Kernel-Meldungen). Da steht:
Code:
kernel: info: [drm] capturing error event; look for more information in sysctl hw.dri.0.info.i915_error_state
kernel: i915: render error detected, EIR: 0x00000010
kernel: IPEIR: 0x00000000
kernel: IPEHR: 0x01000000
kernel: INSTDONE: 0xfffffffe
kernel: INSTPS: 0x0001e000
kernel: INSTDONE1: 0xffffffff
kernel: ACTHD: 0x02013b78
kernel: page table error
kernel: PGTBL_ER: 0x00000001
kernel: error: [drm:pid12:i915_report_and_clear_eir] *ERROR* EIR stuck: 0x00000010, masking
In hw.dri.0.info.i915_error_state steht ziemlich viel, so wie es aussieht auch ein Speicherauszug.
Und obwohl man es noch bedienen (wenn man zum Beispiel aus einem Terminal das acpi-Kommando abgesetzt hat und nach dem Aufwachen wieder darin landet, und ein reboot Kommando geben kann) kann, wird auf dem Bildschirm nichts anderes angezeigt. Da man es noch bedienen kann, gehe ich davon aus, dass hier auch ein Problem mit der Grafik vorliegt.

Weiß jemand Rat?

Danke,
sanbiber
 
Rat nicht, aber Michael Dexter hat heute noch getwittert, dass PC-BSD 9.1 auf seinem T400 problemlos einschläft und aufwacht.
 
Das ist schön, dass es wohl irgendwie funktioniert. Das meldete ja auch schon juedan. Interessant wäre ja, welches die entscheidenden Einstellungen sind. Hab' schon geguckt, ob man irgendwo sourcen von PC-BSD findet, in denen man z.B. sieht, was die in sysctl.conf, loader.conf, rc.suspend und rc.resume eingetragen haben. Aber irgendwie finde ich die nicht ...


Ich habe nochmal ein bisschen getestet und liefere noch ein paar Details:

Auf dem betreffenden System läuft
xorg-server-1.10.6_2,1 (mit hald, also keine xorg.conf)
xf86-video-intel-2.17.0_1

und in /etc/make.conf

WITH_NEW_XORG=true
WITH_KMS=true

Bei Systemstart wird weder agp, drm*, noch i915* geladen, allerdings werden die Module automatisch beim Start des X-Servers nachgeladen (genauer: i915kms.ko, drm2.ko, agp.ko sind nach X-Server-Start geladen).

Setze ich hw.acpi.reset_video=1, hat dies zur Folge, dass das Gerät aus dem Schlafmodus nicht mehr aufwacht. Mit hw.acpi.reset_video=0 und hw.syscons.sc_no_suspend_vtswitch=0|1 wacht es wieder auf zeigt für etwa eine Sekunde auf dem Bildschirm den Zustand an, den er hatte bevor es in den Schlafmodus ging, danach gibt es nur noch Artefakte oder Konsolenausgaben zu sehen (statisches Bild). Allerdings ist im letztgenannten Fall das System aktiv und man kann es weiter bedienen, wenn man auch nicht kontrollieren kann, was man eingibt, etc...

Mit hw.pci.do_power_suspend und hw.pci.do_power_resume hab' ich auch 'rumgespielt - ohne Erfolg.

Hat jemand einen Tipp?
 
Ja, das hatte ich bereits getan. Er guckt, sobald er kann. Ich dachte aber, dass sich in diesem Forum mindestens 2 Leute herumtreiben, die auf meine Frage Antwort wissen könnten.
 
Ich hatte schön öfter funktionierendes Suspend. Das ist dann aber immer wieder kaputt gegangen, bis ich das schließlich komplett aufgegeben habe.
 
Als ich es nach dem Upgrade von 9.0 auf 9.1 auf einem T420 mit Nvidia Blob probiert habe ging es. Ich nutze es nur nicht, weil es GELI aushebelt.
 
Wenn jemand "geli suspend" und "geli resume" für /home halbwegs komfortabel verskriptet bekommt, wäre ich sehr an den Scripten interessiert. :) Davon abgesehen, funktioniert das Suspend meines R500 problemlos. Die Konfiguration findet sich im Howto-Forum.
 
Ich habe gerade mein HP mit acpiconf -s3 versenkt. Und siehe da, es ist tatsächlich aufgewacht! Ich musste nicht mal irgendwelche USB Module entladen und wiedererwecken. Netz ist auch noch da!

Edit:
Funktioniert sogar per Fn-Tastenkombi.
 
Zuletzt bearbeitet:
So, nun hat es funktioniert.

Ohne vesa im Kernel funktioniert acpiconf -s 3 ohne Probleme (die üblichen acpi-verdächtigen-sysctl-Variablen haben default-Werte).
Sobald das vesa-Modul geladen wird, wacht das Gerät nicht mehr richtig auf (d.h. die Grafikausgabe ist verhunzt).

Mit PCBSD-9.1-amd64-LiveUSB-Stick hat es übrigens bei diesem Gerät auch nicht funktioniert.
 
Danke für den Tipp! Ohne Vesa-Modul funktionert das bei mir auch endlich ;) Sonst habe ich auch nichts weiter in den Scripts für suspend und resume eingestellt.

PS: Ich habe 9 Stable installiert und benutze einen etwas abgespeckten Kernel. Deckel schließen und öffnen lässt mein Thinkpad X200s nun ordentlich einschlafen und auch wieder aufwecken.
 
Zuletzt bearbeitet:
Ich vermelde auch, dass bei mir USB nach einem Resume nicht mehr geht. Vermutlich muss ich den Kernel auch mal ohne die USB-Module bauen, wobei ich noch nicht ganz weiß, wie ich da vorgehen muss...
 
Bau dir den Kernel mit USB als Modul. Anschließend schmeißt du das Modul vorm Suspend raus und beim Resume lädst du es wieder. Dafür gibt es /etc/rc.{suspend,resume}.
 
Zurück
Oben