O teclado para de funcionar no Ubuntu 16.04 (Xenial Xerus)

17

Meu teclado para de funcionar sem motivo aparente.

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

Eu vejo muitos posts sobre o Ubuntu e um teclado ou mouse USB deixando de funcionar aleatoriamente. Eles indicam que é suspenso automaticamente a energia dos dispositivos USB para economizar energia e, quando o dispositivo USB não é compatível com alguns, o USB não é ativado como deveria.

Tentei a sugestão publicada em Fixing USB AutoSuspend .

Mas sem sorte. Eu também tentei outra sugestão: inicializar sem o teclado e conectá-lo quando o Ubuntu iniciar.

Aqui estão alguns detalhes:

  • Eu usei o mesmo teclado Kinesis com o Ubuntu como uma máquina virtual nos últimos dois anos, não há problema.
  • O Kinesis possui 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.
  • Eu tentei o Kinesis em um laptop agora. Esta é uma máquina de um ano em que eu instalei o Ubuntu 16.04 há duas semanas. O uso de uma macro do teclado Kinesis não reproduziu o problema.

Máquina do problema

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

O Kinesis, que eu tenho há 8 anos, tornou possível para mim continuar digitando. Se não conseguir resolver isso, terei que voltar ao Windows, o que seria uma chatice de verdade.

Qualquer sugestão sobre o que tentar ou maneiras de depurar isso seria muito apreciada.

Estou pesquisando drivers USB, dos quais no Linux não sei nada. No entanto, descobri que o laptop possui portas USB 2.0 e 3.0. A área de trabalho (com o problema) é apenas USB 2.0. Ainda cavando ...

klequis
fonte
Eu usei o mesmo teclado Kinesis com o Ubuntu como uma máquina virtual nos últimos 2 anos, não há problema. Você realmente entregou o teclado para a máquina virtual? Caso contrário, estava passando pelos drivers do sistema operacional host e do VirtualBox.
Melebius
Por 3 anos, usei o Ubuntu como uma VM com um host Windows e não tive problemas com o teclado. Agora que o host é o Ubuntu GNOME e o convidado também é o Ubuntu GNOME, estou tendo esse problema.
precisa saber é
Então você não estava usando o teclado físico no sistema operacional convidado. O Virtualbox apresenta um teclado virtual para o sistema operacional convidado por padrão. (por isso não importa se você usou o mesmo teclado físico, como não foi o mesmo)
karatedog
Veja esta questão semelhante: askubuntu.com/questions/688445/laptop-keyboard-stopped-working Instalando pacote xserver-xorg-input-allfuncionou para mim quando eu atualizado paraUbuntu 17.04
Lilás

Respostas:

7

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=-1Parâ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
  • rulesarquivo 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 catcomando:

$ 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 -1comando que vi aqui e ali, com o -1objetivo 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 -1comando 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

  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 (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
    
  4. e coloque o echo -1comando no seu arquivo '/etc/rc.local' antes da exit 0linha

    #!/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 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

  1. 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 dmesgcomando

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

    • Aqui está como é o final da minha dmesgsaí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 ;)
    
  2. Execute o seguinte comando no seu Terminal, alterando o número da minha porta 3-1pela que você encontrou em seu próprio dmesgresultado:

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

    Observe que autosuspend_delay_mssubstituiu o obsoleto autosuspenddesde 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 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
    
  5. e coloque o echo -1comando no seu arquivo '/etc/rc.local' antes da exit 0linha, mais uma vez, não se esqueça de alterar o número da porta n-nno 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 o seu computador

.

Importante: não esqueça que você terá que executar o sudo sh -ccomando "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 usb1ou usb2seletivamente 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.

Fenyx
fonte
obrigado por esta resposta. Infelizmente, não posso testar para confirmar que esta é a resposta. Portanto, não tenho certeza se devo marcar como resposta.
klequis
Eu tentei e não ajuda no Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo
1

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

Acabei descobrindo 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-genérico

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

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

