O teclado pára de funcionar Ubuntu 16.04

12

Meu teclado pára de funcionar sem motivo aparente.

Depois de usar o Ubuntu por 2,5 anos como uma máquina virtual em um host Windows (virtualbox) eu finalmente tomei a iniciativa, reformatei meu disco rígido e construí o sistema com o Ubuntu ontem. Esta manhã, meu teclado parou de funcionar.

Eu vejo muitos posts sobre o Ubuntu e um teclado ou mouse USB parando de funcionar aleatoriamente. Eles indicam que é Autosuspend desligar a energia para dispositivos USB para economizar energia e quando o dispositivo USB não é compatível em alguns, por isso o USB não "acorda" como deveria.

Tentei a sugestão publicada neste link

mas sem sorte. Eu também tentei outra sugestão que era inicializar sem o teclado e conectá-lo assim que o Ubuntu tivesse iniciado.

Aqui estão alguns detalhes

  • Eu usei o mesmo teclado do Kinesis com o Ubuntu como uma máquina virtual nos últimos dois anos, sem problemas.
  • O Kinesis tem macros e o acionamento de uma macro aciona o problema 100% do tempo. No entanto, isso acontece quando eu estou apenas digitando (sem macros) também.
  • Tentei o Kinesis em um laptop agora. Esta é uma máquina de 1 y / o que eu coloquei Ubuntu 16.04 em 2 semanas atrás. O uso de uma macro de teclado Kinesis NÃO reproduziu o problema.

Máquina de problemas

  • Dell XPS, 6 anos, área de trabalho
  • Instalado o Ubuntu 16.04 ontem
  • Usando o teclado USB do Kinesis Advantage
  • Desconectar / religar o teclado funcionou 9 em 10 vezes
  • A reinicialização também funciona
  • Não acho que seja um problema de alimentação do USB, pois um LED no teclado permanece aceso e outros dispositivos USB continuam funcionando.
  • Eu tenho um mouse USB e um mouse Bluetooth conectados à máquina. Ambos continuam trabalhando mesmo quando o Kinesis para.
  • Normalmente, tenho um segundo teclado normal da marca Dell ligado para pessoas que não são do Kinesis que precisam usar meu computador. Hoje mais cedo este teclado parou de funcionar cada vez que o Kinesis parou de funcionar. No entanto, agora, provocando o problema com uma macro, o teclado Dell continua trabalhando.

O Kinesis, que eu tenho há 8 anos, tornou possível para mim manter a digitação. Se eu não conseguir resolver isso, vou ter que voltar ao Windoze, o que seria uma chatice real.

Qualquer sugestão sobre coisas para tentar ou maneiras de resolver isso é muito apreciada.

Edit: Eu estou pesquisando sobre drivers USB, que no Linux eu não sei nada sobre. No entanto, descobri que o laptop tem portas USB 2.0 e 3.0. O Desktop (com o problema) é somente USB 2.0. Ainda cavando ...

    
por klequis 14.05.2016 / 00:44

4 respostas

5

Eu tive o mesmo problema com o Xenial 16.04 e procurei muito por qualquer solução ... Isso era muito chato mover meu cursor do mouse constantemente apenas para ativar o dispositivo. Eu estava a caminho de abandonar e fazer uma nova instalação ou mudar distro, perto da crise nervosa lol. Mas finalmente encontrei a única solução para o meu problema, e parece ser exatamente o mesmo que o seu, klequis.

A solução está no final desta resposta se você não se importar com a história do contexto. O contexto pode parecer um blabla inusitado (talvez seja), mas acho que isso poderia ajudar os leitores a verificar se o problema que eu resolvi no meu PC é o mesmo que o deles.

.

CONTEXTO

