Как использовать нажатие клавиши для пробуждения приостановленного ноутбука при использовании переключателя KVM?

Я использую беспроводной Logitech Keyboard с Logitech Unifying Receiver, включил переключатель KVM. Я создал systemd, приостанавливают ярлык для приостановки ноутбука, Lenovo IdeaPad. Крышка ноутбука всегда закрывается. Я не могу проснуться, Lenovo от приостанавливают, если я не снимаю крышку ноутбука. После того как крышка снята, следы ноутбука. Я хочу смочь разбудить ноутбук, не имея необходимость снимать крышку. Я не уверен, как сделать это.

Я попробовал две вещи, ни один не работал. Во-первых, я включил файл пробуждения для Logitech Unifying Receiver (proc/acpi/wakeup). Это действительно будило ноутбук, когда я использовал клавиатуру. Проблема состояла в том, что ноутбук проснулся в течение приблизительно пяти минут без любого входа от меня. Никакое действие с клавиатуры или чего-либо еще. Во-вторых, я попробовал фиксацию, описанную в том, Как я получаю беспроводную клавиатуру USB к проснуться, Ubuntu 13.10 от приостанавливают? Та же проблема как первое - ноутбук просыпается в непредсказуемые времена, по-видимому самостоятельно.

Когда я смотрю на устройства с помощью lsinput, я вижу клавиатуру Logitech. Это дало физический адрес usb-0000:00:14.0-3.1.1:1. Когда я смотрю на proc/acpi/wakeup, я вижу pci:0000:00:14.0. Существует расширение № 3.1.1. Если я смотрю на/sys/bus/usb/devices/1-3.1.1, я вижу, что это - Logitech Unifying Receiver.

Вот результат системного журнала кошки во время события следа: syslog of laptop waking up

Как я соединяю все это, чтобы проснуться с вводом с клавиатуры, но подавить другие события следа?

Это несколько дней спустя, и я обнаружил это - "Взаимодействие со Встроенным Контроллером, который Это, где действительно трудный для диагностирования проблем, происходят. Встроенный контроллер (EC) содержит собственный код для управления периферийными устройствами". От https://wiki.ubuntu.com/Kernel/Reference/ACPITricksAndTips

Достаточно сказать это выглядит довольно трудным и вероятно характерно для моей Lenovo.

3
задан 4 November 2018 в 01:39

1 ответ

От: USB IR удаленный wakup от Приостанавливает

Я имел ту же проблему и был также озадачен моим USBs, не появляющимся в/proc/acpi/wakeup. В конце, однако, несмотря на многие решения, предлагающие, это требовалось, я не должен был включать USBs в ACPI.

Вместо этого включение пробуждения на USB-порте, с которым было подключено мое устройство IR, было, был достаточно.

Найдите свой идентификатор устройства:

$ lsusb

Соедините шиной 002 устройства 002: идентификатор 8087:8001 Корпорация Intel.
Соедините шиной 002 Устройства 001: идентификатор 1d6b:0002 Основа Linux 2,0 корневых концентратора
Соедините шиной 001 устройство 002: идентификатор 8087:8009 Корпорация Intel.
Соедините шиной 001 Устройство 001: идентификатор 1d6b:0002 Основа Linux 2,0 корневых концентратора
Соедините шиной 004 Устройства 001: идентификатор 1d6b:0003 Основа Linux 3,0 корневых концентратора
Соедините шиной 003 устройства 003: идентификатор 13ba:0018 PCP-BCG4209 штрихкода PCPlay
Соедините шиной 003 устройства 002: идентификатор 1934:5168 Feature Integration Technology Inc. (Fintek) F71610A или потребительский инфракрасный приемник F71612A / приемопередатчик
Соедините шиной 003 Устройства 001: идентификатор 1d6b:0002 Основа Linux 2,0 корневых концентратора

В вышеупомянутом примере мой идентификатор устройства 5168.

Grep/sys/bus/usb для нахождения порта устройством включен:

