ตื่นจากการหยุดใช้คีย์บอร์ดหรือเมาส์ USB ไร้สาย (สำหรับ Linux Distro ใด ๆ )


18

ฉันกำลังมองหาชั่วโมงอาจจะมากขึ้นสำหรับการแก้ปัญหาและฉันเพิ่งพบมัน ฉันต้องการแบ่งปันกับทุกคน วิธีนี้จะช่วยให้ค้นหาปัญหาได้เร็วขึ้น ดังนั้นเช่นเดียวกับชื่อกล่าวว่าด้านล่างเป็นวิธีการแก้

คำตอบ:


26

ตีใน terminal:

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

ผลลัพธ์สำหรับฉันคือพบว่า usb ทั้งหมดถูกปิดการใช้งาน ดังนั้นตอนนี้พิมพ์:

1

sudo su

ตอนนี้เรามีสิทธิ์รูท

2. ฉันมี 8 พอร์ต usb ( คุณทำเช่นนั้นกับหลาย ๆ พอร์ต usb ที่คุณมี ), ดังนั้น:

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

ไปข้างหน้าและทดสอบ ตอนนี้คุณสามารถตื่นขึ้นมาจากแป้นพิมพ์และเมาส์ usb แบบมีสายหรือไร้สาย

ดังนั้นเหตุผลที่เราต้องเปิดใช้งานทั้งหมดเป็นเพราะในขั้นตอนต่อไปเราจะเขียนสิ่งนี้ใน rc.local เพื่อรันคำสั่งทุกครั้งที่รีบูตและหลังจากรีบูตลินุกซ์ distros (อาจจะทั้งหมด) เปลี่ยนพอร์ต usb เราไม่ต้องกังวลกับสิ่งที่ผิดพลาดโดยเปิดใช้งานพวกเขาทั้งหมดเนื่องจาก linux อยู่ในช่วงหยุดชั่วคราวหรือไฮเบอร์เนตมันไม่สามารถใช้ wifi เพื่อดาวน์โหลดสิ่งใด ๆ ดังนั้นมันจะไม่ตื่นขึ้นมาโดยที่เราไม่ต้องตื่น .

ขั้นตอนต่อไป:

3

sudo nano /etc/rc.local

และเราวางทุกอย่างจากขั้นตอนที่ 2 ในนั้น (ก่อนทางออก 0 ของหลักสูตร)

แค่นั้นแหละ. จากนี้ไปเราสามารถใช้ usb และเมาส์ไร้สายของเราเพื่อปลุกจากการหยุดทำงานชั่วคราว

ฉันหวังว่าจะได้ผลกับทุกคน คู่มือนี้ทำขึ้นหลังจากทดสอบวิธีแก้ปัญหาอื่น ๆ ที่เป็นไปได้ทั้งหมดในอินเทอร์เน็ต


6
หากคุณต้องการทราบว่าอุปกรณ์ใดเป็นอุปกรณ์ใดคุณสามารถค้นหา/sys/bus/usb/devices/<device id>/productคำอธิบายข้อความได้
ntc2

ฉันเปิดใช้งานอุปกรณ์ทั้งหมดใน " grep . /sys/bus/usb/devices/*/power/wakeup" แต่ยังใช้งานไม่ได้ อาจเป็นเพราะคีย์บอร์ดและเมาส์เชื่อมต่อทางอ้อม - ไร้สายกับดองเกิลที่อยู่บนหน้าจอ? หน้าจอเชื่อมต่อผ่าน USB ไปยังแล็ปท็อป
AlikElzin-kilaka

