El teclado deja de funcionar en Ubuntu 16.04 (Xenial Xerus)

17

Mi teclado deja de funcionar sin razón aparente.

Después de usar Ubuntu durante 2.5 años como máquina virtual en un host de Windows ( VirtualBox ), finalmente me lancé, reformateé mi disco duro y construí el sistema con Ubuntu ayer. Esta mañana, mi teclado dejó de funcionar.

Veo muchas publicaciones sobre Ubuntu y un teclado o mouse USB que dejan de funcionar al azar. Indican que es una suspensión automática al apagar los dispositivos USB para ahorrar energía, y cuando el dispositivo USB no es compatible en algunos, el USB no se "activa" como debería.

Intenté la sugerencia publicada en Fixing USB Autosuspend .

Pero sin suerte. También probé otra sugerencia que era arrancar sin el teclado y luego enchufarlo una vez que Ubuntu había comenzado.

Aquí hay algunos detalles:

  • Utilicé el mismo teclado Kinesis con Ubuntu como máquina virtual durante los últimos dos años, no hay problema.
  • Kinesis tiene macros y activar una macro desencadena el problema el 100% del tiempo. Sin embargo, sucede cuando estoy escribiendo (sin macros) también.
  • Probé el Kinesis en una computadora portátil en este momento. Esta es una máquina de un año en la que puse Ubuntu 16.04 hace dos semanas. El uso de una macro de teclado Kinesis no reprodujo el problema.

Máquina de problemas

  • Dell XPS, 6 años, computadora de escritorio
  • Instalé Ubuntu 16.04 ayer
  • Uso del teclado USB Kinesis Advantage
  • Desconectar / volver a enchufar el teclado ha funcionado 9 de cada 10 veces
  • El reinicio también funciona
  • No creo que sea un problema de alimentación USB ya que un LED en el teclado permanece encendido y otros dispositivos USB siguen funcionando.
  • Tengo un mouse USB y un Bluetooth conectados a la máquina. Ambos siguen trabajando incluso cuando la Kinesis se detiene.
  • Normalmente tengo un segundo teclado normal de la marca Dell conectado para personas que no son de Kinesis que necesitan usar mi computadora. Hoy temprano, este teclado dejó de funcionar cada vez que el Kinesis dejó de funcionar. Sin embargo, ahora, desencadenando el problema con una macro, el teclado Dell sigue funcionando.

El Kinesis, que he tenido durante 8 años, me ha permitido seguir tocando el teclado. Si no puedo resolver esto, tendré que volver a Windows, lo que sería un verdadero fastidio.

Cualquier sugerencia sobre cosas para probar o formas de depurar esto sería muy apreciada.

Estoy investigando los controladores USB, de los que en Linux no sé nada. Sin embargo, descubrí que la computadora portátil tiene puertos USB 2.0 y 3.0. El escritorio (con el problema) es solo USB 2.0. Todavía cavando ...

Klequis
fuente
Utilicé el mismo teclado Kinesis con Ubuntu como máquina virtual durante los últimos 2 años, no hay problema. ¿Realmente entregaste el teclado a la máquina virtual? De lo contrario, estaba pasando por los controladores del sistema operativo host y VirtualBox.
Melebius
Durante 3 años utilicé Ubuntu como VM con un host de Windows y no tuve ningún problema con el teclado. Ahora que el host es Ubuntu GNOME y el invitado también es Ubuntu GNOME, tengo este problema.
Klele
Entonces no estaba usando su teclado físico en el sistema operativo invitado. Virtualbox presenta un teclado virtual al sistema operativo invitado de forma predeterminada. (por lo que no importa si usó el mismo teclado físico, ya que no era el mismo)
karatedog
Vea esta pregunta similar: askubuntu.com/questions/688445/laptop-keyboard-stopped-working El paquete de instalación xserver-xorg-input-allfuncionó para mí cuando actualicé aUbuntu 17.04
Lilás

Respuestas:

7

Tuve el mismo problema con Ubuntu 16.04 (Xenial Xerus) y busqué mucho cualquier solución ...

La solución está al final de esta respuesta si no te importa la historia contextual. El contexto podría parecer una blabla inútil (tal vez lo sea), pero creo que podría ayudar a los lectores a verificar si el problema que he resuelto en mi PC es el mismo que el suyo.

