web-dev-qa-db-fra.com

Le clavier cesse de fonctionner Ubuntu 16.04

Mon clavier cesse de fonctionner 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 ne fonctionnant plus de manière aléatoire. Ils indiquent qu'il est automatique d'éteindre les périphériques USB pour économiser de l'énergie. Lorsque le périphérique USB n'est pas compatible dans certains cas, le périphérique USB ne se "réveille" pas comme il se doit.

J'ai essayé la suggestion postée dans ce lien

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

Voici quelques détails

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

Problème machine

  • Dell XPS, 6 ans, ordinateur de bureau
  • Ubuntu 16.04 installé hier
  • Utilisation du clavier USB Kinesis Advantage
  • Débrancher/rebrancher le clavier a fonctionné 9 fois sur 10
  • Le redémarrage fonctionne aussi bien
  • Je ne pense pas que ce soit un problème d’alimentation USB, car un voyant du clavier reste allumé et les autres périphériques USB continuent de fonctionner.
  • J'ai 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é aux non-utilisateurs de Kinesis qui doivent utiliser mon ordinateur. Plus tôt aujourd'hui, ce clavier a cessé de fonctionner à chaque fois que le Kinesis a cessé de fonctionner. Cependant, le clavier Dell continue de fonctionner, ce qui déclenche le problème avec une macro.

La Kinesis, que je possède depuis 8 ans, m’a permis de continuer à taper au clavier. Si je ne peux pas résoudre ce problème, je devrai retourner à Windoze, ce qui serait vraiment décevant.

Toutes les suggestions sur les choses à essayer ou les façons de procéder pour le débogage sont grandement appréciées.

Edit: Je fouille dans les pilotes USB, dont je ne connais rien sous Linux. Cependant, j'ai constaté que l'ordinateur portable possède à la fois des ports USB 2.0 et 3.0. Le bureau (avec le problème) est uniquement USB 2.0. Encore en train de creuser ...

15
klequis

J'ai eu le même problème avec Xenial 16.04 et j'ai tellement cherché une solution ... C'était très ennuyant de déplacer mon curseur de souris en permanence juste pour réveiller le périphérique. J'étais sur le chemin d'abandonner et de faire une nouvelle installation ou de changer de distro, près de la crise nerveuse lol. Mais j'ai finalement trouvé la seule solution à mon problème, et elle semble être exactement la même que la vôtre, klequis.

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

.

LE CONTEXTE

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

  • Paramètre du noyau usbcore.autosuspend=-1 du noyau '/ etc/default/grub'
  • 'runtime-pm.conf' du mode portable 'CONTROL_RUNTIME_AUTOSUSPEND=0
  • désactivation complète des outils en mode 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 courait plus pour être sûr. (ref: 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 , on le soupçonne souvent dans les forums de causer des problèmes avec autosuspend. Aujourd'hui, je sais que ce n'était pas vrai dans mon cas car sa désinstallation ne résolvait rien.
  • options usbcore autosuspend=1 dans '/etc/modprobe.d/usb.conf' a également été inefficace
  • Le script '/etc/udev/rules.d/60-power.rules' fourni par Wiki officiel de Gentoo
  • fichier rules 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, je ne comprenais que la cause était liée à ma valeur '/ sys/module/usbcore/parameters/autosuspend' bloquée à 2 secondes quel que soit le changement apporté à ma config. Vous pouvez le vérifier avec la commande cat:

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

Et oui, ma souris a été désactivée exactement au bout de 2 secondes, alors je savais que j'étais sur le bon chemin. Bien sûr, j'avais testé la commande echo -1 que j'ai vue ici et là, -1 destinée à désactiver l'autosuspend ... mais:

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

Je ne comprenais pas pourquoi la permission é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 à commentaires de Alex Dekker & Bryce, j'ai appris à désactiver autosuspend seulement pour ma souris. Mais bien sûr, mes premiers essais ont échoué avec ce bash: Permission denied error, donc j’ai dû attendre pour comprendre ma confusion racine/Sudo avant que la commande echo -1 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 l'utilisation des commandes root et de Shell est bien expliquée dans le document officiel Ubuntu page du wiki RootSudo . J'aime apprendre ce genre de choses mais hé! pourquoi faut-il toujours apprendre de manière pénible? lol

OMG, c’était un vrai mal de tête et il a fallu beaucoup de temps à un bonhomme comme moi pour comprendre, comme je le 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 2ème solution pour votre disque dur externe inactif de ne pas vider la batterie de votre ordinateur portable pour rien. Mais je vous donne les deux solutions parce que celui qui aime sa propre liberté doit s’aimer aussi la liberté des autres :)

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. C’est effectivement une solution temporaire qui vous permet de tester instantanément si cette commande corrige le problème de suspension automatique de la souris ou du clavier.
  3. Si votre (vos) périphérique (s) USB fonctionne correctement maintenant, éditez simplement votre script '/etc/rc.local' afin qu'il exécute cette commande à chaque démarrage du système. De cette façon, vous ferez le type de correctif de permanent . Editez le fichier, par exemple avec nano:

    Sudo nano /etc/rc.local
    
  4. et placez la commande echo -1 dans votre fichier '/etc/rc.local' avant la ligne 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. Redémarrez votre ordinateur

