Linux setterm -powersave - Fehler: "Powersave-Modus kann nicht eingestellt werden"

4325
Bob Sammers

Ich versuche, die Hintergrundbeleuchtung eines LCD-Panels, das in ein von mir verwendetes Gerät eingebaut ist, vollständig auszuschalten. Obwohl der Bildschirm leer ist, können Sie in einem abgedunkelten Raum immer noch ein Licht von der Hintergrundbeleuchtung sehen.

Ich denke, dass ich (als root) dazu in der Lage sein sollte:

setterm -powersave powerdown > /dev/tty1 

Dies sollte den DPMS-Status erzwingen, sobald der Bildschirm ausgeblendet ist. Obwohl dies der Meinung ist, man settermdass dies -powersaveeine gültige Option ist, wird bei allen vorgeschlagenen Argumenten (Ein, Aus, Herunterfahren usw.) eine Fehlermeldung angezeigt:

setterm: cannot (un)set powersave mode: Invalid argument 

Ich habe dies in zwei anderen Ubuntu-Installationen mit ähnlichen Ergebnissen versucht.

Kann jemand vorschlagen:

  1. Warum scheint dieser Befehl nirgends zu funktionieren?
  2. Gibt es eine bessere Möglichkeit, die Hintergrundbeleuchtung zu kontrollieren?

Zusätzliche Information:

  • Das Gerät ist ein O2-Joggler, der auf einem OpenPeak OpenFrame 7 basiert und ein leicht modifiziertes Ubuntu 12.04.02 Server-Image ausführt, das von der Community für dieses Gerät verteilt wird . Es ist eine i386-Architektur (Intel Atom-Prozessor).
  • X (was ich verstehen kann, kann bei Setterbetrieb stören) ist nicht überall installiert, wo ich es ausprobiert habe. Dies bedeutet auch, dass der xsetBefehl nicht funktioniert
  • Es wird ein Treiber bereitgestellt, der die Anzeige über sysfs steuert, einschließlich einer Psuedo-Datei, die die Hintergrundbeleuchtung ausschalten soll, aber immer noch schwach leuchtet
  • Bei den anderen beiden Installationen (12.04 und 10.04), die ich ausprobierte, handelte es sich um unterschiedliche Geräte: eine VMWare-VM und ein physischer Dell-Server
0

4 Antworten auf die Frage

2
user308851

Eigentlich hatte ich das gleiche Problem und konnte es lösen.

Mit etwas Hilfe von strace habe ich festgestellt, dass setterm -powersave powerdown ein ioctl () an die fd 0 (stdin) sendet.

Also habe ich versucht mit:

root@zanac:~# setterm -powersave powerdown < /dev/tty1 

und das hat funktioniert (der Befehl gibt 0 zurück). Ich kann ATM nicht überprüfen, ob der Befehl tatsächlich das tut, was er tun soll, weil ich dies über SSH mache. Außerdem scheint es, dass Sie eine spezielle Konfiguration haben, so YMMV.

