Réveiller son Ubuntu à partir d’un périphérique USB

J’ai maintenant l’habitude de mettre le PC en veille plutôt que de l’éteindre, et de le « réveiller » d’un simple appui sur une touche du clavier. C’est d’abord beaucoup plus rapide qu’un redémarrage, et l’on retrouve tout son environnement tel qu’il était au moment de la mise en veille.

Sauf que… cela fait deux fois que suite à des mises à jour d’Ubuntu, je perds cette fonctionnalité : l’appui d’une touche clavier ne réveille plus le PC, il faut que je me baisse pour appuyer sur le bouton ON/OFF. Rien de pire que la perte d’un truc très pratique !

FEV. 2022 : J’ai fini par trouver pourquoi cette sortie de veille par clavier ne fonctionnait pas ou de manière aléatoire. Mon problème était lié au microcode Intel installé par le système. Voir cet article pour plus d’information.
 
SEPT. 2020 : Depuis cet article qui date un peu maintenant, j’ai eu l’occasion de faire une réinstallation complète du système, avec Ubuntu 20.04. La sortie de veille par le clavier a fonctionné de suite, sans manipulation particulière.
Puis je me suis rendu compte qu’au gré des mises à jour système, cette fonctionnalité disparaissait puis revenait, pour disparaître à nouveau.
J’ai fini par mettre à jour le BIOS de la carte mère, mais cela n’a fondamentalement rien changé au caractère aléatoire de la chose.
-=-
Par contre, la règle « udev » créée dans cet article n’existe pas par défaut. Je ne sais pas comment le système gère cela de façon native, seul le clavier est bien configuré à « enabled » dans « ../power/wakeup ».
-=-
Alors voilà, à vous de voir, un conseil : commencez par mettre votre BIOS à jour, c’est la première chose à faire. !
Et sachez que créer ces règles ne règle pas forcément le problème… Ça peut être bien de tester cette solution, sans plus. 🙁

Après quelques recherches sur internet, je suis d’abord tombé sur cette page d’AskUbuntu : Wake up from suspend using wireless usb keyboard or mouse (for any linux distro). J’ai effectué les deux manips, et cela a fonctionné jusqu’à il y a quelques jours : retour au bouton ON/OFF !

Nouvelle recherche, et cette fois je suis tombé sur une manipulation plus complète, et qui a fonctionné : Ubuntu – Resume your computer from any USB device (keyboard, mouse, remote, …). La page étant en anglais, je vais résumer sans entrer dans les détails les actions qu’il faut faire.

Côté système, j’utilise Ubuntu 16.04. Je n’ai pas eu besoin d’installer le paquet « zenity », mais au cas où il n’est pas installé, taper la commande suivante :

sudo apt-get install zenity

Mars-2020 : La commande ‘update-usbids’ n’existe plus, et cette étape n’est à priori plus nécessaire. Passer directement aux scripts.

Il faut aussi mettre à jour la liste des vendeurs de périphériques USB et PCI :

sudo update-usbids

On va se connecter à www.linux-usb.org et récupérer la dernière liste disponible :

Puis deux scripts seront utilisés : le premier va vous lister vos périphériques USB et vous laisser choisir le ou lesquels vous désirez utiliser, puis créer la règle système (udev rule) ; il appelle ensuite le second script (il faudra éditer le premier si vous placez les fichiers ailleurs) qui va configurer la chaîne de connexion du périphérique USB pour le « réveil ».

Je les ai mis à disposition ici : select-resume-devices et enable-wakeup. Il suffit de les enregistrer sur votre système, idéalement dans /usr/local/sbin, puis de leur donner le droit d’exécution :

sudo chmod +x /usr/local/sbin/select-resume-devices
sudo chmod +x /usr/local/sbin/enable-wakeup

Voilà, tout est prêt, il suffit de lancer le premier script :

sudo /usr/local/sbin/select-resume-device.sh

Et la fenêtre suivante s’affiche, permettant de sélectionner le (ou les) périphérique de votre choix (pour moi, ce sera le clavier Logitech « Illuminated Keyboard ») :

Enfin, pour rendre la règle opérationnelle, il faut soit redémarrer le PC, soit débrancher/rebrancher le (ou les) périphérique sélectionnés.

Voilà deux commandes utiles pour identifier les périphériques, et vérifier que celui sélectionné par le premier script est bien activé pour le réveil (le clavier Logitech dans mon cas) :

Et pour ensuite vérifier que la règle a bien été créée :

pascal$ ls /etc/udev/rules.d/
70-snap.canonical-livepatch.rules  70-snap.core.rules
70-snap.chromium.rules             90-hid-wakeup-enable.rules
[~]
pascal$ more /etc/udev/rules.d/90-hid-wakeup-enable.rules 
# udev rule for USB wake-up of selected devices
#
# Logitech, Inc. Illuminated Keyboard
SUBSYSTEM=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c318" RUN+="/usr/local/bin/enable-wakeup $env{DEVPATH}" 
[~]

Enfin, si la fonctionnalité disparaît à nouveau suite à une mise à jour, il faudra simplement relancer le script.

Il faut parfois insister un peu (voir un des commentaires), je ne sais pas trop pourquoi, mais cela finit par fonctionner. Ça m’est arrivé aussi récemment avec Ubuntu 19.10.

Pour finir, je ne l’ai pas mentionné, mais il faut que l’option soit activée dans le BIOS du PC (genre USB Wake Enable).

