Auf meinem Dell-Laptop tritt dieser Fehler mit Kernel 3.14 auf. Als Workaround habe ich ein einfaches Skript geschrieben
/ usr / bin / Brightness-Fix:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(und ausführbar gemacht: chmod +x /usr/bin/brightness-fix
)
und ein systemd-Dienst, der es aufruft und beim Start ausgeführt wird:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
und aktiviert: systemctl enable /etc/systemd/system/brightness-fix.service
Das funktioniert wie ein Zauber und ich kann die Helligkeit meines Displays wie gewünscht steuern. Das Problem tritt auf, wenn der Laptop nach dem Ruhezustand wieder in Betrieb genommen wird (z. B. beim Schließen der Lippe des Laptops): Die Helligkeitsregelung funktioniert nicht mehr, es sei denn, ich führe das obige erste Skript manuell aus:/usr/bin/brightness-fix
Wie kann ich einen anderen systemd-Dienst wie meinen oben erstellen, der zur Wiederaufnahme ausgeführt wird?
BEARBEITEN:
Laut Kommentaren unten habe ich meine brightness-fix.service
wie folgt geändert :
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
Außerdem habe ich echo "$1 $2" > /home/luca/br.log
mein Skript erweitert, um zu überprüfen, ob es tatsächlich ausgeführt wird. Das Skript, das es tatsächlich ausführt, wird auch beim Fortsetzen ausgeführt (post suspend
) ausgeführt, hat aber keine Auswirkung (Hintergrundbeleuchtung ist 100% und kann nicht geändert werden). Ich habe auch versucht, zu protokollieren, $DISPLAY
und zum $USER
Zeitpunkt der Wiederaufnahme sind sie leer. Ich vermute also, dass das Skript beim Aufwachen aus dem Schlaf zu früh ausgeführt wird. Irgendein Hinweis?
/usr/local/bin
, nicht der ist /usr/bin
. Dieses Verzeichnis ist nur für den Paketmanager reserviert.
sleep.target
wird das Gerät ausgeführt, wenn der Computer in den Energiesparmodus wechselt, und nicht, wenn es fortgesetzt wird. In meiner Antwort unten finden Sie eine Unit-Datei, die bei mir mit einem ähnlichen Problem funktioniert hat.
WantedBy=sleep.target
...