CONTEXTO

Desesperadamente he probado sin éxito casi todos los consejos que he encontrado en la web, reiniciando después de cada intento:

  • usbcore.autosuspend=-1Parámetro de arranque del núcleo '/ etc / default / grub'
  • laptop-mode's 'runtime-pm.conf' CONTROL_RUNTIME_AUTOSUSPEND=0
  • deshabilitar completamente las herramientas de modo portátil del archivo '/etc/laptop-mode/laptop-mode.conf', confirmando que el problema no está relacionado con esta función del núcleo. He comprobado diferentes formas en que laptop_mode ya no se estaba ejecutando para estar seguro. (Ref: man laptop-mode.conf& man laptop_mode)
  • He leído algunos trucos sobre '/etc/laptop-mode/conf.d/usb-autosuspend.conf', pero este archivo no existe en mi versión de Ubuntu 16.04 con laptop-mode-tools v1.68
  • Desinstalación de la aplicación Powertop . A menudo se sospecha que en los foros causa problemas de autosuspend, y hoy sé que no fue cierto en mi caso, ya que desinstalarlo no solucionó nada.
  • options usbcore autosuspend=1 en '/etc/modprobe.d/usb.conf' también ha sido ineficiente
  • Script '/etc/udev/rules.d/60-power.rules' proporcionado por el Wiki oficial de Gentoo
  • rulesarchivo específico del dispositivo para udev'/etc/udev/rules.d/usb-power.rules' recomendado por Serge Y. Stroobandt

Después de leer todo este material técnico, solo entendí que la causa estaba relacionada con mi valor '/ sys / module / usbcore / parameters / autosuspend' bloqueado en dos segundos, sin importar el cambio que haga a mi configuración. Puedes verificarlo con el catcomando:

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

Y sí, mi mouse se deshabilitó exactamente después de dos segundos, por lo que sabía que estaba en el camino correcto. Por supuesto, probé el echo -1comando que he visto aquí y allá, -1destinado a deshabilitar la suspensión automática ... pero:

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

No entendí por qué se denegó el permiso incluso en modo sudo. No intenté como root, porque simplemente no pensé que podría ser un problema. Aquí estaba el error :(

Gracias a los comentarios de Alex Dekker y Bryce , aprendí cómo deshabilitar la suspensión automática solo para mi mouse. Pero, por supuesto, mis primeros intentos han fallado con esto bash: Permission denied error, así que tuve que esperar para comprender mi confusión raíz / sudo antes de que el echo -1comando sugerido por Alex finalmente funcione.

También he encontrado una mejor manera de ejecutar un comando como usuario root sin iniciar sesión como root. La diferencia entre el uso de shell root y el uso de comandos de root está bien explicada en la página wiki oficial RootSudo de Ubuntu . Me encanta aprender a este tipo de cosas, pero ¡oye! ¿Por qué tiene que aprenderse siempre de la manera dolorosa? Jajaja

Dios mío, fue un verdadero dolor de cabeza, y a un novato como yo le tomó mucho tiempo entenderlo, ya que generalmente digo "sin cerebro no hay ganancia". El mío necesita visiblemente más entrenamiento.

¡Así que dejemos de hablar de mí y reparémoslo! Por favor continúe abajo ...


Recomiendo encarecidamente la segunda solución para que su disco duro externo inactivo no agote la batería de su computadora portátil por nada. Pero les doy ambas soluciones, porque quien ama su propia libertad también debería amar la libertad de los demás :)

SOLUCION 1

Para desactivar la suspensión automática en todos los dispositivos / puertos USB

  1. Abra la Terminal y ejecute:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. De hecho, esta es una solución temporal que le permite probar al instante si este comando soluciona el problema de la suspensión automática del mouse o del teclado.

  3. Si sus dispositivos USB funcionan bien ahora, simplemente edite su script '/etc/rc.local' para que ejecute ese comando cada vez que se inicie el sistema. De esta forma, la solución será permanente . Edite el archivo, por ejemplo con nano:

    sudo nano /etc/rc.local
    
  4. y ponga el echo -1comando en su archivo '/etc/rc.local' antes de la exit 0línea

    #!/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. Reinicia tu computadora

(Consulte la nota importante al final).

.

SOLUCIÓN 2

Para desactivar la suspensión automática para un dispositivo / puerto USB específico

  1. Las opciones de energía para un dispositivo USB están en /sys/bus/usb/devices/n-n/power. Lo que n-nes para un dispositivo dado requiere algunas manipulaciones para descubrirlo, pero no es complicado. El siguiente ejemplo muestra cómo he determinado que el número de puerto USB de mi receptor de mouse inalámbrico es 3-1, así que adapte esto a su propia situación:

    • Desenchufe su dispositivo USB, abra la Terminal y ejecute el sudo dmesgcomando

    • Vuelva a conectar su dispositivo USB y luego sudo dmesgvuelva a ejecutarlo en la Terminal para verificar los cambios

    • Así dmesges como se ve el final de la salida de mi comando después de volver a enchufar el mouse en una ranura

      [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
      

    Ahora podemos ver que el puerto donde se conectó mi dispositivo USB se identifica 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. Ejecute el siguiente comando en su Terminal, cambiando mi número de puerto 3-1con el que encontró en su propio dmesgresultado:

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

    Tenga en cuenta que autosuspend_delay_msha reemplazado el obsoleto autosuspenddesde la versión del kernel 2.6.38, de acuerdo con la documentación oficial de Linux .

  3. De hecho, esta es una solución temporal , pero ahora puede probar fácilmente si este comando solucionó el problema de suspensión automática del mouse o del teclado.

  4. Si su dispositivo USB funciona bien ahora, simplemente edite su script '/etc/rc.local' para que ejecute ese comando cada vez que se inicie el sistema. De esta forma, la solución será permanente . Edite el archivo, por ejemplo con nano:

    sudo nano /etc/rc.local
    
  5. y ponga el echo -1comando en su archivo '/etc/rc.local' antes de la exit 0línea, una vez más, no olvide cambiar el número de puerto n-nen el 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. Reinicia tu computadora

.

Importante: no olvide que tendrá que ejecutar el sudo sh -ccomando "temporal" de nuevo manualmente si desconecta / vuelve a conectar su dispositivo USB mientras su entorno de escritorio ya está iniciado, incluso si lo vuelve a enchufar en el mismo enchufe USB. Normal, solo porque el archivo '/etc/rc.local' se llama solo una vez al inicio del sistema.

De todos modos, las soluciones son posibles. Las personas mejor capacitadas pueden tener métodos más inteligentes, pero he configurado alias específicos de puerto en Ubuntu. Me permite usar los comandos simples usb1o usb2selectivamente si tengo que desconectar / volver a conectar mi dispositivo USB aquí o allá. ¡Igualmente! También puede crear alias de comandos para jugar con palabras cortas en lugar de escribir el comando completo. Es fácil de configurar en menos de dos minutos y también funciona con Alt+ F2:)

Más ideas para hacerlo más fácil también serían bienvenidas.

Fenix
fuente
gracias por esta respuesta Desafortunadamente, no puedo probar para confirmar que esta es la respuesta. Por lo tanto, no estoy seguro de si debo marcar como respuesta.
klequis
Lo intenté y no ayudó en Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo
1

Tuve exactamente el mismo problema (teclado Kinesis, dejé de funcionar después de un reinicio).

Eventualmente descubrí que estaba relacionado con una actualización del kernel

  • antes del reinicio estaba en la versión 4.4.0-31-generic
  • después del reinicio fue 4.4.0-38-generic

Arrancar usando el kernel 4.4.0-31 anterior me solucionó el problema.

Esta publicación incluye instrucciones sobre cómo iniciar usando un kernel anterior (lo que le permite ver si el kernel anterior hace el truco por usted).

jeroend
fuente
es muy probable que mi máquina recién construida tuviera un kernel más nuevo que la máquina virtual que estaba usando. Sin embargo, mi problema no fue que el teclado dejó de funcionar después de reiniciar, funcionó bien hasta que ejecuté una macro, momento en el que se apagó. La mayor parte de mi uso de macros fue para claves de programación comunes. Ahora uso el editor Atom y sus accesos directos / auto-type (como lo llamen) hacen casi todo lo que necesito, así que estoy feliz con eso.
klequis
0

