Как я могу отключить автоподвеску USB для конкретного устройства?

18

Это связано с проблемой, обсуждаемой в разделе Беспроводная мышь, временно замирает (спит) от батареи .

Резюме: мышь зависает при работе от батареи, так как она автоматически приостанавливается через определенное время и требует больше времени для пробуждения.

Отключение автоматической приостановки USB для приемника мыши в PowerTOP является временным решением, но оно не переживает перезагрузку.

Как я могу навсегда отключить автоподвеску USB только для одного конкретного устройства?

Решение, которое не включает установку дополнительных пакетов, является предпочтительным (в конце концов, я хочу что-то отключить ), но это не обязательно. Удаление PowerTOP (которое кажется некоторым решением) - это не то, чего я хочу - мне нравится PowerTOP ...

И установка laptop-mode-toolsдля отключения USB AutoSuspend совсем не то, что я хочу, поэтому новый вопрос.

Также: это повлияет на батарею моего ноутбука? Объединяющий приемник Logitech для мыши остается подключенным все время, поэтому, если это предотвращает автоматическую приостановку для всех устройств, которые, вероятно, будут плохими.

black_puppydog
источник

Ответы:

25

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb

Найти входной идентификатор USB - устройства - это должно выглядеть 1234:5678.

Отредактируйте файл sudo vi /etc/default/tlpи добавьте идентификатор входа вашего устройства, USB_BLACKLISTдобавив следующую строку с идентификатором ввода вашего устройства следующим образом:

USB_BLACKLIST="1234:5678"

Убунту 14.04 (Трасти Тар)

Как упомянуто здесь на hecticgeek.com , уловка состоит из двух частей:

Используется lsusbдля определения идентификаторов устройств USB-устройств, для которых вы хотите отключить автоподключение.

А затем добавьте их AUTOSUSPEND_USBID_BLACKLISTв /etc/laptop-mode/conf.d/runtime-pm.conf( usb-autosuspend.confдо Ubuntu 14.04) файл конфигурации (подробности также подробно описаны здесь).

dlukes
источник
На самом деле моя мышь была потеряна / украдена вскоре после этого, поэтому я не могу это проверить. Но, судя по .confфайлу, это именно то, на что я надеялся :)
black_puppydog
Похоже, что AUTOSUSPEND_RUNTIME_DEVID_BLACKLISTсейчас (Ubuntu 17.04)
partofthething
2
tlpВместо этого были установлены ноутбуки Dell Ubuntu с Ubuntu 16.04 LTS laptop-mode-tools, поэтому, если вы хотите занести в черный список USB-устройства, которые не были переведены в режим автоспуска на этих ноутбуках, установите USB_BLACKLISTпараметр в файле /etc/default/tlp- изменения происходят немедленно
Stuart Caie
HID уже занесен в черный список из tlp: / etc / default / tlp # Примечание: устройства ввода (usbhid) исключаются автоматически (см. Ниже) # USB_BLACKLIST = "045e: 07a5"
Том
В документации TLP упоминается, что это управление питанием для ноутбуков (точнее, ThinkPad). Это работает для настольных ПК?
Конрад Рудольф
7

У меня была похожая проблема с ПК на Avocent KVM , где не были установлены инструменты для работы в ноутбуке (и я не хотел ее решать в любом случае). В моем случае, из-за автоматической приостановки работы KVM клавиатура и мышь работали беспорядочно (после нескольких секунд простоя они приостанавливали и теряли входные данные на некоторое время, пока их не разбудили достаточное количество щелчков и встряхиваний).

Когда я запустил PowerTOP и отключил автоматическое отключение USB для Avocent, PowerTOP сказал мне, что команда отключить его из командной строки:

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

Бит «3-10» будет отличаться в разных системах. Я не уверен, как определить это, кроме запуска PowerTOP, но, вероятно, есть какой-то способ.

Вместо этого я использовал правило udev для соответствия идентификатору продукта моего устройства:

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"

Чтобы получить правильную информацию об udev, я запустил:

udevadm info -a --path /sys/bus/usb/devices/N-N
Брайс
источник
6

В /etc/laptop-mode/conf.d/usb-autosuspend.confвас найдете:

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

Вы должны изменить это на CONTROL_USB_AUTOSUSPEND="0".

Это автоматически заставит любое USB-устройство иметь значение «вкл» в /sys/bus/usb/devices/"DEVICE ID"/power/control. Это сделает значение файлов автоподвески неактивным:

$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend
2
$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms
2000
Махмуд Мубарак
источник
5

Варианты питания для устройства USB находятся в /sys/bus/usb/devices/n-n/power. К сожалению, то, что nn для данного устройства требует некоторых усилий, чтобы выяснить это, поэтому я думаю, что это станет камнем преткновения, когда речь заходит о наличии скрипта, который автоматически выполняет

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

отключить автоподключение на этом устройстве. Волшебство nn действительно появляется в выводе

udevadm info --export-db

так что я думаю, что udev будет твоим другом здесь; какой-то скрипт udev, использующий параметр, который идентифицирует вашу мышь, затем запускает скрипт, который выводит -1 в соответствующий файл.

Алекс Деккер
источник
4
Это переживет перезагрузку? эхо в / sys кажется непостоянным, не так ли?
black_puppydog
2
Поместите команду в свой файл /etc/rc.local перед строкой 'exit 0'
Брайс,
4

Я создал свое собственное правило udev :

ACTION=="add", ATTR{idVendor}=="0cf3", ATTR{idProduct}=="3004", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"
тройка
источник
2

В Ubuntu 16.04 LTS (Xenial Xerus) я нашел решение в /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

Первоначально он был создан 2для меня. 30 минут гораздо разумнее.

После изменения выполните:

sudo service laptop-mode restart

Я до сих пор не знаю, как его полностью отключить, но теперь это нормально для меня.

Берто
источник