Eu tenho desesperadamente sem sucesso testado perto de todas as dicas que encontrei na web, reiniciando após cada tentativa:

  • '/ etc / default / grub' inicialização do kernel usbcore.autosuspend=-1 parameter
  • runtime-pm.conf do modo de laptop ' CONTROL_RUNTIME_AUTOSUSPEND=0
  • desabilitando totalmente as Ferramentas do Modo Laptop do arquivo '/etc/laptop-mode/laptop-mode.conf', confirmando que o problema não está relacionado a esse recurso do kernel, verifiquei diferentes maneiras que laptop_mode < Não estava mais em execução para ter certeza. (ref: man laptop-mode.conf & amp; man laptop_mode )
  • Eu li alguns truques sobre '/etc/laptop-mode/conf.d/usb-autouspend.conf', mas este arquivo não existe na minha versão do Ubuntu 16.04 com o laptop-mode-tools v1.68
  • powertop desinstalação do aplicativo, muitas vezes é suspeito em fóruns causar problemas de suspensão automática, hoje eu sei que não era verdade no meu caso, como desinstalar não corrigir nada
  • options usbcore autosuspend=1 em '/etc/modprobe.d/usb.conf' também foi ineficiente
  • Roteiro '/etc/udev/rules.d/60-power.rules' fornecido por Wiki oficial do Gentoo
  • arquivo rules específico do dispositivo para udev '/etc/udev/rules.d/usb-power.rules' recomendado por Serge Y. Stroobandt

Depois de ter lido todas essas coisas técnicas, eu só entendi que a causa estava relacionada ao meu valor '/ sys / module / usbcore / parameters / autosuspend' preso em 2 segundos, qualquer que seja a alteração que eu faça na minha configuração. Você pode verificar isso com o comando cat :

$ cat /sys/module/usbcore/parameters/autosuspend
2

E sim, meu mouse foi desativado exatamente após 2 segundos, então eu sabia que estava no caminho certo. É claro que eu testei o comando echo -1 que eu vi aqui e ali, -1 pretendia desabilitar a suspensão automática ... mas:

sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied

Eu não entendi porque a permissão foi negada, mesmo no modo sudo. Eu não tentei como root porque eu simplesmente não achei que isso poderia ser um problema. Aqui estava o erro: (

Agradecemos a Alex Dekker & amp; Bryce comenta , aprendi a desativar autosuspend apenas para o meu mouse. Mas é claro que minhas primeiras tentativas falharam com esse bash: Permission denied error , então tive que esperar pela compreensão da minha confusão raiz / sudo antes que o comando echo -1 sugerido por Alex finalmente funcionasse.

Eu também encontrei uma maneira melhor de executar um comando como usuário root sem login como root, a diferença entre o uso de comandos root e root é bem explicada na ajuda oficial do Página wiki do RootSudo . Eu amo aprender esse tipo de coisa, mas ei! por que tem que ser sempre aprendido o caminho doloroso? lol

OMG foi uma dor de cabeça real e demorou muito tempo para um noob como eu entender, como eu costumo dizer "sem cérebro sem ganho". Mina visivelmente precisa de mais treinamento.

Então, vamos parar de falar de mim mesmo e consertá-lo! Por favor continue abaixo ...

Eu recomendo a 2 ª solução para o seu disco rígido externo inativo para não drenar a bateria do seu laptop para nada. Mas eu lhe dou as duas soluções, porque quem ama a sua própria liberdade deve amar a liberdade um do outro também:)

SOLUÇÃO 1

Para desativar a suspensão automática em todos os dispositivos / portas USB

  1. Abra o Terminal e execute:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. 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
  3. Se o seu dispositivo USB funcionar bem agora, apenas edite seu script '/etc/rc.local' para que ele execute o comando sempre que o sistema for inicializado. Dessa forma, você fará o tipo de correção permanente . Edite o arquivo, por exemplo, com nano:

    sudo nano /etc/rc.local
    
  4. e coloque o comando echo -1 no seu arquivo '/etc/rc.local' antes da linha exit 0

    #!/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
    
  5. Reinicie seu computador

(por favor, verifique a nota Importante no final)

.

SOLUÇÃO 2

