Backlight/Hintergrundbeleuchtung des TFTs ausschalten GELÖST

Debian auf Notebooks und speziellen Geräten wie eingebetteten Systemen, Routern, Set-Top-Boxen, ...
Antworten
bamse
Beiträge: 16
Registriert: 06.04.2004 00:09:38

Backlight/Hintergrundbeleuchtung des TFTs ausschalten GELÖST

Beitrag von bamse » 10.01.2005 01:28:38

Moin!

Folgendes Problem:
Ich hätte es gerne, dass nach einer gewissen Weile mein TFT am Laptop ausgeht, und zwar komplett. Bisher ist es so, dass es nach 5min zwar schwarz wird, aber halt nur "screensaver"-schwarz und nicht "strom-aus"-schwarz (so wie unter wi***s gewohnt). Sprich: Das Backlight ist immer noch an, trotz des schwarzen Bildschirms leuchtet es immer noch.

Die Energiesparfunktionen unter KDE bewirken nichts. Mit google hab ich zwar diesen Befehl gefunden:

Code: Alles auswählen

 xset -display :0 dpms force off 
nachdem man die dpms in der XF86Config setzen sollte:

Code: Alles auswählen

Section "Monitor"
        Option          "DPMS"
EndSection
DPMS wird auch aktiviert.
Aber mit diesem Befehl tut sich überhaupt nichts, es werden auch keine Meldungen ausgegeben.

Unter /proc/acpi gehts leider auch nicht weiter, wie es bei denjenigen geht, die ein Toshiba- oder Asus Notebook haben und entsprechende Tools installieren können:

Code: Alles auswählen

pippix:/proc/acpi# ls -al
insgesamt 0
dr-xr-xr-x   10 root root 0 2005-01-07 22:52 .
dr-xr-xr-x  112 root root 0 2005-01-07 23:52 ..
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 ac_adapter
-rw-r--r--    1 root root 0 2005-01-10 01:07 alarm
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 battery
dr-xr-xr-x    4 root root 0 2005-01-10 01:07 button
-r--------    1 root root 0 2005-01-10 01:07 dsdt
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 embedded_controller
-r--------    1 root root 0 2005-01-07 22:52 event
-r--------    1 root root 0 2005-01-10 01:07 fadt
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 fan
-r--r--r--    1 root root 0 2005-01-10 01:07 info
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 power_resource
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 processor
-rw-r--r--    1 root root 0 2005-01-10 01:07 sleep
dr-xr-xr-x    3 root root 0 2005-01-10 01:07 thermal_zone
-rw-r--r--    1 root root 0 2005-01-10 01:07 wakeup
Hier im Forum hab ich nicht gefunden, jedenfalls nicht mit den Stichwörtern backlight oder hintergrundbeleuchtung.

Ich besitze ein Gericom 1st Supersonic 1000MHz (alt, aber läuft mit Debian :D ). Kernel ist selbstkompilierter 2.6.9, acpi läuft, apm ist komplett deaktiviert.
Hier noch die Ausgaben von lspci, falls benötigt:

Code: Alles auswählen

pippix:~# lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia] (rev 05)
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8601 [Apollo ProMedia AGP]
0000:00:06.0 Communication controller: Agere Systems (former Lucent Microelectronics) LT WinModem
0000:00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 22)
0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 10)
0000:00:07.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 10)
0000:00:07.4 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 30)
0000:00:07.5 Multimedia audio controller: VIA Technologies, Inc. VT82C686 AC97 Audio Controller (rev 20)
0000:00:0a.0 CardBus bridge: Texas Instruments PCI1225 (rev 01)
0000:00:0a.1 CardBus bridge: Texas Instruments PCI1225 (rev 01)
0000:01:00.0 VGA compatible controller: Trident Microsystems CyberBlade i1 (rev 6a)
0000:06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
Schon mal vielen Dank im voraus,
Bamse
Zuletzt geändert von bamse am 03.03.2005 00:17:04, insgesamt 1-mal geändert.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 14.01.2005 09:14:31

Sowas wurde schon mal hier Diskutiert:
http://www.debianforum.de/forum/viewtop ... lay+laptop
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

bamse
Beiträge: 16
Registriert: 06.04.2004 00:09:38

Beitrag von bamse » 03.02.2005 00:02:51

Danke für den Tip, leider spuckt mein Kernel keine Fehlermeldungen bezüglich ACPI aus, da sollte alles klappen. Und ich würde auch gerne hier bleiben statt APM einzurichten, es läuft gerade alles schön. :D

Was ich noch gefunden habe:
Mittels vbetool kann man etwas erreichen! Seit neuestem im unstable-Zweig drin. Und zwar lässt sich mittels

Code: Alles auswählen

 vbetool dmps off 
das Backlight komplett ausschalten, und mit

