Svegliati dalla sospensione usando la tastiera o il mouse USB wireless (per qualsiasi Linux Distro)


18

Stavo cercando ore, forse di più, per una soluzione e l'ho appena trovata. Voglio condividerlo con tutti. In questo modo sarà più facile cercare su Google questo problema per trovare la soluzione più velocemente. Quindi, proprio come dice il titolo, di seguito è la soluzione.

Risposte:


26

colpito nel terminale:

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

Il risultato, per me, è stato scoprire che tutte le USB erano disabilitate. Quindi ora digita:

1.

sudo su

ora abbiamo i privilegi di root.

2.Ho 8 porte USB ( lo fai per tutte le porte USB che hai ), quindi:

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

Vai avanti e provalo. Ora puoi svegliarti da qualsiasi tastiera e mouse USB wireless o cablati.

Quindi, il motivo per cui dobbiamo abilitarli tutti, è perché nel passaggio successivo, lo scriveremo in rc.local per eseguire il comando dopo ogni riavvio e dopo il riavvio di alcune distribuzioni di Linux (forse tutte) cambiamo le porte USB. Non dobbiamo preoccuparci di nulla che vada storto abilitandoli tutti, dal momento che Linux è in sospensione o ibernazione, non può usare il wifi per scaricare nulla, quindi non si sveglierà senza svegliarlo di proposito .

Passo successivo:

3.

sudo nano /etc/rc.local

