Jak zapobiec budzeniu się myszy z zawieszonego komputera?


32

To naprawdę denerwujące, ponieważ po zawieszeniu muszę odłączyć mysz od zasilania, aby mieć pewność, że od czasu do czasu system nie budzi systemu. Nie znalazłem niczego w ustawieniach systemu, które nie mogłyby tego wyłączyć, przeglądając strony.

Odpowiedzi:


24

Nie sprawdziłem jeszcze BIOS-u, ale znalazłem rozwiązanie!

Krótkie podsumowanie: w /proc/acpi/wakeupmożesz zobaczyć, które urządzenia są obecnie włączone, aby wznowić zawieszanie. Ta lista zawiera nazwy (w skrócie) tak zwanych „urządzeń”. Przykład „PWRB” oznacza „przycisk zasilania”.

Jeśli zapisujesz nazwy urządzeń w tym pliku, przełączasz je między włączonymi / wyłączonymi.

Napisałem mały HowTo na temat wyłączania funkcji budzenia za pomocą myszy , na podstawie bloga, na którym znalazłem te informacje.


1
Brzmi to znacznie lepiej niż moja odpowiedź i odpowiednio zredagowałem swoją odpowiedź. Dzięki!
Robie Basak

2
Tak, to zadziała (jednak Zauważyłem przy okazji, że tylko przy użyciu sudonie będzie działać: trzeba zrobić sudo sunajpierw, a potem do echo /proc/acpi/wakeup. Jednak zastanawiam się, czy ktoś znalazł sposób na to ? Wyłączyć mysz mam zarówno na moim pulpicie podłączonym przez (bezprzewodowy) USB, a to również wyłączy wybudzanie z klawiatury
Marco

15

Podziękowania dla wszystkich plakatów, ponieważ budzenie myszy jest poważną niedogodnością i otrzymałem tutaj odpowiedzi. Chciałbym dodać swój zwrot do rozwiązań, ponieważ może to pomóc w większej liczbie przypadków. Musiałem wyłączyć 3 różne elementy w /proc/acpi/wakeup. Moje urządzenia: EHC1, EHC2, XHCI. Pierwsze 2 to usb2, a trzeci to wpis usb3. Należy pamiętać, że chociaż urządzenie nadawczo-odbiorcze USB dla mojej myszy jest podłączone do portu USB2 i nic nie jest w żadnym porcie USB3, komputer budzi się po ruchach myszy, dopóki wszystkie 3 elementy nie zostaną wyłączone.

$ 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

Aby wyłączyć elementy budzenia przy każdym uruchomieniu, możesz dodać coś takiego do /etc/rc.local...

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

edytuj przez cipricus:

Edytuję to, ponieważ musiałem dodać więcej szczegółów, aby uzyskać osobne pytanie moje zostało zamknięte jako duplikat powyższego w oparciu o tę odpowiedź; Myślę, że to bardziej przydatne niż publikowanie jako osobna odpowiedź.

*** Sprawdź, które elementy należy wyłączyć - jak wskazano tutaj - dla każdego z elementów, które zostały zaksięgowane jako enabledponiżej cat /proc/acpi/wakeup | sort, uruchamiając w terminalu każde z poniższych poleceń, a następnie sprawdzając, czy mysz budzi system (bez konieczności ponownego uruchamiania) :

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

(w moim przypadku pierwszy wystarczył nawet po przetestowaniu z innymi portami USB)

*** Jeśli /etc/rc.localplik nie istnieje - zgodnie z tym postem:

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

Plik powinien wyglądać mniej więcej tak:

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

exit 0

Restart.


Jeśli to nadal nie działa, może to oznaczać, że plik /etc/systemd/system/rc-local.service brak lub niewłaściwa konfiguracja.

Przetestuj za pomocą

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

i

sudo systemctl status rc-local

W następstwie Jak włączyć /etc/rc.local z Systemd :

Utwórz plik:

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

Następnie dodaj do niego następującą treść.

[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

Zapisz i zamknij plik. Aby zapisać plik w edytorze tekstu Nano, naciśnij Ctrl + O, a następnie naciśnij Enter, aby potwierdzić. Aby wyjść z pliku, naciśnij Ctrl + X.

Sprawdź, czy wszystko jest w porządku bez błędów dzięki:

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

Uruchom ponownie, aby zobaczyć zmiany.


Jeśli nie podoba ci się moja edycja, daj mi znać, oznaczając @cipricus, a ja opublikuję jako osobną odpowiedź powiązaną z powyższym.

6

Mój system to Ubuntu 15.10

Próbowałem użyć lsusbpolecenia, aby znaleźć urządzenie myszy. To bardzo proste, piszesz, lsusba następnie odłączasz mysz (w moim przypadku jest to odbiornik Bluetooth) i piszesz lsusbponownie. Urządzenie wygląda następująco:

Bus 007 Device 008: ID 24ae:2000

Teraz znajdź go w /sys/bus/usb/devices/folderze, używając tej samej metody (odłącz / podłącz). W moim przypadku stwierdziłem, że są one gdzieś w folderach zaczynających się od 7-2*.

Teraz spróbuj przeczytać idProduct i idVendor. Na przykład: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. to jest to!

Na koniec tworzę skrypt w /lib/systemd/system-sleepkatalogu, nadaj mu dowolną nazwę.

#! /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

Wszystko gotowe.


Działa z Ubuntu 18.04 na moim laptopie.
Minh Nguyen,

1

ten skrypt rozwiązał mój problem. Sprawdź to.

    #!/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 )

Wszystko, co musisz zrobić, to najpierw uruchomić sudo xinput list, znaleźć nazwę myszy USB i umieścić ją w skrypcie. Następnie zapisz plik jako „ssmonoff.sh”, ustaw go jako wykonywalny i ustaw go tak, aby był uruchamiany podczas uruchamiania.


1

Świetne wyjaśnienie. Po prostu dodałem do rc.local następujące polecenie

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

wyłączyć z budzenia każde urządzenie inne niż PS2K (klawiatura PS2). Prosty i działający!


0

Może istnieć sposób specyficzny dla twojego sprzętu, w którym to przypadku opcja może być dostępna w ustawieniach BIOS systemu.

Wejście do menu BIOS w celu zmiany ustawień jest również specyficzne dla systemu. Zwykle naciskasz klawisz zaraz po ponownym uruchomieniu komputera, a klawisz do naciśnięcia jest często wyświetlany na ekranie.

Jednak odpowiedź user138339 wydaje się bardziej ogólnym sposobem na osiągnięcie tego, czego potrzebujesz, i możesz to zrobić z uruchomionego systemu.


0

To jest mój „samouczek” krok po kroku, aby działał dla Ciebie:

  1. Użyj polecenia, cat /proc/acpi/wakeupaby wyświetlić listę urządzeń budzących
  2. Użyj polecenia sudo sh -c "echo XXXX >/proc/acpi/wakeup"(zamień „XXXX” na kod urządzenia), aby przełączyć stan urządzenia (włączony / wyłączony). Idź po jednym urządzeniu na raz i spróbuj zawiesić swój komputer i obudzić go za pomocą urządzenia, które chcesz wyłączyć, dopóki zasłużone urządzenie nie będzie w stanie go obudzić. Nie zapomnij zawsze włączać ponownie urządzeń, których nie chcesz wyłączać.
  3. Gdy znajdziesz odpowiednie urządzenie, utwórz na komputerze plik „acpi_wakeup” zawierający następujący kod: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (nie zapomnij zastąpić „XXXX” kodem urządzenia)
  4. Przenieś lub skopiuj plik do folderu /etc/init.d/. Aby skopiować plik, użyj następującego polecenia: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (zastąp „USERNAME” rzeczywistą nazwą użytkownika)
  5. Ustaw plik jako wykonywalny: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Następnie użyj „update-rc.d”, aby automatycznie utworzyć wymagane dowiązania symboliczne w innych katalogach: sudo update-rc.d acpi_wakeup defaults (pokazuje, WARNING: ...missing LSB tags and overridesale jest OK. Nie musisz się tym martwić)
  7. Zrestartuj swój komputer.

Źródła i dalsze czytanie:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.