Comment empêcher le mouvement de la souris de réveiller un ordinateur suspendu?

32

C'est vraiment ennuyeux car je dois débrancher la souris après une suspension pour m'assurer qu'une bosse occasionnelle ne réveille pas le système. Je n'ai rien trouvé dans les paramètres système qui pourrait désactiver cela non plus en parcourant Google.

user129498
la source

Réponses:

24

Je n'ai pas encore vérifié le BIOS, mais j'ai trouvé une solution!

Bref résumé: dans /proc/acpi/wakeup, vous pouvez voir quels appareils sont actuellement activés pour reprendre la suspension. Cette liste affiche les noms (abrégés) de ce que l'on appelle les "appareils". Exemple "PWRB" signifie "bouton d'alimentation".

Si vous écrivez des noms de périphériques dans ce fichier, vous les basculez entre activé / désactivé.

J'ai écrit un petit HowTo pour désactiver le réveil par la souris , basé sur un blog où j'ai trouvé cette information.

Rooker
la source
1
Cela semble beaucoup mieux que ma réponse, et j'ai modifié ma réponse en conséquence. Merci!
Robie Basak
2
Donc, cela fonctionne (cependant, je remarque en passant que l'utilisation sudone fonctionnera pas: il faut d' sudo suabord faire , puis faire écho /proc/acpi/wakeup. Cependant, je me demande si quelqu'un a trouvé un moyen de désactiver simplement la souris? J'ai les deux sur mon bureau connecté via USB (sans fil) et cela désactivera également le réveil du clavier
Marco
15

Merci à toutes les affiches car le réveil de la souris est un inconvénient majeur et j'ai obtenu mes réponses ici. Je souhaite ajouter ma touche aux solutions car cela peut aider dans plus de cas. J'ai dû désactiver 3 éléments différents dans /proc/acpi/wakeup. Mes périphériques: EHC1, EHC2, XHCI. Les 2 premiers sont usb2 et le 3ème une entrée usb3. Veuillez noter que bien que l'émetteur-récepteur USB pour ma souris soit branché sur un port USB2 et que rien ne se trouve sur aucun port USB3, l'ordinateur se réveillera lors des mouvements de la souris jusqu'à ce que les 3 éléments soient désactivés.

$ cat /proc/acpi/wakeup | sort 
Device  S-state   Status   Sysfs node
EHC1      S3    *disabled  pci:0000:00:1d.0
EHC2      S3    *disabled  pci:0000:00:1a.0
GLAN      S4    *enabled   pci:0000:08:00.0
.. ,, ..
USB7      S3    *disabled
WLAN      S3    *disabled  pci:0000:03:00.0
XHCI      S3    *disabled  pci:0000:07:00.0

Pour désactiver les éléments de réactivation à chaque démarrage, vous pouvez ajouter quelque chose comme ceci à /etc/rc.local..

echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

éditer par cipricus:

Je suis en train de modifier cela parce que je devais ajouter plus de détails pour qu'une question distincte soit fermée en double de ce qui précède sur la base de cette réponse; Je pense que c'est plus utile que de poster en tant que réponse séparée.

*** Testez quels éléments doivent être désactivés - comme indiqué ici - pour chacun des éléments qui ont été publiés comme enabledsous cat /proc/acpi/wakeup | sorten exécutant dans le terminal chacune des commandes ci-dessous, puis en testant si la souris réveille le système (sans avoir besoin de redémarrer) :

sudo sh -c "echo EHC1 > /proc/acpi/wakeup"
sudo sh -c "echo EHC2 > /proc/acpi/wakeup"
sudo sh -c "echo XHCI > /proc/acpi/wakeup"

(dans mon cas, le premier était suffisant même après avoir testé avec d'autres ports USB)

*** Si le /etc/rc.localfichier n'existe pas - selon cet article:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Le fichier doit ressembler à:

#!/bin/bash
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

exit 0

Redémarrer.


Si cela ne fonctionne toujours pas, il se peut que le fichier /etc/systemd/system/rc-local.servicesoit manquant ou mal configuré.

Testez avec

sudo /etc/init.d/rc.local start

et

sudo systemctl status rc-local

A la suite Comment activer /etc/rc.local avec systemd :

Créez le fichier:

sudo nano /etc/systemd/system/rc-local.service

Ajoutez-y ensuite le contenu suivant.

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

Enregistrez et fermez le fichier. Pour enregistrer un fichier dans l'éditeur de texte Nano, appuyez sur Ctrl + O, puis appuyez sur Entrée pour confirmer. Pour quitter le fichier, appuyez sur Ctrl + X.

Vérifiez que tout va bien sans erreur avec:

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

Redémarrez pour voir les changements.

Randy Skretka
la source
Si vous n'aimez pas ma modification, faites-le moi savoir en signalant @cipricus et je posterai une réponse distincte liée à ce qui précède.
6

Mon système est Ubuntu 15.10

J'ai essayé d'utiliser la lsusbcommande pour trouver ce qu'est la souris. C'est très simple, vous tapez lsusbpuis débranchez la souris (dans mon cas, c'est un récepteur Bluetooth) et tapez à lsusbnouveau. L'appareil ressemble à ceci:

Bus 007 Device 008: ID 24ae:2000

Maintenant, trouvez-le dans le /sys/bus/usb/devices/dossier en utilisant la même manière (débrancher / brancher). Dans mon cas, j'ai trouvé qu'ils se trouvent quelque part dans les dossiers commençant par 7-2*.

Essayez maintenant de lire idProduct et idVendor. Par exemple: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. C'est ça.

Enfin, je crée un script dans le /lib/systemd/system-sleeprépertoire, nommez-le comme vous le souhaitez.

#! /bin/sh

if [ ! -r /sys/bus/usb/devices/7-2.3/power/wakeup ]; then
    exit 0
fi
case "$1" in
    pre )
    echo disabled > /sys/bus/usb/devices/7-2.3/power/wakeup
;;
esac

Terminé.

Minh Nguyen
la source
Cela fonctionne avec Ubuntu 18.04 sur mon ordinateur portable.
Minh Nguyen
1

ce script a résolu mon problème. Vérifiez-le.

    #!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Tout ce que vous avez à faire est, tout d'abord, d'exécuter sudo xinput list, de trouver le nom donné de votre souris USB et de le mettre sur le script. Ensuite, enregistrez le fichier sous "ssmonoff.sh", rendez-le exécutable et configurez-le pour qu'il s'exécute au démarrage.

yurividal
la source
1

Grande explication. J'ai simplement ajouté à rc.local la commande suivante

for d in `cat wakeup |grep enabled|grep -v PS2K|cut -b -4`; do echo $d >/proc/acpi/wakeup ; done

pour désactiver tous les appareils que PS2K (clavier PS2) du réveil. Simple et fonctionnel!

MeS Fet
la source
0

Il peut y avoir un moyen spécifique à votre matériel, auquel cas l'option peut être disponible via les paramètres BIOS de votre système.

Accéder au menu du BIOS pour modifier les paramètres est également spécifique au système. Habituellement, vous appuyez sur une touche juste après le redémarrage, et la touche à appuyer est souvent affichée à l'écran.

Cependant, la réponse de user138339 semble être un moyen plus général d'atteindre ce dont vous avez besoin, et vous pouvez le faire à partir du système en cours d'exécution.

Robie Basak
la source
0

Voici mon "tutoriel" étape par étape pour le faire fonctionner pour vous:

  1. Utilisez la commande cat /proc/acpi/wakeuppour afficher la liste des appareils de réveil
  2. Utilisez la commande sudo sh -c "echo XXXX >/proc/acpi/wakeup"(remplacez "XXXX" par le code de votre appareil) pour basculer l'état de l'appareil (activé / désactivé). Allez un appareil à la fois et essayez de suspendre votre machine et de la réveiller en utilisant l'appareil que vous souhaitez désactiver jusqu'à ce que l'appareil mérité ne puisse pas réveiller la machine. N'oubliez pas de toujours réactiver les appareils que vous ne souhaitez pas désactiver.
  3. Lorsque vous trouvez le bon appareil, créez sur votre bureau un fichier "acpi_wakeup" contenant le code suivant: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (n'oubliez pas de remplacer "XXXX" par le code de votre appareil)
  4. Déplacez ou copiez le fichier dans un dossier /etc/init.d/. Pour copier le fichier, utilisez la commande suivante: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (remplacez "USERNAME" par votre nom d'utilisateur réel)
  5. Rendez le fichier exécutable: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Ensuite, utilisez 'update-rc.d' pour créer automatiquement les liens symboliques requis dans d'autres répertoires: sudo update-rc.d acpi_wakeup defaults (il s'affiche WARNING: ...missing LSB tags and overridesmais c'est OK. Vous n'avez pas à vous en préoccuper)
  7. Redémarrez votre ordinateur.

Sources et lectures complémentaires:

http://www.das-werkstatt.com/forum/werkstatt/viewtopic.php?f=7&t=1985 http://ubuntuforums.org/showthread.php?t=814939&page=3

Juraj.Lorinc
la source