e incolliamo tutto dal passaggio 2. lì dentro (prima dell'uscita 0 ovviamente).

Questo è tutto. Da ora in poi possiamo usare il nostro usb e mouse wireless per svegliarci dalla sospensione.

Spero che funzioni per tutti voi. Questa guida è stata realizzata dopo aver testato tutte le altre possibili soluzioni su Internet.


6
Se vuoi capire quale dispositivo è quale, puoi cercare /sys/bus/usb/devices/<device id>/productuna descrizione testuale.
ntc2,

Ho abilitato tutti i dispositivi in ​​" grep . /sys/bus/usb/devices/*/power/wakeup" ma non funzionava ancora. Forse è perché la tastiera e il mouse sono collegati indirettamente, in modalità wireless a un dongle che risiede sullo schermo? Lo schermo è collegato via USB al laptop.
AlikElzin-Kilaka,

1
come ha detto @ ntc2, usa questo per vedere la descrizione di ciascuno: grep . /sys/bus/usb/devices/*/productmi ha aiutato a capire cosa sto guardando
Ben Yitzhaki,

Se il problema persiste, assicurati che il dispositivo (tastiera / mouse) sia ancora acceso quando il PC è in modalità sospensione. Se sul dispositivo non è presente alcun LED, è possibile utilizzare un monitor di alimentazione USB (è possibile trovarli a circa $ 10 online) per verificare l'alimentazione sulla porta USB.
J Smith,

La parte permanente di questa domanda non funziona più con almeno Ubuntu 18.04. L'aggiunta ( askubuntu.com/a/874701/516072 ) a questa risposta fornita da pavlos-theodorou ha contribuito alla parte permanente in Ubuntu 18.04
Laurens,

10

Oltre alla mia guida sopra, voglio aggiungere queste informazioni, perché di recente ho scoperto che alcuni dispositivi USB wireless dopo essersi svegliati dalla sospensione, tornano indietro per disabilitare. Ripeto, solo alcuni dispositivi USB lo fanno, non tutti. Ecco perché non ho aggiunto questa piccola guida alla mia guida.

Quindi hai fatto come ti ho detto sopra e il tuo pc si sveglia con successo, ma più tardi nella giornata improvvisamente non si risveglia.

Soluzione:

Apri un terminale ed esegui:

lsusb

Alle informazioni sull'ID del dispositivo della tastiera, le prime 4 cifre sono l'ID del fornitore e le 4 cifre successive sono l'ID del prodotto (vedi screenshot) inserisci qui la descrizione dell'immagine

Avanti fare:

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

Dove "wakeup" inserisci il nome desiderato dello script. Il numero 10 è la priorità nel caso in cui tu abbia molte altre regole udev, più basso è il numero che la 'regola' verrà eseguita prima delle altre.

Copia incolla questo e sostituisci l'id fornitore e l'id prodotto con il tuo ID fornitore tastiera wireless e ID prodotto.

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

* usb8 per me è la mia tastiera wireless (puoi anche vederlo nello screenshot (Bus 008)), sostituirlo con il tuo.

Ctrl+ Oper salvare, Ctrl+ Xper uscire e riavviare.


4
Meglio incorporarlo nella tua prima risposta.
ntc2,

1
sono 2 cose diverse. il primo è la risposta al problema di sveglia. il secondo è più simile a "Come creare una regola per non eseguire l'avvio" ed è solo un "extra" poiché non tutti sanno come farlo e non esiste una semplice guida amatoriale per quello.
Pavlos Theodorou,

2

La risposta di Pavlos Theodorou è molto utile. Vorrei aggiungere che è possibile trovare il dispositivo USB a cui è collegato il mouse / la tastiera all'avvio eseguendo il piping dmesg tramite grep un paio di volte, quindi egrep una volta e infine usando tail per assicurarsi che fosse il più recente iscrizione.

Utilizzando questo metodo, non è necessario abilitare la riattivazione su TUTTE le porte USB.

Ho inserito quanto segue nel mio file /etc/rc.local e ogni volta trova il mio ricevitore logitech, anche se spostato da una porta USB all'altra. Basta sostituire il nome della vostra tastiera o il mouse da dmesg al posto di "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

Funziona all'avvio, ma non sembra funzionare a scia dalla sospensione, quindi ho dovuto mettere un file di script in / lib / systemd / system-sleep /. Crearlo, impostarlo come globalmente eseguibile e dargli un nome che inizia con un numero a due cifre compreso tra 00 e 99. Il mio script è la seguente, di nuovo substite vostra tastiera / mouse dal verbage 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

Per qualche ragione che non posso spiegare, la frase "post" sleep se funziona solo a ogni altro risveglio ... ma la frase "pre" sleep se sembra funzionare ogni volta.


1

Nessuna delle risposte sopra menzionate mi ha aiutato. Ecco perché inserisco qui il mio.

Abilitare / disabilitare la sveglia dalla sospensione per i dispositivi USB

Testato in KDE neon 5.16.2, basato su Ubuntu 18.04 ma dovrebbe funzionare in qualsiasi distribuzione.


1. Mostra l'elenco dei dispositivi USB per identificare quello che vuoi abilitare / disabilitare:

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

dovresti ottenere qualcosa del genere:

/ sys / bus / usb / devices / 3-3 / prodotto: Mouse ottico a cavo
/sys/bus/usb/devices/3-4.3/product:802.11n Adattatore WLAN
/sys/bus/usb/devices/3-4.4/product:USB Ricevitore
/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 / prodotto: controller host EHCI
/ sys / bus / usb / devices / usb2 / prodotto: controller host EHCI
/ sys / bus / usb / devices / usb3 / prodotto: controller host xHCI
/ sys / bus / usb / devices / usb4 / prodotto: controller host xHCI


2. Controlla lo stato di riattivazione di tutti i dispositivi USB:

grep. / Sys / bus / usb / devices / * / potenza / sveglia

il risultato dovrebbe essere qualcosa del genere:

/ Sys / bus / usb / devices / 1-1 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / 2-1 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / 3-11 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / 3-3 / potenza / sveglia: abilitato
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ Sys / bus / usb / devices / 3-4 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / 4-4 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / usb1 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / USB2 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / USB3 / potenza / sveglia: disattivata
/ Sys / bus / usb / devices / USB4 / potenza / sveglia: disattivata

Nel mio caso, la funzione di sveglia è abilitata solo per il dispositivo USB 3-3 che, in base all'elenco precedente, è "Cord Optical Mouse".

Voglio abilitare il risveglio dalla sospensione solo per la tastiera wireless e disabilitarlo per il resto. Il ricevitore USB della tastiera è collegato a un HUB e corrisponde a 3-4.4 nell'elenco precedente ("Ricevitore USB").


3. Crea uno script che funzioni:

Per avere i permessi di root:

sudo su

Quindi creiamo il file per lo script (il file può essere chiamato "usbwakeup" o qualunque descrittivo tu voglia):

nano /etc/init.d/usbwakeup 

Contenuto del file. Adattalo alle tue esigenze modificando la sezione "AZIONI SCRIPT" (Mi piace aggiungere commenti agli script per sapere cosa fanno realmente se li riaprirò un giorno):

#! / bin / bash
#
#######################
# INFORMAZIONE GENERALE #
#######################
#
#: Questo script abilita / disabilita la sveglia dalla sospensione # per i dispositivi USB.
#
# - Lo script richiede autorizzazioni di esecuzione.
#
# - Perché questo script venga eseguito all'avvio del sistema, ci deve essere
# un link simbolico ad esso in /etc/rc3.d/ con priorità S01
# (ad esempio: /etc/rc3.d/S01usbwakeup)
#
###########################
# COMANDI UTILI CORRELATI #
###########################
#
# - Identifica i dispositivi USB:
# grep. / Sys / bus / usb / devices / * / prodotto
#
# - Controlla lo stato di "riattivazione della sospensione" dei dispositivi USB:
# grep. / Sys / bus / usb / devices / * / potenza / sveglia
#
#
##################
# AZIONI SCRIPT #
##################
#
# Disabilita la sveglia dalla sospensione per il mouse ottico
eco disabilitato> / sys / bus / usb / devices / 3-3 / power / wakeup
#
# Abilita il risveglio dalla sospensione per la tastiera wireless
che ho collegato a un hub USB 3.0 nella porta USB n. 4
echo abilitato> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Dagli permessi di esecuzione:

chmod +x /etc/init.d/usbwakeup


5. Creare un collegamento simbolico in /etc/rc3.d/ per avviarlo all'avvio:

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


Riavviando il sistema, tutto dovrebbe funzionare come specificato nello script. Le modifiche saranno persistenti poiché verranno eseguite ad ogni avvio del sistema.

Fonti consultate (a parte questo post):

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


Ho appena trovato un post interessante in cui viene spiegato come creare una semplice GUI per lo stesso scopo. Non l'ho provato, ma potrebbe forse aiutare qualcuno che cerca di renderlo graficamente e con la facilità di un solo clic per abilitare / disabilitare: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- nascosto
Juan Gómez Carrillo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.