A razão pela qual as pessoas postam perguntas como essa deve-se ao temido - de fato " EVIL " - recurso "Suspensão automática de USB ".
A suspensão automática reduz a energia de um dispositivo USB "inativo" e, a menos que o driver do dispositivo ofereça suporte a esse recurso corretamente, o dispositivo pode ficar incontestável. Portanto, ligar / desligar uma porta USB é um sintoma do problema, não o problema em si.
Vou mostrar-lhe como desativar GLOBALMENTE a suspensão automática, negando a necessidade de ativar e desativar manualmente as portas USB:
Resposta curta:
NÃO é necessário editar " autosuspend_delay_ms " individualmente: o USB autosuspend pode ser desativado globalmente e PERSISTENTEMENTE usando os seguintes comandos:
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub
update-grub
systemctl reboot
Uma captura de tela do Ubuntu 18.04 segue no final da "Resposta longa", ilustrando como meus resultados foram alcançados.
Resposta longa:
É verdade que a documentação do kernel do USB Power Management declara suspensão automática e está em seu lugar " autosuspend_delay_ms " usado para desativar a suspensão automática USB:
"In 2.6.38 the "autosuspend" file will be deprecated
and replaced by the "autosuspend_delay_ms" file."
No entanto, meus testes revelam que a configuração usbcore.autosuspend=-1
em / etc / default / grub como abaixo pode ser usada como uma alternância GLOBAL para a funcionalidade de suspensão automática de USB - você NÃO precisa editar " autosuspend_delay_ms " individual arquivos " .
O mesmo documento vinculado acima afirma que um valor de "0" é ATIVADO e um valor negativo é DESATIVADO :
power/autosuspend_delay_ms
<snip> 0 means to autosuspend
as soon as the device becomes idle, and negative
values mean never to autosuspend. You can write a
number to the file to change the autosuspend
idle-delay time.
Na captura de tela anotada do Ubuntu 18.04 abaixo, ilustrando como meus resultados foram alcançados (e reproduzíveis), observe que o padrão é "0" ( ativado ) em autosuspend_delay_ms .
Observe que, após a configuração ONLYusbcore.autosuspend=-1
no Grub, esses valores agora são negativos ( desabilitados ) após a reinicialização. Isso vai me poupar o trabalho de editar valores individuais e agora pode gerar um script para desativar a suspensão automática de USB.
Espero que isso torne a desativação da suspensão automática de USB um pouco mais fácil e mais programável.
power/level
está obsoleto agora; use empower/control
vez disso . (power/wakeup
está ok.) Além disso, ele aceita apenas "auto" e "on", não "suspende" mais. "auto" é inteligente o suficiente e, se a energia não for desligada enquanto estiver ociosa, a culpa é do dispositivo. De qualquer forma, você não pode desligar manualmente. Para mais, veja a resposta abaixo por tlwhitec e doc do kernel: kernel.org/doc/Documentation/usb/power-management.txt