1
ตามที่ @ ntc2 กล่าวว่าใช้สิ่งนี้เพื่อดูคำอธิบายของแต่ละคน: grep . /sys/bus/usb/devices/*/productช่วยให้ฉันคิดออกว่าฉันกำลังดูอะไรอยู่
เบ็นเยตซากิ

หากยังไม่สามารถใช้งานได้ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณ (คีย์บอร์ด / เมาส์) ยังคงมีไฟอยู่เมื่อพีซีอยู่ในโหมดสลีป หากไม่มี LED บนอุปกรณ์ของคุณคุณสามารถใช้การตรวจสอบพลังงาน USB (สามารถหาพวกเขาเกี่ยวกับ $ 10 ออนไลน์) เพื่อตรวจสอบพลังงานบนพอร์ต USB
J Smith

ส่วนถาวรของคำถามนี้ไม่สามารถใช้ได้กับ Ubuntu อย่างน้อย 18.04 อีกต่อไป นอกจากนี้ ( askubuntu.com/a/874701/516072 ) สำหรับคำตอบนี้จัดทำโดย pavlos-theodorou ช่วยให้ส่วนถาวรใน Ubuntu 18.04
อเรนส์

10

นอกเหนือจากคำแนะนำของฉันด้านบนฉันต้องการเพิ่มข้อมูลนี้เนื่องจากฉันเพิ่งค้นพบว่าอุปกรณ์ usb ไร้สายบางตัวหลังจากตื่นขึ้นมาจากโหมดสลีปพวกเขากลับไปปิดการใช้งาน ฉันทำซ้ำมีเพียงอุปกรณ์ usb เท่านั้นที่ทำเช่นนั้นไม่ใช่ทั้งหมด นั่นเป็นสาเหตุที่ฉันไม่ได้เพิ่มคู่มือเล็ก ๆ นี้ไว้ในคำแนะนำของฉัน

ดังนั้นคุณก็ทำตามที่ฉันสั่งข้างต้นและพีซีของคุณก็ตื่นขึ้นมาได้ แต่ในวันต่อมาทันใดนั้นก็ไม่ตื่นขึ้นมาอีก

วิธีการแก้:

เปิดเทอร์มินัลและทำ:

lsusb

ที่ข้อมูลรหัสอุปกรณ์คีย์บอร์ดของคุณตัวเลข 4 ตัวแรกคือรหัสผู้ขายและตัวเลขถัดไป 4 หลักคือรหัสผลิตภัณฑ์ (ดูภาพหน้าจอ) ป้อนคำอธิบายรูปภาพที่นี่

ถัดไปทำ:

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

โดยที่ "wakeup" ป้อนชื่อสคริปต์ที่คุณต้องการ หมายเลข 10 คือลำดับความสำคัญในกรณีที่คุณมีกฎ udev อื่น ๆ จำนวนที่น้อยกว่า 'กฎ' จะถูกเรียกใช้ก่อนกฎอื่น ๆ

คัดลอกวางสิ่งนี้และแทนที่รหัสผู้ขายและรหัสผลิตภัณฑ์ด้วยรหัสผู้จำหน่ายคีย์บอร์ดไร้สายของคุณเองและรหัสผลิตภัณฑ์

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

* usb8สำหรับฉันคือคีย์บอร์ดไร้สายของฉัน (คุณสามารถเห็นได้ในภาพหน้าจอ (Bus 008)) แทนที่ด้วยของคุณเอง

Ctrl+ Oเพื่อบันทึก, Ctrl+ Xเพื่อออกและรีบูต


4
ดีกว่าที่จะรวมสิ่งนี้ไว้ในคำตอบแรกของคุณ
ntc2

1
พวกมันต่างกัน 2 อย่าง คนที่ 1 คือคำตอบของปัญหาการปลุก คนที่สองนั้นเป็นเหมือน "วิธีสร้างกฎเพื่อรันการไม่บู๊ต" และเป็นเพียง "พิเศษ" เนื่องจากทุกคนไม่ทราบวิธีการทำเช่นนั้นและไม่มีคู่มือสมัครเล่นง่ายๆสำหรับสิ่งนั้น
Pavlos Theodorou

2

คำตอบของ Pavlos Theodorou มีประโยชน์มาก ฉันต้องการเพิ่มว่าคุณสามารถค้นหาอุปกรณ์ usb ที่เมาส์ / คีย์บอร์ดของคุณเชื่อมต่อเมื่อบูทเครื่องโดยใช้dmesgผ่านgrepสองครั้งจากนั้นegrepหนึ่งครั้งและในที่สุดก็ใช้tailเพื่อให้แน่ใจว่ามันเป็นอุปกรณ์ล่าสุด การเข้า

เมื่อใช้วิธีนี้คุณไม่ต้องเปิดใช้งานการปลุกบนพอร์ต usb ทั้งหมด

ฉันใส่สิ่งต่อไปนี้ในไฟล์ /etc/rc.local ของฉันและพบตัวรับสัญญาณ logitech ของฉันทุกครั้งแม้ว่าจะย้ายจากพอร์ต usb หนึ่งไปยังอีกพอร์ตหนึ่ง เพียงแค่ใช้แทนชื่อของคุณแป้นพิมพ์หรือเมาส์จาก dmesg ในสถานที่ของ "Logitech K270"

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

สิ่งนี้ใช้งานได้ในการบูต แต่ดูเหมือนจะไม่ทำงานเมื่อถูกปลุกจากการหยุดทำงานชั่วคราวดังนั้นฉันจึงต้องวางไฟล์สคริปต์ไว้ใน / lib / systemd / system-sleep / สร้างมันขึ้นมาตั้งเป็นปฏิบัติการทั่วโลกและให้มันชื่อที่ขึ้นต้นด้วยตัวเลขสองหลักระหว่าง 00 และ 99 สคริปต์ของฉันคือการดังต่อไปนี้อีกครั้ง substite ของคุณแป้นพิมพ์ / verbage เมาส์จาก dmesg:

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

ด้วยเหตุผลบางอย่างที่ฉันไม่สามารถอธิบายได้การนอนหลับ 'โพสต์' หากคำสั่งใช้งานได้เฉพาะการปลุกเท่านั้น ... แต่การนอนหลับ 'ก่อน' ถ้าคำสั่งดูเหมือนว่าจะทำงานทุกครั้ง


1

ไม่มีคำตอบดังกล่าวข้างต้นช่วยฉัน นั่นเป็นเหตุผลที่ฉันโพสต์ที่นี่ของฉันเอง

การเปิด / ปิดการใช้งานการปลุกจากการหยุดชั่วคราวสำหรับอุปกรณ์ USB

ทดสอบใน KDE Neon 5.16.2 บนพื้นฐานของ Ubuntu 18.04 แต่ควรทำงานในการแจกจ่ายใด ๆ


1. แสดงรายการอุปกรณ์ USB เพื่อระบุอุปกรณ์ที่คุณต้องการเปิด / ปิดการใช้งาน:

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

คุณควรได้รับสิ่งนี้:

/ sys / bus / usb / devices / 3-3 / ผลิตภัณฑ์: Cord Optical Mouse
/sys/bus/usb/devices/3-4.3/product:802.11n อะแดปเตอร์ WLAN
/sys/bus/usb/devices/3-4.4/product:USB ตัวรับสัญญาณ
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / devices / usb1 / ผลิตภัณฑ์: EHCI Host Controller
/ sys / bus / usb / devices / usb2 / ผลิตภัณฑ์: EHCI Host Controller
/ sys / bus / usb / devices / usb3 / ผลิตภัณฑ์: xHCI Host Controller
/ sys / bus / usb / devices / usb4 / ผลิตภัณฑ์: xHCI Host Controller


2. ตรวจสอบสถานะการปลุกของอุปกรณ์ USB ทั้งหมด:

grep sys / / รถบัส / USB / อุปกรณ์ / * / พลังงาน / ปลุก

ผลลัพธ์ควรเป็นดังนี้:

sys / / รถบัส / USB / อุปกรณ์ / 1-1 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / 2-1 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / 3-11 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / 3-3 / พลังงาน / ปลุก: เปิดใช้งาน
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
sys / / รถบัส / USB / อุปกรณ์ / 3-4 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / 4-4 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / USB1 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / USB2 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / USB3 / พลังงาน / ปลุก: คนพิการ
sys / / รถบัส / USB / อุปกรณ์ / usb4 / พลังงาน / ปลุก: คนพิการ

ในกรณีที่ฉันเปิดใช้งานการปลุกเฉพาะสำหรับอุปกรณ์ USB 3-3 ที่ตามรายการก่อนหน้านี้คือ "Cord Optical Mouse"

ฉันต้องการเปิดใช้งานการปลุกจากการระงับเฉพาะสำหรับคีย์บอร์ดไร้สายและปิดการใช้งานสำหรับส่วนที่เหลือ ตัวรับสัญญาณ USB ของคีย์บอร์ดเชื่อมต่อกับ HUB และสอดคล้องกับ 3-4.4 ในรายการก่อนหน้า ("ตัวรับสัญญาณ USB")


3. สร้างสคริปต์ที่ใช้งานได้:

หากต้องการได้รับอนุญาตรูท:

sudo su

จากนั้นเราจะสร้างไฟล์สำหรับสคริปต์ (ไฟล์นั้นสามารถเรียกว่า "usbwakeup" หรืออะไรก็ได้ที่คุณต้องการ):

nano /etc/init.d/usbwakeup 

เนื้อหาของไฟล์ เพียงปรับให้เข้ากับความต้องการของคุณโดยเปลี่ยนหัวข้อ "SCRIPT ACTIONS" (ฉันชอบเพิ่มความคิดเห็นให้กับสคริปต์เพื่อที่จะรู้ว่าพวกเขาทำอะไรจริง ๆ ถ้าฉันเปิดพวกเขาอีกครั้งในวันหนึ่ง):

#! / bin / bash
#
#######################
# ข้อมูลทั่วไป #
#######################
#
# - สคริปต์นี้เปิด / ปิดใช้งานการปลุกจาก suspend # สำหรับอุปกรณ์ USB
#
# - สคริปต์ต้องการสิทธิ์ดำเนินการ
#
# - เพื่อให้สคริปต์นี้ทำงานเมื่อระบบเริ่มทำงานจะต้องมี
# ลิงก์สัญลักษณ์ไปยัง /etc/rc3.d/ โดยมีลำดับความสำคัญ S01
# (ตัวอย่างเช่น: /etc/rc3.d/S01usbwakeup)
#
###########################
# คำสั่งที่มีประโยชน์เกี่ยวข้อง #
###########################
#
# - ระบุอุปกรณ์ USB:
# grep sys / / รถบัส / USB / อุปกรณ์ / * / สินค้า
#
# - ตรวจสอบสถานะ "ปลุกการหยุดทำงาน" ของอุปกรณ์ USB:
# grep sys / / รถบัส / USB / อุปกรณ์ / * / พลังงาน / ปลุก
#
#
##################
# การดำเนินการสคริปต์ #
##################
#
# ปิดใช้งานการตื่นจากการหยุดชั่วคราวสำหรับเมาส์ออปติคัล
echo ถูกปิดใช้งาน> / sys / bus / usb / devices / 3-3 / พลังงาน / การปลุก
#
# เปิดใช้งานการปลุกจากคีย์บอร์ดไร้สายชั่วคราว
ที่ฉันเชื่อมต่อกับ USB 3.0 HUB ในพอร์ต USB nr.4
เปิดใช้งาน echo> /sys/bus/usb/devices/3-4.4/power/wakeup


4. ให้สิทธิ์การดำเนินการ:

chmod +x /etc/init.d/usbwakeup


5. สร้างลิงก์สัญลักษณ์ใน /etc/rc3.d/ เพื่อให้เริ่มต้นเมื่อบูทขึ้น:

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


เมื่อรีสตาร์ทระบบทุกอย่างควรทำงานตามที่ระบุในสคริปต์ การเปลี่ยนแปลงจะยังคงอยู่เนื่องจากจะถูกดำเนินการกับการบู๊ตแต่ละครั้ง

แหล่งที่มาปรึกษา (นอกเหนือจากโพสต์นี้):

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


ฉันเพิ่งค้นพบและโพสต์ที่น่าสนใจซึ่งได้อธิบายวิธีสร้าง GUI อย่างง่ายเพื่อจุดประสงค์เดียวกัน ฉันยังไม่ได้ทดสอบ แต่อาจช่วยให้คนที่พยายามทำให้เป็นกราฟิกและด้วยความง่ายในการคลิกเพียงครั้งเดียวเพื่อเปิด / ปิดการใช้งาน: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- hid
Juan Gómez Carrillo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.