Code: Alles auswählen

 vbetool dmps on
wieder anschalten!

Allerdings: Das Ganze funktioniert bei mir nur auf der Console, nicht unter X! :(
Wenn ich allerdings per ALT-STRG-Fx umschalte und es dort ausführe, klappt es! Also mehr oder weniger genau das, was ich möchte!

Nun meine Frage: Geht das automatisiert, bzw per Skript? Also dass ich per Skript in eine virtuelle Console wechsle, Backlight aus, und per (irgendeinem) Event wieder rückgängig? Kann man das mit dem Energiesparmodus oder einem Bildschirmschoner unter KDE verknüpfen?

Theoretisch fehlt mir nur noch der Kommandozeilen-Befehl, der in einem xterm diese Tastenkombination ALT-STRG-Fx simuliert und dann wechselt.

Schon mal vielen Dank im voraus!

Benutzeravatar
sebas
Beiträge: 419
Registriert: 15.01.2004 19:02:29
Wohnort: Nijmegen / NL
Kontaktdaten:

Beitrag von sebas » 07.02.2005 04:05:16

Das wa:re dann 'chvt'.
Magic is always the best solution -- especially reliable magic.

Benutzeravatar
andreasTecraS1
Beiträge: 25
Registriert: 04.10.2004 00:28:56

Beitrag von andreasTecraS1 » 20.02.2005 14:11:04

bamse hat geschrieben:Nun meine Frage: Geht das automatisiert, bzw per Skript? Also dass ich per Skript in eine virtuelle Console wechsle, Backlight aus, und per (irgendeinem) Event wieder rückgängig? Kann man das mit dem Energiesparmodus oder einem Bildschirmschoner unter KDE verknüpfen?
Hallo Bamse,

ich habe einen Toshiba Satellite Pro M30 und hab gerade "vbetool" ausprobiert. Bei mir klappt das im Gnome auch einwandfrei.
Jetzt suche ich auch noch nach einer Lösung, die automatisch das Display aus- und wieder einschaltet. Dabei bin ich auf das lightwatch - Perlscript gestossen. Das führt einen Befehl aus, wenn der Screensaver startet und einen anderen, wenn der Screensaver beendet wird.
Eigentlich müsste ich im Skript nur noch das radeontool durch vbetool ersetzten.
Ich hab zwar noch nicht ganz kapiert, wie ich das Skript bei mir ( Gnome 2.8 ) einbauen muss, aber das werden wir wohl auch noch rausfinden.

Eine andere Skript-Lösung, die den DPMS-Staus ausliest, habe ich noch hier gefunden.

Viele Grüße
Andreas

Benutzeravatar
sebas
Beiträge: 419
Registriert: 15.01.2004 19:02:29
Wohnort: Nijmegen / NL
Kontaktdaten:

Beitrag von sebas » 20.02.2005 16:49:51

bamse hat geschrieben: Mittels vbetool kann man etwas erreichen! Seit neuestem im unstable-Zweig drin. Und zwar lässt sich mittels

Code: Alles auswählen

 vbetool dmps off 
das Backlight komplett ausschalten, und mit

Code: Alles auswählen

 vbetool dmps on
wieder anschalten!

Allerdings: Das Ganze funktioniert bei mir nur auf der Console, nicht unter X! :(
Wenn ich allerdings per ALT-STRG-Fx umschalte und es dort ausführe, klappt es! Also mehr oder weniger genau das, was ich möchte!
dmps muss wohl ueberall dpms sein. Hast du auch mal xset ausprobiert (man xset), damit solltest du solche Sachen auch unter X koennen.
Magic is always the best solution -- especially reliable magic.

bamse
Beiträge: 16
Registriert: 06.04.2004 00:09:38

Beitrag von bamse » 22.02.2005 23:38:32

Jungs, ihr seid super! Das Forum ist einfach klasse! :D :D

Es klappt nun (fast) so, wie es sein soll: Nach circa 5min geht das Backlight komplett aus! Die Verrenkungen beschreibe ich hier einfach mal, vielleicht kann es jemand anders auch noch gebrauchen:

Das Perl-Skript (Danke andreasTecraS1!) hab ich verändert, so dass es vbetool benutzt. chvt (danke an sebas!) passt da natürlich super rein. Vielleicht geht es schöner (ich kann an sich kein perl), aber es tut, was es soll. Abspeichert habe ich es in der Datei lightwatch:

Code: Alles auswählen

#!/usr/bin/perl -w
use strict;

#
#  This handy script watches when the screensaver activates and
#  toggles the LCD backlight.  You won't see more than a
#  second of the screensaver, so you might as well chose one
#  which consumes few MIPS/battery.
#
#  You will probably want to make this script owned by root
#  and SUID.  Also you will need the perl-suidperl package installed
#  for RedHat systems.
#     chown root lightwatch
#     chmod u+x lightwatch
#

$<=0;  # become root not just effective root

open(XS,"/usr/bin/xscreensaver-command -watch|") or die;
while(<XS>) {
   if(/^BLANK/i) {
      system("/usr/bin/chvt 2");
      system("/usr/sbin/vbetool dpms off");
      system("/usr/bin/chvt 7"); #must be done, otherwise UNBLANK event won't be caught
   } elsif(/^UNBLANK/i) {
      system("/usr/bin/chvt 2");
      system("/usr/sbin/vbetool dpms on");
      system("/usr/bin/chvt 7");
   }
}

Anschließend noch

Code: Alles auswählen

 
chown root lightwatch
chmod u+x lightwatch
Im Grunde genommen wird das xscreensaver-event abgefangen und dann entsprechend verfahren.

Nun muss nur noch xscreensaver unter KDE eingerichtet werden. So wie er in KDE eingebaut ist, klappt es nicht, denn KDE hat drumrum eine Art Wrapper gebaut, so dass die Events nicht losgeschickt und damit abgefragt werden können.
Unter http://www.jwz.org/xscreensaver/man1.html#10 ist beschrieben, wie man es doch hinbekommt. Kurzfassung davon: KDE-screensaver komplett ausschalten, xscreensaver in Autostart rein, konfigurieren läuft nun per xscreensaver-command -prefs

Starte ich nun das Skript als root und warte, bis xscreensaver aktiv wird, dann wird das Backlight ausgeschaltet, und bei einem Tastendruck oder Mausklick wieder an, so wie gewünscht!! :D

Allerdings gibt es einen kleinen Schönheitsfehler (das 'fast' von oben): Ich habe das Skript ebenfalls nach ~.kde/Autostart kopiert. Nur funktioniert es hier nicht, denn chvt erwartet, dass man root ist. Da ich aber mein KDE als normaler User starte, will er hier nicht so richtig, vermute ich mal.
Wie kann ich nun dieses lightwatch-Skript als root starten, obwohl ich KDE als user starte? Gruppe/User des Skript ist root, ausführbar ist es ebenfalls.

Code: Alles auswählen

pippix:/home/fisherman/.kde/Autostart# ls -al
insgesamt 20
drwx------  2 fisherman fisherman 4096 2005-02-22 21:31 .
drwx------  4 fisherman fisherman 4096 2004-04-29 06:00 ..
-rw-r--r--  1 fisherman fisherman 1596 2005-01-24 15:13 .directory
-rwxr--r--  1 root      root      1006 2005-02-22 21:20 lightwatch
-rw-r--r--  1 fisherman fisherman   95 2005-02-22 20:19 xscreensaver.desktop

Wäre es vielleicht geschickter, dieses Skript an einer anderen Stelle zu starten? Jedenfalls, so wie es sehe, wäre es im Autostart-Ordner nicht verkehrt, es soll ja dann laufen, wenn KDE auch läuft.

Vielen Dank schon mal für die super-Beiträge!
Bamse

PS: xset schon ausprobiert, siehe erster Beitrag :wink:

bamse
Beiträge: 16
Registriert: 06.04.2004 00:09:38

Beitrag von bamse » 03.03.2005 00:15:58

Hab mal ein wenig herum probiert, das ist dabei heraus gekommen. Wie immer bei so etwas: Ohne Gewähr! :D

Dies hier bitte unter /usr/local/bin/lightwatchd speichern:

Code: Alles auswählen

#!/usr/bin/perl -w
use strict;

#  Written by Norbert Fischer, based upon lightwatch.pl from Frederick Dean
#  http://fdd.com/software/
#  This will be released under GPL version 2 or newer
#
#  This handy script watches when the xscreensaver activates and
#  toggles the LCD backlight.  You won't see more than a
#  second of the screensaver, so you might as well chose one
#  which consumes few MIPS/battery.
#
#  You will probably want to make this script owned by root
#  and SUID.  Save this file to /usr/local/bin/lightwatchd
#     chown root lightwatchd
#     chmod u+x lightwatchd
#

open(XS,"/usr/bin/xscreensaver-command -watch|") or die;
while(<XS>) {
   if(/^BLANK/i) {
      system("/usr/bin/chvt 2");
      system("/usr/sbin/vbetool dpms off");
      system("/usr/bin/chvt 7");
   } elsif(/^UNBLANK/i) {
      system("/usr/bin/chvt 2");
      system("/usr/sbin/vbetool dpms on");
      system("/usr/bin/chvt 7");
   }
}

Dies hier wird in /etc/init.d/lightwatch verfrachtet:

Code: Alles auswählen

#! /bin/sh
#
#  Written by Norbert Fischer, based upon lightwatch.pl from Frederick Dean
#  http://fdd.com/software/
#  This will be released under GPL version 2 or newer

# Please do this as root:
#       place this file as /etc/init.d/lightwatch
#       chmod u+x /etc/init.d/lightwatch
#       update-rc.d lightwatch defaults

PATH=/sbin:/bin
DAEMON=/usr/local/bin/lightwatchd
NAME=lightwatchd
PIDFILE=/var/run/lightwatchd.pid

test -x $DAEMON || exit 0

case "$1" in
  start)
    echo -n "starting backlight daemon"
    start-stop-daemon --start --background --make-pidfile --pidfile $PIDFILE --exec $DAEMON
    echo "."
    ;;
  stop)
    echo -n "stopping backlight daemon"
    start-stop-daemon --stop --pidfile $PIDFILE --name $NAME
    echo "."
    ;;
  restart)
    sh $0 stop
    sh $0 start
    ;;
  *)
    echo "Usage: /etc/init.d/lightwatch {start|stop|restart}"
    exit 1
    ;;