Danke für Ihre Hilfe. Ich muss gestehen, ich verstehe nicht, was hier geschehen soll (leiten _ von der Konsole zu dem `setterm'-Befehl um?), Aber ich sehe auf meinem Gerät den Rückkehrcode 0, wenn Sie Ihre Variation des Befehls verwenden. Leider wirkt sich dies jedoch nicht auf die Hintergrundbeleuchtung aus. Eigentlich habe ich ein kleines C-Programm geschrieben, um ein `ioctl ()` direkt nach / dev / fb0 zu schicken, und das funktionierte auch nicht (es wurde der Fehler 22 gemeldet: "Ungültiges Argument"), obwohl ich, soweit ich das beurteilen konnte, dies getan hatte was soll ich haben Bob Sammers vor 10 Jahren 0
1
eri

Ich habe 5 Stunden damit verbracht, Setterm, FBset und andere auszuprobieren ...

Diese Kräfte überwachen auf meinem Board:

echo 1 > /sys/devices/pci0000\:00/0000\:00\:01.0/graphics/fb0/blank 

Versuchen Sie auch, den LVDS- backlightDeskriptor in zu suchen/sys/

Was ist "dein Board"? Ich kann unter `/ sys / devices / pci0000 \: 00/0000 \: 00 \: *` nichts auf meinem Gerät finden, leider. (Ihr Befehl wörtlich führt zu einem Fehler "Keine solche Datei ...".) Bob Sammers vor 7 Jahren 0
Kirkwood mit Xgi-PCI-Grafiken. Ihre Grafiken werden möglicherweise an einem anderen Bus platziert, sollten sich aber in sysfs befinden eri vor 7 Jahren 0
probiere `find / sys / -name fb0 ' eri vor 7 Jahren 0
Ich habe die Einträge "fb0" (und "Hintergrundbeleuchtung") sysfs gefunden. Leider scheint dies in meiner Installation nicht möglich zu sein: Ich bekomme `bash: echo: Schreibfehler: Ungültiges Argument` beim Schreiben in die leere Psuedo-Datei (als root) und obwohl ich die Hintergrundbeleuchtung durch Schreiben kontrollieren kann eine Zahl für `/ sys / class / backlight / openframe-bl / Helligkeit`,` 0` lässt die Hintergrundbeleuchtung immer noch schwach an. Bob Sammers vor 7 Jahren 0
Überprüfen Sie Ihr Board und Ihr LCD-Panel. vielleicht kurzgeschlossene Hintergrundbeleuchtung zur Stromversorgung eri vor 7 Jahren 0
0
Bob Sammers

Ich habe entdeckt, warum settermes einen Fehler gibt ... bis zu einem gewissen Punkt. Es scheint, dass die Methode der Steuerung eines physischen Konsolenbildschirms über SSH (dh das Umleiten der Ausgabe von setterman /dev/tty1in diesem Fall nicht funktioniert).

Ich wurde dadurch ausgelöst wird, dass die folgende Variante funktioniert genau wie erwartet (es löscht die physischen Bildschirm der Konsole aus einer SSH - Sitzung):

root@joggler:/home/bob# setterm -clear all > /dev/tty1 

Warum manche settermBefehle funktionieren und andere nicht, ich habe keine Antwort darauf.

Für jeden, der diese Frage in Bezug auf ein Joggler-Problem findet, sollte ich klarstellen, dass es nicht möglich scheint, das zu tun, was ich möchte (die Hintergrundbeleuchtung vollständig zu deaktivieren) setterm -powersave powerdown: Der Bildschirm bleibt nach wie vor sehr schwach beleuchtet.

"setterm clear all" sendet das gleiche Zeichen wie CRTL + L, löscht die Konsole und setzt den Cursor nach links oben. rob vor 10 Jahren 0
0
dirkt

Das Datenblatt des Sharp LQ070Y3LG4A, das im Joggler verwendet wird, zeigt, dass die LED-Hintergrundbeleuchtung direkt an die Pins 24-30 angeschlossen ist (Hinweis 1 auf Seite 11). Auch wenn Sie die Anzeige mit DPMS (mit welcher Methode auch immer) leeren, bleibt die Hintergrundbeleuchtung eingeschaltet.

Die Frage ist also, ob sich auf dem Mainboard eine andere Hardware befindet, mit der die Stromversorgung der LED-Hintergrundbeleuchtung unterbrochen werden kann, und wenn ja, wie diese zu steuern ist. Ich konnte im Joggler-Wiki nichts dazu finden, typische Kandidaten sind Chips, die vom I2C / SMBUS gesteuert werden. Aber vielleicht gibt es keine Möglichkeit, die Hintergrundbeleuchtung per Software auszuschalten (es sei denn, Sie fügen eigene Hardware hinzu).

Die Helligkeit der Hintergrundbeleuchtung kann geändert werden (und ich weiß, wie das geht). Es gibt also etwas, das die an diese LED-Strings angelegte Spannung steuert. Die Frage ist, kann das, was dafür verantwortlich ist, auch die Macht vollständig unterbrechen? Es scheint vernünftig, dass dies der Fall sein sollte, aber ich habe die Hardware nicht untersucht, und Ihr Ansatz ist interessant. Ich scheine mich zu erinnern (ich habe mir das seit 3 ​​Jahren nicht angesehen, obwohl ich das Gerät immer noch benutze), dass ich festgestellt habe, dass "xset" dies tun könnte, aber ich scheute mich vor der Installation von X, nur um zu wechseln _aus_ der Anzeige. Vielleicht sollte ich es noch einmal überdenken! Bob Sammers vor 7 Jahren 0
Wie kann also die Hintergrundbeleuchtung verändert werden? Behalte es nicht geheim. :-) Wenn Sie uns dies mitteilen könnten, sollte es möglich sein, herauszufinden, welcher Treiber es verwaltet und welche Hardware dafür verantwortlich ist. Bei der Installation von X wird auch nur DPMS verwendet, sodass es keinen Unterschied macht. dirkt vor 7 Jahren 0
Sah den `openframe-bl` im anderen Kommentar. [This] (https://searchcode.com/codesearch/view/40100743/) scheint der Code zu sein, verwirrend jedoch nicht in `driver / gpu / drm / gma500`, das * andere * Möglichkeiten hat, die Hintergrundbeleuchtung verschiedener Modelle zu steuern . Es scheint also im GMA 500 ein Pulsbreitenmodulationsregister "BLC_PWM_CTL" mit einem Bitfeld für die Helligkeit und einigen anderen Bits (z. B. dem immer gesetzten Bit 31) zu geben. Sie müssen wahrscheinlich einige Bits in diesem Register setzen / zurücksetzen, um die Hintergrundbeleuchtung vollständig auszuschalten. Aber ohne richtige Dokumentation weiß niemand, welche ... dirkt vor 7 Jahren 0
Ich habe meine Untersuchungen in diesem Thread, http://www.jogglerwiki.com/forum/viewtopic.php?t=1277, ausführlich beschrieben, der die Helligkeitssteuerung und einige andere Dinge umfasst, die von mir und anderen entdeckt wurden. Bob Sammers vor 7 Jahren 0
Dieser Thread scheint hauptsächlich eine Suche nach "welche API kann ich verwenden" zu sein. Unabhängig davon, welche API Sie verwenden, müssen Sie die tatsächliche Hardware steuern, und sowohl der Code für das Framebuffer-Gerät (`driver / gpu / drm / gma500`) als auch` openframe-bl` setzen nur das Helligkeitsbitfeld `BLC_PWM_CTL`. Die Schlussfolgerung ist also die gleiche: Wenn dies die PWM nicht vollständig durch Ihre Beobachtung ausschaltet, kann sie entweder nicht vollständig ausgeschaltet werden, oder einige andere Bits in diesem oder ähnlichen Registern tun dies. Ohne Dokumentation können wir nicht wissen, welche. dirkt vor 7 Jahren 0
Wenn Sie Code schreiben können, gibt es immer die Möglichkeit, mit den anderen Bits herumzuspielen und zu sehen, was passiert. Dies ist jedoch potenziell gefährlich für die Hardware, insbesondere, wenn irgendwo größere Verstärker vorhanden sind. dirkt vor 7 Jahren 0