Як запобігти русі миші прокидання підвішеного комп'ютера?


32

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

Відповіді:


24

Я ще не перевірив BIOS, але знайшов рішення!

Короткий підсумок: У цьому розділі /proc/acpi/wakeupви можете побачити, які пристрої ввімкнено для відновлення після призупинення. У цьому списку відображаються назви (скорочено) так званих "пристроїв". Приклад "PWRB" означає "кнопку живлення".

Якщо ви записуєте імена пристроїв у цей файл, ви перемикаєте їх між увімкненими / вимкненими.

Я написав невеликий HowTo для відключення будильника за мишкою на основі блогу, де я знайшов цю інформацію.


1
Це звучить набагато краще, ніж моя відповідь, і я відповідним чином відредагував свою відповідь. Спасибі!
Робі Басак

2
Отже, це працює (однак, я помічаю, що мимоволі просто sudoне вийде: треба sudo suспершу зробити , а потім повторити /proc/acpi/wakeup. Однак мені цікаво, чи знайшов хтось спосіб просто відключити мишку? У мене є обидва на моєму робочому столі підключено через (бездротовий) USB, і це також відключить пробудження від клавіатури
Марко

15

Завдяки всім афішам, оскільки пробудження миші - це велика незручність, і я отримав тут свої відповіді. Я хотів би додати свій поворот до рішень, що може допомогти у більшості випадків. Мені довелося вимкнути 3 різні елементи /proc/acpi/wakeup. Мої пристрої: EHC1, EHC2, XHCI. Перші 2 - це usb2, а третій - usb3. Зауважте, що хоча трансивер USB для моєї миші підключений до порту usb2 і нічого не знаходиться в жодному порту usb3, комп'ютер прокинеться при переміщенні миші, поки всі 3 елементи не будуть відключені.

$ cat /proc/acpi/wakeup | sort 
Device  S-state   Status   Sysfs node
EHC1      S3    *disabled  pci:0000:00:1d.0
EHC2      S3    *disabled  pci:0000:00:1a.0
GLAN      S4    *enabled   pci:0000:08:00.0
.. ,, ..
USB7      S3    *disabled
WLAN      S3    *disabled  pci:0000:03:00.0
XHCI      S3    *disabled  pci:0000:07:00.0

Щоб вимкнути елементи пробудження під час кожного запуску, ви можете додати щось подібне до цього /etc/rc.local ..

echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

редагувати за допомогою cipricus:

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

*** Перевірте, які елементи потрібно відключити - як зазначено тут - для кожного з пунктів, розміщених як enabledпід cat /proc/acpi/wakeup | sort, запустивши в терміналі кожну з команд нижче, а потім перевірити, чи миша прокидає систему (без необхідності перезавантаження) :

sudo sh -c "echo EHC1 > /proc/acpi/wakeup"
sudo sh -c "echo EHC2 > /proc/acpi/wakeup"
sudo sh -c "echo XHCI > /proc/acpi/wakeup"

(в моєму випадку першого вистачило навіть після тестування з іншими портами USB)

*** Якщо /etc/rc.localфайл не існує - відповідно до цього допису:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Файл повинен виглядати приблизно так:

#!/bin/bash
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

exit 0

Перезавантажте.


Якщо це все ще не працює, можливо, це файл /etc/systemd/system/rc-local.service відсутній або неправильно налаштований.

Тест с

sudo /etc/init.d/rc.local start

і

sudo systemctl status rc-local

Дотримуйтесь того, як увімкнути /etc/rc.local за допомогою Systemd :

Створіть файл:

sudo nano /etc/systemd/system/rc-local.service

Потім додайте до нього наступний вміст.

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

Збережіть і закрийте файл. Щоб зберегти файл у текстовому редакторі Nano, натисніть Ctrl + O, а потім натисніть Enter для підтвердження. Щоб вийти з файлу, натисніть Ctrl + X.

Перевірте все добре без помилок із:

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

Перезавантажте, щоб побачити зміни.


Якщо ви не любите мою редакцію, будь ласка, повідомте мене про це, позначивши @cipricus, і я опублікую як окрему відповідь, пов’язану з вищезазначеним.

6

Моя система - Ubuntu 15.10

Я намагався за допомогою lsusbкоманди, щоб знайти, що таке пристрій миші. Це дуже просто, ви вводите lsusbпотім відключіть мишку (в моєму випадку це приймач Bluetooth) і наберіть lsusbзнову. Пристрій виглядає так:

Bus 007 Device 008: ID 24ae:2000

Тепер знайдіть його в /sys/bus/usb/devices/папці, використовуючи той самий спосіб (від'єднайте штекер / вилку). У моєму випадку я виявив, що вони десь у папках починаються з 7-2*.

Тепер спробуйте прочитати idProduct та idVendor. Наприклад: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=>24ae . Це воно.

Нарешті я створюю скрипт у /lib/systemd/system-sleepкаталозі, називаю його всім, що ви хочете.

#! /bin/sh

if [ ! -r /sys/bus/usb/devices/7-2.3/power/wakeup ]; then
    exit 0
fi
case "$1" in
    pre )
    echo disabled > /sys/bus/usb/devices/7-2.3/power/wakeup
;;
esac

Готово.


Він працює з Ubuntu 18.04 на моєму ноутбуці.
Мінь Нгуен

1

цей сценарій вирішив мою проблему. Перевір.

    #!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Все, що вам потрібно зробити, - спочатку запустити sudo xinput list, знайти дане Ім'я вашої USB-миші та поставити його на сценарій. Потім збережіть файл як "ssmonoff.sh", зробіть його виконуваним і встановіть його для запуску при запуску.


1

Чудове пояснення. Я просто додав до rc.local наступну команду

for d in `cat wakeup |grep enabled|grep -v PS2K|cut -b -4`; do echo $d >/proc/acpi/wakeup ; done

щоб відключити будь-який пристрій, ніж PS2K (клавіатура PS2) від пробудження. Простий і робочий!


0

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

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

Однак відповідь user138339 здається більш загальним способом досягти того, що вам потрібно, і ви можете це зробити з запущеної системи.


0

Це мій покроковий "підручник", щоб він працював для вас:

  1. Використовуйте команду, cat /proc/acpi/wakeupщоб показати список пристроїв, що прокидаються
  2. Використовуйте команду sudo sh -c "echo XXXX >/proc/acpi/wakeup"(замініть "XXXX" кодом свого пристрою), щоб переключити стан пристрою (увімкнено / вимкнено). Займіть по одному пристрою і спробуйте призупинити свою машину та розбудити її за допомогою пристрою, який ви хочете відключити, поки заслужений пристрій не зможе розбудити апарат. Не забувайте завжди включати пристрої, які ви не хочете вимкнути.
  3. Коли ви знайдете потрібний пристрій, створіть на робочому столі файл "acpi_wakeup", що містить такий код: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (не забудьте замінити "XXXX" кодом вашого пристрою)
  4. Перемістіть або скопіюйте файл у папку /etc/init.d/. Щоб скопіювати файл, використовуйте таку команду: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (замініть "USERNAME" власним іменем користувача)
  5. Зробіть файл виконуваним: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Потім використовуйте 'update-rc.d', щоб автоматично робити необхідні символьні посилання в інших каталогах: sudo update-rc.d acpi_wakeup defaults (це показує, WARNING: ...missing LSB tags and overridesале це нормально. Вам не потрібно турбуватися про це)
  7. Перезавантажте комп'ютер.

Джерела та подальше читання:

http://www.das-werkstatt.com/forum/werkstatt/viewtopic.php?f=7&t=1985 http://ubuntuforums.org/showthread.php?t=814939&page=3

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.