12 réflexions sur « Réveiller son Ubuntu à partir d’un périphérique USB »

  1. Bonjour,

    Chez moi la boite de dialogue s’affiche correctement, mais ne semble pas sauvegarder la case cochée. Du coup le réveil via le clavier ou la souris usb ne fonctionne toujours pas. Je suis sous mint 18, cela peut il provenir de là?

    merci d’avance

  2. Tu veux dire que la case ne se coche pas ? Qu’est-ce qui te fait dire qu’elle n’est pas sauvegardée ?
    Est-ce que lances le script en mode « sudo » ?
    Que donne le fichier « /etc/udev/rules.d/90-hid-wakeup-enable.rules » une fois le script exécuté ?
    Chez moi, on voit bien le clavier sélectionné :

    > more /etc/udev/rules.d/90-hid-wakeup-enable.rules
    # udev rule for USB wake-up of selected devices
    #
    # Logitech, Inc. Illuminated Keyboard
    SUBSYSTEM== »usb », ATTRS{idVendor}== »046d », ATTRS{idProduct}== »c318″ RUN+= »/usr/local/sbin/enable-wakeup $env{DEVPATH} »

    N’oublie pas de redémarrer de suite le PC, c’est indispensable d’après ce que j’ai vu.

    1. Ce qui me fais dire qu’elle n’est pas sauvegardé c’est que lorsque je relance le script suite au redémarrage, la case n’est plus cochée .
      Je lance le script en sudo. (enfin tout du moins je pense le faire: dans un terminal, je fais sudo -s, puis ensuite je glisse le script dans le terminal et je valide, j’ai bon?)
      Le fichier « /etc/udev/rules.d/90-hid-wakeup-enable.rules » n’existe pas chez moi.

      1. C’est normal que la case ne soit pas cochée. Sinon, un simple ‘sudo’ suffit, mais ce ne doit pas être le problème. PAr contre, si le fichier n’est pas créé, ce n’est pas normal.
        Normalement, tu dois voir une notification s’afficher après, qui te dit :
        « Your USB devices are resume enabled.To finalize configuration you have to do one of these actions :
        – replug USB devices
        – reboot the computer »
        Est-ce que tu la vois ? Sinon, y-a-t-il un message d’erreur dans le terminal ?
        Tu peux aussi taper la commande « dmesg » dans le terminal après pour voir les derniers messages système.

  3. J’ai la notif, mais lorsque je redémarre: rien

    dans le terminal en mode user avec le script sur le bureau :
    herve@herve-System-Product-Name ~ $ ‘/home/herve/Bureau/select-resume-devices’
    Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
    /home/herve/Bureau/select-resume-devices: ligne 36: /etc/udev/rules.d/90-hid-wakeup-enable.rules: Permission non accordée
    /home/herve/Bureau/select-resume-devices: ligne 37: /etc/udev/rules.d/90-hid-wakeup-enable.rules: Permission non accordée
    /home/herve/Bureau/select-resume-devices: ligne 51: /etc/udev/rules.d/90-hid-wakeup-enable.rules: Permission non accordée
    /home/herve/Bureau/select-resume-devices: ligne 52: /etc/udev/rules.d/90-hid-wakeup-enable.rules: Permission non accordée
    herve@herve-System-Product-Name ~ $

    dans le terminal en mode sudo avec le fichier au bon endroit:
    Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.

  4. hophop!
    Aucune explication logique, mais j’ai lancé le script via le terminal en sudo 2 fois de suite et le fichier c’est crée à l’emplacement etc/udev/rules.d/90-hid-wakeup-enable.rules
    du coup le réveil via le clavier fonctionne!
    Merci beaucoup pour ta disponibilité
    @ bientot

  5. Sauf erreur il semble que si l’on se branche son clavier sur le port ‘clavier’ de l’ordinateur, la sortie de veille soit fonctionnelle par défaut.
    Il s’agit de l’un des deux ports quis se trouvent tout en haut de la carte mère, l’un étant dédié à la souris l’autre au clavier.
    => à éssayer avant de bidouiller 🙂
    Mais bien sur cela ne fonctionne que pour les claviers filaires et sur PC de bureau et sans doute dépend du fabricant du PC/Carte mère.
    cdt

  6. Merci pour ces explications détaillées. Apparemment les scripts n’ont pas été crées et je me retrouve en plus avec des fichiers .sh que j’aimerais supprimer, mais je ne sais pas comment faire. En recopiant leurs titres (select-resume-devices et enable-wakeup), un espace a été inséré avant la 1ère lettre au moment de leur création et j’aimerais supprimer ces 2 fichiers, car j’ai sauvegardé les 2 sans cet espace au début. Chez moi sudo /usr/local/sbin/select-resume-device.sh donne
    sudo: /usr/local/sbin/select-resume-device.sh : commande introuvable, même lorsque je suis dans le bon répertoire, et même après avoir tenté plusieurs fois sudo chmod +x /usr/local/sbin/select-resume-devices et sudo chmod +x /usr/local/sbin/enable-wakeup. Suis sous MX Linux (Debian), mais a priori même combat, non…?

    1. Oui, même combat. Je ne comprends pas bien ta situation et ton histoire d’espace, mais bon si tu es dans un terminal, et dans le bon répertoire (commande ‘pwd’ pour vérifier), et fais juste un ‘ls -l’ pour lister ce qui existe. En plus tu verras les permissions (genre -rwxr-xr-x à gauche) pour t’assurer que le script a bien les droits d’exécution.
      Puis utilise les guillemets pour effacer les fichiers que tu veux effacer : sudo rm  » nom_du_fichier_avec espace_devant.sh » si c’est bien ton problème.
      Pour la réponse « commande introuvable, c’est que le fichier n’existe pas. Soit il n’a pas les droits d’exécution, soit il y a une faute de frappe. Si tu es dans le bon répertoire (cd /usr/local/sbin), tu peux taper « sudo ./select-resume-device.sh » pour bien spécifier le script de ce répertoire (le « ./ » veut dire « ce répertoire »).
      Tu devrais t’en sortir…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *