Le clavier cesse de fonctionner sur Ubuntu 16.04 (Xenial Xerus)

17

Mon clavier ne fonctionne plus sans raison apparente.

Après avoir utilisé Ubuntu pendant 2,5 ans en tant que machine virtuelle sur un hôte Windows ( VirtualBox ), j'ai finalement franchi le pas, reformaté mon disque dur et construit le système avec Ubuntu hier. Ce matin, mon clavier a cessé de fonctionner.

Je vois de nombreux articles sur Ubuntu et un clavier ou une souris USB cessant de fonctionner de manière aléatoire. Ils indiquent qu'il est automatiquement suspendu de couper l'alimentation des périphériques USB pour économiser de l'énergie, et lorsque le périphérique USB n'est pas compatible avec certains, l'USB ne se "réveille" pas comme il se doit.

J'ai essayé la suggestion publiée dans Fixing USB Autosuspend .

Mais pas de chance. J'ai également essayé une autre suggestion qui était de démarrer sans le clavier, puis de le brancher une fois Ubuntu démarré.

Voici quelques détails:

  • J'ai utilisé le même clavier Kinesis avec Ubuntu comme machine virtuelle au cours des deux dernières années, aucun problème.
  • Le Kinesis a des macros et le déclenchement d'une macro déclenche le problème 100% du temps. Cependant, cela arrive aussi lorsque je tape juste (pas de macros).
  • J'ai essayé le Kinesis sur un ordinateur portable tout à l'heure. Il s'agit d'une machine d'un an sur laquelle j'ai mis Ubuntu 16.04 il y a deux semaines. L'utilisation d'une macro clavier Kinesis n'a pas reproduit le problème.

Machine à problème

  • Dell XPS, 6 ans, ordinateur de bureau
  • Installé Ubuntu 16.04 hier
  • Utilisation du clavier USB Kinesis Advantage
  • Débrancher / rebrancher le clavier a fonctionné 9 fois sur 10
  • Le redémarrage fonctionne également
  • Je ne pense pas que ce soit un problème d'alimentation USB car une LED sur le clavier reste allumée et d'autres périphériques USB continuent de fonctionner.
  • J'ai à la fois une souris USB et une souris Bluetooth connectées à la machine. Les deux continuent de fonctionner même lorsque le Kinesis s'arrête.
  • J'ai normalement un deuxième clavier standard de marque Dell branché pour les personnes non-Kinesis qui ont besoin d'utiliser mon ordinateur. Plus tôt aujourd'hui, ce clavier a cessé de fonctionner à chaque fois que le Kinesis a cessé de fonctionner. Cependant maintenant, déclenchant le problème avec une macro, le clavier Dell continue de fonctionner.

Le Kinesis, que j'ai depuis 8 ans maintenant, m'a permis de continuer à taper. Si je ne peux pas résoudre ce problème, je devrai revenir à Windows, ce qui serait vraiment dommage.

Toute suggestion sur les choses à essayer ou les moyens de déboguer cela serait grandement appréciée.

Je suis en train de creuser dans les pilotes USB, dont je ne connais rien sur Linux. Cependant, j'ai trouvé que l'ordinateur portable avait à la fois des ports USB 2.0 et 3.0. Le bureau (avec le problème) est uniquement USB 2.0. Toujours en train de creuser ...

klequis
la source
J'ai utilisé le même clavier Kinesis avec Ubuntu comme machine virtuelle au cours des 2 dernières années, aucun problème. Avez-vous réellement remis le clavier à la machine virtuelle? Sinon, il passait par les pilotes du système d'exploitation hôte et de VirtualBox.
Melebius
Pendant 3 ans, j'ai utilisé Ubuntu comme machine virtuelle avec un hôte Windows et je n'ai eu aucun problème avec le clavier. Maintenant que l'hôte est Ubuntu GNOME et l'invité est Ubuntu GNOME également, j'ai ce problème.
klequis
Ensuite, vous n'utilisiez pas votre clavier physique dans le système d'exploitation invité. Virtualbox présente un clavier virtuel au système d'exploitation invité par défaut. (donc ce n'est pas grave si vous avez utilisé le même clavier physique, car ce n'était pas le même)
karatedog
Voir cette question similaire: askubuntu.com/questions/688445/laptop-keyboard-stopped-working L' installation du package a xserver-xorg-input-allfonctionné pour moi lors de ma mise à niveau versUbuntu 17.04
Lilás

Réponses:

7

J'ai eu le même problème avec Ubuntu 16.04 (Xenial Xerus) et j'ai tellement cherché de solution ...

