Прокидайтеся від призупинення за допомогою бездротової USB-клавіатури чи миші (для будь-якого Linux Distro)


18

Я годинами, а може й більше, шукав рішення, і я просто знайшов його. Я хочу поділитися цим з усіма. Таким чином, буде легше гуглати цю проблему, щоб швидше знайти рішення. Отже, так, як говорить заголовок, нижче - рішення.

Відповіді:


27

попадання в термінал:

grep . /sys/bus/usb/devices/*/power/wakeup

Результатом для мене було з’ясувати, що всі usb були відключені. Отже, зараз введіть:

1.

sudo su

тепер у нас є кореневі привілеї.

2. У мене є 8 портів usb ( ви робите це для стількох портів usb ), так:

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
echo enabled > /sys/bus/usb/devices/usb5/power/wakeup
echo enabled > /sys/bus/usb/devices/usb6/power/wakeup
echo enabled > /sys/bus/usb/devices/usb7/power/wakeup
echo enabled > /sys/bus/usb/devices/usb8/power/wakeup

Вперед і тестуй це. Тепер ви можете прокинутися з будь-якої бездротової або дротової USB-клавіатури та миші.

Отже, причина, яку ми повинні включити всі, полягає в тому, що на наступному кроці ми напишемо це в rc.local, щоб виконати команду після кожного перезавантаження, а після перезавантаження деяких дистрибутивів Linux (можливо, всіх) змінити порти usb. Нам не потрібно турбуватися про те, що щось піде не так, включивши їх усіх, оскільки Linux знаходиться в режимі призупинення або сплячки, він не може використовувати Wi-Fi для завантаження нічого, тому він не прокинеться, якщо ми його не прокинемо спеціально .

Наступний крок:

3.

sudo nano /etc/rc.local

і вставляємо все з кроку 2. туди (до виходу 0 звичайно).

Це воно. Відтепер ми можемо використовувати наші бездротові usb та миші, щоб прокинутися від призупинення.

Я сподіваюся, що це працює для всіх вас. Цей посібник був зроблений після тестування всіх інших можливих рішень в Інтернеті.


6
Якщо ви хочете розібратися, який саме пристрій, ви можете поглянути /sys/bus/usb/devices/<device id>/productза текстовим описом.
ntc2

Я включив усі пристрої в " grep . /sys/bus/usb/devices/*/power/wakeup", але все ще не працював. Можливо, це тому, що клавіатура та миша підключені опосередковано - бездротовим способом до ключа, який знаходиться на екрані? Екран підключається через USB до ноутбука.
AlikElzin-kilaka

1
як сказав @ ntc2, використовуйте це, щоб побачити опис кожного: grep . /sys/bus/usb/devices/*/productдопоміг мені зрозуміти, на що я
дивлюсь

Якщо це все ще не працює, переконайтеся, що ваш пристрій (клавіатура / миша) все ще має живлення, коли ПК знаходиться у сплячому режимі. Якщо на вашому пристрої немає світлодіода, ви можете скористатися монітором живлення USB (можна знайти їх близько $ 10 в Інтернеті), щоб перевірити живлення USB-порту.
Дж. Сміт

Постійна частина цього питання більше не працює з принаймні ubuntu 18.04. Доповнення ( askubuntu.com/a/874701/516072 ) до цієї відповіді, наданої pavlos-theodorou, допомогло на постійну частину в Ubuntu 18.04
Laurens

11

На додаток до свого керівництва вище, я хочу додати цю інформацію, оскільки я нещодавно виявив, що деякі бездротові USB-пристрої після пробудження зі сну вони повертаються назад, щоб відключити. Повторюю, це роблять лише деякі usb-пристрої, а не всі. Ось чому я не додав цього невеликого довідника на своєму путівнику.

Так ви зробили, як я вказував вище, і ваш ПК успішно прокидається, але згодом раптом він не прокинеться знову.

Рішення:

Відкрийте термінал і виконайте:

lsusb

За інформацією про ідентифікатор пристрою на клавіатурі 4 перших цифри - це ідентифікатор постачальника, а 4 наступні цифри - ідентифікатор товару (див. Знімок екрана) введіть тут опис зображення

Наступне:

sudo nano /etc/udev/rules.d/10-wakeup.rules

Де "прокинься" введіть потрібне ім'я сценарію. Число 10 є пріоритетним у випадку, якщо у вас є багато інших правил udev, тим меншим буде число, яке «правило» буде виконуватися перед іншими.

Скопіюйте це вставити та замініть ідентифікатор постачальника та ідентифікатор продукту власним ідентифікатором постачальника бездротової клавіатури та ідентифікатором продукту.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8 для мене - моя бездротова клавіатура (ви також можете бачити, що на скріншоті (Bus 008)) замініть її на власну.

Ctrl+ Oдля збереження, Ctrl+ Xдля виходу та перезавантаження.


4
Краще включити це у свою першу відповідь.
ntc2

1
це 2 різні речі. 1-й - це відповідь на проблему пробудження. 2-й - більше схожий на "Як створити правило для запуску без завантаження", і це просто "зайвий", оскільки не всі знають, як це зробити, і для цього немає простого аматорського посібника.
Павлос Феодору

2

Відповідь Павлоса Теодору дуже корисна. Я хотів би додати, що ви можете знайти usb-пристрій, до якого під час завантаження підключена ваша миша / клавіатура, пару разів пропускаючи dmesg через grep , потім клацайте один раз і, нарешті, використовуючи хвіст, щоб переконатися, що це був останній час запис.

Використовуючи цей метод, вам не потрібно включати пробудження ВСІ" порти usb.

Я вкладаю наступне у свій /etc/rc.local файл, і він щоразу знаходить мій приймач logitech, навіть якщо він переміщується з одного порту usb до іншого. Просто замініть ім'я вашої клавіатури або миші з dmesg замість «Logitech K270»

KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup

Це працює при завантаженні, але, схоже, не працює після зупинки, тому мені довелося помістити файл сценарію в / lib / systemd / system-sleep /. Створіть його, встановіть його як глобально виконуваного і дайте йому ім'я, яке починається з двоцифрового числа між 00 та 99. Мій сценарій такий, знову підставте ваш клавіатурний / мишачий стихій з dmesg:

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [ $1 = post ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

if [ $1 = pre ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

З якоїсь причини я не можу пояснити, "після" сну, якщо заява працює лише на будь-яке інше пробудження ... але "перед" сном, якщо вислів, здається, працює кожен раз.


1

Жодна з вищезгаданих відповідей мені не допомогла. Тому я розміщую тут свою власну.

Увімкнення / відключення пробудження після призупинення для USB-пристроїв

Тестовано в KDE неону 5.16.2, заснованому на Ubuntu 18.04, але має працювати в будь-якому дистрибутиві.


1. Покажіть список USB-пристроїв, щоб визначити той, який потрібно ввімкнути / вимкнути:

grep . /sys/bus/usb/devices/*/product

