Como posso desativar usb-autosuspend para um dispositivo específico?

13

Isso está relacionado ao problema discutido em esta pergunta . Resumo: o mouse congela ao operar com bateria, pois é autosuspendido depois de um certo tempo e precisa de mais tempo para acordar. Desativar usb-autosuspend para o receptor do mouse em powertop é uma solução temporária, mas não sobrevive a uma reinicialização.

Como posso desativar permanentemente a suspensão automática do usb somente para um dispositivo específico ?

Uma solução que não envolve a instalação de pacotes adicionais é preferida (afinal, eu quero desabilitar algo), mas não é obrigatório. Removendo powertop (que parece ser uma solução para alguns) não é o que eu quero - eu gosto poertop ... E instalar laptop-mode-tools para desativar o usb_autosuspend alltogether não é o que eu quero, portanto, a nova pergunta.

Além disso, isso afetará a bateria do meu notebook? O receptor unificador da Logitech para o mouse permanece conectado o tempo todo, portanto, se isso impedir que a suspensão automática ocorra em todos os dispositivos, isso provavelmente seria ruim.

    
por black_puppydog 07.09.2012 / 23:35

6 respostas

16

Ubuntu 16.04

sudo apt install tlp
sudo lsusb

Encontre o ID de entrada do dispositivo usb - deve parecer com 1234:5678

Edite o arquivo sudo vi /etc/default/tlp e adicione o ID de entrada do seu dispositivo a USB_BLACKLIST adicionando a seguinte linha ao ID de entrada do seu dispositivo da seguinte forma:

USB_BLACKLIST="1234:5678"

Ubuntu 14.04

Como mencionado aqui em hecticgeek.com , o truque consiste em duas partes:

Usando lsusb para verificar os IDs de dispositivos dos dispositivos USB nos quais você deseja desabilitar a suspensão automática.
E, em seguida, adicionando-os a AUTOSUSPEND_USBID_BLACKLIST no arquivo de configuração /etc/laptop-mode/conf.d/runtime-pm.conf ( usb-autosuspend.conf until Ubuntu 14.04) (os detalhes também estão bem documentados).

    
por dlukes 03.11.2013 / 12:04
5

Você encontrará em /etc/laptop-mode/conf.d/usb-autosuspend.conf :

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

Você deve alterá-lo para CONTROL_USB_AUTOSUSPEND="0"

Isso fará com que qualquer dispositivo USB tenha um valor "on" em /sys/bus/usb/devices/"DEVICE ID"/power/control . Isso tornará o valor dos arquivos de suspensão automática inativos:

$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend
2
$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms
2000
    
por Mahmoud Mubarak 03.02.2015 / 23:27
5

Eu tive um problema semelhante com os PCs em um KVM da Avocent, onde as ferramentas do modo laptop não estão instaladas (e não quis resolvê-lo dessa maneira em qualquer caso). No meu caso, o KVM fazia o teclado e o mouse comportarem-se erraticamente (depois de alguns segundos ociosos, eles suspendiam e perdiam dados de entrada por algum tempo até que cliques e vibrações suficientes os despertassem).

Quando eu executei o powertop e alternei o autosuspendido do USB para o Avocent, o comando powertop me disse que o comando para desativá-lo na linha de comando era:

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

O bit '3-10' será diferente em sistemas diferentes. Não tenho certeza de como determinar isso além de executar o powertop, mas provavelmente há algum jeito.

Em vez disso, usei uma regra do udev para corresponder ao ID do produto do meu 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 obter as informações adequadas do udev, eu corri:

udevadm info -a --path /sys/bus/usb/devices/N-N
    
por Bryce 19.09.2014 / 10:00
3

As opções de energia para um dispositivo USB estão em /sys/bus/usb/devices/n-n/power . Infelizmente, o que o n-n é para um determinado dispositivo requer alguma investigação, então acho que isso será um obstáculo quando se trata de ter um script que faz automaticamente

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

para desativar a suspensão automática nesse dispositivo. A magia n-n realmente aparece na saída de

udevadm info --export-db

então eu acho que o udev será seu amigo aqui; algum tipo de script do udev digitado em um parâmetro que identifica seu mouse e, em seguida, executa um script que echos -1 no arquivo relevante.

    
por Alex Dekker 16.09.2012 / 12:34
3

Eu criei minha própria regra do udev: ACTION == "add", ATTR {idVendor} == "0cf3", ATTR {idProduct} == "3004", RUN="/ bin / sh -c 'echo 0 > / sys / \ $ devpath / autorizado' "

    
por trey 22.03.2016 / 08:42
1

No Ubuntu 16.04LTS, encontrei uma solução em /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

Foi originalmente definido para 2 para mim. 30 minutos é muito mais razoável.

sudo service laptop-mode restart

Ainda não tenho certeza de como desabilitá-lo totalmente, mas isso é bom para mim agora.

    
por Berto 07.09.2016 / 20:57