Como impedir que o movimento do mouse acorde um computador suspenso?

32

É realmente irritante, pois tenho que desconectar o mouse após uma suspensão para garantir que um solavanco ocasional não acorde o sistema. Não encontrei nada nas configurações do sistema que pudesse desativar isso nem pesquisando no Google.

user129498
fonte

Respostas:

24

Ainda não verifiquei o BIOS, mas encontrei uma solução!

Resumo breve: em /proc/acpi/wakeup, você pode ver quais dispositivos estão atualmente ativados para retomar da suspensão. Essa lista mostra os nomes (abreviados) dos chamados "Dispositivos". Exemplo "PWRB" significa "botão liga / desliga".

Se você escrever nomes de dispositivos nesse arquivo, alterne-os entre ativado / desativado.

Eu escrevi um pequeno tutorial sobre como desativar a ativação por mouse , com base em um blog onde encontrei essas informações.

Rooker
fonte
1
Isso soa muito melhor do que minha resposta e editei minha resposta de acordo. Obrigado!
Robie Basak
2
Então, isso funciona (no entanto, noto de passagem que apenas usando sudonão vai funcionar: um tem que fazer sudo suprimeiro, então ecoar a /proc/acpi/wakeup. No entanto, eu estou querendo saber se alguém já encontrou uma maneira de apenas ? Desativar o mouse eu tenho tanto na minha área de trabalho conectada via USB (sem fio) e isso também desabilitará a ativação do teclado.
Marco
15

Obrigado a todos os pôsteres, pois a ativação do mouse é um grande inconveniente e recebi minhas respostas aqui. Desejo acrescentar meu toque às soluções, pois isso pode ajudar em mais casos. Eu tive que desativar 3 itens diferentes no /proc/acpi/wakeup. Meus dispositivos: EHC1, EHC2, XHCI. Os dois primeiros são usb2 e o terceiro uma entrada usb3. Observe que, embora o transceptor usb do meu mouse esteja conectado a uma porta usb2 e nada esteja em nenhuma porta usb3, o computador ativará os movimentos do mouse até que todos os 3 itens sejam desativados.

$ 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 desabilitar os itens de ativação em todas as inicializações, você pode adicionar algo como isso a /etc/rc.local..

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

edite por cipricus:

Estou editando isso porque precisava adicionar mais detalhes para que uma pergunta separada fosse fechada como duplicata do que foi dito acima, com base nesta resposta; Eu acho mais útil do que postar como uma resposta separada.

*** Teste quais itens precisam ser desabilitados - como indicado aqui - para cada um dos itens postados enabledabaixo cat /proc/acpi/wakeup | sort, executando no terminal cada um dos comandos abaixo e depois teste se o mouse acorda o sistema (sem a necessidade 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"

(no meu caso, o primeiro foi suficiente mesmo após o teste com outras portas USB)

*** Se o /etc/rc.localarquivo não existir - de acordo com este post:

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

O arquivo deve se parecer com:

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

exit 0

Reinicie.


Se isso ainda não funcionar, pode ser que o arquivo /etc/systemd/system/rc-local.serviceesteja ausente ou não esteja configurado corretamente.

Teste com

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

e

sudo systemctl status rc-local

A seguir, como ativar o /etc/rc.local com o Systemd :

Crie o arquivo:

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

Em seguida, adicione o seguinte conteúdo a ele.

[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

Salve e feche o arquivo. Para salvar um arquivo no editor de texto Nano, pressione Ctrl + O e pressione Enter para confirmar. Para sair do arquivo, pressione Ctrl + X.

Verifique se tudo está bem, sem erros com:

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

Reinicie para ver as alterações.

Randy Skretka
fonte
Se você não gostar da minha edição, informe-me sinalizando @cipricus e postarei como uma resposta separada vinculada ao acima.
6

Meu sistema é o Ubuntu 15.10

Eu tentei usar o lsusbcomando para encontrar o que é o dispositivo do mouse. É muito simples, você digita lsusbe desconecta o mouse (no meu caso, é um receptor Bluetooth) e digita lsusbnovamente. O dispositivo fica assim:

Bus 007 Device 008: ID 24ae:2000

Agora encontre-o na /sys/bus/usb/devices/pasta usando o mesmo caminho (desconecte / conecte). No meu caso, descobri que eles estão em algum lugar nas pastas que começam 7-2*.

Agora tente ler o idProduct e o idVendor. Por exemplo: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. É isso aí.

Finalmente, crio um script no /lib/systemd/system-sleepdiretório, nomeie o que você quiser.

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

Tudo feito.

Minh Nguyen
fonte
Funciona com o Ubuntu 18.04 no meu laptop.
Minh Nguyen
1

esse script resolveu meu problema. Confira.

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

Tudo o que você precisa fazer é, primeiro, executar sudo xinput list, encontrar o nome do mouse USB e colocá-lo no script. Em seguida, salve o arquivo como "ssmonoff.sh", torne-o executável e configure-o para executar na inicialização.

yurividal
fonte
1

Ótima explicação. Eu simplesmente adicionei ao rc.local o seguinte comando

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

para desativar todos os dispositivos que não o PS2K (teclado PS2) da ativação. Simples e funcional!

MeS Fet
fonte
0

Pode haver uma maneira específica para o seu hardware; nesse caso, a opção pode estar disponível nas configurações de BIOS do seu sistema.

Chegar ao menu do BIOS para alterar as configurações também é específico do sistema. Geralmente, você pressiona uma tecla logo após a reinicialização, e a tecla a ser pressionada geralmente é exibida na tela.

No entanto, a resposta do usuário138339 parece ser uma maneira mais geral de obter o que você precisa, e você pode fazer isso no sistema em execução.

Robie Basak
fonte
0

Este é o meu "tutorial" passo a passo para fazê-lo funcionar para você:

  1. Use o comando cat /proc/acpi/wakeuppara mostrar a lista de dispositivos de ativação
  2. Use o comando sudo sh -c "echo XXXX >/proc/acpi/wakeup"(substitua "XXXX" pelo código do seu dispositivo) para alternar o estado do dispositivo (ativado / desativado). Acesse um dispositivo de cada vez e tente suspender sua máquina e ativá-la usando o dispositivo que você deseja desativar até que o dispositivo merecido não consiga ativar a máquina. Não se esqueça de sempre ativar novamente os dispositivos que você não deseja desativar.
  3. Quando você encontrar o dispositivo certo, crie no seu arquivo da área de trabalho "acpi_wakeup" que contém o seguinte código: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (não esqueça de substituir "XXXX" pelo código do dispositivo)
  4. Mova ou copie o arquivo para a pasta /etc/init.d/. Para copiar o arquivo, use o seguinte comando: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (substitua "USERNAME" pelo seu nome de usuário real)
  5. Torne o arquivo executável: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Em seguida, use 'update-rc.d' para criar os links simbólicos necessários automaticamente em outros diretórios: sudo update-rc.d acpi_wakeup defaults (é exibido, WARNING: ...missing LSB tags and overridesmas está OK. Você não precisa se preocupar com isso)
  7. Reinicie o computador.

Fontes e leituras adicionais:

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

Juraj.Lorinc
fonte