web-dev-qa-db-fra.com

Réveillez-vous après une suspension en utilisant un clavier ou une souris USB sans fil (pour tout distro Linux)

Je cherchais une solution pendant des heures, voire davantage, et je viens de la trouver. Je veux le partager avec tout le monde. De cette façon, il sera plus facile de chercher la solution plus rapidement sur Google. Donc, comme le titre l'indique, voici la solution.

15
Pavlos Theodorou

frappé dans le terminal:

grep . /sys/bus/usb/devices/*/power/wakeup

Le résultat, pour moi, a été de découvrir que tous les usb étaient désactivés. Alors maintenant, tapez:

1.

Sudo su

nous avons maintenant des privillages de racine.

2.J'ai 8 ports USB (vous le faites pour autant de ports USB que vous avez), donc:

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
echo enabled > /sys/bus/usb/devices/usb5/power/wakeup
echo enabled > /sys/bus/usb/devices/usb6/power/wakeup
echo enabled > /sys/bus/usb/devices/usb7/power/wakeup
echo enabled > /sys/bus/usb/devices/usb8/power/wakeup

Allez-y et testez-le. Vous pouvez maintenant vous réveiller à partir de n’importe quel clavier et souris USB filaires ou câblés.

Donc, la raison pour laquelle nous devons tous les activer, c'est parce que dans l'étape suivante, nous écrirons ceci dans rc.local pour exécuter la commande après chaque redémarrage, et après le redémarrage de certaines distributions linux (peut-être toutes) changeront les ports USB. Nous n'avons pas à nous inquiéter de tout ce qui ne va pas en les activant tous, puisque linux est en suspension ou en veille prolongée, il ne peut pas utiliser le wifi pour télécharger quoi que ce soit, il ne se réveillera donc pas sans nous réveiller exprès.

L'étape suivante:

3.

Sudo nano /etc/rc.local

et nous collons tout de l’étape 2. à cet endroit (avant la sortie 0, bien sûr).

C'est tout. Désormais, nous pouvons utiliser notre souris et notre port USB sans fil pour sortir de la suspension.

J'espère que cela fonctionne pour vous tous. Ce guide a été réalisé après avoir testé toutes les autres solutions possibles sur Internet.

21
Pavlos Theodorou

En plus de mon guide ci-dessus, je souhaite ajouter ces informations, car j’ai récemment découvert que certains périphériques USB sans fil après leur réveil en veille étaient réactivés. Je le répète, seuls certains périphériques USB le font, pas tous. C'est pourquoi je n'ai pas ajouté ce petit guide sur mon guide.

Vous avez donc suivi les instructions ci-dessus et votre ordinateur s'est réveillé avec succès, mais plus tard dans la journée, soudainement, il ne s'est pas réveillé.

Solution:

Ouvrez un terminal et faites:

lsusb

Sur les informations d'identification de votre clavier, les 4 premiers chiffres correspondent à l'identifiant du fournisseur et les 4 prochains chiffres représentent l'identifiant du produit (voir capture d'écran) enter image description here

Ensuite faire:

Sudo nano /etc/udev/rules.d/10-wakeup.rules

Où "réveil" entrez votre nom désiré du script. Le nombre 10 est la priorité au cas où vous auriez beaucoup d'autres règles udev, plus le nombre de "règles" exécutées avant les autres sera bas.

Copier coller ceci et remplacer l'ID de fournisseur et l'ID de produit par votre propre ID de fournisseur de clavier sans fil et l'ID de produit.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8 est pour moi mon clavier sans fil (vous pouvez également le voir sur la capture d'écran (bus 008)), remplacez-le par le vôtre.

Ctrl + O sauver , Ctrl + X pour sortir et redémarrer.

9
Pavlos Theodorou

La réponse de Pavlos Theodorou est très utile. Je voudrais ajouter que vous pouvez trouver le périphérique USB auquel votre souris/clavier est connecté au démarrage en passant dmesg à grep plusieurs fois, puis egrep une fois, et enfin en utilisant tail pour s’assurer que c’est l’entrée la plus récente.

En utilisant cette méthode, vous ne devez pas activer le réveil sur TOUS ports USB.

Je mets le texte suivant dans mon fichier /etc/rc.local et il trouve mon récepteur logitech à chaque fois, même s’il est déplacé d’un port USB à un autre. Il suffit de remplacer le nom de votre clavier ou souris de dmesg à la place de "Logitech K270"

KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup

Cela fonctionne au démarrage, mais ne semble pas fonctionner au réveil après la suspension. J'ai donc dû placer un fichier de script dans/lib/systemd/system-sleep /. Créez-le, définissez-le comme exécutable globalement et attribuez-lui un nom commençant par un nombre à deux chiffres compris entre 00 et 99. Mon script est le suivant, encore une fois Subite votre clavier/souris verbage de dmesg:

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [ $1 = post ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

if [ $1 = pre ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

Pour une raison quelconque, je ne peux pas expliquer, l'instruction 'post' sleep si ne fonctionne que chaque fois que vous vous réveillez ... sauf le 'veille' L'instruction if semble fonctionner à chaque fois.

2
jcn1