La luminosité des écrans LCD est variable par le biais de la puissance appliquée sur le rétroéclairage. On suppose dans ce qui suit, que le réglage de la luminosité n'est pas sous le contrôle exclusif du bios et est accessible au système d'exploitation à travers sysfs
Sommaire
Références :
Les paramètres du contrôle de la luminosité de l'écran se situent, dans le répertoire :
ls /sys/class/backlight/
intel_backlight
Le nom du répertoire est fonction du type d'afficheur, intel, radeon, .... Dans le cas présent, il s'agit d'une carte intel et le nom du répertoire est intel_backlight.
$ ls /sys/class/backlight/intel_backlight/
actual_brightness brightness max_brightness subsystem uevent
bl_power device power type
La valeur maximum de la luminosité est donnée par
$ cat /sys/class/backlight/intel_backlight/max_brightness
4882
La valeur courante est fournie par
$ cat /sys/class/backlight/intel_backlight/actual_brightness
2441
Dans l'exemple ci-dessus, la luminosité est donc réglée à 50% du maximum (4882/2441).
Les différents paramètres sont fournis par :
# udevadm info -a -p /sys/class/backlight/intel_backlight |head -16
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/intel_backlight':
KERNEL=="intel_backlight"
SUBSYSTEM=="backlight"
DRIVER==""
ATTR{max_brightness}=="4882"
ATTR{type}=="raw"
ATTR{brightness}=="2441"
ATTR{bl_power}=="0"
ATTR{actual_brightness}=="2441"
Pour modifier la luminosité en ligne de commande, rentrer la nouvelle valeur (par exemple 2800) dans le fichier brightness :
# echo 2800 >/sys/class/backlight/intel_backlight/brightness
Vérification :
$ cat /sys/class/backlight/intel_backlight/actual_brightness
2800
Vérifier que le réglage de la luminosité fonctionne à travers les touches de fonction dédiées, en mode console et en mode graphique.
La présence d'un pilote spécifique à la plateforme peut-être nécessaire pour que les touches de fonction soient prises en compte.
eeepc_laptop - non nécessaire sur eepc 1000D
asus_nb_wmi - non nécessaire sur asus N55SL
....
Note : Dans l'environnement graphique X11, les codes de touche "standards" pour le réglage de la luminosité sont :
xmodmap -pke |grep -i brightness
keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
Ils peuvent ou non être utilisés par les touches de fonction.
Par défaut, lors de l'arrêt du système, systemd mémorise la valeur courante du rétroéclairage et la restitue lors du redémarrage. Le nom du service est fonction de la carte d'affichage. Dans le cas d'une carte intel, il s'agit de systemd-backlight@backlight:intel_backlight.service :
# systemctl status systemd-backlight@backlight:intel_backlight.service
● systemd-backlight@backlight:intel_backlight.service - Load/Save Screen Backlight Brightness of backlight:intel_backlight
Loaded: loaded (/lib/systemd/system/systemd-backlight@.service; static)
Active: active (exited) since lun. 2016-12-26 18:33:15 CET; 11s ago
Docs: man:systemd-backlight@.service(8)
....
Pour fixer la valeur de la luminosité à une valeur fixe, lors du démarrage du PC et / ou de la connexion / déconnexion du secteur et passage sur batterie :
Désactiver la mémorisation par systemd, en masquant le service
# systemctl mask systemd-backlight@backlight:intel_backlight.service
Created symlink from /etc/systemd/system/systemd-backlight@backlight:intel_backlight.service to /dev/null
Vérifier que udev détecte les changements de mode d'alimentation : lancer la commande suivante, puis observer l'apparition des messages lors des déconnexions / connexions de l'alimentation secteur
# udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[3254.196010] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ACPI0003:00/power_supply/AC0 (power_supply)
UDEV [3254.197457] change /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/ACPI0003:00/power_supply/AC0 (power_supply)
Créer une règle udev, qui charge la valeur souhaitée lors des modifications de la connexion secteur :
# cat /etc/udev/rules.d/75-backlight.rules
# Fixer la valeur au démarrage
SUBSYSTEM=="backlight", ACTION=="add",ATTR{brightness}="2441"
# Fixer la valeur en cas de modification de l'alimentation
SUBSYSTEM=="power_supply", ACTION=="change", RUN+="/bin/sh -c 'echo 2441 >/sys/$
Pour faire prendre en compte la nouvelle règle sans redémarrer le système :
# udevadm control --reload
# udevadm trigger
Vérifier que la valeur est bien prise en compte lors des modifications du mode d'alimentation et du démarrage du système.
$ cat /sys/class/backlight/intel_backlight/actual_brightness
2441