ви повинні отримати щось подібне:

/ sys / автобус / usb / пристрої / 3-3 / продукт: Cord Optical Mouse
/sys/bus/usb/devices/3-4.3/product:802.11n адаптер WLAN
/sys/bus/usb/devices/3-4.4/product:USB приймач
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / devices / usb1 / product: EHCI Host Controller
/ sys / bus / usb / devices / usb2 / product: EHCI Host Controller
/ sys / bus / usb / devices / usb3 / product: xHCI Host Controller
/ sys / bus / usb / devices / usb4 / product: xHCI Host Controller


2. Перевірте стан пробудження всіх USB-пристроїв:

греп. / sys / автобус / usb / пристрої / * / живлення / пробудження

результат повинен бути приблизно таким:

/ sys / автобус / usb / пристрої / 1-1 / живлення / будильник: відключено
/ sys / автобус / usb / пристрої / 2-1 / живлення / будильник: відключено
/ sys / автобус / usb / пристрої / 3-11 / живлення / будильник: відключено
/ sys / шина / usb / пристрої / 3-3 / живлення / будильник: увімкнено
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ sys / автобус / usb / пристрої / 3-4 / живлення / будильник: відключено
/ sys / автобус / usb / пристрої / 4-4 / живлення / будильник: відключено
/ sys / bus / usb / devices / usb1 / power / wakeup: відключено
/ sys / bus / usb / devices / usb2 / power / wakeup: відключено
/ sys / bus / usb / devices / usb3 / power / wakeup: відключено
/ sys / bus / usb / devices / usb4 / power / wakeup: відключено

У моєму випадку будильник увімкнено лише для USB-пристроїв 3-3, який, згідно з попереднім списком, є "Оптична миша для шнура".

Я хочу ввімкнути пробудження від призупинення лише для бездротової клавіатури та відключити його на відпочинок. USB-приймач клавіатури підключений до концентратора та відповідає 3-4.4 у попередньому списку ("USB приймач").


3. Створіть сценарій, який виконує роботу:

Щоб мати root права:

sudo su

Потім ми створюємо файл для сценарію (файл можна назвати "usbwakeup" або будь-який описовий ви хочете):

nano /etc/init.d/usbwakeup 

Зміст файлу. Просто адаптуйте це до своїх потреб, змінивши розділ "СКРИПТІ ДІЇ" (мені подобається додавати коментарі до сценаріїв, щоб знати, що вони насправді роблять, якщо я знову відкрию їх колись):

#! / бін / баш
#
##########################################
# ЗАГАЛЬНА ІНФОРМАЦІЯ #
##########################################
#
# - Цей скрипт дозволяє / відключає пробудження з призупинення # для пристроїв USB.
#
# - Сценарію потрібні дозволи на виконання.
#
# - Щоб цей скрипт виконувався при запуску системи, він повинен бути
# символічне посилання на нього в /etc/rc3.d/ з пріоритетом S01
# (наприклад: /etc/rc3.d/S01usbwakeup)
#
#############################
# ПОВ'ЯЗАНІ КОРИСНІ КОМАНДИ #
#############################
#
# - Визначте пристрої USB:
# греп. / sys / автобус / usb / пристрої / * / продукт
#
# - Перевірте стан USB "пристроїв":
# греп. / sys / автобус / usb / пристрої / * / живлення / пробудження
#
#
###################
# СКРИПТИ ДІЇ #
###################
#
# Відключає пробудження від зупинки для оптичної миші
ехо відключено> / sys / автобус / usb / пристрої / 3-3 / живлення / пробудження
#
# Увімкнення пробудження від призупинення роботи бездротової клавіатури
що я підключився до USB 3.0 HUB в порту USB №4
echo увімкнено> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Дайте йому дозволи на виконання:

chmod +x /etc/init.d/usbwakeup


5. Створіть символічне посилання в /etc/rc3.d/, щоб воно почалося при завантаженні:

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


Перезавантаживши систему, все повинно працювати, як зазначено в сценарії. Зміни будуть постійними, оскільки вони будуть виконуватися з кожним завантаженням системи.

Джерела, з якими консультувалися (окрім цієї посади):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubuntu-sleep/

/unix/83748/the-rc0-d-rc1-d-directories-in-etc


Щойно я знайшов і цікавий пост, де пояснюється, як створити простий графічний інтерфейс з тією ж метою. Я не перевіряв його, але це, можливо, може допомогти комусь, хто намагається зробити це графічно та з легкістю одного клацання, щоб увімкнути / відключити: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- приховано
Хуан Гомес Каррільо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.