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=-1
Paramè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
rules
fichier 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 cat
commande:
$ 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 -1
commande que j'ai vue ici et là, -1
destiné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 -1
commande 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
Ouvrez Terminal et exécutez:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
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.
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
et placez la echo -1
commande dans votre fichier '/etc/rc.local' avant la exit 0
ligne
#!/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
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
Les options d'alimentation d'un périphérique USB sont disponibles /sys/bus/usb/devices/n-n/power
. Ce qui n-n
est 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 dmesg
commande
Reconnectez votre périphérique USB, puis exécutez à sudo dmesg
nouveau dans le terminal pour vérifier les modifications
Voici à quoi ressemble la fin de ma dmesg
sortie 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 ;)
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 dmesg
résultat:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Notez que cela autosuspend_delay_ms
a remplacé le obsolète autosuspend
depuis la version 2.6.38 du noyau, selon la documentation officielle de Linux .
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.
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
et mettez la echo -1
commande dans votre fichier '/etc/rc.local' avant la exit 0
ligne, 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
Redémarrez votre ordinateur
.
Important: n'oubliez pas que vous devrez réexécuter sudo sh -c
manuellement 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 usb1
ou usb2
sé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.