Kablosuz USB klavye veya fare kullanarak askıya alma durumundan uyanın (herhangi bir Linux Distro için)


18

Saatlerce, belki daha fazla, bir çözüm arıyordum ve sadece buldum. Bunu herkesle paylaşmak istiyorum. Bu şekilde, çözümü daha hızlı bulmak bu sorunu daha kolay hale getirecektir. Yani, tıpkı başlığın dediği gibi, çözüm aşağıda.

Yanıtlar:


27

terminalde vurmak:

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

Sonuç, benim için, tüm usb'nin devre dışı olduğunu bulmaktı. Şimdi şunu yazın:

1.

sudo su

şimdi kök ayrıcalıklarımız var.

2. 8 usb portum var ( bunu sahip olduğunuz kadar çok usb portu için yapıyorsunuz ), bu yüzden:

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

Devam et ve test et. Artık herhangi bir kablosuz veya kablolu usb klavye ve fareden uyanabilirsiniz.

Bu nedenle, hepsini etkinleştirmeliyiz, çünkü bir sonraki adımda, her yeniden başlatmadan sonra komutu yürütmek için rc.local dilinde yazacağız ve bazı linux dağıtımlarını (belki de hepsi) yeniden başlattıktan sonra usb bağlantı noktalarını değiştireceğiz. Hepsini askıya alarak hiçbir şeyin yanlış gitmesi için endişelenmemize gerek yok, çünkü linux askıya alma veya hazırda bekletme modunda olduğundan, hiçbir şeyi indirmek için wifi'yi kullanamaz, bu yüzden bilerek uyandırmadan uyanmaz .

Sonraki adım:

3.

sudo nano /etc/rc.local

ve 2. adımdaki her şeyi oraya yapıştırıyoruz (elbette 0 çıkışından önce).

Bu kadar. Artık kablosuz usb ve faremizi askıya almaktan uyanmak için kullanabiliriz.

Umarım hepiniz için çalışır. Bu kılavuz, internetteki diğer tüm olası çözümleri test ettikten sonra hazırlanmıştır.


6
Hangi cihazın hangisi olduğunu bulmak istiyorsanız, /sys/bus/usb/devices/<device id>/productmetin açıklaması arayabilirsiniz .
ntc2

" grep . /sys/bus/usb/devices/*/power/wakeup" İçindeki tüm cihazları etkinleştirdim ancak yine de çalışmadı. Belki de klavye ve fare dolaylı olarak bağlı olduğu için - kablosuz olarak ekranda bulunan bir dongle'a? Ekran USB üzerinden dizüstü bilgisayara bağlanır.
AlikElzin-kilaka

1
@ ntc2'nin söylediği gibi, her birinin açıklamasını görmek için bunu kullanın: grep . /sys/bus/usb/devices/*/productneye baktığımı
anlamama

Bu hala çalışmıyorsa, PC uyku modundayken cihazınızın (klavye / fare) hala gücünün olduğundan emin olun. Cihazınızda LED yoksa, USB bağlantı noktasındaki gücü kontrol etmek için bir USB güç monitörü kullanabilirsiniz (çevrimiçi olarak yaklaşık 10 $ bulabilir).
J Smith

Bu sorunun kalıcı kısmı artık en azından ubuntu 18.04 ile çalışmıyor. Pavlos-theodorou tarafından sağlanan bu cevaba ek ( askubuntu.com/a/874701/516072 ) Ubuntu'daki kalıcı bölüme yardımcı oldu 18.04
Laurens

11

Yukarıdaki rehberime ek olarak, bu bilgileri eklemek istiyorum, çünkü son zamanlarda bazı kablosuz usb cihazlarının uyku modundan çıktıktan sonra keşfettiklerini, devre dışı bırakmak için geri döndüklerini keşfettim. Tekrar ediyorum, sadece bazı usb cihazları bunu yapıyor, hepsi değil. Bu yüzden bu küçük kılavuzu rehberime eklemedim.

Bu yüzden yukarıda talimat verildi ve pc başarıyla uyanır, ancak daha sonra gün aniden tekrar uyanmaz.

Çözüm:

Bir terminal açın ve şunları yapın:

lsusb

Klavye aygıtı kimlik bilgilerinizde ilk 4 basamak satıcı kimliğidir ve sonraki 4 basamak ürün kimliğidir (ekran görüntüsüne bakın) resim açıklamasını buraya girin

Sonraki adım:

sudo nano /etc/udev/rules.d/10-wakeup.rules

Burada "uyandırma" komut dosyasının istediğiniz adını girin. Sayı 10, diğer birçok udev kuralınız olması durumunda önceliktir, 'kural'ın sayısı diğerlerinden önce ne kadar düşük çalıştırılırsa.

Bunu kopyalayıp yapıştırın ve satıcı kimliğini ve ürün kimliğini kendi kablosuz klavye satıcı kimliğiniz ve ürün kimliğinizle değiştirin.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* Benim için usb8 benim kablosuz klavyemdir (ekran görüntüsünde de (Bus 008) görebilirsiniz), kendi yerine değiştirin.

Ctrl+ Okaydetmek, Ctrl+ Xçıkmak ve yeniden başlatmak için + .


4
Bunu ilk cevabınıza dahil etmek daha iyi.
ntc2

1
onlar 2 farklı şeydir. birincisi uyanma sorununun cevabıdır. ikincisi daha çok "hiçbir önyükleme yürütmek için bir kural nasıl oluşturulur" gibi ve bu sadece bir "ekstra" çünkü herkes bunu nasıl yapacağını bilmiyor ve bunun için basit bir amatör rehber yoktur.
Pavlos Theodorou

2

Pavlos Theodorou'nun cevabı çok faydalı. Ben borularla Eğer fare / klavye boot-up at bağlı olduğundan usb aygıtını bulabilmesi eklemek istiyorum dmesg yoluyla grep sonra, birkaç kez egrep kez ve son olarak kullanarak kuyruk emin olmak için en son oldu girişi.

Bu yöntemi kullanarak , TÜM usb bağlantı noktalarında uyanmayı etkinleştirmeniz gerekmez .

Aşağıdakileri /etc/rc.local dosyama koydum ve bir usb bağlantı noktasından diğerine taşınsa bile logitech alıcımı her seferinde bulur. Sadece adını yerine sizin "Logitech K270" yerine dmesg gelen klavye veya fare

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

Bu önyükleme üzerinde çalışır, ancak askıya alma sonrasında wake çalıştırmak gibi görünmüyor, bu yüzden / lib / systemd / system-sleep / içine bir komut dosyası koymak zorunda kaldı. O, o kadar global çalıştırılabilir set oluşturma ve ona 00 ve My komut dosyası aşağıdaki gibi olduğu 99 arasında bir çift haneli sayı ile başlar, yine substite bir isim vermek için dmesg gelen klavye / fare verbage:

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

Açıklayamam Nedense, 'post' uyku durumunda ifadesi yalnızca her uyandırma ... ama 'ön' uyku çalışır eğer deyimi her zaman iş gibi görünüyor.


1

Yukarıda belirtilen cevapların hiçbiri bana yardımcı olmadı. Bu yüzden buraya kendiminkini gönderiyorum.

USB aygıtları için askıya alma durumundan uyanmayı etkinleştirme / devre dışı bırakma

Ubuntu 18.04'e dayanan KDE neon 5.16.2'de test edilmiştir, ancak herhangi bir dağıtımda çalışması gerekir.


1. Etkinleştirmek / devre dışı bırakmak istediğinizi tanımlamak için USB aygıtlarının listesini gösterin:

