Eu tive o mesmo problema com o Ubuntu 16.04 (Xenial Xerus) e procurei muito por qualquer solução ...
A solução está no final desta resposta se você não se importa com a história do contexto. O contexto pode parecer blabla inútil (talvez seja), mas acho que poderia ajudar os leitores a verificar se o problema que resolvi no meu PC é o mesmo que o deles.
CONTEXTO
Desesperadamente, testei sem êxito quase todas as dicas que encontrei na Web, reiniciando após cada tentativa:
usbcore.autosuspend=-1
Parâmetro de inicialização do kernel '/ etc / default / grub'
- 'runtime-pm.conf' do modo laptop
CONTROL_RUNTIME_AUTOSUSPEND=0
- desativando completamente as Ferramentas do modo laptop no arquivo '/etc/laptop-mode/laptop-mode.conf', confirmando que o problema não está relacionado a esse recurso do kernel. Eu verifiquei maneiras diferentes que laptop_mode não estava mais funcionando, para ter certeza. (Ref:
man laptop-mode.conf
& man laptop_mode
)
- Eu li alguns truques sobre '/etc/laptop-mode/conf.d/usb-autosuspend.conf', mas esse arquivo não existe na minha versão do Ubuntu 16.04 com o laptop-mode-tools v1.68
- desinstalação do aplicativo powertop . Geralmente, nos fóruns, suspeita-se de causar problemas de suspensão automática e hoje sei que não era verdade no meu caso, pois a desinstalação não corrigiu nada.
options usbcore autosuspend=1
em '/etc/modprobe.d/usb.conf' também foi ineficiente
- Script '/etc/udev/rules.d/60-power.rules' fornecido pelo Wiki oficial do Gentoo
rules
arquivo específico do dispositivo para udev
'/etc/udev/rules.d/usb-power.rules' recomendado por Serge Y. Stroobandt
Depois de ler todas essas coisas técnicas, só entendi que a causa estava relacionada ao meu valor '/ sys / module / usbcore / parameters / autosuspend' bloqueado em dois segundos, independentemente da alteração que faço na minha configuração. Você pode verificá-lo com o cat
comando:
$ cat /sys/module/usbcore/parameters/autosuspend
2
E sim, meu mouse foi desativado exatamente após dois segundos, então eu sabia que estava no caminho certo. Claro que eu testei o echo -1
comando que vi aqui e ali, com o -1
objetivo de desativar a suspensão automática ... mas:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
Não entendi por que a permissão foi negada, mesmo no modo sudo. Não tentei como raiz, porque simplesmente não achei que pudesse ser um problema. Aqui estava o erro :(
Graças aos comentários de Alex Dekker e Bryce , aprendi como desativar a suspensão automática apenas para o mouse. Mas é claro que minhas primeiras tentativas falharam com isso bash: Permission denied error
, então eu tive que esperar para entender minha confusão root / sudo antes que o echo -1
comando sugerido por Alex finalmente funcionasse.
Eu também encontrei uma maneira melhor de executar um comando como usuário root sem fazer login como root. A diferença entre o uso do shell raiz e do comando raiz está bem explicada na página wiki RootSudo do Ubuntu oficial . Adoro aprender esse tipo de coisa, mas ei! Por que sempre deve ser aprendido da maneira dolorosa? ri muito
OMG, foi uma verdadeira dor de cabeça e demorou muito tempo para um noob como eu entender, como eu costumo dizer "sem cérebro sem ganho". A mina precisa visivelmente de mais treinamento.
Então vamos parar de falar de mim e consertar! Continue abaixo ...
Eu recomendo a segunda solução para o seu HDD externo ocioso para não esgotar a bateria do laptop por nada. Mas eu lhe dou as duas soluções, porque quem ama a própria liberdade também deve amar a liberdade um do outro :)
SOLUÇÃO 1
Para desativar a suspensão automática em todos os dispositivos / portas USB
Abra o Terminal e execute:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
Esta é realmente uma solução temporária que permite testar instantaneamente se esse comando corrige o problema de suspensão automática do mouse ou do teclado.
Se o (s) seu (s) dispositivo (s) USB funcionam bem agora, basta editar o script '/etc/rc.local' para que ele execute esse comando sempre que o sistema for inicializado. Dessa forma, você tornará a correção permanente . Edite o arquivo, por exemplo, com nano:
sudo nano /etc/rc.local
e coloque o echo -1
comando no seu arquivo '/etc/rc.local' antes da exit 0
linha
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/module/usbcore/parameters/autosuspend
exit 0
Reinicie o seu computador
(Verifique a nota importante no final.)
.
SOLUÇÃO 2
Para desativar a suspensão automática para um dispositivo / porta USB específico
As opções de energia para um dispositivo USB estão em /sys/bus/usb/devices/n-n/power
. O que n-n
é um determinado dispositivo requer algumas manipulações para descobrir, mas não é complicado. O exemplo abaixo mostra como eu determinei que o número da porta USB do meu receptor de mouse sem fio é 3-1
, portanto, adapte isso à sua própria situação:
Desconecte seu dispositivo USB, abra o Terminal e execute o sudo dmesg
comando
Conecte seu dispositivo USB novamente e execute sudo dmesg
novamente no Terminal para verificar se há alterações.
Aqui está como é o final da minha dmesg
saída de comando depois de conectar meu mouse novamente em um slot:
[40208.575249] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[40208.705233] usb 3-1: New USB device found, idVendor=062a, idProduct=4102
[40208.705240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[40208.705245] usb 3-1: Product: 2.4G Wireless Mouse
[40208.705248] usb 3-1: Manufacturer: MOSART Semi.
[40208.707679] input: MOSART Semi. 2.4G Wireless Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/input/input24
[40208.763946] hid-generic 0003:062A:4102.0007: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MOSART Semi. 2.4G Wireless Mouse] on usb-0000:00:14.0-1/input0
Agora podemos ver que a porta em que meu dispositivo USB foi conectado é identificada como usb 3-1
.
**Note:** this trick concerns the USB port ID, not a device ID. For example, if I plug my mouse to the next USB port, it becomes identified as `usb 3-2` in the `dmesg` result. But this solution #2 remains very useful if you take the habit to always plug your mice or keyboard to the same port, and it's generally what people use to do unconsciously ;)
Execute o seguinte comando no seu Terminal, alterando o número da minha porta 3-1
pela que você encontrou em seu próprio dmesg
resultado:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Observe que autosuspend_delay_ms
substituiu o obsoleto autosuspend
desde a versão 2.6.38 do kernel, de acordo com a documentação oficial do Linux .
Esta é realmente uma solução temporária , mas agora você pode testar facilmente se esse comando corrigiu o problema de suspensão automática do mouse ou do teclado.
Se o seu dispositivo USB funcionar bem agora, basta editar o script '/etc/rc.local' para executar esse comando sempre que o sistema for inicializado. Dessa forma, você tornará a correção permanente . Edite o arquivo, por exemplo, com nano:
sudo nano /etc/rc.local
e coloque o echo -1
comando no seu arquivo '/etc/rc.local' antes da exit 0
linha, mais uma vez, não se esqueça de alterar o número da porta n-n
no comando:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
exit 0
Reinicie o seu computador
.
Importante: não esqueça que você terá que executar o sudo sh -c
comando "temporário" novamente manualmente se desconectar / reconectar o dispositivo USB enquanto o ambiente da área de trabalho já estiver iniciado, mesmo se você conectá-lo novamente ao mesmo plugue USB. Normal, apenas porque o arquivo '/etc/rc.local' é chamado apenas uma vez na inicialização do sistema.
De qualquer forma, soluções alternativas são possíveis. Povos mais qualificados podem ter métodos mais inteligentes, mas eu configurei aliases específicos de porta no Ubuntu. Ele permite que eu use os comandos simples usb1
ou usb2
seletivamente se eu precisar desconectar / reconectar meu dispositivo USB aqui ou ali. Você também! Você também pode criar aliases de comandos para jogar com palavras curtas em vez de digitar o comando completo. É fácil de configurar em menos de dois minutos e também funciona com Alt+ F2:)
Mais idéias para facilitar as coisas também serão muito bem-vindas.