¿Cómo puedo desactivar la suspensión automática de USB para un dispositivo específico?

18

Esto está relacionado con el problema discutido en El mouse inalámbrico se congela temporalmente (duerme) con la energía de la batería .

Resumen: el mouse se congela cuando funciona con batería, ya que se suspende automáticamente después de un cierto tiempo y necesita más tiempo para despertarse.

Desactivar la suspensión automática de USB para el receptor del mouse en PowerTOP es una solución temporal, pero no sobrevive al reinicio.

¿Cómo puedo desactivar permanentemente la suspensión automática de USB para un solo dispositivo específico ?

Se prefiere una solución que no implique la instalación de paquetes adicionales (después de todo, quiero deshabilitar algo), pero no es obligatorio. Quitar PowerTOP (que parece ser una solución para algunos) no es lo que quiero, me gusta PowerTOP ...

E instalar laptop-mode-toolspara deshabilitar la suspensión automática de USB por completo tampoco es lo que quiero, por lo tanto, la nueva pregunta.

Además: ¿afectará esto a la batería de mi computadora portátil? El receptor unificador Logitech para el mouse permanece conectado todo el tiempo, por lo que si eso evita que se produzca la suspensión automática para todos los dispositivos, eso probablemente sea malo.

black_puppydog
fuente

Respuestas:

25

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb

Encuentre la identificación de entrada del dispositivo USB, debería ser así 1234:5678.

Edite el archivo sudo vi /etc/default/tlpy agregue la ID de entrada de su dispositivo USB_BLACKLISTagregando la siguiente línea con la ID de entrada de su dispositivo de la siguiente manera:

USB_BLACKLIST="1234:5678"

Ubuntu 14.04 (Trusty Tahr)

Como se menciona aquí en hecticgeek.com , el truco consta de dos partes:

Utilizando lsusbpara determinar las ID de dispositivo de los dispositivos USB para los que desea desactivar la suspensión automática.

Y luego agregarlos a AUTOSUSPEND_USBID_BLACKLISTla /etc/laptop-mode/conf.d/runtime-pm.conf( usb-autosuspend.confarchivo de configuración hasta que Ubuntu 14.04) (los detalles están bien documentados en allí también).

dlukes
fuente
En realidad, mi mouse se perdió / fue robado poco después, por lo que no puedo probar esto. Pero a juzgar por el .confarchivo, este es exactamente el tipo de cosas que esperaba :)
black_puppydog
Parece que es AUTOSUSPEND_RUNTIME_DEVID_BLACKLISTahora (Ubuntu 17.04)
parte del
2
Portátiles de Ubuntu de Dell con Ubuntu 16.04 LTS han tlpinstalado en lugar de laptop-mode-tools, así que si quieres a los dispositivos USB de la lista negra de ser puesto en modo de suspensión automática de estos portátiles, ajuste el USB_BLACKLISTvalor en el archivo /etc/default/tlp- los cambios tienen lugar inmediatamente
Stuart Caie
Los HID ya están en la lista negra de tlp: / etc / default / tlp # Nota: los dispositivos de entrada (usbhid) se excluyen automáticamente (ver a continuación) # USB_BLACKLIST = "045e: 07a5"
Tom
La documentación de TLP menciona que es una administración de energía para computadoras portátiles (más específicamente ThinkPad). ¿Funciona para PC de escritorio?
Konrad Rudolph
7

Tuve un problema similar con las PC en un Avocent KVM , donde las herramientas de modo portátil no estaban instaladas (y no quería resolverlo de esa manera en ningún caso). En mi caso, la suspensión automática del KVM hizo que el teclado y el mouse se comportaran de manera errática (después de unos segundos de inactividad, suspenderían y perderían datos de entrada por un tiempo hasta que suficientes clics y sacudidas los despertaran).

Cuando ejecuté PowerTOP y desactivé la suspensión automática de USB para Avocent, PowerTOP me dijo que el comando para deshabilitarlo desde la línea de comando era:

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

El bit '3-10' será diferente en diferentes sistemas. No estoy seguro de cómo determinar eso aparte de ejecutar PowerTOP, pero probablemente haya alguna forma.

En cambio, utilicé una regla de udev para que coincida con la identificación del producto de mi dispositivo:

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"

Para obtener la información adecuada de udev, ejecuté:

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

En /etc/laptop-mode/conf.d/usb-autosuspend.confencontrarás:

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

Deberías cambiarlo a CONTROL_USB_AUTOSUSPEND="0".

Esto hará que cualquier dispositivo USB tenga automáticamente el valor "on" /sys/bus/usb/devices/"DEVICE ID"/power/control. Esto hará que el valor de los archivos de suspensión automática esté inactivo:

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

Las opciones de energía para un dispositivo USB están en /sys/bus/usb/devices/n-n/power. Desafortunadamente, lo que nn es para un dispositivo determinado requiere un poco de investigación, por lo que creo que esto será un obstáculo cuando se trata de tener un script que automáticamente

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

para desactivar la suspensión automática en ese dispositivo. La magia nn realmente aparece en la salida de

udevadm info --export-db

así que creo que udev será tu amigo aquí; algún tipo de secuencia de comandos udev introducida en un parámetro que identifica su mouse, luego ejecuta una secuencia de comandos que echos -1 en el archivo correspondiente.

Alex Dekker
fuente
44
¿Sobrevivirá esto a un reinicio? hacer eco en / sys parece no ser permanente, ¿no?
black_puppydog
2
Ponga el comando en su /etc/rc.local antes de la línea 'salir 0'
Bryce
4

Creé mi propia regla de udev :

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

En Ubuntu 16.04 LTS (Xenial Xerus), encontré una solución en /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

Originalmente se estableció 2para mí. 30 minutos es mucho más razonable.

Después del cambio, haga:

sudo service laptop-mode restart

Todavía no estoy seguro de cómo deshabilitarlo por completo, pero esto está bien para mí ahora.

Berto
fuente