Отключите клавиатуру, мышь или крышку для пробуждения вашего компьютера с Ubuntu
В этом руководстве показано, как включить/отключить события клавиатуры, мыши, открытия крышки и/или других устройств, вызывающие выход вашего ПК или ноутбука с Ubuntu из спящего режима.
По умолчанию откройте крышку ноутбука, нажмите любую клавишу на клавиатуре или нажмите кнопку сна, чтобы вывести компьютер из состояния ожидания или гибернации. Если хотите, вы можете настроить Ubuntu так, чтобы она игнорировала определенные триггеры пробуждения, которые вам не нужны.
Это руководство протестировано на ThinkPad t480s с Ubuntu 24.04. Это также должно работать на других Linux и других устройствах, но действие «Открыть крышку» может отличаться!
Шаг 1. Расскажите, кто может разбудить ваш компьютер
Обычно пользователь может прочитать файл /proc/acpi/wakeup
, чтобы получить список включенных и отключенных триггеров пробуждения.
1. Сначала нажмите Ctrl+Alt+T
, чтобы открыть окно терминала, затем запустите команду, чтобы просмотреть список включенных триггеров пробуждения:
cat /proc/acpi/wakeup |grep enabled
Пропустить |grep включен
в команде покажет все триггеры, включенные или отключенные.
В выходных данных вы увидите кодовые имена, зависящие от поставщика, например, XHC (USB 3.0), SLPB (кнопка сна), LID (крышка ноутбука), их идентификаторы sysfs
, а также уровень сна (s3 – приостановить, s4 – спящий режим), из которого они могут выйти.
2. Для устройств PCI вы можете запустить еще одну команду, чтобы узнать больше о том, что они собой представляют:
lspci |grep -e "xx:xx.x" -e "xx:xx.x" -e "xx:xx.x" -e "xx:xx.x"
В команде замените xx:xx.x
в соответствии с идентификаторами sysfs
(вторая половина), которые вы получили в последней команде. И добавьте/удалите -e "xx:xx.x"
в зависимости от того, сколько устройств PCI вы хотите перечислить.
Как показано на снимке экрана ниже, в моем случае я могу разбудить свой компьютер следующим образом:
- GLAN, pci:0000:00:1f.6, проводная сетевая карта, из состояния гибернации S4 (также включает S3/S2/S1).
- XHC, pci:0000:00:14.0, устройство USB 3.0, из S3 (спящий режим в ОЗУ) состояние приостановки.
- PXSX, pci:0000:04:00.0, устройство Thunderbolt 3, из спящего режима S4.
- SLPB (кнопка режима сна), LID (крышка ноутбука) и несколько других устройств PCIe.
Шаг 2. Отключите пробуждение от определенного устройства PCI
Все устройства, перечисленные выше на последнем шаге, имеют свои собственные подпапки /sys/bus/
, которые создаются автоматически при обнаружении (обычно при запуске, если только вы не отключите их, а затем подключите).
Каждая подпапка содержит файл power/wakeup
, который содержит значение ключа для «включения» или «отключения» выхода из спящего режима.
Чтобы отключить его, просто запустите команду:
echo disabled | sudo tee /sys/bus/pci/devices/0000:00:14.0/power/wakeup
Здесь замените 0000:00:14.0
в соответствии с идентификатором, который вы получили в последней команде, чтобы отключить любой триггер PCI по вашему желанию. Или замените disabled
на enabled, чтобы включить триггер.
И вы можете повторно запускать команду снова и снова с разными идентификаторами sysfs
, чтобы отключить/включить несколько триггеров пробуждения.
Чтобы проверить, либо повторно запустите команду cat /proc/acpi/wakeup
, либо просто приостановите работу компьютера и попробуйте использовать только что отключенные триггеры, чтобы разбудить его.
Используйте правила udev, чтобы сделать его постоянным.
Последняя команда echo
работает временно до перезагрузки или повторного подключения устройств. Чтобы сделать его постоянным даже после перезагрузки, вы можете создать правила udev.
1. Сначала запустите команду для создания (и редактирования) файла пользовательских правил udev (в данном случае 40-disable-wakeup-triggers.rules
):
sudo gnome-text-editor /etc/udev/rules.d/40-disable-wakeup-triggers.rules
Здесь замените gnome-text-editor
в соответствии со средой вашего рабочего стола, gedit
для старого GNOME (22.04 и более ранних версий), musepad
для XFCE или вместо этого используйте nano
, который работает на большинстве настольных компьютеров.
2. Когда файл откроется, добавьте строку ниже:
ACTION=="add", KERNEL=="0000:00:14.0", SUBSYSTEM=="pci", ATTR{power/wakeup}="disabled"
Здесь :
ACTION=="add"
указывает выполнить действие при обнаружении устройства.KERNEL=="0000:00:14.0"
,SUBSYSTEM=="pci"
используются для идентификации устройства. Замените идентификатор соответствующим образом.ATTR{power/wakeup}="disabled"
(здесь только один знак «=») указывает на необходимость записи «отключено» вpower/wakeup
чтобы отключить триггер.
Кроме того, вы можете добавить несколько строк с разными идентификаторами (для значения KERNEL), чтобы отключить или включить несколько триггеров при обнаружении.
После сохранения файла (для nano
нажмите Ctrl+S, затем Ctrl+X) перезагрузите компьютер, чтобы применить изменения.
(Необязательно) Отключить пробуждение с определенного USB-устройства.
На последнем шаге отключите XHC (в моем случае pci:0000:00:14.0), чтобы все устройства USB 3.0 не могли разбудить компьютер.
Однако, если вы хотите отключить определенное USB-устройство (например, USB-клавиатуру), оставив при этом другие USB-устройства без изменений, выполните шаги, описанные ниже, шаг за шагом.
ПРИМЕЧАНИЕ. Чтобы этот шаг работал, вам необходимо оставить XHC включенным (настроенным на последнем шаге).
1. Сначала выполните приведенную ниже команду, чтобы сообщить всем подключенным USB-устройствам, а также их идентификаторы.
lsusb
В моем случае у меня есть USB-мышь с идентификатором 1c4f:0034
и USB-клавиатура с идентификатором 3151:3020
. Первые 4 шестнадцатеричных числа — это идентификатор поставщика, а вторые 4 — идентификатор продукта.
Затем выполните приведенную ниже команду (замените идентификатор продукта «3020» на свой), чтобы указать папку /sys/bus
для USB-устройства.
grep 3020 /sys/bus/usb/devices/*/idProduct
2. Чтобы временно отключить USB устройство от вывода системы из спящего режима, используйте команду:
echo disabled | sudo tee /sys/bus/usb/devices/1-2/power/wakeup
Здесь замените /sys/bus/usb/devices/1-2
на папку PATH в соответствии с тем, что вы получили в последней команде. И он будет работать до перезагрузки или до повторного подключения USB-устройства.
3. Чтобы сделать его постоянным, также создайте правило udev с помощью команды (замените gnome-text-editor
на ваш текстовый редактор):
sudo gnome-text-editor /etc/udev/rules.d/40-disable-wakeup-triggers.rules
Когда файл откроется, напишите следующую строку (замените 3151
и 3020
на свои):
ACTION=="add|change", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="3151", ATTRS{idProduct}=="3020", ATTR{power/wakeup}="disabled"
Здесь ACTION=="add|change"
сообщает, что нужно попытаться повторно применить правила при каждом изменении устройства, поскольку USB-устройство поддерживает горячее подключение.
Не допускайте пробуждения Ubuntu при открытой крышке ноутбука
ПРИМЕЧАНИЕ. Этот шаг МОЖЕТ или НЕ МОЖЕТ сработать на вашем ноутбуке! Кажется, не существует единого способа отключить функцию пробуждения при открытой крышке. Если вы знаете, сообщите мне, оставив комментарий ниже.
Большинство ноутбуков сегодня поддерживают пробуждение при открытой крышке. Чтобы включить/отключить эту функцию, сначала нужно попробовать эту опцию в настройках BIOS.
Если ваша страница настроек BIOS НЕ включает эту опцию, вы можете попробовать выполнить описанные ниже шаги один за другим, что, однако, может НЕ работать на некоторых ноутбуках.
1. Сначала откройте терминал (Ctrl+Alt+T) и выполните приведенную ниже команду, чтобы найти подпапку /sys/bus
для крышки:
sudo dmesg |grep Lid
В моем случае это /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/
.
2. Затем попробуйте отправить «отключено» в файл power/wakeup
для этой папки устройства (соответственно замените выделенный жирным шрифтом текст).
echo disabled | sudo tee /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/power/wakeup
По завершении выключите компьютер и закройте крышку. Наконец, попробуйте открыть крышку через несколько секунд и посмотреть, проснется ли она от этого действия. Если это НЕ работает, попробуйте настроить игнорирование действия переключателя крышки.
3. Если последний шаг сработал, вы можете создать правило udev, чтобы сделать его постоянным.
Сначала запустите команду, чтобы узнать ключевые параметры для идентификации устройства (замените жирный текст в соответствии с последней командой).
udevadm info -q all -a /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/
В моем случае (см. скриншот) KERNEL=="PNP0C0D:00"
, SUBSYSTEM=="acpi"
и DRIVER=="button"
— это то, что мне нужно для правил udev.
Затем запустите команду для создания (и редактирования) правила udev (соответственно замените gnome-text-editor
):
sudo gnome-text-editor /etc/udev/rules.d/40-disable-wakeup-triggers.rules
Пока файл откроется, добавьте строку ниже и сохраните:
ACTION=="add", KERNEL=="PNP0C0D:00", SUBSYSTEM=="acpi", DRIVER=="button", ATTR{power/wakeup}="disabled"
Правило udev вступит в силу при следующей загрузке системы Ubuntu Linux.