Come posso evitare che il movimento del mouse riattivi un computer sospeso?


32

È davvero fastidioso in quanto devo scollegare il mouse dopo una sospensione per assicurarsi che un urto occasionale non riattivi il sistema. Non ho trovato nulla nelle impostazioni di sistema che non potesse disabilitarlo nemmeno cercando su Google.

Risposte:


24

Non ho ancora controllato il BIOS, ma ho trovato una soluzione!

Breve riepilogo: in /proc/acpi/wakeup, puoi vedere quali dispositivi sono attualmente abilitati a riprendere dalla sospensione. Tale elenco mostra i nomi (abbreviati) dei cosiddetti "Dispositivi". Esempio "PWRB" significa "pulsante di accensione".

Se scrivi i nomi dei dispositivi su quel file, li commuti tra abilitato / disabilitato.

Ho scritto un piccolo HowTo per disabilitare il wake-by-mouse , basato su un blog in cui ho trovato quelle informazioni.


1
Sembra molto meglio della mia risposta e ho modificato la mia risposta di conseguenza. Grazie!
Robie Basak l'

2
Quindi, questo funziona (tuttavia, ho notato di sfuggita che usando solo sudonon funziona: si deve fare sudo suprima, then echo a /proc/acpi/wakeup. Tuttavia, mi chiedo se qualcuno ha trovato un modo per solo ? Disabilitare il mouse ho sia sul mio desktop collegato tramite USB (wireless) e questo disabiliterà anche la sveglia dalla tastiera.
Marco

15

Grazie a tutti i poster, la sveglia del mouse è un grosso inconveniente e ho ricevuto le mie risposte qui. Vorrei aggiungere la mia svolta alle soluzioni in quanto ciò potrebbe aiutare in più casi. Ho dovuto disabilitare 3 elementi diversi in /proc/acpi/wakeup. I miei dispositivi: EHC1, EHC2, XHCI. I primi 2 sono usb2 e il 3 ° una voce usb3. Si noti che sebbene il ricetrasmettitore USB per il mio mouse sia collegato a una porta USB2 e non ci sia nulla in alcuna porta USB3, il computer si riattiverà sui movimenti del mouse fino a quando tutti e 3 gli elementi non saranno disabilitati.

$ 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

Per disabilitare gli elementi di riattivazione ad ogni avvio, è possibile aggiungere qualcosa di simile a /etc/rc.local..

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

modifica con cipricus:

Sto modificando questo perché avevo bisogno di aggiungere ulteriori dettagli affinché una mia domanda separata fosse chiusa come duplicata di quanto sopra in base a questa risposta; Penso che sia più utile che pubblicare come risposta separata.

*** Verifica quali elementi devono essere disabilitati - come indicato qui - per ciascuno degli articoli che sono stati registrati come enabledsotto cat /proc/acpi/wakeup | sorteseguendo nel terminale ciascuno dei comandi seguenti e quindi testando se il mouse riattiva il sistema (senza la necessità di riavviare) :

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

(nel mio caso il primo è stato sufficiente anche dopo il test con altre porte USB)

*** Se il /etc/rc.localfile non esiste - secondo questo post:

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

Il file dovrebbe assomigliare a:

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

exit 0

Reboot.


Se il problema persiste, è possibile che il file /etc/systemd/system/rc-local.servicesia mancante o non configurato correttamente.

Prova con

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

e

sudo systemctl status rc-local

Di seguito come abilitare /etc/rc.local con Systemd :

Crea il file:

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

Quindi aggiungere il seguente contenuto ad esso.

[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

Salva e chiudi il file. Per salvare un file nell'editor di testo Nano, premere Ctrl + O, quindi premere Invio per confermare. Per uscire dal file, premi Ctrl + X.

Controlla che tutto vada bene senza errori con:

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

Riavvia per vedere le modifiche.


Se non ti piace la mia modifica, fammelo sapere contrassegnando @cipricus e posterò una risposta separata collegata a quanto sopra.

6

Il mio sistema è Ubuntu 15.10

Ho provato a usare il lsusbcomando per trovare il dispositivo del mouse. È molto semplice, si digita lsusbquindi si scollega il mouse (nel mio caso, è un ricevitore Bluetooth) e si digita di lsusbnuovo. Il dispositivo è simile al seguente:

Bus 007 Device 008: ID 24ae:2000

Ora trovalo nella /sys/bus/usb/devices/cartella usando lo stesso modo (scollega / collega). Nel mio caso, ho scoperto che iniziano da qualche parte nelle cartelle 7-2*.

Ora prova a leggere idProduct e idVendor. Ad esempio: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. Questo è tutto.

Finalmente creo uno script nella /lib/systemd/system-sleepdirectory, nominandolo come preferisci.

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

Tutto fatto.


Funziona con Ubuntu 18.04 sul mio laptop.
Minh Nguyen,

1

questo script ha risolto il mio problema. controlla.

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

Tutto quello che devi fare è, prima di tutto, eseguire sudo xinput list, trovare il Nome del mouse USB e inserirlo nello script. Quindi, salva il file come "ssmonoff.sh", rendilo eseguibile e impostalo per l'esecuzione all'avvio.


1

Ottima spiegazione Ho semplicemente aggiunto a rc.local il seguente comando

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

per disabilitare tutti i dispositivi diversi da PS2K (tastiera PS2) dalla sveglia. Semplice e funzionante!


0

Potrebbe esserci un modo specifico per l'hardware, nel qual caso l'opzione potrebbe essere disponibile tramite le impostazioni del BIOS del sistema.

Anche accedere al menu BIOS per modificare le impostazioni è specifico del sistema. Di solito si preme un tasto subito dopo il riavvio e il tasto da premere viene spesso visualizzato sullo schermo.

Tuttavia, la risposta di user138339 sembra un modo più generale per ottenere ciò di cui hai bisogno e puoi farlo dal sistema in esecuzione.


0

Questo è il mio "tutorial" passo-passo per farlo funzionare per te:

  1. Utilizzare il comando cat /proc/acpi/wakeupper mostrare l'elenco dei dispositivi di riattivazione
  2. Utilizzare il comando sudo sh -c "echo XXXX >/proc/acpi/wakeup"(sostituire "XXXX" con il codice del dispositivo) per attivare / disattivare lo stato del dispositivo. Passa un dispositivo alla volta e prova a sospendere il tuo computer e riattivalo utilizzando il dispositivo che desideri disabilitare fino a quando il dispositivo meritato non sarà in grado di riattivare il computer. Non dimenticare di riattivare sempre i dispositivi che non desideri disabilitare.
  3. Quando trovi il dispositivo giusto crea sul tuo file desktop "acpi_wakeup" contenente il seguente codice: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (non dimenticare di sostituire "XXXX" con il tuo codice del dispositivo)
  4. Sposta o copia il file nella cartella /etc/init.d/. Per copiare il file usa il seguente comando: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (sostituisci "USERNAME" con il tuo vero nome utente)
  5. Rendi eseguibile il file: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Quindi usa 'update-rc.d' per creare automaticamente i collegamenti simbolici richiesti in altre directory: sudo update-rc.d acpi_wakeup defaults (mostra WARNING: ...missing LSB tags and overridesma è OK. Non devi preoccuparti)
  7. Riavvia il tuo computer.

Fonti e ulteriori letture:

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

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.