Автор Тема: Достало передёргивать мышь usb  (Прочитано 20704 раз)

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
Re: Достало передёргивать мышь usb
« Ответ #30 : 28.06.2016 09:57:01 »
Кажется начинаю понимать почему в Слаке мышь не фризит:

И там нет usbcore.

Дак он просто не модулем может....

В слаке же /sys/module/usbcore/parameters/autosuspend на месте?

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 153
Re: Достало передёргивать мышь usb
« Ответ #31 : 28.06.2016 15:21:21 »
Провел еще эксперимент на p8. Установил две USB-мышки.  (cinnamon, поставлено со стартеркита от 12.06.2016)
# usb-devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=10
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev=04.04
S:  Manufacturer=Linux 4.4.14-std-def-alt0.M80P.1 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:04.1
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh=10
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0001 Rev=04.04
S:  Manufacturer=Linux 4.4.14-std-def-alt0.M80P.1 ohci_hcd
S:  Product=OHCI PCI host controller
S:  SerialNumber=0000:00:04.0
C:  #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=1.5 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=046d ProdID=c00e Rev=11.10
S:  Manufacturer=Logitech
S:  Product=USB-PS/2 Optical Mouse
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=98mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

T:  Bus=02 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#=  3 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=09da ProdID=000e Rev=00.01
S:  Manufacturer=A4Tech
S:  Product=PS/2+USB Mouse
C:  #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

# lsmod|grep hid

hid_generic             1047  0
usbhid                 34631  0
hid                    86913  2 hid_generic,usbhid
usbcore               170729  5 ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,usbhid

# modinfo hid
filename:       /lib/modules/4.4.14-std-def-alt0.M80P.1/kernel/drivers/hid/hid.ko
license:        GPL
author:         Jiri Kosina
author:         Vojtech Pavlik
author:         Andreas Gal
srcversion:     2120836D4D2372C1D2BD6C2
depends:       
intree:         Y
vermagic:       4.4.14-std-def-alt0.M80P.1 SMP mod_unload modversions 686
parm:           debug:toggle HID debugging messages (int)
parm:           ignore_special_drivers:Ignore any special drivers and handle all devices by generic driver (int)
# modinfo usbhid

filename:       /lib/modules/4.4.14-std-def-alt0.M80P.1/kernel/drivers/hid/usbhid/usbhid.ko
license:        GPL
description:    USB HID core driver
author:         Jiri Kosina
author:         Vojtech Pavlik
author:         Andreas Gal
srcversion:     DB9A709BE2AE7FD7CAEE91F
alias:          usb:v*p*d*dc*dsc*dp*ic03isc*ip*in*
depends:        hid,usbcore
intree:         Y
vermagic:       4.4.14-std-def-alt0.M80P.1 SMP mod_unload modversions 686
parm:           mousepoll:Polling interval of mice (uint)
parm:           ignoreled:Autosuspend with active leds (uint)
parm:           quirks:Add/modify USB HID quirks by specifying  quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all in 0x-prefixed hex (array of charp)

Обе мышки фризятся приблизительно через 2 секунды бездействия (специально засек) каждая независимо от другой. Передергиваем в разъеме мышь logitech - она перестает фризиться. А4tech - продолжает. Передергиваем вторую мышь - обе работают нормально.
Изменения только в выводе команды usb-devices: У мышки изменился только Dev#= 4, а потом у второй соответственно Dev#=  5

Значение /sys/module/usbcore/parameters/autosuspend так и остается равным 2. Более того, проверил и в p7, и в p6 этот параметр так же присутствует и равен 2.

Итак, имеем следующее. Фризятся только те мышки, которые были подключены на момент загрузки. При их переподключении, либо при подключении новой мыши никакого фриза у вновь подключенной мыши не наблюдается.
Это не зависит от DE - наблюдал на cinnamon, kde4, kde5

На этой же машине система p7 Kdesktop проапгрейженная до p8 (через epm release-upgrade) с последними апдейтами никаких фризов с мышами не изображала. (сейчас эта система уже недоступна, сверху рут с нуля был установлен синамон)

Т.е. проблема либо в настройках, либо на стартеркитах ещё что-то грузится дополнительное, что не появилось при апгрейде p7 -> p8.

Это возможно как-то зависит от железа (материнки?)
Есть старенький нетбук Asus Atom с мышкой Mitsumi - на нём синамон работает нормально без фризов мышки.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #32 : 28.06.2016 17:52:24 »
Кажется начинаю понимать почему в Слаке мышь не фризит:

