Ubuntu 15.04 (beta 2) - Macbook pro 11.1 (retina fin 2013) 13" Changer la luminosité de l’écran

, par Matthieu Marcillaud

Quelque soit les portables que j’ai croisé, cela a toujours été une douce galère pour faire fonctionner certaines touches multimédia du clavier correctement. Dans le cas présent, je suis passé de Ubuntu 14.04 LTS à Ubuntu 14.10 (quelques minutes) puis Ubuntu 15.04 (Vivid Vervet) ( Beta 2). Tout à presque merveilleusement bien fonctionné, comme à chaque migration. Et comme à chaque migration, il y a quelques détails qui ne fonctionnent pas, ici, un particulièrement : le changement de luminosité de l’écran.

Tester toutes les solutions existantes en vain

En pareille situation, ici deux petites touches du clavier qui n’ont pas l’effet escompté, on part à la chasse aux solutions sur les forums et sites tel que askubuntu, launchpad ou stackoverflow…

Toutes les propositions que j’ai essayé ont échoué, notamment diverses modifications sur l’exécution par GRUB ou encore des ajouts dans /usr/share/X11/xorg.conf.d. Et j’en ai fait beaucoup d’essais ! Il semble que pour certains qui ont des Macbook Pro 15 pouces avec 2 cartes graphiques, certaines solutions fonctionnent ; mais pas dans mon cas donc, en tout cas à ce jour.

Partir du constat

Cet ordinateur dispose d’une carte graphique intégrée Intel (architecture Haswell), a priori nommée Iris Graphics (HD4000).

Le constat, c’est que… ça fonctionne presque. Si on appuie sur les touches de luminosité, Ubuntu affiche la notification de changement de luminosité, avec sa barre de "volume" qui augmente ou diminue ; mais cela n’a pas d’effet réel sur l’écran.

D’autre part, en regardant /sys/class/backlight on a 2 interfaces acpi_video0 et intel_backlight. Aucune des deux n’est modifiée lors de l’appui des touches de luminosité. Par contre, si l’on modifie l’une des 2 interfaces avec nos petites mains, aussitôt l’écran change sa luminosité.

  1. sudo su
  2. cd /sys/class/backlight
  3.  
  4. # sur acpi_video0
  5. cd acpi_video0
  6. cat max_brightness
  7. # > 100
  8. cat actual_brightness
  9. # > 100
  10. echo 50 > brightness
  11. # l'écran passe à la moitié de sa luminosité
  12. cat actual_brightness
  13. # > 50
  14.  
  15. # sur intel_backlight
  16. cd ../intel_backlight
  17. cat max_brightness
  18. # > 1388
  19. cat actual_brightness
  20. # > 691
  21. # Note : changer acpi_video0 a modifié aussi intel_backlight
  22. echo 100 > brightness
  23. # l'écran passe en faible luminosité
  24. cat actual_brightness
  25. # > 100
  26.  
  27. # retour sur acpi_video
  28. cd ..
  29. cat acpi_video/actual_brightness
  30. # > 50 Note : changer intel_backlight n'a pas modifié acpi_video0

Télécharger

On voit qu’envoyer des valeurs à l’interface acpi change correctement la luminosité de l’écran, que ce soit avec acpi_video0 ou avec intel_backlight. On peut donc imaginer un système d’écoute des appuis des boutons de luminosité, qui envoie une valeur sur l’une des interfaces.

Je n’ai pas trouvé en fouinant d’autres moyens autres que d’utiliser des écoutes d’événements dans /etc/acpi, donc allons y.

Écouter les touches avec ACPI

Dans /etc/acpi, on peut ajouter des fichiers qui écoutent les événements ACPI et exécutent des scripts en fonction. Il y en a déjà quelques uns. On va ajouter les nôtres.

Je précise que cela fonctionne ici car un appuie des touches de luminosité déclenche bien un événement ; dans le cas contraire, il faudrait trouver une autre solution ! On peut voir cela en exécutant : acpi_listen. Ici, un appui + puis - de luminosité donne :

Ajoutons 2 écouteurs dans /etc/acpi/events/my-keyboard-backlight-up et /etc/acpi/events/my-keyboard-backlight-down, qu’on peut copier à partir de fichiers existants dans /etc/acpi/events. Cela donne :

my-keyboard-backlight-up

  1. event=video/brightnessup
  2. action=/etc/acpi/my-keyboard-backlight.sh up

Télécharger

my-keyboard-backlight-down

  1. event=video/brightnessdown
  2. action=/etc/acpi/my-keyboard-backlight.sh down

Télécharger

Reste à créer le script dans /etc/acpi/my-keyboard-backlight.sh.

Le curseur de notification sur Ubuntu a environ 20 pas. On va découper du coup aussi en 20 pas nos valeurs possibles. Cependant, j’en profite pour mettre plus de pas sur le côté de réglages en faible luminosité que sur la forte luminosité, car c’est ce qui me gênait avec la précédente version. J’ai choisi environ f(y) =  x²/4 pour une échelle de 0 à 100 (y) et des pas de 0 à 20 (x).

Il n’y a plus qu’à relancer de démon acpi :

  1. service acpid restart
  2. # ou
  3. /etc/init.d/acpid restart

Télécharger

Et se réjouir

Les boutons sont fonctionnels. Seul l’appui long d’un bouton ne diminue pas la luminosité entièrement (contrairement à ce que montre la notification dans ubuntu), car 1 seul événement acpi est envoyé. Donc, pour baisser la luminosité rapidement, il faut cliquer plusieurs fois rapidement !

Coup de pouce

Pour me maintenir en éveil et en pleine forme physique et mentale, vous pouvez me faire le cadeau d'un jus de fruit pressé.

En plus de m'hydrater, de m'offrir une alimentation saine crudivore et frugivore, cela peut aussi me motiver à produire d'autres documentations ou peut-être à prendre des vacances ! :)

Vous pouvez également me « Flattrer » si vous utilisez le service en ligne très malin Flattr de microdonations qui permet d'allouer un budget mensuel à des créateurs de contenu. Votre budget est partagé chaque mois entre toutes les personnes que vous avez flattées ce mois là.