mon ordinateur portable Dell est sujet à ce bogue avec le noyau 3.14. Comme solution de contournement, j'ai écrit un script simple
/ usr / bin / fix de luminosité:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(et rendu exécutable chmod +x /usr/bin/brightness-fix
)
et un service systemd l'appelant qui est exécuté au démarrage:
/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
et activé: systemctl enable /etc/systemd/system/brightness-fix.service
Cela fonctionne comme un charme et je peux contrôler la luminosité de mon écran comme je le souhaite. Le problème survient lorsque l'ordinateur portable reprend après être passé en mode veille (par exemple lors de la fermeture de la lèvre de l'ordinateur portable): le contrôle de la luminosité ne fonctionne plus sauf si j'exécute manuellement mon premier script ci-dessus:/usr/bin/brightness-fix
Comment puis-je créer un autre service systemd comme le mien ci-dessus à exécuter au moment de la reprise?
EDIT:
Selon les commentaires ci-dessous, j'ai modifié mon brightness-fix.service
comme ceci:
[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
J'ai également ajouté echo "$1 $2" > /home/luca/br.log
à mon script pour vérifier s'il est réellement exécuté. Le script est en fait également exécuté à resume ( post suspend
) mais il n'a aucun effet (rétroéclairé à 100% et ne peut pas être modifié). J'ai également essayé de me connecter $DISPLAY
et $USER
, au moment de la reprise, ils sont vides. Donc, je suppose que le script est exécuté trop tôt au réveil. Un indice?
/usr/local/bin
pas /usr/bin
. ce répertoire est réservé au gestionnaire de packages uniquement.
sleep.target
exécutera l'unité lorsque l'ordinateur sera en veille, plutôt que lorsqu'il reprendra. Voir ma réponse ci-dessous pour un fichier d'unité qui a fonctionné pour moi avec un problème similaire.
WantedBy=sleep.target
...