И там нет usbcore.

Дак он просто не модулем может....

Даже в процессах нет. В ядре тоже нет.
По крайней мере, я нигде не увидел usbcore.

В слаке же /sys/module/usbcore/parameters/autosuspend на месте?

На месте. Но не понял как он появился если в ядре нет модуля usbcore.
root@darkstar:/sys/module/usbcore# cat  /sys/module/usbcore/parameters/autosuspend
2
root@darkstar:/sys/module/usbcore# grep -rHi . /sys/module/usbhid/parameters/
/sys/module/usbhid/parameters/mousepoll:0
/sys/module/usbhid/parameters/quirks:(null),(null),(null),(null)
/sys/module/usbhid/parameters/ignoreled:0

Это заинтересовало, - почему мышь-то не фризит
[linux-pm] [patch]full runtime power management for usbhid
http://lists.osdl.org/pipermail/linux-pm/2008-August/018457.html
Цитировать
It suspends idle usb hid devices after a timeout if possible unless

- hiddev has opened the device
- error handling is under way
- a key is being held down
(keyboards don't signal remote wakeup upon release of a key)
- an led is active on the device
(leds use too much power for a suspend device to keep lit -
this can be overridden with a module parameter)

Вольно:
Это приостанавливает простой usb hid устройств если это возможно, если
- hiddev открыл устройство
- ведётся обработка ошибок
- led индикатор на устройстве активен

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 153
Re: Достало передёргивать мышь usb
« Ответ #33 : 28.06.2016 18:26:31 »
И всё-таки интересно найти объяснение, почему переподключение устройства убирает фриз? Что-то отваливается, ассоциированное с мышью, и повторно уже не восстанавливается?

ЗЫ. А в P7 usbcore живет, и никаких странностей не делает...
$ lsmod |grep usb

usb_storage            42500  0
usbhid                 34547  0
hid                    77696  2 hid_generic,usbhid
scsi_mod              184839  4 usb_storage,libata,sd_mod,sr_mod
usbcore               163884  7 usb_storage,ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,usbhid
usb_common              2382  1 usbcore
Это опять же к тому, что апгрейд p7 -> p8 оставил на месте usbcore, но уже на новом ядре, и никаких фризов не наблюдалось. Фризы только на live и на с нуля установленных системах.
Попробую проверить на разных чипсетах материнок. Пока что вылазило только на nvidia (nNorce630i и MCP78S). Из интеловского пока проверено только на NM10/ICH7 - работает нормально.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #34 : 28.06.2016 18:43:58 »
Упс...
Т.е. если usbcore загружен, то usbhid уже пофигу и патч для usbhid не спать led-устройствам работать не будет, - я правильно понял?
Цитировать
https://www.kernel.org/doc/Documentation/usb/power-management.txt

   Changing the default idle-delay time
   ------------------------------------

The default autosuspend idle-delay time (in seconds) is controlled by
a module parameter in usbcore.  You can specify the value when usbcore
is loaded.  For example, to set it to 5 seconds instead of 2 you would
do:

PS
Зацепил в альте на ноуте оптическую мышь: три секунды и светодиод погас. Что само предполагает что питания нет.

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
Re: Достало передёргивать мышь usb
« Ответ #35 : 28.06.2016 23:35:37 »
В слаке же /sys/module/usbcore/parameters/autosuspend на месте?

На месте. Но не понял как он появился если в ядре нет модуля usbcore.

Видимо как в дебиане/убунте этот коз в ядре а не в модуле.
Получается через GRUB можно воздействовать в слаке/дебаине/убунте, а в альте можно при загрузке модуля usbcore задать опционным параметром "-1"

Оффлайн Александр Ерещенко

  • Завсегдатай
  • *
  • Сообщений: 1 153
Re: Достало передёргивать мышь usb
« Ответ #36 : 28.06.2016 23:41:41 »
Зацепил в альте на ноуте оптическую мышь: три секунды и светодиод погас. Что само предполагает что питания нет.
Питание есть, просто мышь ушла в спячку. Если кликнуть кнопкой мышки - она просыпается. И как я описывал ранее, если мыши две, то засыпают и просыпаются они независимо друг от друга. Если одну из них передергнуть в разъеме, то она засыпать перестаёт, но вторая всё-так же продолжит.

Кстати, подключали мышь уже при загруженной системе, или загружались при уже подключенной мышке?

ЗЫ. Из проверенных дома чипсетов засыпание стабильно проявляется на чипсетах nvidia MCP55, MCP61, MCP68S. На intel NM10/ICH7 - не проявляется.
На Pentium4/ICH5/radeon (раскопал и такого старичка) cinnamon live почему-то нормально не вышел в графический режим (в данном случае не важно), но мышь в консоли увы тоже засыпает (и просыпается по кнопке, и начинает нормально работать после переподключения).

ЗЗЫ.Вылезли некоторые ньюансы на упомянутом выше Atom/NM10/ICH7. На live cinnamon p8 (от 12.06.2016 - он у меня сейчас на флэшке, на нем все и проверяю) на этом нетбуке мышь засыпает. А вот на поставленной системе - нет. Вспоминаю, что систему на нетбук я ставил с нуля, но с предыдущей (февральской?) версии стартеркита cinnamon p8 и потом уже просто обновлялся.
Так что, кажется от железа не зависит, а зависит от версии стартеркита? Что там изменилось за полгода?

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #37 : 29.06.2016 01:19:08 »
Зацепил в альте на ноуте оптическую мышь: три секунды и светодиод погас. Что само предполагает что питания нет.

Кстати, подключали мышь уже при загруженной системе, или загружались при уже подключенной мышке?

Перед загрузкой системы.
Надо было перегрузиться с флэшечной слаки в hdd-шный альт. И мышь уже была подключена.
Если переподключать на уже загруженной системе, то мышь не уснёт.
Я эту фишку в p8-sysv-tde давно заметил. Как только систему на ноут поставил.
Доселе терпел, но у всякого терпения  есть предел.
Потом вытащил старый ноут с Сизифом, и оп-пачки, получил то же самое.
На старом ноуте не замечал и не знал про фичу: на древнем хъюлете тачпад для меня очень удобный (сейчас таких не делают) и нужды в мыши никогда не было.

Так что, кажется от железа не зависит, а зависит от версии стартеркита? Что там изменилось за полгода?

Ещё бы. На одном и том же железе, в Слаке мышь не фризит (предполагаю: usbcore там нет, есть только usbhid, и как я понимаю, мышь и клавиатура для usbhid это устройства имеющие led индикаторы и которые спать не должны), а в альте p8 и Сизиф, фризит на ура.


Чут-чуть офтопика:
Такую свинью
https://forum.altlinux.org/index.php?topic=13216.msg283906#msg283906
можно для мыши подложить даже там где этой свиньи нет.
Вот только получить устройство назад можно будет только после перезагрузки - попытка записи в unbind может сообщить что такого устройства нет и сколько не делай ре-plug, lsusb его не отобразит.
« Последнее редактирование: 29.06.2016 01:27:38 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #38 : 29.06.2016 02:08:56 »
Получается через GRUB можно воздействовать в слаке/дебаине/убунте, а в альте можно при загрузке модуля usbcore задать опционным параметром "-1"

Да, и в альте это срабатывает.

Как идентифицируются в системе usb-мышь и usb-клавиатура
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 8087:07dc Intel Corp.
Bus 001 Device 005: ID 0c45:6513 Microdia
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 011: ID 04d9:1503 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 010: ID 046d:c050 Logitech, Inc. RX 250 Optical Mouse
Bus 001 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

и как найти путь к каталогу
# grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product
/sys/bus/usb/devices/usb1/1-1/1-1.3/product:USB-PS/2 Optical Mouse
/sys/bus/usb/devices/usb1/1-2/product:USB Keyboard

с параметрами
# ls -1F $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f1 -d:|sed 's/product//')|grep '^\/\|power'
/sys/bus/usb/devices/usb1/1-1/1-1.3/:
power/
/sys/bus/usb/devices/usb1/1-2/:
power/

Параметры ядра для загрузчика:

Запрет autosuspend
usbcore.autosuspend=-1

Команды делают то же что и параметр ядра выше
# echo -1 > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
# echo auto > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control

Параметр в  power/control определяет в каком состоянии будет находиться порт, логически включенном или логически выключенном (допустимые значения: on/auto).  Если power/autosuspend содержит запрет автозасыпания параметром -1, то порт всегда будет находиться в логически включенном состоянии 'active' (power is on). Это состояние отражает power/runtime_status. Например:
# echo -1 > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
# echo auto > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
active

При любом целочисленном значении в power/autosuspend отличном от -1, т.е. от 1 и выше, в секундах, и auto в power/control, порт по истечении таймаута перейдёт в  логически выключенное состояние 'suspended' (logically off). Использовать 0 в power/autosuspend не рекомендуется, поскольку это будет означать, что таймаут равен нулю.
Например при условии
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
5
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
auto

по истечении 5-ти секунд порт перейдёт в логически выключенное состояние
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
suspended

Вернуть порт в активное состояние, на время установленного таймаута, можно щелчком usb-мыши - порт перейдёт в активное состояние
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
active

Несмотря на установленный таймаут
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
5

порт можно перевести в бесконечно активное состояние
# echo on > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control

которое сохранится по истечении таймаута
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
active

Ещё один параметр ядра:
Таймаут в 3 минуты для autosuspend как параметр ядра
(если usb-мышь в состоянии покоя, не засыпать в течение трёх минут: 60сек * 3мин = 180сек )
usbcore.autosuspend=180
Указанный таймаут сработает и истечёт если power/control в состоянии auto.
Разбудить usb-мышь можно нажатием любой кнопки.

USB Mouse
# ll  $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
-r--r--r-- 1 root root 4096 июн 29 09:09 /sys/bus/usb/devices/usb1/1-1/1-1.3/power/runtime_status
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
active
# ls -l $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
-rw-r--r-- 1 root root 4096 июн 29 09:09 /sys/bus/usb/devices/usb1/1-1/1-1.3/power/autosuspend
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
-1
# ls -l $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
-rw-r--r-- 1 root root 4096 июн 29 09:09 /sys/bus/usb/devices/usb1/1-1/1-1.3/power/control
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
on
# ls -l $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/level
-rw-r--r-- 1 root root 4096 июн 29 09:09 /sys/bus/usb/devices/usb1/1-1/1-1.3/power/level
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/level
on

!!!!!!! Не пытайтесь выполнить эти две команды сразу, иначе usb-мышь, кнопкой, без переподключения к порту usb, вы уже не разбудите:
# echo 0 > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
# echo auto > $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control

После переподключения usb-мыши к порту usb, -  autosuspend запрещён, питание всегда
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
-1

# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
on
« Последнее редактирование: 30.06.2016 00:06:59 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #39 : 29.06.2016 02:29:18 »
В слаке же /sys/module/usbcore/parameters/autosuspend на месте?

На месте. Но не понял как он появился если в ядре нет модуля usbcore.

Видимо как в дебиане/убунте этот коз в ядре а не в модуле.
Получается через GRUB можно воздействовать в слаке/дебаине/убунте, а в альте можно при загрузке модуля usbcore задать опционным параметром "-1"

Мне этот фич для мышей кажется лишённым любой здравой логики:
В домашних условиях ноутбуки используются через адаптер питания и экономить энергию до такой степени нет нужды. Тем более что эта п*на этот фич работает и для выносных usb-клавиатур (как вам блин понравится будить usb-клаву нажатием любой кнопки перед набором текста?)
А в походных условиях выносные мыши и клавиатуры не используются совсем.
Стало быть в поездке это фич не нужен ноутбуку чуть более чем совсем.

Я это зап*ло проверил с usb-клавиатурой Galaxy 4710. Работает на ура.
Т.е., как понимаю, usbcore.autosuspend не делает разграничений между usb-устройствами в отличие от usbhid который при загруженном usbcore не в приоритете.

usbcore.autosuspend=-1
параметром к ядру, в ALT Linux, отключит автозасыпание для usb-клавиатур и usb-мышей подключенных к ноутбуку. Фриз мышей и клавиатур исчезнет.

Данный параметр никак не влияет на свежеподключенный usb-винчестер
# smartctl -a /dev/sdb|grep '^Device Model'
Device Model:     TOSHIBA MK5065GSX
# hdparm -I /dev/sdb|grep level
        Advanced power management level: 128
# man hdparm|col -b|sed -n '38,46p'
       -B     Get/set Advanced Power Management feature, if the drive supports
              it.  A  low  value  means aggressive power management and a high
              value means better performance.  Possible  settings  range  from
              values  1  through  127 (which permit spin-down), and values 128
              through 254 (which do not permit spin-down).  The highest degree
              of  power  management  is  attained with a setting of 1, and the
              highest I/O performance with a setting of 254.  A value  of  255
              tells  hdparm to disable Advanced Power Management altogether on
              the drive (not all drives support disabling it, but most do).
Через 10 минут индикатор usb-винчестера выключится, а шпиндель остановится.

В slackware-current-live параметр usbcore.autosuspend не нужен, - там клавиатуры и мыши не фризит.
« Последнее редактирование: 29.06.2016 04:39:38 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #40 : 30.06.2016 15:56:52 »
Продолжаем блуждать в лабиринтах autosuspend

Обратите внимание, что здесь и мышь и клавиатура подключены через usb-hub, но мышь была подключена первой, а  значит имеет более высокий приоритет
# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 16, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 4: Dev 16, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M
    |__ Port 6: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 6: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 6, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 6, If 1, Class=Wireless, Driver=btusb, 12M
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 8087:07dc Intel Corp.
Bus 001 Device 005: ID 0c45:6513 Microdia
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 016: ID 04d9:1503 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 012: ID 09da:000a A4Tech Co., Ltd. Optical Mouse Opto 510D / OP-620D
Bus 001 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

В показанном состоянии, порт, к которому подключена мышь, всегда активен (по причине power/control  on)
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/control
on
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/autosuspend
5
# cat $(grep -rHi mouse /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-8 -d/)/power/runtime_status
active

Но это же означает, что клавиатуру, которая подключена к тому же порту через usb-hub, вы не сможете перевести в логически выключенное (suspended) состояние
# cat $(grep -rHi keyboard /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-7 -d/)/power/runtime_status
active
# cat $(grep -rHi keyboard /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-7 -d/)/power/control
auto
# cat $(grep -rHi keyboard /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|cut -f-7 -d/)/power/autosuspend
5
Клавиатура всегда будет в активном состоянии и управлять таймаутом autosuspend вы сможете только мыши которая имеет высший приоритет.

Чтобы управлять таймаутом autosuspend раздельно и для клавиатуры и для мыши, вы должны их физически развязать по разным usb-портам, т.е. говоря проще, подключить их к физически разным usb-портам (шина-порт):
# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/11p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 12, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 17, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 17, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=rtsx_usb, 480M
    |__ Port 6: Dev 5, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 6: Dev 5, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 7: Dev 6, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 7: Dev 6, If 1, Class=Wireless, Driver=btusb, 12M
# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 8087:07dc Intel Corp.
Bus 001 Device 005: ID 0c45:6513 Microdia
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 017: ID 04d9:1503 Holtek Semiconductor, Inc. Keyboard
Bus 001 Device 012: ID 09da:000a A4Tech Co., Ltd. Optical Mouse Opto 510D / OP-620D
Bus 001 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

В этом случае станет возможным раздельное управление таймаутом autosuspend с переводом в активное (active) или пассивное (suspended) состояние для каждого из устройств.

Полные пути к файлам с параметрами см. здесь
https://forum.altlinux.org/index.php?topic=36963.msg289262#msg289262
« Последнее редактирование: 30.06.2016 16:04:12 от Speccyfighter »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Достало передёргивать мышь usb
« Ответ #41 : 30.06.2016 20:17:13 »
Как предлагаете на свежеустановленной системе автоматом делать?
Андрей Черепанов (cas@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #42 : 30.06.2016 21:13:53 »
i586
# sed -i 's/panic=30 quiet splash/panic=30 quiet splash usbcore.autosuspend=-1/' /etc/sysconfig/grub2 && \
 grub-mkconfig -o /boot/grub/grub.cfg


Надо придумать как туда ввести
# ls -1 $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')
/sys/bus/usb/devices/usb1/1-1/1-1.3/power/autosuspend
/sys/bus/usb/devices/usb1/1-2/power/autosuspend
# cat $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')
-1
-1
« Последнее редактирование: 30.06.2016 21:58:53 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Достало передёргивать мышь usb
« Ответ #43 : 30.06.2016 22:21:26 »
И так можно как-то
# cat $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')
5
5
# ls -1 $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')| while read line; do echo -1 > $line; done
# cat $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')
-1
-1

С учётом что
# ls -1 $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/power\/autosuspend/g')
/sys/bus/usb/devices/usb1/1-1/1-1.3/power/autosuspend
/sys/bus/usb/devices/usb1/1-2/power/autosuspend
# cat $(ls -1 $(grep -rHi 'mouse\|keyboard' /sys/bus/usb/devices/usb*/ 2>/dev/null|grep product|sed 's/product//g'|cut -f1 -d:)|grep '^/'|sed 's/:/product/g')
USB Mouse
USB Keyboard
« Последнее редактирование: 30.06.2016 22:24:37 от Speccyfighter »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Достало передёргивать мышь usb
« Ответ #44 : 30.06.2016 22:47:45 »
В /etc/sysctl.d не хотите?
Андрей Черепанов (cas@)