Despertar da suspensão usando o teclado ou mouse USB sem fio (para qualquer distribuição do Linux)

12

Eu estava procurando por horas, talvez mais, por uma solução e acabei de encontrar. Eu quero compartilhar com todos. Dessa forma, será mais fácil pesquisar esse problema para encontrar a solução mais rapidamente. Então, assim como o título diz, abaixo está a solução.

    
por Pavlos Theodorou 12.11.2016 / 21:07

3 respostas

11

acertar no terminal:

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

O resultado, para mim, foi descobrir que todos os usb estavam desativados. Então, agora, digite:

1.

sudo su

agora temos privillages raiz.

2. Eu tenho 8 portas USB ( você faz isso para quantas portas usb você tiver ), então:

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

Vá em frente e teste-o. Agora você pode acordar de qualquer teclado ou mouse sem fio ou com fio.

Então, a razão pela qual devemos habilitar todos eles é porque na próxima etapa, nós escreveremos isto em rc.local para executar o comando após cada reinicialização, e depois de reiniciar algumas distribuições Linux (talvez todas) portas usb. Não precisamos nos preocupar com nada que dê errado ativando todos eles, já que o linux está em suspensão ou hibernação, ele não pode usar o wifi para fazer o download de nada, então ele não vai acordar sem que o acordemos de propósito.

Próximo passo:

3.

sudo nano /etc/rc.local

e nós colamos tudo da etapa 2. lá (antes da saída 0, é claro).

É isso. De agora em diante, podemos usar nosso usb e mouse sem fio para acordar da suspensão.

Espero que funcione para todos vocês. Este guia foi feito depois de testar todas as outras soluções possíveis na Internet.

    
por Pavlos Theodorou 12.11.2016 / 21:07
5

Além do meu guia acima, eu quero adicionar essas informações, porque descobri recentemente que alguns dispositivos usb sem fio depois de acordar, voltam a ficar desabilitados. Repito, apenas alguns dispositivos usb fazem isso, não todos. É por isso que não adicionei este pequeno guia ao meu guia.

Então você fez o que eu instruí acima e seu PC acorda com sucesso, mas no final do dia, de repente ele não acorda novamente.

Solução:

Abra um terminal e faça:

lsusb

Nas informações de ID do seu dispositivo de teclado, os 4 primeiros dígitos são o ID do fornecedor e os 4 próximos dígitos são o ID do produto (veja a captura de tela)

Em seguida, faça:

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

Onde "wakeup" insere o nome desejado do script. O número 10 é a prioridade no caso de você ter muitas outras regras do udev, quanto menor o número, a 'regra' será executada antes das outras.

Copie e cole o ID do fornecedor e o ID do produto com o ID do fornecedor do seu teclado sem fio e o ID do produto.

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

* usb8 para mim é o meu teclado sem fio (você também pode ver isso na imagem (Bus 008)), substitua-o pelo seu próprio.

Ctrl + O para salvar, Ctrl + X para sair e reinicializar.

    
por Pavlos Theodorou 21.01.2017 / 23:15
1

A resposta de Pavlos Theodorou é muito útil. Eu gostaria de acrescentar que você pode encontrar o dispositivo usb com o qual seu mouse / teclado está conectado na inicialização por meio do piping dmesg através do grep algumas vezes, então < em> egrep uma vez, e finalmente usando tail para se certificar de que era a entrada mais recente.

Usando esse método, você não precisa ativar o wake em ALL portas USB.

Eu coloco o seguinte no meu arquivo /etc/rc.local e ele encontra meu receptor logitech toda vez, mesmo que seja movido de uma porta usb para outra. Apenas substitua o seu teclado ou mouse do dmesg no lugar de "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

Isso funciona na inicialização, mas não parece ser executado no wake from suspend, então eu tive que colocar um arquivo de script em / lib / systemd / system-sleep /. Crie-o, configure-o como globalmente executável e dê a ele um nome que comece com um número de dois dígitos entre 00 e 99. Meu script é o seguinte, novamente seu teclado / verbage de mouse do dmesg:

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [  = 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 [  = 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

Por alguma razão eu não consigo explicar, a instrução 'post' sleep if só funciona todos os outros wake-up ... mas o 'pre' sleep se declaração parece funcionar toda vez.

    
por jcn1 22.04.2018 / 01:34