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


18

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

Respostas:


26

acerto 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 privilégios de raiz.

2.Eu tenho 8 portas USB ( você faz isso para quantas portas USB 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. Agora você pode acordar de qualquer teclado e mouse USB com ou sem fio.

Então, a razão pela qual devemos habilitar todos eles é que, na próxima etapa, escreveremos isso em rc.local para executar o comando após cada reinicialização e, após a reinicialização, algumas distribuições Linux (talvez todas) alterem as portas USB. Não precisamos nos preocupar com nada de errado ativando todos eles, já que o linux está em suspensão ou hibernação, ele não pode usar o wifi para baixar nada, para que não acorde sem acordá-lo de propósito. .

Próxima Etapa:

3)

sudo nano /etc/rc.local

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

É isso aí. A partir de agora, podemos usar nosso mouse e usb sem fio para ativar a suspensão.

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


6
Se você quiser descobrir qual dispositivo é qual, procure /sys/bus/usb/devices/<device id>/productuma descrição de texto.
— Ntc2

Ativei todos os dispositivos em " grep . /sys/bus/usb/devices/*/power/wakeup", mas ainda não funcionou. Talvez seja porque o teclado e o mouse estejam conectados indiretamente - sem fio a um dongle que reside na tela? A tela está conectada via USB ao laptop.
— AlikElzin-Kilaka