grep . /sys/bus/usb/devices/*/product

böyle bir şey elde etmelisiniz:

/ sys / bus / usb / aygıtlar / 3-3 / ürün: Kablo Optik Fare
/sys/bus/usb/devices/3-4.3/product:802.11n WLAN Adaptörü
/sys/bus/usb/devices/3-4.4/product:USB Alıcı
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / aygıtlar / usb1 / ürün: EHCI Ana Bilgisayar Denetleyicisi
/ sys / bus / usb / aygıtlar / usb2 / ürün: EHCI Ana Bilgisayar Denetleyicisi
/ sys / bus / usb / aygıtlar / usb3 / ürün: xHCI Ana Bilgisayar Denetleyicisi
/ sys / bus / usb / aygıtlar / usb4 / ürün: xHCI Ana Bilgisayar Denetleyicisi


2. Tüm USB cihazlarının uyanma durumunu kontrol edin:

grep. / Sys / bus / usb / cihazlar / * / güç / uyandırma

sonuç şu şekilde olmalıdır:

/ Sys / bus / usb / cihazlar / 1-1 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / 2-1 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / 3-11 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / 3-3 / güç / uyanma: etkin
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ Sys / bus / usb / cihazlar / 3-4 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / 4-4 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / USB1 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / USB2 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / USB3 / güç / uyanma: devre dışı
/ Sys / bus / usb / cihazlar / usb4 / güç / uyanma: devre dışı

Benim durumumda uyanma sadece önceki listeye göre "Kordon Optik Fare" olan USB cihazı 3-3 için etkinleştirilir.

Uyandırma işlevini yalnızca kablosuz klavye için askıya almayı etkinleştirmek ve geri kalanı için devre dışı bırakmak istiyorum. Klavye USB alıcısı bir HUB'a bağlı ve bir önceki listede ("USB Alıcı") 3-4.4 değerine karşılık geliyor.


3. İşi yapan bir komut dosyası oluşturun:

Kök izinlerine sahip olmak için:

sudo su

Daha sonra komut dosyası için dosya oluştururuz (dosya "usbwakeup" olarak adlandırılabilir veya istediğiniz herhangi bir tanımlayıcı olabilir):

nano /etc/init.d/usbwakeup 

Dosyanın içeriği. Sadece "SCRIPT EYLEMLERİ" bölümünü değiştirerek ihtiyaçlarınıza göre uyarlayın (bir gün tekrar açtığımda gerçekten ne yaptıklarını bilmek için komut dosyalarına yorum eklemeyi seviyorum):

#! / bin / bash
#
#######################
# GENEL BİLGİ #
#######################
#
# - Bu komut dosyası, USB aygıtları için askıya alma # modundan uyanmayı etkinleştirir / devre dışı bırakır.
#
# - Komut dosyasının yürütme izinlerine ihtiyacı var.
#
# - Bu komut dosyasının sistem başlatıldığında yürütülmesi için,
# /etc/rc3.d/ içinde S01 önceliğiyle sembolik bir bağlantı
# (örneğin: /etc/rc3.d/S01usbwakeup)
#
###########################
# İLGİLİ FAYDALI KOMUTLAR #
###########################
#
# - USB cihazlarını tanımlayın:
# grep. / Sys / bus / usb / cihazlar / * / ürün
#
# - USB cihazlarının "askıya alınma durumunun" durumunu kontrol edin:
# grep. / Sys / bus / usb / cihazlar / * / güç / uyandırma
#
#
##################
# SENARYO EYLEMLERİ #
##################
#
# Optik fare için uyanmayı askıya almayı devre dışı bırakır
yankı devre dışı bırakıldı> / sys / bus / usb / aygıtlar / 3-3 / güç / uyandırma
#
# Kablosuz klavye için bekleme modundan çıkmayı etkinleştirir
4 numaralı USB bağlantı noktasında bir USB 3.0 HUB'a bağlandığımı
yankı etkin> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Yürütme izinlerini verin:

chmod +x /etc/init.d/usbwakeup


5. Açılışta başlaması için /etc/rc3.d/ içinde sembolik bir bağlantı oluşturun:

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


Sistemi yeniden başlatarak her şey kodda belirtildiği gibi çalışmalıdır. Değişiklikler her sistem önyüklemesinde yürütüleceğinden kalıcı olacaktır.

Danışılan kaynaklar (bu yazı dışında):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubuntu-sleep/

/unix/83748/the-rc0-d-rc1-d-directories-in-etc


Aynı amaç için basit bir GUI'nin nasıl oluşturulacağını açıkladığı ve ilginç bir yazı buldum. Test etmedim ama belki birisini grafik olarak yapmaya çalışan ve etkinleştirmek / devre dışı bırakmak için tek bir tıklama kolaylığıyla yardımcı olabilir: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- hid
Juan Gómez Carrillo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.