Ceci est une ancienne révision du document !


Ubuntu Linux sur un Asus Zenbook 13 OLED

Depuis quelques semaines (en août 2024), malgré les mises à jours de sécurité, j'ai noté un bug persistant et très énervant : certaines touches du clavier ne réagissent plus, à certains moments précis : après un reboot ou après une sortie d'hibernation, et au bout de quelques secondes voire parfois quelques (longues) minutes, elles refonctionnent normalement. Je n'avais pas eu ce problème auparavant, après plus d'un an d'utilisation quotidienne. A part les mises à jour d'Ubuntu et quelques applications de bureautique, je n'avais pourtant rien installé de particulièrement “chelou” sur ce système.

J'ai ouvert une question sur le site AskUbuntu : Some keys refuse to work after suspend or reboot, then work ok after a few minutes et j'ai cherché des bugs similaires sur le net.

Il se trouve que ce problème est connu depuis des années et qu'il touche semble-t-il des ordinateurs Asus et Lenovo. Je n'ai pas bien compris encore comment et pourquoi il se déclenche, mais il est lié au module i8042 du kernel Linux. Ce module (on dit aussi un pilote) se charge de gérer l'interface avec le clavier et la souris, il est normalement chargé au démarrage du système.

Il y a plusieurs manières de “réparer” ce bug qu'on retrouve assez simplement sur le net, mais seulement l'une des trois semble fonctionner pour moi sur mon système. Dans les trois cas, il s'agit d'ajouter un ou des paramètres lors du démarrage du système, soit pour relancer un module, soit pour ne pas en prendre en compte.

Je conseille de tenter la première solution ci-dessous, je laisse les deux autres (même si elles ne fonctionnent pas pour moi).

Capture d'écran du terminal Gnome, Nano est ouvert sur le fichier GRUB qui se trouve dans /etc/default/.

Dans une console, aller jusqu'à l'endroit où se situe le fichier de démarrage de GRUB : cd /etc/default/

Vous pouvez alors taper la commande ls pour vérifier que le fichier grub s'y trouve bien.

Puis ouvrez ce fichier, par exemple avec l'éditeur en ligne de commande nano, et en passant en superuser pour avoir le droit d'administrer ce fichier (donc de le modifier et de sauvegarder la modification) : sudo nano grub

Vers la 12ème ligne du fichier, devrait se trouver la ligne GRUB_CMDLINE_LINUX=“”

Il faut la modifier ainsi : GRUB_CMDLINE_LINUX=“i8042.reset i8042.nomux i8042.nopnp i8042.noloop”

Ensuite, on doit sauvegarder cette modification du fichier. Dans Nano, c'est avec la combinaison de touches Control+S, puis Control+Q pour quitter Nano et revenir à l'invite de la ligne de commande.

Ensuite, il faut encore mettre à jour GRUB pour qu'il prenne en compte cette modification, avec la commande sudo update-grub.

Et voilà, il ne reste plus qu'à éteindre et redémarrer l'ordinateur.

Dans une console, aller jusqu'à l'endroit où se situe le fichier de démarrage de GRUB : cd /etc/default/

Vous pouvez alors taper la commande ls pour vérifier que le fichier grub s'y trouve bien.

Puis ouvrez ce fichier, par exemple avec l'éditeur en ligne de commande nano, et en passant en superuser pour avoir le droit d'administrer ce fichier (donc de le modifier et de sauvegarder la modification) : sudo nano grub

Vous voilà dans le fichier, avec les curseurs du clavier déplacez-vous jusqu'à la ligne GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash”

Il va falloir ajouter le paramètre i8042=1 après splash, donc on obtient : GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash i8042=1”

Puis, on sauvegarde la modification. Dans Nano, c'est avec la combinaison de touches Control+S, puis Control+Q pour quitter Nano et revenir à l'invite de la ligne de commande.

Ensuite, il faut mettre à jour GRUB pour qu'il prenne en compte cette modification, avec la commande sudo update-grub.

Et voilà, il ne reste plus qu'à éteindre et redémarrer l'ordinateur.

Cette manip semble fonctionner pour certaines personnes… pour moi, ça n'a rien changé. Si c'est aussi votre cas, on peut passer à la modification suivante.

Il s'agit de la même manipulation du fichier GRUB, mais cette fois pour y mettre le paramètre i8042dumbkbd, qui aura pour effet que le module ne sera pas chargé du tout au démarrage. La ligne à éditer deviendra donc : GRUB_CMDLINE_LINUX_DEFAULT=“quiet splash i8042dumbkdb”.

Pareil ensuite, il faut mettre à jour Grub avec la commande sudo updage-grub puis redémarrer l'ordinateur.

Selon mon expérience, l'argument i8042dumbkdb semble fonctionner… après 2 ou 3 secondes au démarrage pendant lesquelles certaines touches du clavier (toujours les mêmes) restent inactives.

A noter, le script qui date de 2020 proposé par l'utilisatrice Mistine sur GitHub, pour un problème similaire, peut-être le même, et qui ajoute une consigne lors de la sortie d'hibernation : https://github.com/mistine/i8042-keyboard-fix-linux.

La procédure est assez simple, il s'agit d'ajouter une commande lors de la sortie d'hibernation. Pour cela, il faut glisser un petit fichier au bon endroit. Le script date de 2020 mais la manip est la même aujourd'hui (septembre 2024) pour un Ubuntu 24.04.

Dans un terminal, se rendre dans le bon dossier : cd /usr/lib/systemd/system-sleep/

Puis créer un fichier et l'ouvrir dans cet espace : sudo nano keyboard-reset.sh

Copier-coller le contenu ci-dessous dans le fichier nouvellement créé :

#!/bin/sh
  case $1/$2 in
    pre/*)
        rmmod i8042
        ;;
    post/*)
        modprobe i8042 reset=1
        ;;
esac

Puis sauvegarder le fichier (Control+S dans Nano puis Control+Q pour quitter Nano et revenir à l'invite de commande). Ensuite le rendre exécutable : sudo chmod a+x keyboard-reset.sh

Normalement, à la prochaine sortie d'hibernation, le module i8042 du kernel devrait ainsi être systématiquement relancé.

Entrer votre commentaire. La syntaxe wiki est autorisée:
S J J S O
 
  • /home/gregorygig/www/data/attic/linux/asus-zenbook-ubuntu.1726560649.txt.gz
  • Dernière modification : 2024/09/17 10:10
  • de Grégory Gutierez