У мене була така ж проблема з Ubuntu 16.04 (Xenial Xerus) і так багато шукали будь-яке рішення ...
Рішення знаходиться в кінці цієї відповіді, якщо вас не хвилює контекстна історія. Контекст може виглядати як невикористаний блабла (можливо, він є), але я думаю, що це може допомогти читачам перевірити, чи проблема, яку я вирішив на моєму ПК, така ж, як і в їхній.
КОНТЕКСТ
Я відчайдушно невдало перевіряв усі поради, які знайшов в Інтернеті, перезавантажуючись після кожної спроби:
- '/ etc / default / grub'
usbcore.autosuspend=-1
параметр завантаження ядра
- 'Runtime-pm.conf' у режимі ноутбука
CONTROL_RUNTIME_AUTOSUSPEND=0
- повністю відключивши Інструменти режиму ноутбука з файлу '/etc/laptop-mode/laptop-mode.conf', підтвердивши, що проблема не пов’язана з цією функцією ядра. Я перевірив різні способи, щоб laptop_mode більше не працював, щоб бути впевненим. (Посилання:
man laptop-mode.conf
& man laptop_mode
)
- Я прочитав кілька хитрощів про '/etc/laptop-mode/conf.d/usb-autosuspend.conf', але цей файл не існує в моїй версії Ubuntu 16.04 з ноутбуком-режимом-інструментами v1.68
- Видалення програми Powertop . На форумах часто підозрюють, що викликає проблеми з автоматичним розповсюдженням, і сьогодні я знаю, що в моєму випадку це було неправдою, оскільки видалення цього нічого не виправляло.
options usbcore autosuspend=1
в '/etc/modprobe.d/usb.conf' також був неефективним
- Сценарій '/etc/udev/rules.d/60-power.rules', наданий офіційною Вікі Gentoo
rules
файл, призначений для пристрою для udev
'/etc/udev/rules.d/usb-power.rules', рекомендований Сергієм Я. Стройбандтом
Прочитавши весь цей технічний матеріал, я лише зрозумів, що причина пов’язана з тим, що моє значення '/ sys / module / usbcore / parametri / autosuspend' застрягло за дві секунди, незалежно від того, яку зміну я зробив у моїй конфігурації. Ви можете перевірити це за допомогою cat
команди:
$ cat /sys/module/usbcore/parameters/autosuspend
2
І так, мишу відключили рівно через дві секунди, тож я знав, що я в правильному шляху. Звичайно, я перевірив echo -1
команду, яку я бачив тут і там, -1
призначену для вимкнення автовідкладу ... але:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
Я не розумів, чому в дозволі відмовили навіть у режимі судо. Я не пробував як root, тому що просто не думав, що це може бути проблемою. Ось помилка :(
Завдяки коментарям Alex Dekker & Bryce я дізнався, як відключити автоматичну залежність лише для миші. Але, звичайно, мої перші спроби не вдалися до цього bash: Permission denied error
, тому мені довелося чекати розуміння моєї плутанини root / sudo, перш ніж echo -1
команда, запропонована Alex нарешті, спрацює.
Я також знайшов кращий спосіб виконати команду як користувач root без входу як root. Різниця між кореневою оболонкою та використанням кореневих команд добре пояснена на офіційній сторінці вікі Ubuntu RootSudo . Я люблю вчитися подібним речам, але ей! Чому це потрібно завжди вивчати болісно? Лол
OMG, це був справжній головний біль, і нобі, як я, потрібно було багато часу, щоб зрозуміти, як я зазвичай кажу "ні мозок не виграє". Мій видимо потрібно більше навчання.
Тож перестаньмо говорити про себе і підемо це виправити! Продовжте нижче ...
Я настійно рекомендую друге рішення для простою зовнішнього жорсткого диска, щоб не витрачати батарею ноутбука ні за що. Але я даю вам обидва рішення, тому що хто любить свою власну свободу, той повинен любити і свободу один одного :)
РІШЕННЯ 1
Щоб вимкнути автозалежність на всіх USB-пристроях / портах
Відкрити термінал та виконати:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
Це дійсно тимчасове рішення, яке дозволяє миттєво перевірити, чи ця команда виправляє проблему автозалежності миші чи клавіатури.
Якщо ваші USB-пристрої зараз працюють нормально, просто відредагуйте сценарій '/etc/rc.local', щоб він виконував цю команду при кожному завантаженні системи. Таким чином ви зробите вигляд виправлення постійним . Відредагуйте файл, наприклад, з nano:
sudo nano /etc/rc.local
і покладіть echo -1
команду у файл '/etc/rc.local' перед exit 0
рядком
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/module/usbcore/parameters/autosuspend
exit 0
Перезавантажте комп'ютер
(Перевірте важливу примітку наприкінці.)
.
РІШЕННЯ 2
Щоб вимкнути автозалежність для конкретного USB-пристрою / порту
Параметри живлення для USB-пристрою ввімкнено /sys/bus/usb/devices/n-n/power
. Що n-n
для даного пристрою, потрібно з’ясувати кілька маніпуляцій, але це не складно. Наведений нижче приклад показує, як я визначив, що номер USB-порту мого приймача бездротової миші 3-1
, тому, будь ласка, адаптуйте це до вашої власної ситуації:
Відключіть свій USB-пристрій, відкрийте Terminal та виконайте sudo dmesg
команду
Підключіть свій USB-пристрій назад, а потім sudo dmesg
знову запустіть у Terminal, щоб перевірити, чи є зміни
Ось як виглядає кінець dmesg
виводу моєї команди після того, як я ввімкнув мишу назад в слот:
[40208.575249] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[40208.705233] usb 3-1: New USB device found, idVendor=062a, idProduct=4102
[40208.705240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[40208.705245] usb 3-1: Product: 2.4G Wireless Mouse
[40208.705248] usb 3-1: Manufacturer: MOSART Semi.
[40208.707679] input: MOSART Semi. 2.4G Wireless Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/input/input24
[40208.763946] hid-generic 0003:062A:4102.0007: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MOSART Semi. 2.4G Wireless Mouse] on usb-0000:00:14.0-1/input0
Тепер ми можемо побачити, що порт, де підключений мій USB-пристрій, ідентифікований як usb 3-1
.
**Note:** this trick concerns the USB port ID, not a device ID. For example, if I plug my mouse to the next USB port, it becomes identified as `usb 3-2` in the `dmesg` result. But this solution #2 remains very useful if you take the habit to always plug your mice or keyboard to the same port, and it's generally what people use to do unconsciously ;)
Виконайте таку команду у своєму Терміналі, змінивши номер мого порту 3-1
на той, який ви знайшли у своєму власному dmesg
результаті:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Зауважте, що autosuspend_delay_ms
замінили застаріле autosuspend
з ядра версії 2.6.38, згідно з офіційною документацією Linux .
Це дійсно тимчасове рішення, але тепер ви можете легко перевірити, чи вирішила ця команда проблему автозаповнення вашої миші або клавіатури.
Якщо ваш USB-пристрій зараз працює нормально, просто відредагуйте сценарій '/etc/rc.local', щоб він виконував цю команду щоразу, коли система завантажиться. Таким чином ви зробите вигляд виправлення постійним . Відредагуйте файл, наприклад, з nano:
sudo nano /etc/rc.local
і покладіть echo -1
команду у файл '/etc/rc.local' перед exit 0
рядком, ще раз не забудьте змінити номер порту n-n
в команді:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
exit 0
Перезавантажте комп'ютер
.
Важливо: не забувайте, що вам доведеться виконатиsudo sh -c
"тимчасовий" ще раз вручну, якщо ви відключите / підключите USB-пристрій, поки середовище робочого столу вже запущено, навіть якщо ви підключите його назад до тієї ж роз'єму USB. Нормально, лише тому, що файл "/etc/rc.local" викликається лише один раз при запуску системи.
У будь-якому випадку можливі обхідні шляхи. Краще кваліфіковані народи можуть мати більш розумні методи, але я налаштував псевдоніми для U-порта, що стосуються портів. Це дозволяє мені вибірково використовувати прості usb1
або usb2
команди, якщо мені доведеться відключити / відключити свій USB-пристрій тут чи там. Ти також! Ви також можете створити псевдоніми команд для гри з короткими словами замість того, щоб вводити повну команду. Його легко встановити менше ніж за дві хвилини, а також працює з Alt+F2 :)
Більше ідей, щоб зробити це простіше, також було б дуже бажано.