esac

exit 0

Rest steht in den Kommentaren. Sollte ich etwas vergessen haben zu erwähnen, sei es mir bitte verziehen. Man sehe als kleine Herausforderung an! :wink:

Das scheint mir die Möglichkeit zu sein, es direkt während des Bootens zu starten. War zwar nicht so einfach, das hinzubekommen, aber jetzt tut es, was es soll! Und ich hab ein wenig was über init-Skripte gelernt :D

Wichtig dabei: Es klappt nur, wenn der xscreensaver läuft, siehe Beiträge und Links oben.

Sollte jemand eine elegantere Lösung dafür haben, bin ich dafür immer zu haben! Auf das der Bildschim bei allen schwarz werde! :wink:

Bamse

Benutzeravatar
andreasTecraS1
Beiträge: 25
Registriert: 04.10.2004 00:28:56

Beitrag von andreasTecraS1 » 06.11.2005 14:53:24

Hallo Zusammen,

gestern hatte ich endlich Zeit mein System (immer noch Toshiba M30) auf den aktuellen 2.6.14er Kernel und Debian Etch upzudaten.

Bei der Konfiguration des Kernels ist mir folgendes ins Auge gestochen:

Code: Alles auswählen

* Backlight & LCD device support
*
Backlight & LCD device support (BACKLIGHT_LCD_SUPPORT) [N/y/?] y
habt ihr hierfür irgendwelche Infos gefunden, was das genau macht. Mit der Scriptlösung bin ich nämlich nicht so ganz zufrieden, da es manchmal passiert, dass der Bildschirm nicht mehr hell wird (da hilft dann nur mehrmaliges Umschalten von Konsole auf X).

