Comment désactiver la suspension automatique USB pour un appareil spécifique?

18

Cela est lié au problème abordé dans La souris sans fil se bloque temporairement (veille) sur l'alimentation de la batterie .

Résumé: la souris se bloque lorsqu'elle fonctionne sur batterie car elle est suspendue automatiquement après un certain temps et a besoin de plus de temps pour se réveiller.

La désactivation de la suspension automatique USB pour le récepteur de la souris dans PowerTOP est une solution temporaire, mais elle ne survit pas à un redémarrage.

Comment désactiver définitivement la suspension automatique USB pour un seul appareil spécifique ?

Une solution qui n'implique pas l'installation de packages supplémentaires est préférable (après tout, je veux désactiver quelque chose), mais elle n'est pas requise. Supprimer PowerTOP (qui semble être une solution pour certains) n'est pas ce que je veux - j'aime PowerTOP ...

Et l'installation laptop-mode-toolspour désactiver la suspension automatique USB n'est pas non plus ce que je veux, donc la nouvelle question.

Aussi: cela affectera-t-il la batterie de mon ordinateur portable? Le récepteur unificateur Logitech pour la souris reste connecté en permanence, donc si cela empêche la suspension automatique de se produire pour tous les appareils, ce serait probablement mauvais.

black_puppydog
la source

Réponses:

25

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb

Trouvez l'ID d'entrée du périphérique USB - il devrait ressembler 1234:5678.

Modifiez le fichier sudo vi /etc/default/tlpet ajoutez l'ID d'entrée de votre appareil USB_BLACKLISTen ajoutant la ligne suivante avec l'ID d'entrée de votre appareil comme ceci:

USB_BLACKLIST="1234:5678"

Ubuntu 14.04 (Trusty Tahr)

Comme mentionné ici sur hecticgeek.com , l'astuce se compose de deux parties:

Utilisez lsusbpour vérifier les ID de périphérique des périphériques USB pour lesquels vous souhaitez désactiver la suspension automatique.

Et puis en les ajoutant AUTOSUSPEND_USBID_BLACKLISTdans le fichier de configuration /etc/laptop-mode/conf.d/runtime-pm.conf( usb-autosuspend.confjusqu'à Ubuntu 14.04) (les détails y sont également bien documentés).

dlukes
la source
En fait, ma souris s'est perdue / volée peu de temps après, donc je ne peux pas tester cela. Mais à en juger par le .conffichier, c'est exactement le genre de chose que j'espérais :)
black_puppydog
On dirait que c'est AUTOSUSPEND_RUNTIME_DEVID_BLACKLISTmaintenant (Ubuntu 17.04)
partofthething
2
Les ordinateurs portables Ubuntu de Dell avec Ubuntu 16.04 LTS ont été tlpinstallés plutôt que laptop-mode-tools, donc si vous voulez mettre sur liste noire les périphériques USB pour qu'ils ne soient pas mis en mode de suspension automatique sur ces ordinateurs portables, définissez le USB_BLACKLISTparamètre dans le fichier /etc/default/tlp- les changements ont lieu immédiatement
Stuart Caie
Les HID sont déjà sur liste noire depuis tlp: / etc / default / tlp # Remarque: les périphériques d'entrée (usbhid) sont automatiquement exclus (voir ci-dessous) # USB_BLACKLIST = "045e: 07a5"
Tom
La documentation TLP mentionne qu'il s'agit d'une gestion de l'alimentation pour les ordinateurs portables (plus spécifiquement ThinkPad). Cela fonctionne-t-il pour les PC de bureau?
Konrad Rudolph
7

J'ai eu un problème similaire avec des PC sur un KVM Avocent , où les outils en mode ordinateur portable n'étaient pas installés (et je ne voulais pas le résoudre de toute façon). Dans mon cas, la suspension automatique du KVM faisait que le clavier et la souris se comportaient de manière irrégulière (après quelques secondes d'inactivité, ils suspendaient et perdaient les données d'entrée pendant un certain temps jusqu'à ce que suffisamment de clics et de secousses les réveillent).

Lorsque j'ai exécuté PowerTOP et désactivé la suspension automatique USB pour l'Avocent, PowerTOP m'a dit que la commande pour le désactiver à partir de la ligne de commande était:

echo 'on' > '/sys/bus/usb/devices/3-10/power/control'

Le bit «3-10» sera différent sur différents systèmes. Je ne sais pas comment déterminer cela autre que l'exécution de PowerTOP, mais il y a probablement un moyen.

Au lieu de cela, j'ai utilisé une règle udev pour faire correspondre l'ID produit de mon appareil:

trent + 14.04: /etc/udev/rules.d$ cat 10-usb-avocent-kvm-pm.rules

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0624", ATTR{idProduct}=="0013", ATTR{product}=="SC Secure KVM", TEST=="power/control", ATTR{power/control}:="on"

Pour obtenir les informations udev appropriées, j'ai exécuté:

udevadm info -a --path /sys/bus/usb/devices/N-N
Bryce
la source
6

En /etc/laptop-mode/conf.d/usb-autosuspend.confvous trouverez:

# Enable USB autosuspend feature?
# Set to 0 to disable
CONTROL_USB_AUTOSUSPEND="auto"

Vous devez le changer en CONTROL_USB_AUTOSUSPEND="0".

Ainsi, tout périphérique USB aura automatiquement la valeur "on" dans /sys/bus/usb/devices/"DEVICE ID"/power/control. Cela rendra la valeur des fichiers de suspension automatique inactive:

$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend
2
$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms
2000
Mahmoud Mubarak
la source
5

Les options d'alimentation pour un périphérique USB sont disponibles /sys/bus/usb/devices/n-n/power. Malheureusement, ce que nn est pour un appareil donné demande un peu de recherche, donc je pense que cela s'avérera une pierre d'achoppement quand il s'agit d'avoir un script qui le fait automatiquement

echo -1 > /sys/bus/usb/devices/3-2/power/autosuspend

pour désactiver la suspension automatique sur cet appareil. La magie nn apparaît réellement dans la sortie de

udevadm info --export-db

donc je pense que udev sera votre ami ici; une sorte de script udev tapé sur un paramètre qui identifie votre souris, puis exécute un script qui renvoie -1 dans le fichier correspondant.

Alex Dekker
la source
4
Est-ce que cela survivra à un redémarrage? l'écho dans / sys ne semble pas permanent, n'est-ce pas?
black_puppydog
2
Mettez la commande dans votre /etc/rc.local avant la ligne 'exit 0'
Bryce
4

J'ai créé ma propre règle udev :

ACTION=="add", ATTR{idVendor}=="0cf3", ATTR{idProduct}=="3004", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"
trey
la source
2

Dans Ubuntu 16.04 LTS (Xenial Xerus), j'ai trouvé une solution dans /etc/laptop-mode/conf.d/runtime-pm.conf:

# Auto-Suspend timeout in seconds
# Number of seconds after which the USB devices should suspend
AUTOSUSPEND_TIMEOUT=1800

Il a été initialement prévu 2pour moi. 30 minutes est beaucoup plus raisonnable.

Après le changement, faites:

sudo service laptop-mode restart

Je ne sais toujours pas comment le désactiver complètement, mais cela me convient maintenant.

Berto
la source