(veuillez vérifier la note Important à la fin)

.

SOLUTION 2

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

  1. Les options d'alimentation pour un périphérique USB sont dans /sys/bus/usb/devices/n-n/power. Ce que n-n représente pour un périphérique donné nécessite quelques manipulations à 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. Adaptez-le donc à votre propre situation:

    • Débranchez votre périphérique USB, ouvrez Terminal et exécutez la commande Sudo dmesg

    • Reconnectez votre périphérique USB, puis exécutez à nouveau Sudo dmesg dans Terminal pour vérifier les modifications.

    • Voici à quoi ressemble la fin de la sortie de ma commande dmesg après avoir rebranché ma souris dans un emplacement:

      [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
      

      Nous pouvons maintenant voir que le port sur lequel mon périphérique USB a été branché est identifié par usb 3-1.

      Remarque: cette astuce concerne l'ID du port USB, pas un ID de périphérique. Par exemple, si je connecte la souris au port USB suivant, elle devient identifiée par usb 3-2 dans dmesg result. Mais cette solution n ° 2 reste très utile si vous prenez l’habitude de toujours brancher votre souris ou votre clavier sur le même port, et c’est généralement ce que les gens font inconsciemment;)

  2. Exécutez la commande suivante dans votre terminal, en changeant mon numéro de port 3-1 avec celui que vous avez trouvé dans votre propre résultat dmesg:

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

    Notez que autosuspend_delay_ms a remplacé le obsolète autosuspend depuis la version 2.6.38 du noyau, conformément à la Documentation officielle de Linux .

  3. Il s’agit bien d’une solution temporaire mais vous pouvez maintenant facilement vérifier si cette commande corrige le problème de suspension automatique du clavier ou de la souris.

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

    Sudo nano /etc/rc.local
    
  5. et placez la commande echo -1 dans votre fichier '/etc/rc.local' avant la ligne exit 0, encore une fois, n'oubliez pas de changer le numéro de port n-n dans 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 qu'il vous faudra exécuter à nouveau manuellement la commande Sudo sh -c "temporaire" si vous déconnectez/reconnectez votre périphérique USB pendant que votre ordinateur de bureau L’environnement est déjà lancé, même si vous le rebranchez sur le même connecteur USB. Normal, simplement parce que le fichier '/etc/rc.local' est appelé une seule fois au démarrage du système.

Quoi qu'il en soit, des solutions de contournement sont possibles. Les personnes mieux qualifiées ont peut-être des méthodes plus intelligentes, mais j'ai configuré des alias spécifiques à un port dans Ubuntu. Cela me permet d’utiliser les commandes simples usb1 ou usb2 de manière sélective si je dois débrancher/rebrancher mon périphérique USB ici ou là. Vous aussi! vous pouvez aussi créer un alias de commandes pour jouer avec des mots courts au lieu de taper la commande complète, il est facile de le définir en moins de 2 minutes et fonctionne également avec Alt + F2 :)

D'autres idées pour faciliter les choses seraient également les bienvenues.

À votre santé :)

5
Fenyx

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

J'ai finalement compris que cela é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 4.4.0-38-generic

Démarrer avec l’ancien noyau 4.4.0-31 a corrigé le problème pour moi.

Cet article inclut 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).

1
jeroend

J'ai lu ceci et d'autres rapports maintes et maintes fois au cours de la dernière année et, à la fin, j'ai simplement abandonné l'utilisation du clavier qui posait problème et opté pour un clavier sans fil.

Jusqu'à ce que je sache, le problème a commencé à peu près au moment où j'ai construit un nouveau PC et il pourrait s'agir d'un problème d'alimentation. J'ai donc acheté un concentrateur USB alimenté pour connecter le clavier. Cela a résolu le problème! Après tout, ce n’était pas un problème de logiciel, mais apparemment, mon nouvel ordinateur est doté de sorties USB sous-alimentées (du moins, selon mon clavier).

Cela vaut peut-être la peine d'essayer si vous souffrez de pannes de clavier intermittentes 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.

0
FvD

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

Hier, j'ai branché une deuxième souris sur mon ordinateur. Tout a bien fonctionné. 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 fils USB.

0
Ohto Nordberg

Si vous avez laptop-mode-tools, il 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-generic # 44-Ubuntu
0
Antonio Medina

Ce n'est pas la réponse que je cherchais mais ... j'ai passé 2 jours/plusieurs heures à essayer de résoudre ce problème. J'ai acheté un hub USB 3.0 PCIe pour voir si cela fonctionnerait - ce n'est pas le cas.

Ma conclusion est que ce problème ne mérite pas d'être résolu et qu'il existe de meilleurs moyens d'atteindre le même but.

Ma solution/solution consiste à utiliser la fonction d'extraits de mon éditeur de texte. Cela signifie que j'investirai et que je m'appuierai davantage sur un éditeur spécifique (ce sera probablement Atom), mais ce sera encore mieux que ce que j'avais avec les macros du clavier, car les extraits sont plus faciles à gérer que les macros du clavier.

J'ai beaucoup appris sur l'USB de cet article .

0
klequis