Über ein paar Hinweise würde ich mich freuen!

Viele Grüße
Andreas

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 18.06.2006 15:35:47

Hallo,

'vbetool dpms on/off' funktioniert auf meinem Asus/Medion, Danke für den Tip.
(chvt brauche ich allerdings nicht, einfach auf irgendeinen Prompt geschrieben, und aus iss ;-) )

Nun meine Frage:
Die Lösung hier, in der xscreensaver das idle abzählt und das vbetool dann aufruft gefällt mir so nicht.
Konsole + X haben doch auch diesen idle-Zähler (deren DPMS-Aufrufe dann nur 'blank' machen).
Können deren Aufrufe/Signale nicht auf das externe vbetool, bzw. Skript, umgelenkt bzw. umgeschaltet werden?
Ich denke dabei an Optionen für xset oder setterm, die ich bis jetzt so nicht finde.
xscreensaver wäre dann ja unnötig (4 MB Download, 10 MB auf Platte nur für dieses Signal?).

Benutzeravatar
Mr_Snede
Beiträge: 2323
Registriert: 08.07.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Ruhrpott

Beitrag von Mr_Snede » 18.06.2006 16:18:29

auf die Schnelle:

Code: Alles auswählen

apt-cache search lock
-> xtrlock, Xautolock, Lockvc, xlockmore, vlock
Software Finder - Software in Kategorien Debian ohne Ballast - Tipps für ein schlankes Debian

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 18.06.2006 17:41:01

Danke Mr_Snede
xautolock - fire up programs in case of user inactivity under X
Das wäre dann der leichtgewichtige Ersatz für xscreensaver-command bzw. xscreensaver.

Die anderen jedoch arbeiten mit internen Abläufen, die ich nicht nach 'vbetool dpms off' umbiegen kann.
(zBsp. bei xlock/xlockmore wollte ich eines der Schoner-Module durch mein Skript ersetzen, ging aber nicht da diese alle intern kompiliert sind (sarge). Wenn das überhaupt funktioniert?).

Bleibt aber die Frage, ob X/Konsole selbst dazu zu bringen sind etwas externes aufzurufen: Statt dpms-Signal an Monitor/Grafikkarte wird vbetool/Skript aufgerufen?

Antworten