Wie verhindere ich, dass die Mausbewegung einen angehaltenen Computer weckt?

32

Es ist wirklich ärgerlich, da ich nach einem Suspend die Maus ausstecken muss, um sicherzustellen, dass ein gelegentlicher Stoß das System nicht aufweckt. Ich habe in den Systemeinstellungen nichts gefunden, das dies auch nicht durch herum googeln deaktivieren könnte.

user129498
quelle

Antworten:

24

Ich habe das BIOS noch nicht überprüft, aber ich habe eine Lösung gefunden!

Kurze Zusammenfassung: In /proc/acpi/wakeupkönnen Sie sehen, für welche Geräte derzeit die Wiederaufnahme des Suspend-Vorgangs aktiviert ist. Diese Liste zeigt die Namen (abgekürzt) der sogenannten "Geräte". Beispiel "PWRB" bedeutet "Power Button".

Wenn Sie Gerätenamen in diese Datei schreiben, können Sie diese zwischen aktiviert und deaktiviert umschalten.

Ich habe ein kleines HowTo zum Deaktivieren von Wakeup-by-Mouse geschrieben , basierend auf einem Blog, in dem ich diese Informationen gefunden habe.

Rooker
quelle
1
Das klingt viel besser als meine Antwort, und ich habe meine Antwort entsprechend bearbeitet. Vielen Dank!
Robie Basak
2
Das funktioniert also (allerdings merke ich im Vorbeigehen, dass nur das Verwenden sudonicht funktioniert: Man muss sudo suzuerst etwas tun und dann nachhallen /proc/acpi/wakeup. Ich frage mich jedoch, ob jemand eine Möglichkeit gefunden hat , die Maus einfach zu deaktivieren? Ich habe beides auf meinem Desktop, der über (drahtloses) USB verbunden ist, und dies deaktiviert auch das Wake von der Tastatur.
Marco
15

Vielen Dank an alle Poster, da das Aufwecken der Maus eine große Unannehmlichkeit darstellt und ich hier meine Antworten bekam. Ich möchte meinen Twist zu den Lösungen hinzufügen, da dies in weiteren Fällen hilfreich sein kann. Ich musste 3 verschiedene Elemente in deaktivieren /proc/acpi/wakeup. Meine Geräte: EHC1, EHC2, XHCI. Die ersten 2 sind usb2 und der 3. ein usb3-Eintrag. Bitte beachten Sie, dass obwohl der USB-Transceiver für meine Maus an einen USB2-Anschluss angeschlossen ist und sich nichts in einem USB3-Anschluss befindet, der Computer bei Mausbewegungen aufwacht, bis alle 3 Elemente deaktiviert sind.

$ 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

Um die Wake - up - Produkte zu haben bei jedem Start deaktiviert, können Sie so etwas wie dies hinzuzufügen /etc/rc.local..

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

bearbeitet von cipricus:

Ich bearbeite dies, weil ich weitere Details hinzufügen musste, um eine separate Frage zu stellen von mir aufgrund dieser Antwort als Duplikat der obigen geschlossen werden konnte. Ich halte es für sinnvoller, als eine separate Antwort zu posten.

*** Testen Sie, welche Elemente deaktiviert werden müssen - wie hier angegeben - für jedes der Elemente, die als " enabledunter" angezeigt wurden, cat /proc/acpi/wakeup | sortindem Sie jeden der folgenden Befehle im Terminal ausführen und dann testen, ob die Maus das System aufweckt (ohne dass ein Neustart erforderlich ist). :

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

(in meinem Fall hat der erste auch nach dem Testen mit anderen USB-Anschlüssen gereicht)

*** Wenn die /etc/rc.localDatei nicht existiert - laut diesem Beitrag:

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

Die Datei sollte ungefähr so ​​aussehen:

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

exit 0

Starten Sie neu.


Wenn das immer noch nicht funktioniert, könnte es sein, dass die Datei /etc/systemd/system/rc-local.service fehlt oder sie ist nicht richtig konfiguriert.

Testen Sie mit

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

und

sudo systemctl status rc-local

Im Anschluss finden Sie unter Aktivieren /etc/rc.local mit Systemd :

Erstellen Sie die Datei:

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

Fügen Sie dann den folgenden Inhalt hinzu.

[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

Speichern und schließen Sie die Datei. Um eine Datei im Nano-Texteditor zu speichern, drücken Sie Strg + O und anschließend zur Bestätigung die Eingabetaste. Drücken Sie zum Verlassen der Datei Strg + X.

Überprüfen Sie, ob alles in Ordnung ist und keine Fehler vorliegen mit:

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

Starten Sie den Computer neu, um die Änderungen anzuzeigen.

Randy Skretka
quelle
Wenn Ihnen meine Bearbeitung nicht gefällt, teilen Sie mir dies bitte mit, indem Sie @cipricus markieren, und ich werde sie als separate Antwort veröffentlichen, die mit dem oben genannten Link verknüpft ist.
6

Mein System ist Ubuntu 15.10

Ich habe versucht, mit dem lsusbBefehl herauszufinden, was ein Mausgerät ist. Es ist sehr einfach, Sie tippen, lsusbdann ziehen Sie die Maus heraus (in meinem Fall ist es ein Bluetooth-Empfänger) und tippen lsusberneut. Das Gerät sieht folgendermaßen aus:

Bus 007 Device 008: ID 24ae:2000

Jetzt finden Sie es in /sys/bus/usb/devices/Ordner auf die gleiche Weise (ziehen / stecken). In meinem Fall habe ich festgestellt, dass sie irgendwo in Ordnern anfangen mit7-2* .

Versuchen Sie nun, idProduct und idVendor zu lesen. Zum Beispiel: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=>24ae . Das ist es.

Schließlich erstelle ich ein Skript im /lib/systemd/system-sleepVerzeichnis und benenne es nach Belieben.

#! /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

Alles erledigt.

Minh Nguyen
quelle
Es funktioniert mit Ubuntu 18.04 auf meinem Laptop.
Minh Nguyen
1

Dieses Skript hat mein Problem gelöst. Hör zu.

    #!/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 )

Alles, was Sie tun müssen, ist, zuerst auszuführen sudo xinput list, den angegebenen Namen Ihrer USB-Maus zu finden und ihn in das Skript einzufügen. Speichern Sie dann die Datei als "ssmonoff.sh", machen Sie sie ausführbar und stellen Sie sie so ein, dass sie beim Start ausgeführt wird.

yurividal
quelle
1

Tolle Erklärung. Ich habe einfach den folgenden Befehl zu rc.local hinzugefügt

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

zum Deaktivieren aller Geräte als PS2K (Tastatur PS2) vom Aufwecken. Einfach und funktionierend!

MeS Fet
quelle
0

Möglicherweise gibt es einen für Ihre Hardware spezifischen Weg. In diesem Fall ist die Option möglicherweise über die BIOS-Einstellungen Ihres Systems verfügbar.

Das Aufrufen des BIOS-Menüs zum Ändern von Einstellungen ist ebenfalls systemspezifisch. Normalerweise drücken Sie kurz nach dem Neustart eine Taste, und die zu drückende Taste wird häufig auf dem Bildschirm angezeigt.

Die Antwort von user138339 scheint jedoch ein allgemeinerer Weg zu sein, um das zu erreichen, was Sie benötigen, und Sie können dies vom laufenden System aus tun.

Robie Basak
quelle
0

Dies ist mein schrittweises "Tutorial", damit es für Sie funktioniert:

  1. Verwenden Sie den Befehl cat /proc/acpi/wakeup, um die Liste der Weckgeräte anzuzeigen
  2. Verwenden Sie den Befehl sudo sh -c "echo XXXX >/proc/acpi/wakeup"(ersetzen Sie "XXXX" durch Ihren Gerätecode), um den Gerätestatus umzuschalten (aktiviert / deaktiviert). Gehen Sie zu einem Gerät und versuchen Sie, Ihren Computer anzuhalten und ihn mit dem Gerät, das Sie deaktivieren möchten, aufzuwecken, bis das verdiente Gerät den Computer nicht mehr aufwecken kann. Vergessen Sie nicht, die Geräte, die Sie nicht deaktivieren möchten, immer wieder zu aktivieren.
  3. Wenn Sie das richtige Gerät gefunden haben, erstellen Sie auf Ihrem Desktop die Datei "acpi_wakeup" mit folgendem Code: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (Vergessen Sie nicht, "XXXX" durch Ihren Gerätecode zu ersetzen.)
  4. Verschieben oder kopieren Sie die Datei in einen Ordner /etc/init.d/. Verwenden Sie den folgenden Befehl, um die Datei zu kopieren: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup um (Ersetzen Sie "USERNAME" durch Ihren tatsächlichen Benutzernamen.)
  5. Machen Sie die Datei ausführbar: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Verwenden Sie dann 'update-rc.d', um die erforderlichen symbolischen Links automatisch in anderen Verzeichnissen zu erstellen: sudo update-rc.d acpi_wakeup defaults (Es wird angezeigt, WARNING: ...missing LSB tags and overridesaber es ist in Ordnung. Sie müssen sich keine Sorgen machen.)
  7. Starte deinen Computer neu.

Quellen und weiterführende Literatur:

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

Juraj.Lorinc
quelle