Para desabilitar a suspensão automática para um dispositivo / porta USB específico

  1. As opções de energia para um dispositivo USB estão em /sys/bus/usb/devices/n-n/power .O que n-n é para um determinado dispositivo requer algumas manipulações para descobrir, mas não é complicado. O exemplo abaixo mostra como determinei que o número da porta usb do meu receptor de mouse sem fio é 3-1 , então, por favor, adapte isso à sua própria situação:

    • Desconecte seu dispositivo USB, abra o Terminal e execute o comando sudo dmesg

    • Conecte seu dispositivo USB novamente e execute sudo dmesg novamente no Terminal para verificar se há alterações

    • Veja como é o final da saída do meu comando dmesg depois de ter colocado meu mouse de volta 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 o meu dispositivo USB foi conectado está identificada como usb 3-1 .

      Nota: este truque diz respeito ao ID da porta USB, não ao ID do dispositivo. Por exemplo, se eu conectar meu mouse à próxima porta USB, ele será identificado como usb 3-2 in dmesg result. Mas esta solução # 2 continua a ser muito útil se você usar o hábito de sempre conectar seu mouse ou teclado à mesma porta, e geralmente é o que as pessoas usam para fazer inconscientemente;)

  2. Execute o seguinte comando no seu Terminal, alterando meu número de porta 3-1 com o que você encontrou no seu próprio resultado dmesg :

    sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
    

    Observe que autosuspend_delay_ms substituiu o autosuspend preterido desde a versão 2.6.38 do kernel, de acordo com a documentação oficial do Linux .

  3. 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

  4. Se o seu dispositivo USB funcionar bem agora, basta editar o script '/etc/rc.local' para que ele execute o comando sempre que o sistema for inicializado. Dessa forma, você fará o tipo de correção permanente . Edite o arquivo, por exemplo, com nano:

    sudo nano /etc/rc.local
    
  5. e coloque o comando echo -1 no seu arquivo '/etc/rc.local' antes da linha exit 0 , 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
    
  6. Reinicie seu computador

.

Importante: não se esqueça que você terá que executar o comando sudo sh -c "temporary" novamente manualmente se você desconectar / reconectar seu dispositivo USB enquanto seu ambiente de desktop já estiver iniciado, mesmo se você ligá-lo de volta no mesmo plug USB. Normal, só 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. Os povos mais qualificados podem ter métodos mais inteligentes, mas eu configurei aliases específicos de portas no Ubuntu. Ele permite que eu use os comandos simples usb1 ou usb2 seletivamente se eu tiver que desconectar / reconfigurar meu dispositivo USB aqui ou ali. Você também! você também pode criar um comandos aliases para jogar com palavras curtas em vez de digitar o comando completo, é fácil definir em menos de 2 minutos e também funciona com Alt + F2:)

Mais ideias para facilitar as coisas também seriam muito bem-vindas.

Felicidades:)

    
por Fenyx 17.08.2016 / 11:58
1

Eu tive exatamente o mesmo problema (teclado Kinesis, parou de funcionar depois de uma reinicialização).

Eu finalmente descobri que estava relacionado a uma atualização do kernel

  • antes da reinicialização eu estava na versão 4.4.0-31-generic
  • após a reinicialização, era 4.4.0-38-generic

A inicialização usando o kernel 4.4.0-31 corrigiu o problema para mim.

Esta postagem inclui instruções sobre como inicializar usando um kernel antigo (permitindo que você veja se o kernel antigo faz o truque para você).

    
por jeroend 23.09.2016 / 19:47
0

Esta não é a resposta que eu estava procurando, mas ... Passei 2 dias / muitas horas tentando resolver esse problema. Eu comprei um hub PCIe USB 3.0 para ver se isso funcionaria - não é.

Minha conclusão é que esse problema não vale a pena resolver e existem maneiras melhores para o mesmo fim.

Minha solução / solução alternativa é confiar na função de trechos do meu editor de texto. Isso significa que vou investir e confiar mais em um editor específico (provavelmente será Atom), mas isso será ainda melhor do que o que eu tive com as macros de teclado, pois os snippets são mais fáceis de manter do que as macros de teclado.

Aprendi muito sobre o USB em esta postagem .

    
por klequis 15.05.2016 / 19:00
0

Se você tiver laptop-mode-tools , pode ser possível desativar totalmente a suspensão automática do USB, alterando:

AUTOSUSPEND_TIMEOUT=2

em

/etc/laptop-mode/conf.d/runtime-pm.conf

para

AUTOSUSPEND_TIMEOUT=-1

Observe que há uma opção comentada neste arquivo

untime-pm.conf:# Example: AUTOSUSPEND_DEVID_BLACKLIST="usbhid usb-storage"

Você pode tentar brincar com essa opção se quiser ajustar suas configurações de gerenciamento de energia.

NOTAS:

  • o usbcore é compilado no kernel.
  • usando o systemd
  • Ubuntu 16.10
  • Linux kernel 4.8.0-41-genérico # 44-Ubuntu
por Antonio Medina 14.03.2017 / 06:27