jeroend
fonte
é muito provável que minha máquina recém-construída tenha um kernel mais recente que a máquina virtual que eu estava usando. No entanto, meu problema não era que o teclado parou de funcionar após a reinicialização, funcionou bem até que eu executei uma macro e, nesse momento, ela foi desligada. A maior parte do meu uso de macros era para chaves de programação comuns. Agora uso o editor Atom e seus atalhos / tipo automático (o que eles chamam) fazem a maior parte do que eu preciso, por isso estou feliz com isso.
precisa saber é o seguinte
0

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

AUTOSUSPEND_TIMEOUT=2

dentro

/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 usar essa opção se quiser ajustar suas configurações de gerenciamento de energia.

NOTAS:

  • O usbcore é compilado no kernel.
  • usando systemd
  • Ubuntu 16.10
  • Kernel do Linux 4.8.0-41-generic # 44-Ubuntu
Antonio Medina
fonte
Também observei que:
Antonio Medina
Não é um laptop e eu aprendi a viver sem, mas obrigado por sua sugestão.
klequis
A execução ou não de ferramentas do modo laptop tem pouco a ver com o fato de o sistema ser ou não um laptop. Meu sempre conectado ao servidor de A / C da parede estava executando-o, e definir o AUTOSUSPEND_TIMEOUT = -1 no arquivo /etc/laptop-mode/conf.d/runtime-pm.conf foi o que finalmente o corrigiu para mim, depois de lutar com isso desde que atualizei para 16.04 a partir de 14.04.
Rezty Felty
0

Eu tenho esse mesmo problema. Para mim, a solução era simples, enquanto o motivo real foi deixado desconhecido.

Ontem liguei um segundo mouse ao meu pc. Tudo funcionou bem. Hoje, quando eu inicializei, o teclado não funcionava na tela de login ou na área de trabalho. Funcionou durante a inicialização, por exemplo, entrei no BIOS.

O teclado começou a funcionar depois que eu desconectei o novo mouse e conectei todos os fios USB.

Ohto Nordberg
fonte
Pode ser o número total de dispositivos USB (no máximo dois). Eu tenho esse sistema. Pode ou não estar relacionado ao tipo de porta USB, USB 2 vs. USB 3. Infelizmente, não tenho muitas opções no BIOS para tentar contorná-lo.
Peter Mortensen
0

Li este e outros relatórios várias vezes no ano passado e, no final, desisti de usar o teclado que estava causando problemas e mudei para um teclado sem fio.

Até que me ocorreu que o problema começou na época em que construí um novo PC, e isso pode ser um problema de energia. Então, comprei um hub USB com energia para conectar o teclado. Resolveu o problema! Afinal, não era um problema de software, mas aparentemente meu novo computador possui saídas USB com pouca energia (ou assim o meu teclado pensa).

Pode valer a pena tentar se você estiver sofrendo com interrupções intermitentes do teclado, conforme descrito acima, e nada no lado do software funcionou. Um hub USB alimentado não precisa ser caro.

FvD
fonte
Ou um limite de corrente estava em vigor na porta USB? Por exemplo, 100 mA .
Peter Mortensen
0

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

Minha conclusão é que não vale a pena solucionar esse problema, 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á o Atom ), mas isso será ainda melhor do que o que eu tinha nas macros do teclado, pois os trechos são mais fáceis de manter do que as macros do teclado.

Aprendi muito sobre USB em Redefinindo o subsistema USB .

klequis
fonte
Comprei o Kinesis Advantage2 há cerca de 3 meses. Apenas usava 10 anos. Funciona bem. Não tendo o problema discutido nesta edição.
klequis
Os trechos (modelos de texto) são extremamente úteis, mas não podem controlar combinações de teclas, apenas texto puro (?). Por exemplo, Shift + Ctrl + Tab (para passar para a próxima aba à esquerda no Firefox) não pode ser colocado em um trecho
Peter Mortensen