Wachen Sie mit einer kabellosen USB-Tastatur oder -Maus aus dem Standby-Modus auf (für jede Linux-Distribution)

18

Ich suchte stundenlang nach einer Lösung und fand sie einfach. Ich möchte es mit allen teilen. Auf diese Weise wird es einfacher sein, dieses Problem zu googeln, um die Lösung schneller zu finden. Also, genau wie der Titel sagt, ist unten die Lösung.

Pavlos Theodorou
quelle

Antworten:

26

Treffer im Terminal:

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

Das Ergebnis war für mich herauszufinden, dass alle USB-Geräte deaktiviert waren. Geben Sie nun Folgendes ein:

1.

sudo su

Wir haben jetzt Root-Privilegien.

2.Ich habe 8 USB-Ports ( das machst du für so viele USB-Ports, wie du hast ), also:

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

Mach weiter und teste es. Jetzt können Sie von jeder drahtlosen oder kabelgebundenen USB-Tastatur und -Maus aufwachen.

Der Grund, warum wir sie alle aktivieren müssen, ist, dass wir sie im nächsten Schritt in rc.local schreiben, um den Befehl nach jedem Neustart auszuführen, und nach dem Neustart einige Linux-Distributionen (möglicherweise alle) die USB-Ports ändern. Wir müssen uns keine Sorgen machen, wenn wir sie alle aktivieren. Da Linux sich im Suspend- oder Ruhezustand befindet, kann es das WLAN nicht zum Herunterladen von Inhalten verwenden, sodass es nicht aufwacht, ohne dass wir es absichtlich aufwecken .

Nächster Schritt:

3.

sudo nano /etc/rc.local

und wir fügen alles aus Schritt 2 ein (natürlich vor dem Ausgang 0).

Das ist es. Von nun an können wir unseren drahtlosen USB und die Maus verwenden, um aus dem Suspend aufzuwachen.

Ich hoffe es funktioniert für euch alle. Dieser Leitfaden wurde erstellt, nachdem alle anderen möglichen Lösungen im Internet getestet wurden.

