¿Cómo evito que el movimiento del mouse despierte una computadora suspendida?

32

Es realmente molesto ya que tengo que desconectar el mouse después de una suspensión para asegurar que un golpe ocasional no despierte el sistema. No he encontrado nada en la configuración del sistema que no pueda desactivar esto tampoco buscando en Google.

usuario129498
fuente

Respuestas:

24

Todavía no he revisado el BIOS, ¡pero he encontrado una solución!

Breve resumen: en /proc/acpi/wakeup, puede ver qué dispositivos están actualmente habilitados para reanudar desde la suspensión. Esa lista muestra los nombres (abreviados) de los llamados "Dispositivos". Ejemplo "PWRB" significa "botón de encendido".

Si escribe nombres de dispositivos en ese archivo, los alterna entre habilitado / deshabilitado.

Escribí un pequeño HowTo para deshabilitar la activación por mouse , basado en un blog donde encontré esa información.

Rooker
fuente
1
Esto suena mucho mejor que mi respuesta, y he editado mi respuesta en consecuencia. ¡Gracias!
Robie Basak
2
Así, esta obra (Sin embargo, aviso de paso que acaba de usar sudono funcionará: uno tiene que hacer sudo suprimero, y luego echo a /proc/acpi/wakeup. Sin embargo, me pregunto si alguien ha encontrado una manera de simplemente ? Deshabilitar el ratón Tengo tanto en mi escritorio conectado a través de USB (inalámbrico) y esto también deshabilitará la activación del teclado.
Marco
15

Gracias a todos los carteles, ya que la activación del mouse es un gran inconveniente y obtuve mis respuestas aquí. Deseo agregar mi toque a las soluciones ya que eso puede ayudar en más casos. Tuve que desactivar 3 elementos diferentes en /proc/acpi/wakeup. Mis dispositivos: EHC1, EHC2, XHCI. Los primeros 2 son usb2 y el tercero una entrada usb3. Tenga en cuenta que aunque el transceptor usb para mi mouse está conectado a un puerto usb2 y no hay nada en ningún puerto usb3, la computadora se activará al mover el mouse hasta que los 3 elementos estén deshabilitados.

$ 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

Para deshabilitar los elementos de activación en cada inicio, puede agregar algo como esto a /etc/rc.local...

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

editar por cipricus:

Estoy editando esto porque necesitaba agregar más detalles para poder cerrar una pregunta mía por separado como duplicado de lo anterior en base a esta respuesta; Creo que es más útil que publicar como una respuesta separada.

*** Pruebe qué elementos deben deshabilitarse, como se indica aquí , para cada uno de los elementos que se publicaron como enableddebajo cat /proc/acpi/wakeup | sortejecutando en el terminal cada uno de los comandos a continuación y luego probando si el mouse activa el sistema (sin la necesidad de reiniciar) :

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

(en mi caso, el primero fue suficiente incluso después de probar con otros puertos USB)

*** Si el /etc/rc.localarchivo no existe, según esta publicación:

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

El archivo debería verse así:

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

exit 0

Reiniciar.


Si eso todavía no funciona, es posible que /etc/systemd/system/rc-local.servicefalte el archivo o que no esté configurado correctamente.

Prueba con

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

y

sudo systemctl status rc-local

Siguiente Cómo habilitar /etc/rc.local con Systemd :

Crea el archivo:

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

Luego agregue el siguiente contenido.

[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

Guarde y cierre el archivo. Para guardar un archivo en el editor de texto Nano, presione Ctrl + O, luego presione Entrar para confirmar. Para salir del archivo, presione Ctrl + X.

Verifique que todo esté bien sin errores con:

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

Reiniciar para ver los cambios.

Randy Skretka
fuente
Si no le gusta mi edición, hágamelo saber marcando @cipricus y lo publicaré como una respuesta separada vinculada a lo anterior.
6

Mi sistema es Ubuntu 15.10

Traté de usar el lsusbcomando para encontrar qué dispositivo de mouse es. Es muy simple, escribe y lsusbluego desconecta el mouse (en mi caso, es un receptor Bluetooth) y escribe de lsusbnuevo. El dispositivo se ve así:

Bus 007 Device 008: ID 24ae:2000

Ahora encuéntrelo en la /sys/bus/usb/devices/carpeta de la misma manera (desenchufe / enchufe). En mi caso, descubrí que están en algún lugar de las carpetas 7-2*.

Ahora intente leer idProduct e idVendor. Por ejemplo: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. Eso es.

Finalmente creo un script en el /lib/systemd/system-sleepdirectorio, asígnele el nombre que desee.

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

Todo listo.

Minh Nguyen
fuente
Funciona con Ubuntu 18.04 en mi computadora portátil.
Minh Nguyen
1

Este script resolvió mi problema. Echale un vistazo.

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

Todo lo que tiene que hacer es, primero, ejecutar sudo xinput list, encontrar el nombre de su mouse USB y ponerlo en el script. Luego, guarde el archivo como "ssmonoff.sh", hágalo ejecutable y configúrelo para que se ejecute al inicio.

yurividal
fuente
1

Gran explicación Simplemente agregué a rc.local el siguiente comando

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

para deshabilitar todos los dispositivos que PS2K (teclado PS2) desde la activación. Simple y de trabajo!

MeS Fet
fuente
0

Puede haber una forma específica para su hardware, en cuyo caso la opción puede estar disponible a través de la configuración del BIOS de su sistema.

Acceder al menú de su BIOS para cambiar la configuración también es específico del sistema. Por lo general, presiona una tecla justo después de reiniciar, y la tecla para presionar a menudo se muestra en la pantalla.

Sin embargo, la respuesta del usuario 138339 parece una forma más general de lograr lo que necesita, y puede hacerlo desde el sistema en ejecución.

Robie Basak
fuente
0

Este es mi "tutorial" paso a paso para que funcione:

  1. Use el comando cat /proc/acpi/wakeuppara mostrar la lista de dispositivos de activación
  2. Use el comando sudo sh -c "echo XXXX >/proc/acpi/wakeup"(reemplace "XXXX" con el código de su dispositivo) para alternar el estado del dispositivo (habilitado / deshabilitado). Vaya un dispositivo a la vez e intente suspender su máquina y reactivarla usando el dispositivo que desea deshabilitar hasta que el dispositivo merecido no pueda reactivar la máquina. No olvide habilitar siempre los dispositivos que no desea deshabilitar.
  3. Cuando encuentre el dispositivo correcto, cree en su archivo de escritorio "acpi_wakeup" que contenga el siguiente código: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (no olvide reemplazar "XXXX" con el código de su dispositivo)
  4. Mueva o copie el archivo a la carpeta /etc/init.d/. Para copiar el archivo, use el siguiente comando: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (reemplace "USERNAME" con su nombre de usuario real)
  5. Hacer el archivo ejecutable: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Luego use 'update-rc.d' para hacer los enlaces simbólicos requeridos automáticamente en otros directorios: sudo update-rc.d acpi_wakeup defaults (se muestra WARNING: ...missing LSB tags and overridespero está bien. No necesita preocuparse por eso)
  7. Reinicie su computadora.

Fuentes y lecturas adicionales:

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

Juraj.Lorinc
fuente