Como posso desativar a suspensão automática de USB para um dispositivo específico?

18

Isso está relacionado ao problema discutido em O mouse sem fio congela temporariamente (inativa) a energia da bateria .

Resumo: o mouse congela ao operar com a bateria, pois é suspenso automaticamente após um certo tempo e precisa de mais tempo para acordar.

Desativar a suspensão automática de USB para o receptor do mouse no PowerTOP é uma solução temporária, mas não sobrevive a uma reinicialização.

Como posso desativar permanentemente a suspensão automática de USB para apenas um dispositivo específico ?

Uma solução que não envolve a instalação de pacotes adicionais é preferida (afinal, quero desativar algo), mas não é necessária. Remover o PowerTOP (que parece ser uma solução para alguns) não é o que eu quero - eu gosto do PowerTOP ...

E instalar laptop-mode-toolspara desativar a suspensão automática de USB 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 aconteça em todos os dispositivos que provavelmente seriam ruins.

black_puppydog
fonte

Respostas:

25

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb

Encontre o ID de entrada do dispositivo USB - ele deve se parecer 1234:5678.

Edite o arquivo sudo vi /etc/default/tlpe adicione o ID de entrada do seu dispositivo USB_BLACKLISTadicionando a seguinte linha com o ID de entrada do seu dispositivo, da seguinte maneira:

USB_BLACKLIST="1234:5678"

Ubuntu 14.04 (Trusty Tahr)

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

Usando lsusbpara verificar as IDs dos dispositivos USB para os quais você deseja desativar a suspensão automática.

E, em seguida, adicioná-los para AUTOSUSPEND_USBID_BLACKLISTno /etc/laptop-mode/conf.d/runtime-pm.conf( usb-autosuspend.confarquivo de configuração até Ubuntu 14.04) (detalhes estão bem documentados na lá também).

dlukes
fonte
Na verdade, meu mouse foi perdido / roubado logo depois, então não posso testar isso. Mas a julgar pelo .confarquivo este é exatamente o tipo de coisa que eu estava esperando :)
black_puppydog
Parece que AUTOSUSPEND_RUNTIME_DEVID_BLACKLISTagora (Ubuntu 17.04)
partofthething
2
Laptops Ubuntu da Dell com Ubuntu 16.04 LTS ter tlpinstalado em vez de laptop-mode-tools, por isso, se você quiser dispositivos USB lista negra de ser colocado em modo de suspensão automática sobre esses laptops, definir a USB_BLACKLISTconfiguração no arquivo /etc/default/tlp- as alterações têm efeito imediato
Stuart Caie
Os HIDs já estão na lista negra de tlp: / etc / default / tlp # Nota: os dispositivos de entrada (usbhid) são excluídos automaticamente (veja abaixo) # USB_BLACKLIST = "045e: 07a5"
Tom
A documentação do TLP menciona que é um gerenciamento de energia para laptops (mais especificamente o ThinkPad). Funciona para PCs de mesa?
Konrad Rudolph
7

Eu tive um problema semelhante com os PCs em um Avocent KVM , onde as ferramentas do modo laptop não estavam instaladas (e não queriam resolvê-lo dessa maneira em nenhum caso). No meu caso, a suspensão automática do KVM fez com que o teclado e o mouse se comportassem de maneira incorreta (após alguns segundos inativos, eles suspenderiam e perderiam os dados de entrada por um tempo até que cliques e abalos o acordassem).

Quando executei o PowerTOP e alternei a suspensão automática do USB para o Avocent, o 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 diferentes sistemas. Não tenho certeza de como determinar isso além de executar o PowerTOP, mas provavelmente há alguma maneira.

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 corretas sobre o udev, executei:

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

Em /etc/laptop-mode/conf.d/usb-autosuspend.confvocê encontrará:

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

Você deve mudar para CONTROL_USB_AUTOSUSPEND="0".

Isso fará automaticamente com que qualquer dispositivo USB tenha o valor "ativado" /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
Mahmoud Mubarak
fonte
5

As opções de energia para um dispositivo USB estão em /sys/bus/usb/devices/n-n/power. Infelizmente, o que nn é para um determinado dispositivo leva algum tempo para descobrir, então acho que isso será um obstáculo quando se trata de ter um script que faça automaticamente

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

para desativar a suspensão automática nesse dispositivo. O nn mágico realmente aparece na saída de

udevadm info --export-db

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

Alex Dekker
fonte
4
Isso sobreviverá a uma reinicialização? ecoar em / sys parece não permanente, não é?
black_puppydog
2
Coloque o comando no seu /etc/rc.local antes da linha 'exit 0'
Bryce
4

Eu criei minha própria regra do udev :

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

No Ubuntu 16.04 LTS (Xenial Xerus), 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 2para mim. 30 minutos é muito mais razoável.

Após a alteração, faça:

sudo service laptop-mode restart

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

Berto
fonte