Pavlos Theodorou
quelle
6
Wenn Sie herausfinden möchten, welches Gerät welches ist, können Sie /sys/bus/usb/devices/<device id>/productnach einer Textbeschreibung suchen .
ntc2
Ich habe alle Geräte in " grep . /sys/bus/usb/devices/*/power/wakeup" aktiviert, aber immer noch nicht funktioniert. Vielleicht liegt es daran, dass Tastatur und Maus indirekt verbunden sind - drahtlos mit einem Dongle, der sich auf dem Bildschirm befindet? Bildschirm ist über USB mit dem Laptop verbunden.
AlikElzin-kilaka
1
Wie @ ntc2 sagte, verwenden Sie diese, um die Beschreibung der einzelnen zu sehen: grep . /sys/bus/usb/devices/*/producthat mir geholfen, herauszufinden, was ich sehe
Ben Yitzhaki
Wenn dies immer noch nicht funktioniert, stellen Sie sicher, dass Ihr Gerät (Tastatur / Maus) im Ruhezustand des PCs noch mit Strom versorgt wird. Wenn Ihr Gerät nicht über eine LED verfügt, können Sie den USB-Anschluss mit einem USB-Strommonitor (etwa 10 US-Dollar im Internet) auf Strom prüfen.
J Smith
Der permanente Teil dieser Frage funktioniert nicht mehr mit mindestens Ubuntu 18.04. Der Zusatz ( askubuntu.com/a/874701/516072 ) zu dieser Antwort von pavlos-theodorou half für den permanenten Teil in Ubuntu 18.04
Laurens
10

Zusätzlich zu meinem obigen Leitfaden möchte ich diese Informationen hinzufügen, da ich kürzlich festgestellt habe, dass einige drahtlose USB-Geräte nach dem Aufwachen aus dem Ruhezustand wieder deaktiviert werden. Ich wiederhole, das machen nur einige usb geräte, nicht alle. Deshalb habe ich diesen kleinen Leitfaden nicht in meinen Leitfaden aufgenommen.

Also hast du getan, wie oben angegeben, und dein PC wacht erfolgreich auf, aber später am Tag wacht er plötzlich nicht mehr auf.

Lösung:

Öffne ein Terminal und mache:

lsusb

Bei der Geräte-ID Ihrer Tastatur sind die 4 ersten Ziffern die Hersteller-ID und die 4 nächsten Ziffern die Produkt-ID (siehe Screenshot). Bildbeschreibung hier eingeben

Als nächstes machen Sie:

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

Wo "Aufwecken" geben Sie Ihren gewünschten Namen des Skripts ein. Nummer 10 ist die Priorität, falls Sie viele andere udev-Regeln haben, je niedriger die Nummer, um die die Regel vor den anderen ausgeführt wird.

Kopieren Fügen Sie diese ein und ersetzen Sie die Hersteller- und Produkt-ID durch Ihre eigene Hersteller- und Produkt-ID für die drahtlose Tastatur.

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

* usb8 ist für mich meine kabellose tastatur (das siehst du auch im screenshot ( bus 008)), ersetze sie durch deine eigene.

Ctrl+ Ozum Speichern, Ctrl+ Xzum Beenden und Neustarten.

Pavlos Theodorou
quelle
4
Besser, dies in deine erste Antwort zu integrieren.
ntc2
1
Das sind 2 verschiedene Dinge. Die erste ist die Antwort auf das Weckproblem. Die zweite ist eher "Wie erstelle ich eine Regel, um kein Booten auszuführen" und es ist nur ein "Extra", da nicht jeder weiß, wie man das macht und es keine einfache Amateur-Anleitung dafür gibt.
Pavlos Theodorou
2

Die Antwort von Pavlos Theodorou ist sehr hilfreich. Ich möchte hinzufügen, dass Sie das USB-Gerät finden können, mit dem Ihre Maus / Tastatur beim Booten verbunden ist, indem Sie dmesg ein paarmal durch grep leiten , dann egrep einmal und schließlich tail verwenden , um sicherzustellen, dass es das neueste ist Eintrag.

Mit dieser Methode können Sie nicht haben , um Wake - On zu ermöglichen ALLE USB - Ports.

Ich füge Folgendes in meine /etc/rc.local-Datei ein und sie findet jedes Mal meinen Logitech-Empfänger, selbst wenn er von einem USB-Port auf einen anderen verschoben wird. Ersetzen Sie einfach den Namen Ihrer Tastatur oder Maus durch dmesg anstelle von "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

Dies funktioniert beim Booten, scheint aber nicht nach dem Suspend-Vorgang zu starten, sodass ich eine Skriptdatei in / lib / systemd / system-sleep / ablegen musste. Erstellen Sie es, legen Sie es als global ausführbar fest und geben Sie ihm einen Namen, der mit einer zweistelligen Zahl zwischen 00 und 99 beginnt. Mein Skript lautet wie folgt: Ersetzen Sie Ihr Tastatur- / Mausverbage durch 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

Aus irgendeinem Grund kann ich nicht erklären, dass die Post-Sleep- If- Anweisung nur bei jedem zweiten Aufwecken funktioniert ... aber die Pre-Sleep- If- Anweisung scheint jedes Mal zu funktionieren.

jcn1
quelle
1

Keine der oben genannten Antworten hat mir geholfen. Deshalb poste ich hier meine eigene.

Aktivieren / Deaktivieren des Reaktivierungsmodus für USB-Geräte

Getestet in KDE Neon 5.16.2, basierend auf Ubuntu 18.04, sollte aber in jeder Distribution funktionieren.


1. Zeigen Sie die Liste der USB-Geräte an, um das USB-Gerät zu identifizieren, das Sie aktivieren / deaktivieren möchten:

grep . /sys/bus/usb/devices/*/product

Sie sollten so etwas erhalten:

/ sys / bus / usb / geräte / 3-3 / produkt: Cord Optical Mouse
/sys/bus/usb/devices/3-4.3/product:802.11n WLAN-Adapter
/sys/bus/usb/devices/3-4.4/product:USB Receiver
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / devices / usb1 / Produkt: EHCI Host Controller
/ sys / bus / usb / devices / usb2 / Produkt: EHCI Host Controller
/ sys / bus / usb / devices / usb3 / Produkt: xHCI Host Controller
/ sys / bus / usb / devices / usb4 / Produkt: xHCI Host Controller