$ grep 5168 /sys/bus/usb/devices/*/idProduct  

/sys/bus/usb/devices/3-13/idProduct:5168

Это указывает, что мое устройство включается в bus3, порт 13.

Подтвердите, что порт правилен:

$lsusb -t

/: Шина 04. Порт 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/: Шина 03. Порт 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
| __ порт 13: Dev 2, если 0, Class=Vendor определенный класс, Driver=mceusb, 12M

| __ порт 14: Dev 3, если 0, устройство интерфейса Class=Human, Driver=usbhid, 1.5M
| __ порт 14: Dev 3, если 1, устройство интерфейса Class=Human, Driver=usbhid, 1.5M
/: Шина 02. Порт 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M | __ порт 1: Dev 2, если 0, Class=Hub, Driver=hub/8p, 480M
/: Шина 01. Порт 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
| __ порт 1: Dev 2, если 0, Class=Hub, Driver=hub/6p, 480M

Соедините шиной 3, порт 13 соответствий шина/порт, возвращенная grep (3-13)

Проверьте, включено ли пробуждение:

$ cat /sys/bus/usb/devices/3-13/power/wakeup  

отключенный

Включите пробуждение на порте:

$ sudo sh -c 'echo "enabled" > /sys/bus/usb/devices/3-13/power/wakeup'

Проверьте, включило ли пробуждение:

$ cat /sys/bus/usb/devices/3-13/power/wakeup  

включенный

Протестируйте свое устройство, оно будит систему?

Делайте это изменение персистентным через перезагрузки:

$ sudo nano /etc/rc.local

Добавьте следующие строки после комментариев и перед 'выход 0'

# Enable Wake on IR for USB bus 3 port 13.  
echo enabled > /sys/bus/usb/devices/3-13/power/wakeup

Теперь счастливо разбудите свой ПК от Вашего USB-устройства.

Ограничения
Одна проблема с этим подходом состоит в том что, если USB-порт устройство IR включается в изменения, то включение того порта конкретно не помогает.

Это сообщение имеет способ включить любой порт IR на основе устройства, которое включается в него с помощью правила Udev.

Ссылки
Kodi, удаленный MCE и Ubuntu
След от приостанавливает с клавиатурой или мышью
Включение устройств IR с правилом Udev


Исходный ответ ниже

Этот вопрос имеет три ответа, которые могут работать на Вас: Проснитесь от, приостанавливают использующую беспроводную клавиатуру USB или мышь (для любого Дистрибутива Linux)


Ответьте 1 (15 upvotes)

хит в терминале:

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

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

1.

sudo su

у нас есть теперь корень privillages.

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, и мышь для пробуждения от приостанавливают.

Я надеюсь, что это работает на всех Вас. Это руководство было сделано после тестирования всех других возможных решений вокруг Интернета.


Ответьте 2 (7 upvotes)

В дополнение к моему руководству выше я хочу добавить эту информацию, потому что я недавно обнаружил, что некоторые беспроводные USB-устройства после пробуждения от сна, они возвращаются назад для отключения. Я повторяюсь, только некоторые USB-устройства делают это, не все. Вот почему я не складывал это маленькое руководство по своему руководству.

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

Решение:

Откройте терминал и сделайте:

lsusb

В Вашей информации об идентификаторе устройства клавиатуры 4 первых цифры являются идентификатором поставщика, и 4 следующих цифры являются идентификатором продукта (см. снимок экрана), enter image description here

Затем сделайте:

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 для меня моя беспроводная клавиатура (можно также видеть, что в снимке экрана (Шина 008)), замените ее собственным.

Ctrl + O для сохранения, Ctrl + X, чтобы выйти и перезагрузить.


Ответ 3

Ответ Pavlos Theodorou очень полезен. Я хотел бы добавить, что можно найти USB-устройство, что мышь/клавиатура подключена с при начальной загрузке путем передачи по каналу dmesg через grep пару раз, затем egrep однажды, и наконец использования хвоста, чтобы удостовериться, что это была новая запись.

Используя этот метод, Вы не должны включать след на ВСЕХ 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. Мой сценарий следующим образом, снова substite Ваша клавиатура/мышь verbage от 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
ответ дан 1 December 2019 в 17:27

Другие вопросы по тегам:

Похожие вопросы: