LinuxMint/Ubuntu: отключаем выход из suspend mode по движению мыши.

Небольшой пост в помощь линуксоидам, которые наткнутся на него в результате долгих поисков в гугле.

Имеется ноутбук с установленной системой LinuxMint 19.1. В настройках Power Management я указал, что при закрытии крышки ноутбука он должен перейти в Suspend mode (то есть, процессор, HDD и монитор отключаются, все программы останавливаются, но оперативная память не стирается). Это удобно, например, решил человек поехать с работы домой, а все открытые окна, программы в ноутбуке закрывать не нужно, ибо дома открыл крышку — вентилятор и жесткий диск зашуршали, и через несколько секунд вот они все те открытые окна. Проблема же состоит в том, что легким движением мыши ноутбук выходит из режима suspend, даже если крышка закрыта. Это реально бесит и чревато тем, что если нежданное включение произойдет в пути, то ноутбук будет перегреваться в рюкзаке, у него быстро сядет батарея. Я не нашел как штатными средствами побороть это дебильное поведение. Не, можно, конечно вытаскивать мышку, а потом закрывать крышку, но иногда это неудобно.

Итак, вот до чего я дошел.

Будет ли ноутбук выходить из режима suspend по движению мыши (сигналу в USB) отвечает файл

/sys/bus/usb/devices/1-1.2/power/wakeup

вместо имени папки 1-1.2 может быть и другое — зависит от usb порта, куда у вас воткнута мышь. Чтобы узнать нужное для вас имя папки откройте в «проводнике» папку /sys/bus/usb/devices и потом вставьте/вытащите мышь из вашего USB. При этом соответствующая папка с именем типа 1-1.2 появится/исчезнет.

Итак, /sys/bus/usb/devices/1-1.2/power/wakeup — это текстовый файл, который содержит всего одно слово: enabled или disabled. Нам нужно установить disabled.

Тупиковый вариант решения проблемы: открыть текстовый редактор (в режиме суперпользователя) и руками поменять enabled на disabled.  Это сработает до первой перезагрузки ноутбука или до первого изымания и вставки мыши в USB порт. Ибо, как можно видеть, папки типа 1-1.2 создаются и уничтожаются довольно часто.

Мое решение:

1. Нужно, чтобы при загрузке системы с воткнутой мышью содержимое файла /sys/bus/usb/devices/1-1.2/power/wakeup менялось на disabled.

Для этого создать или редактировать текстовый файл /etc/rc.local (тут rc.local — это имя файла). Если файл в папке /etc отсутствует, то нужно его создать и вот его содержимое:

#!/bin/sh -e
echo "disabled" > /sys/bus/usb/devices/1-1.2/power/wakeup
exit 0

Если же файл уже есть и он не пустой, то значит нужно перед последней строкой exit 0, вставить нашу команду
echo "disabled" > /sys/bus/usb/devices/1-1.2/power/wakeup

2. Теперь нужно дать понять операционной системе, что если ноутбук включили без мыши (соответственно, наша команда при старте системы из предыдущего пункта была бесполезной), а потом мышь подключили, то система должна поменять содержимое только что «на лету» созданного файла  /sys/bus/usb/devices/1-1.2/power/wakeup.

Значит при возникновении события «воткнули что-то в USB» наш Линукс должен выполнить нужную нам команду. Для того, чтобы это организовать нужно сделать следующее. Зайти в папку etc/udev/rules.d/ и в ней создать текстовый файл с именем mymouse.rules (вместо mymouse может быть что угодно, но расширение должно быть .rules). В этом файле должна быть эта одна строка:


ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/bin/sh -c 'echo disabled > /sys/bus/usb/devices/1-1.2/power/wakeup'"

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

Для новичков напоминаю, что указанные выше файлы нужно создавать/редактировать с правами Суперпользователя (as root).

Поделиться:      twitter       facebook