Si lo tiene laptop-mode-tools, es posible desactivar completamente la suspensión automática de USB cambiando:

AUTOSUSPEND_TIMEOUT=2

en

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

a

AUTOSUSPEND_TIMEOUT=-1

Tenga en cuenta que hay una opción comentada en este archivo

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

Puede intentar jugar con esta opción si desea ajustar su configuración de administración de energía.

NOTAS

  • usbcore se compila en el kernel.
  • usando systemd
  • Ubuntu 16.10
  • Linux kernel 4.8.0-41-generic # 44-Ubuntu
Antonio Medina
fuente
También he notado eso en:
Antonio Medina
No es una computadora portátil y he aprendido a vivir sin ella, pero gracias por su sugerencia.
Klele
Si las herramientas de modo portátil se están ejecutando o no tiene poco que ver con si el sistema es o no una computadora portátil. Mi siempre conectado al servidor de A / C de la pared lo estaba ejecutando, y configurar AUTOSUSPEND_TIMEOUT = -1 en el archivo /etc/laptop-mode/conf.d/runtime-pm.conf fue lo que finalmente me arregló, después de luchar con esto desde que actualicé a 16.04 desde 14.04.
Rezty Felty
0

Yo tuve el mísmo problema. Para mí, la solución era simple, mientras que la razón real se desconocía.

Ayer conecté un segundo mouse a mi PC. Todo funcionó bien. Hoy, cuando arranqué, el teclado no funcionaba en la pantalla de inicio de sesión o en el escritorio. Funcionó durante el arranque, por ejemplo, me metí en la BIOS.

El teclado comenzó a funcionar después de desconectar el nuevo mouse y volver a conectar todos los cables USB.

Ohto Nordberg
fuente
Podría ser el número total de dispositivos USB (un máximo de dos). Tengo un sistema así. Puede o no estar relacionado con el tipo de puerto USB, USB 2 frente a USB 3. Desafortunadamente, no tengo tantas opciones en el BIOS para intentar solucionarlo.
Peter Mortensen
0

He leído este y otros informes una y otra vez durante el año pasado, y al final simplemente dejé de usar el teclado que estaba causando problemas y cambié a un teclado inalámbrico.

Hasta que me di cuenta de que el problema comenzó en el momento en que construí una nueva PC, y podría ser un problema de energía. Así que compré un concentrador USB con alimentación para conectar el teclado. ¡Resolvió el problema! No fue un problema de software después de todo, pero aparentemente mi nueva computadora tiene salidas USB con poca potencia (o eso piensa mi teclado).

Podría valer la pena intentarlo si sufre interrupciones intermitentes del teclado como se describió anteriormente y nada en el lado del software ha funcionado. Un concentrador USB con alimentación no necesita ser costoso.

FvD
fuente
¿O estaba vigente un límite actual en el puerto USB? Por ejemplo, 100 mA .
Peter Mortensen
0

Esta no es la respuesta que estaba buscando, pero ... pasé dos días y muchas horas tratando de resolver este problema. Compré un concentrador PCIe USB 3.0 para ver si eso funcionaría, no funcionó.

Mi conclusión es que no vale la pena resolver este problema, y ​​hay mejores formas para el mismo fin.

Mi solución / solución consiste en confiar en la función de fragmentos de mi editor de texto. Significa que invertiré y confiaré más en un editor específico (probablemente sea Atom ), pero esto será aún mejor que lo que tenía con las macros de teclado, ya que los fragmentos son más fáciles de mantener que las macros de teclado.

Aprendí mucho sobre USB al restablecer el subsistema USB .

Klequis
fuente
Compré un Kinesis Advantage2 hace aproximadamente 3 meses. Solo usé el 10 años. Funciona bien. No tener el problema discutido en este tema.
klequis
Los fragmentos (plantillas de texto) son extremadamente útiles, pero no pueden controlar combinaciones de teclas, solo texto puro (?). Por ejemplo, Shift + Ctrl + Tab (para pasar a la siguiente pestaña a la izquierda en Firefox) no se puede poner en un fragmento
Peter Mortensen