2. Überprüfen Sie den Aktivierungsstatus aller USB-Geräte:

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

Das Ergebnis sollte ungefähr so ​​aussehen:

/ sys / bus / usb / devices / 1-1 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / 2-1 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / 3-11 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / 3-3 / power / wakeup: aktiviert
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ sys / bus / usb / devices / 3-4 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / 4-4 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / usb1 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / usb2 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / usb3 / power / wakeup: deaktiviert
/ sys / bus / usb / devices / usb4 / power / wakeup: deaktiviert

In meinem Fall ist das Aufwecken nur für das USB-Gerät 3-3 aktiviert, das gemäß der vorherigen Liste "Cord Optical Mouse" ist.

Ich möchte das Aufwecken aus dem Standby-Modus nur für die drahtlose Tastatur aktivieren und für den Rest deaktivieren. Der Tastatur-USB-Empfänger ist an einen HUB angeschlossen und entspricht 3-4.4 in der vorherigen Liste ("USB-Empfänger").


3. Erstellen Sie ein Skript, das die Arbeit erledigt:

Root-Berechtigungen haben:

sudo su

Dann erstellen wir die Datei für das Skript (die Datei kann "usbwakeup" oder eine beliebige Beschreibung heißen):

nano /etc/init.d/usbwakeup 

Inhalt der Datei. Passen Sie es einfach an Ihre Bedürfnisse an, indem Sie den Abschnitt "SCRIPT ACTIONS" (SCRIPT ACTIONS) ändern (ich füge Skripten gerne Kommentare hinzu, um zu erfahren, was sie tatsächlich tun, wenn ich sie eines Tages wieder öffne):

#! / bin / bash
#
#######################
# ALLGEMEINE INFORMATION #
#######################
#
# - Dieses Skript aktiviert / deaktiviert das Aufwecken aus dem Suspend # für USB-Geräte.
#
# - Das Skript benötigt Ausführungsberechtigungen.
#
# - Damit dieses Skript beim Systemstart ausgeführt wird, muss es vorhanden sein
# ein symbolischer Link dazu in /etc/rc3.d/ mit der Priorität S01
# (zum Beispiel: /etc/rc3.d/S01usbwakeup)
#
###########################
# VERWANDTE NÜTZLICHE BEFEHLE #
###########################
#
# - USB-Geräte identifizieren:
# grep. / sys / bus / usb / devices / * / product
#
# - Überprüfen Sie den Status von "Aufwecken der Suspendierung" von USB-Geräten:
# grep. / sys / bus / usb / devices / * / power / wakeup
#
#
###################
# SCRIPT-AKTIONEN #
###################
#
# Deaktiviert das Aufwecken aus dem Standby-Modus für die optische Maus
Echo deaktiviert> / sys / bus / usb / devices / 3-3 / power / wakeup
#
# Aktiviert das Aufwecken aus dem Standby-Modus für die drahtlose Tastatur
dass ich an einen USB 3.0 HUB im USB Port Nr. 4 angeschlossen habe
Echo aktiviert> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Erteilen Sie ihm Ausführungsberechtigungen:

chmod +x /etc/init.d/usbwakeup


5. Erstellen Sie einen symbolischen Link in /etc/rc3.d/, damit er beim Booten gestartet wird:

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


Beim Neustart des Systems sollte alles wie im Skript angegeben funktionieren. Die Änderungen sind dauerhaft, da sie bei jedem Systemstart ausgeführt werden.

Quellen konsultiert (abgesehen von diesem Beitrag):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubuntu-sleep/

/unix/83748/the-rc0-d-rc1-d-directories-in-etc

Juan Gómez Carrillo
quelle
Ich habe gerade einen interessanten Beitrag gefunden, in dem erklärt wird, wie man eine einfache GUI für denselben Zweck erstellt. Ich habe es nicht getestet, aber es könnte vielleicht jemandem helfen, es grafisch darzustellen
Juan Gómez Carrillo