11
como @ NTC2 disse, usar isso para ver a descrição de cada um: grep . /sys/bus/usb/devices/*/productme ajudou a descobrir o que eu estou olhando
— Ben Yitzhaki

Se isso ainda não funcionar, verifique se o dispositivo (teclado / mouse) ainda está ligado quando o PC está no modo de suspensão. Se não houver LED no seu dispositivo, você pode usar um monitor de energia USB (pode encontrá-los cerca de US $ 10 on-line) para verificar se há energia na porta USB.
— J # Smith

A parte permanente dessa pergunta não funciona mais com pelo menos o ubuntu 18.04. A adição ( askubuntu.com/a/874701/516072 ) a esta resposta fornecida por pavlos-theodorou ajudou na parte permanente do Ubuntu 18.04
— Laurens

10

Além do meu guia acima, quero adicionar essas informações, porque descobri recentemente que alguns dispositivos USB sem fio, depois de acordarem do sono, voltam a ser desativados. Repito, apenas alguns dispositivos USB fazem isso, não todos. Por isso não adicionei este pequeno guia no meu guia.

Então você fez como 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 identificação do dispositivo do teclado, os 4 primeiros dígitos são a identificação do fornecedor e os 4 dígitos seguintes são a identificação do produto (veja a captura de tela) insira a descrição da imagem aqui

Em seguida faça:

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

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

Copie e cole isso e substitua a identificação do fornecedor e a identificação do produto pela sua própria identificação de fornecedor de teclado sem fio e identificação 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 captura de tela (Bus 008)), substitua-o pelo seu.

Ctrl+ Opara salvar, Ctrl+ Xpara sair e reiniciar.


4
Melhor incorporar isso em sua primeira resposta.
— Ntc2

11
eles são 2 coisas diferentes. o primeiro é a resposta para o problema de despertar. o segundo é mais como "Como criar uma regra para executar nenhuma inicialização" e é apenas um "extra", pois nem todo mundo sabe como fazer isso e não há um guia amador simples para isso.
— Pavlos Theodorou

2

A resposta de Pavlos Theodorou é muito útil. Gostaria de acrescentar que você pode encontrar o dispositivo USB ao qual o mouse / teclado está conectado na inicialização, executando dmesg através do grep algumas vezes, depois egrep uma vez e finalmente usando o tail para garantir que seja o mais recente entrada.

Usando esse método, você não precisa ativar a ativação em TODAS as portas USB.

Coloquei o seguinte no meu arquivo /etc/rc.local e ele encontra meu receptor da logitech todas as vezes, mesmo se movido de uma porta USB para outra. Basta substituir o nome do seu teclado ou mouse por 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 após a suspensão, então tive que colocar um arquivo de script em / lib / systemd / system-sleep /. Crie-o, defina-o como executável globalmente e dê um nome que comece com um número de dois dígitos entre 00 e 99. Meu script é o seguinte, substitua novamente o verbage do teclado / mouse pelo 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

Por alguma razão, não sei explicar, a instrução 'post' de suspensão se funciona apenas em todas as outras operações de despertar ... mas a instrução 'pré' de suspensão se parece funcionar todas as vezes.


1

Nenhuma das respostas acima mencionadas me ajudou. É por isso que eu posto aqui o meu próprio.

Ativando / desativando a ativação de suspensão para dispositivos USB

Testado no KDE neon 5.16.2, baseado no Ubuntu 18.04, mas deve funcionar em qualquer distribuição.


1. Mostre a lista de dispositivos USB para identificar o que você deseja ativar / desativar:

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

você deve obter algo como isto:

/ sys / bus / usb / devices / 3-3 / product: Mouse óptico de cabo
Adaptador WLAN /sys/bus/usb/devices/3-4.3/product:802.11n
/sys/bus/usb/devices/3-4.4/product:USB Receiver
/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 / product: Controlador de host EHCI
/ sys / bus / usb / devices / usb2 / product: Controlador de host EHCI
/ sys / bus / usb / devices / usb3 / product: Controlador de host xHCI
/ sys / bus / usb / devices / usb4 / product: Controlador de host xHCI


2. Verifique o status de ativação de todos os dispositivos USB:

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

o resultado deve ser algo como isto:

/ sys / bus / usb / devices / 1-1 / power / wakeup: desativado
/ sys / bus / usb / devices / 2-1 / power / wakeup: desativado
/ sys / bus / usb / devices / 3-11 / power / wakeup: desativado
/ sys / bus / usb / devices / 3-3 / power / wakeup: ativado
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ sys / bus / usb / devices / 3-4 / power / wakeup: desativado
/ sys / bus / usb / devices / 4-4 / power / wakeup: desativado
/ sys / bus / usb / devices / usb1 / power / wakeup: desativado
/ sys / bus / usb / devices / usb2 / power / wakeup: desativado
/ sys / bus / usb / devices / usb3 / power / wakeup: desativado
/ sys / bus / usb / devices / usb4 / power / wakeup: desativado

No meu caso, a ativação é ativada apenas para o dispositivo USB 3-3 que, de acordo com a lista anterior, é "Cord Optical Mouse".

Desejo ativar a ativação de suspender apenas para o teclado sem fio e desativá-lo para o resto. O receptor USB do teclado está conectado a um HUB e corresponde a 3-4.4 na lista anterior ("USB Receiver").


3. Crie um script que faça o trabalho:

Para ter permissões de root:

sudo su

Em seguida, criamos o arquivo para o script (o arquivo pode ser chamado de "usbwakeup" ou qualquer descrição que você desejar):

nano /etc/init.d/usbwakeup 

Conteúdo do arquivo. Basta adaptá-lo às suas necessidades, alterando a seção "AÇÕES DE SCRIPT" (eu gosto de adicionar comentários aos scripts para saber o que eles realmente fazem se eu os abrir novamente algum dia):

#! / bin / bash
#
#######################
# INFORMAÇÃO GERAL #
#######################
#
# - Este script habilita / desabilita a ativação do # de suspensão para dispositivos USB.
#
# - O script precisa de permissões de execução.
#
# - Para que este script seja executado quando o sistema for iniciado, deve haver
# um link simbólico para ele em /etc/rc3.d/ com prioridade S01
# (por exemplo: /etc/rc3.d/S01usbwakeup)
#
###########################
# COMANDOS ÚTEIS RELACIONADOS #
###########################
#
# - Identifique dispositivos USB:
# grep. / sys / bus / usb / devices / * / product
#
# - Verifique o status de "ativação da suspensão" dos dispositivos USB:
# grep. / sys / bus / usb / devices / * / power / wakeup
#
#
##################
# AÇÕES DE SCRIPT #
##################
#
# Desativa a ativação da suspensão para o mouse óptico
eco desativado> / sys / bus / usb / devices / 3-3 / power / wakeup
#
# Permite ativar a suspensão do teclado sem fio
que conectei a um HUB USB 3.0 na porta USB nº 4
eco ativado> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Conceda permissões de execução:

chmod +x /etc/init.d/usbwakeup


5. Crie um link simbólico em /etc/rc3.d/ para iniciar na inicialização:

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


Ao reiniciar o sistema, tudo deve funcionar conforme especificado no script. As alterações serão persistentes, pois serão executadas a cada inicialização do sistema.

Fontes consultadas (além deste 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


Acabei de encontrar um post interessante, onde é explicado como criar uma GUI simples para o mesmo objetivo. Eu não testei, mas talvez ajude alguém tentando fazê-lo graficamente e com a facilidade de um único clique para ativar / desativar: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- hid
— Juan Gómez Carrillo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.