La solution se trouve à la fin de cette réponse si vous ne vous souciez pas de l'histoire du contexte. Le contexte pourrait ressembler à un blabla inutile (peut-être qu'il l'est), mais je pense que cela pourrait aider les lecteurs à vérifier si le problème que j'ai résolu sur mon PC est le même que le leur.

LE CONTEXTE

J'ai désespérément testé sans succès près de tous les conseils que j'ai trouvés sur le Web, en redémarrant après chaque essai:

  • usbcore.autosuspend=-1Paramètre de démarrage du noyau '/ etc / default / grub'
  • 'runtime-pm.conf' du mode ordinateur portable CONTROL_RUNTIME_AUTOSUSPEND=0
  • désactivation complète des outils du mode ordinateur portable du fichier '/etc/laptop-mode/laptop-mode.conf', confirmant que le problème n'est pas lié à cette fonctionnalité du noyau. J'ai vérifié de différentes manières que laptop_mode ne fonctionnait plus pour être sûr. (Réf: man laptop-mode.conf& man laptop_mode)
  • J'ai lu quelques astuces sur '/etc/laptop-mode/conf.d/usb-autosuspend.conf', mais ce fichier n'existe pas dans ma version d'Ubuntu 16.04 avec laptop-mode-tools v1.68
  • désinstallation de l'application powertop . Il est souvent suspecté dans les forums de causer des problèmes de suspension automatique, et aujourd'hui je sais que ce n'était pas vrai dans mon cas, car sa désinstallation n'a rien résolu.
  • options usbcore autosuspend=1 dans '/etc/modprobe.d/usb.conf' a également été inefficace
  • Script '/etc/udev/rules.d/60-power.rules' fourni par le wiki officiel de Gentoo
  • rulesfichier spécifique à l'appareil pour udev'/etc/udev/rules.d/usb-power.rules' recommandé par Serge Y. Stroobandt

Après avoir lu toutes ces informations techniques, j'ai seulement compris que la cause était liée à ma valeur '/ sys / module / usbcore / parameters / autosuspend' bloquée à deux secondes, quel que soit le changement que j'apporte à ma configuration. Vous pouvez le vérifier avec la catcommande:

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

Et oui, ma souris a été désactivée exactement après deux secondes, donc je savais que j'étais sur la bonne voie. Bien sûr, j'avais testé la echo -1commande que j'ai vue ici et là, -1destinée à désactiver la suspension automatique ... mais:

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

Je ne comprenais pas pourquoi l'autorisation était refusée même en mode sudo. Je n'ai pas essayé en tant que root, car je ne pensais tout simplement pas que cela pouvait être un problème. Voici l'erreur :(

Grâce aux commentaires d' Alex Dekker et Bryce , j'ai appris à désactiver la suspension automatique uniquement pour ma souris. Mais bien sûr, mes premiers essais ont échoué bash: Permission denied error, j'ai donc dû attendre de comprendre ma confusion racine / sudo avant que la echo -1commande suggérée par Alex ne fonctionne enfin.

J'ai également trouvé un meilleur moyen d'exécuter une commande en tant qu'utilisateur root sans se connecter en tant que root. La différence entre le shell root et l'utilisation des commandes root est bien expliquée dans la page wiki RootSudo officielle d'Ubuntu . J'adore apprendre ce genre de choses, mais bon! Pourquoi faut-il toujours l'apprendre de manière douloureuse? LOL

OMG, c'était un vrai casse-tête, et il a fallu beaucoup de temps à un noob comme moi pour comprendre, comme je dis habituellement "pas de cerveau, pas de gain". Le mien a visiblement besoin de plus de formation.

Alors arrêtons de parler de moi et allons le réparer! Veuillez continuer ci-dessous ...


Je recommande fortement la deuxième solution pour que votre disque dur externe inactif ne vide pas la batterie de votre ordinateur portable pour rien. Mais je vous donne les deux solutions, car qui aime sa propre liberté devrait aussi aimer la liberté de l'autre :)

SOLUTION 1

Pour désactiver la suspension automatique sur tous les périphériques / ports USB

  1. Ouvrez Terminal et exécutez:

    sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
    
  2. Il s'agit en effet d'une solution temporaire qui vous permet de tester instantanément si cette commande résout le problème de suspension automatique de votre souris ou de votre clavier.

  3. Si vos périphériques USB fonctionnent correctement maintenant, modifiez simplement votre script '/etc/rc.local' pour qu'il exécute cette commande à chaque démarrage du système. De cette façon, vous rendrez le correctif permanent . Modifiez le fichier, par exemple avec nano:

    sudo nano /etc/rc.local
    
  4. et placez la echo -1commande dans votre fichier '/etc/rc.local' avant la exit 0ligne

    #!/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. Redémarrez votre ordinateur

(Veuillez vérifier la note importante à la fin.)

.

SOLUTION 2

Pour désactiver la suspension automatique pour un périphérique / port USB spécifique

  1. Les options d'alimentation d'un périphérique USB sont disponibles /sys/bus/usb/devices/n-n/power. Ce qui n-nest pour un appareil donné nécessite quelques manipulations pour le découvrir, mais ce n'est pas compliqué. L'exemple ci-dessous montre comment j'ai déterminé que le numéro de port USB de mon récepteur de souris sans fil est 3-1, alors veuillez l'adapter à votre propre situation:

    • Débranchez votre périphérique USB, ouvrez Terminal et exécutez la sudo dmesgcommande

    • Reconnectez votre périphérique USB, puis exécutez à sudo dmesgnouveau dans le terminal pour vérifier les modifications

    • Voici à quoi ressemble la fin de ma dmesgsortie de commande après avoir rebranché ma souris dans un 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
      

    Maintenant, nous pouvons voir que le port sur lequel mon périphérique USB a été branché est identifié comme 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. Exécutez la commande suivante dans votre terminal, en changeant mon numéro de port 3-1avec celui que vous avez trouvé dans votre propre dmesgrésultat:

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

    Notez que cela autosuspend_delay_msa remplacé le obsolète autosuspenddepuis la version 2.6.38 du noyau, selon la documentation officielle de Linux .

  3. Il s'agit en effet d'une solution temporaire , mais vous pouvez désormais facilement tester si cette commande a résolu le problème de suspension automatique de votre souris ou de votre clavier.

  4. Si votre périphérique USB fonctionne bien maintenant, modifiez simplement votre script '/etc/rc.local' pour qu'il exécute cette commande à chaque démarrage du système. De cette façon, vous rendrez le correctif permanent . Modifiez le fichier, par exemple avec nano:

    sudo nano /etc/rc.local
    
  5. et mettez la echo -1commande dans votre fichier '/etc/rc.local' avant la exit 0ligne, encore une fois n'oubliez pas de changer le numéro de port n-ndans la commande:

        #!/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. Redémarrez votre ordinateur

.

Important: n'oubliez pas que vous devrez réexécuter sudo sh -cmanuellement la commande "temporaire" si vous déconnectez / reconnectez votre périphérique USB alors que votre environnement de bureau est déjà démarré, même si vous le rebranchez sur la même prise USB. Normal, juste parce que le fichier '/etc/rc.local' n'est appelé qu'une seule fois au démarrage du système.

Quoi qu'il en soit, des solutions de contournement sont possibles. Les personnes plus compétentes peuvent avoir des méthodes plus intelligentes, mais j'ai configuré des alias spécifiques au port dans Ubuntu. Cela me permet d'utiliser les commandes simples usb1ou usb2sélectivement si je dois débrancher / rebrancher mon périphérique USB ici ou là. Vous aussi! Vous pouvez également créer des alias de commandes pour jouer avec des mots courts au lieu de taper la commande complète. Il est facile à régler en moins de deux minutes et fonctionne également avec Alt+ F2:)

Plus d'idées pour le faciliter seraient également les bienvenues.

Fenyx
la source
Merci pour cette réponse. Malheureusement, je ne peux pas tester pour confirmer que c'est la réponse. Par conséquent, je ne sais pas si je dois marquer comme réponse.
klequis
J'ai essayé et ça n'aide pas sur Ubuntu 16.0.4.2 VirtualBox 5.1.26
Pavlo
1

J'ai eu exactement le même problème (le clavier Kinesis a cessé de fonctionner après un redémarrage).

J'ai finalement compris que c'était lié à une mise à niveau du noyau

  • avant le redémarrage, j'étais sur la version 4.4.0-31-generic
  • après le redémarrage, il était générique 4.4.0-38

Le démarrage à l'aide de l'ancien noyau 4.4.0-31 a résolu le problème pour moi.

Ce message comprend des instructions sur la façon de démarrer en utilisant un noyau plus ancien (vous permettant de voir si le noyau plus ancien fait l'affaire pour vous).

jeroend
la source
il est très probable que ma machine fraîchement construite ait un noyau plus récent que la machine virtuelle que j'utilisais. Cependant, mon problème n'était pas que le clavier a cessé de fonctionner après le redémarrage, il a bien fonctionné jusqu'à ce que j'exécute une macro, auquel cas il s'est éteint. La majeure partie de mon utilisation des macros était pour les clés de programmation courantes. J'utilise maintenant l'éditeur Atom et ses raccourcis / type automatique (peu importe comment ils l'appellent) font la plupart de ce dont j'ai besoin, donc je suis en terre heureuse avec ça.
klequis
0

Si vous l'avez, laptop-mode-toolsil peut être possible de désactiver complètement la suspension automatique USB en modifiant:

AUTOSUSPEND_TIMEOUT=2

dans

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

à

AUTOSUSPEND_TIMEOUT=-1

Prenez note qu'il y a une option commentée dans ce fichier

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

Vous pouvez essayer de jouer avec cette option si vous souhaitez affiner vos paramètres de gestion de l'alimentation.

REMARQUES:

  • usbcore est compilé dans le noyau.
  • en utilisant systemd
  • Ubuntu 16.10
  • Noyau Linux 4.8.0-41-générique # 44-Ubuntu
Antonio Medina
la source
J'ai également noté que:
Antonio Medina
Pas un ordinateur portable et j'ai appris à vivre sans, mais merci pour votre suggestion.
klequis
Que les outils en mode ordinateur portable fonctionnent ou non n'a pas grand-chose à voir avec le fait que le système soit un ordinateur portable. Mon serveur A / C toujours branché sur le mur l'exécutait et la définition de AUTOSUSPEND_TIMEOUT = -1 dans le fichier /etc/laptop-mode/conf.d/runtime-pm.conf était ce qui l'a finalement résolu pour moi, après des difficultés avec cela depuis que j'ai mis à jour à 16.04 à partir de 14.04.
Rezty Felty
0

J'ai eu le même problème. Pour moi, la solution était simple, alors que la raison réelle restait inconnue.

Hier, j'ai branché une deuxième souris sur mon PC. Tout fonctionnait bien. Aujourd'hui, lorsque j'ai démarré, le clavier ne fonctionnait pas dans l'écran de connexion ou sur le bureau. Cela a fonctionné pendant le démarrage, par exemple, je suis entré dans le bios.

Le clavier a commencé à fonctionner après avoir débranché la nouvelle souris et rebranché tous les câbles USB.

Ohto Nordberg
la source
Il peut s'agir du nombre total de périphériques USB (deux au maximum). J'ai un tel système. Il peut ou non être lié au type de port USB, USB 2 vs USB 3. Malheureusement, je n'ai pas autant d'options dans le BIOS pour essayer de le contourner.
Peter Mortensen
0

J'ai lu ce rapport et d'autres encore et encore au cours de la dernière année, et à la fin j'ai simplement abandonné l'utilisation du clavier qui causait des problèmes et je suis passé à un clavier sans fil.

Jusqu'à ce que je sois frappé que le problème a commencé au moment où j'ai construit un nouveau PC, et cela pourrait être un problème d'alimentation. J'ai donc acheté un concentrateur USB alimenté pour connecter le clavier. Cela a résolu le problème! Ce n'était pas un problème logiciel après tout, mais apparemment, mon nouvel ordinateur a des sorties USB sous-alimentées (du moins c'est ce que pense mon clavier).

Cela pourrait valoir la peine d'essayer si vous souffrez de pannes intermittentes du clavier comme décrit ci-dessus et que rien du côté logiciel n'a fonctionné. Un concentrateur USB alimenté n'a pas besoin d'être coûteux.

FvD
la source
Ou une limite actuelle était en vigueur sur le port USB? Par exemple, 100 mA .
Peter Mortensen
0

Ce n'est pas la réponse que je cherchais mais ... J'ai passé deux jours et plusieurs heures à essayer de résoudre ce problème. J'ai acheté un concentrateur PCIe USB 3.0 pour voir si cela fonctionnerait - cela n'a pas fonctionné.

Ma conclusion est que ce problème ne vaut pas la peine d'être résolu et qu'il existe de meilleures façons d'y parvenir.

Ma solution / solution consiste à s'appuyer sur la fonction d'extraits de code de mon éditeur de texte. Cela signifie que je vais investir et me fier davantage à un éditeur spécifique (sera probablement Atom ), mais ce sera encore mieux que ce que j'avais avec les macros de clavier, car les extraits sont plus faciles à maintenir que les macros de clavier.

J'ai beaucoup appris sur l'USB grâce à la réinitialisation du sous-système USB .

klequis
la source
J'ai acheté un Kinesis Advantage2 il y a environ 3 mois. Je viens de porter celui de 10 ans. Ça fonctionne bien. Ne pas avoir le problème discuté dans ce numéro.
klequis
Les extraits de code (modèles de texte) sont extrêmement utiles, mais ils ne peuvent pas contrôler les combinaisons de touches, uniquement du texte pur (?). Par exemple Shift + Ctrl + Tab (pour passer à l'onglet suivant à gauche dans Firefox) ne peut pas être mis dans un extrait
Peter Mortensen