ฉันมีปัญหาเดียวกันกับ Ubuntu 16.04 (Xenial Xerus) และค้นหาวิธีการแก้ปัญหาใด ๆ ...
การแก้ปัญหาอยู่ท้ายคำตอบนี้ถ้าคุณไม่สนใจเรื่องบริบท บริบทอาจดูเหมือน blabla ที่ไม่สมควร (อาจเป็น) แต่ฉันคิดว่ามันสามารถช่วยให้ผู้อ่านตรวจสอบว่าปัญหาที่ฉันแก้ไขบนพีซีของฉันนั้นเหมือนกับของพวกเขาหรือไม่
บริบท
ฉันทดสอบอย่างไม่ประสบความสำเร็จใกล้กับเคล็ดลับทุกอย่างที่ฉันพบในเว็บรีบูตเครื่องหลังจากลองแต่ละครั้ง:
usbcore.autosuspend=-1
พารามิเตอร์การบูตเคอร์เนล '/ etc / default / grub'
- โหมดแล็ปท็อปของ 'runtime-pm.conf'
CONTROL_RUNTIME_AUTOSUSPEND=0
- ปิดการใช้งานเครื่องมือโหมดแล็ปท็อปอย่างสมบูรณ์จากไฟล์ '/etc/laptop-mode/laptop-mode.conf' เพื่อยืนยันว่าปัญหาไม่ได้เกี่ยวข้องกับคุณสมบัติเคอร์เนลนี้ ฉันได้ตรวจสอบวิธีต่างๆที่laptop_modeไม่ทำงานอีกต่อไปเพื่อให้แน่ใจ (Ref:
man laptop-mode.conf
& man laptop_mode
)
- ฉันได้อ่านเทคนิคบางอย่างเกี่ยวกับ '/etc/laptop-mode/conf.d/usb-autosuspend.conf' แต่ไฟล์นี้ไม่มีอยู่ใน Ubuntu 16.04 ในรุ่นของฉันที่มี laptop-mode-tools v1.68
- การถอนการติดตั้งแอปพลิเคชัน powertop มักจะสงสัยในฟอรัมเพื่อทำให้เกิดปัญหาอัตโนมัติและวันนี้ฉันรู้ว่ามันไม่เป็นความจริงในกรณีของฉันเนื่องจากการถอนการติดตั้งไม่ได้แก้ไขอะไรเลย
options usbcore autosuspend=1
ใน '/etc/modprobe.d/usb.conf' ก็ไม่มีประสิทธิภาพเช่นกัน
- สคริปต์ '/etc/udev/rules.d/60-power.rules' จัดทำโดยGentoo Official Wiki
rules
ไฟล์เฉพาะอุปกรณ์สำหรับudev
'/etc/udev/rules.d/usb-power.rules' ที่แนะนำโดยSerge Y. Stroobandt
หลังจากได้อ่านเนื้อหาทางเทคนิคทั้งหมดนี้ฉันเพียง แต่เข้าใจว่าสาเหตุนั้นเกี่ยวข้องกับค่า '/ sys / โมดูล / usbcore / พารามิเตอร์ / autosuspend' ของฉันติดอยู่ที่สองวินาทีไม่ว่าฉันจะทำอะไรกับการกำหนดค่าของฉัน คุณสามารถตรวจสอบได้ด้วยcat
คำสั่ง:
$ cat /sys/module/usbcore/parameters/autosuspend
2
และใช่เมาส์ของฉันถูกปิดการใช้งานหลังจากสองวินาทีดังนั้นฉันรู้ว่าฉันกำลังทางที่ถูกต้อง แน่นอนฉันได้ทดสอบecho -1
คำสั่งที่ฉันเห็นที่นี่และที่นั่น-1
ตั้งใจจะปิดการใช้งานอัตโนมัติ ... แต่:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
ฉันไม่เข้าใจว่าทำไมการอนุญาตถูกปฏิเสธแม้ในโหมด sudo ฉันไม่ได้พยายามรูทเพราะฉันไม่คิดว่ามันจะเป็นปัญหา นี่คือความผิดพลาด :(
ขอบคุณที่ความคิดเห็นของ Alex Dekker & Bryceฉันได้เรียนรู้วิธีปิดใช้งานการระงับอัตโนมัติสำหรับเมาส์เท่านั้น แต่แน่นอนว่าการพยายามครั้งแรกของฉันล้มเหลวด้วยสิ่งนี้bash: Permission denied error
ดังนั้นฉันต้องรอความเข้าใจเกี่ยวกับความสับสนระหว่างรูท / sudo ก่อนที่echo -1
คำสั่งของ Alex จะทำงานได้ในที่สุด
ฉันได้พบวิธีที่ดีกว่าในการรันคำสั่งในฐานะผู้ใช้รูทโดยไม่ต้องล็อกอินเหมือนรูท ความแตกต่างระหว่างเปลือกรากและการใช้งานคำสั่งรากเป็นอย่างดีที่อธิบายไว้ในอย่างเป็นทางการของ Ubuntu หน้าวิกิพีเดีย RootSudo ฉันชอบที่จะเรียนรู้สิ่งต่าง ๆ เหล่านี้ แต่เฮ้! ทำไมต้องเรียนรู้วิธีเจ็บปวดเสมอ ฮ่า ๆ
OMG มันเป็นอาการปวดหัวที่แท้จริงและใช้เวลานานสำหรับ noob อย่างที่ฉันเข้าใจเพราะฉันมักจะพูดว่า "ไม่มีสมองที่ไม่ได้รับ" ฉันต้องการการฝึกอบรมเพิ่มเติมอย่างชัดเจน
ดังนั้นเราจะหยุดพูดเกี่ยวกับตัวเองและไปแก้ไขมัน! กรุณาดำเนินการด้านล่าง ...
ฉันขอแนะนำวิธีที่สองสำหรับ HDD ภายนอกที่ไม่ได้ใช้งานเพื่อไม่ให้แบตเตอรี่แล็ปท็อปของคุณว่างเปล่า แต่ฉันให้วิธีแก้ปัญหาทั้งสองกับคุณเพราะใครที่รักอิสระในตัวเขาเองก็ควรรักซึ่งกันและกันด้วยเช่นกัน :)
แนวทางแก้ไข 1
หากต้องการปิดใช้งานการระงับอัตโนมัติในทุกอุปกรณ์ / พอร์ต USB
เปิด Terminal และดำเนินการ:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
นี่เป็นวิธีแก้ปัญหาชั่วคราวที่ช่วยให้คุณสามารถทดสอบได้ทันทีว่าคำสั่งนี้แก้ไขปัญหาเมาส์หรือคีย์บอร์ดของคุณโดยอัตโนมัติหรือไม่
หากอุปกรณ์ USB ของคุณใช้งานได้ในตอนนี้เพียงแค่แก้ไขสคริปต์ '/etc/rc.local' ของคุณเพื่อที่จะเรียกใช้คำสั่งนั้นเมื่อใดก็ตามที่ระบบบูต วิธีนี้คุณจะทำให้การแก้ไขปัญหาของชนิดถาวร แก้ไขไฟล์เช่น nano:
sudo nano /etc/rc.local
และวางecho -1
คำสั่งในไฟล์ '/etc/rc.local' ของคุณต่อหน้าexit 0
บรรทัด
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/module/usbcore/parameters/autosuspend
exit 0
รีสตาร์ทคอมพิวเตอร์ของคุณ
(โปรดตรวจสอบหมายเหตุสำคัญในตอนท้าย)
.
แนวทางแก้ไข 2
หากต้องการปิดใช้งานการระงับอัตโนมัติสำหรับอุปกรณ์ / พอร์ต USB เฉพาะ
ตัวเลือกการใช้พลังงานสำหรับอุปกรณ์ USB /sys/bus/usb/devices/n-n/power
อยู่ใน อะไรn-n
เป็นอุปกรณ์ที่กำหนดต้องมีการจัดการไม่กี่ที่จะหา แต่ก็ไม่ซับซ้อน ตัวอย่างด้านล่างแสดงให้เห็นว่าฉันได้พิจารณาแล้วว่าหมายเลขพอร์ต USB ของตัวรับเมาส์ไร้สายของฉันคือ3-1
อะไรดังนั้นโปรดปรับตัวให้เข้ากับสถานการณ์ของคุณ:
ถอดอุปกรณ์ USB ของคุณเปิด Terminal แล้วดำเนินการsudo dmesg
คำสั่ง
เชื่อมต่ออุปกรณ์ USB ของคุณกลับมาแล้วดำเนินการsudo dmesg
อีกครั้งใน Terminal เพื่อตรวจสอบการเปลี่ยนแปลง
นี่คือจุดสิ้นสุดของdmesg
เอาต์พุตคำสั่งของฉันหลังจากที่เสียบเม้าส์ของฉันกลับเข้าไปในช่องเสียบ:
[40208.575249] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[40208.705233] usb 3-1: New USB device found, idVendor=062a, idProduct=4102
[40208.705240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[40208.705245] usb 3-1: Product: 2.4G Wireless Mouse
[40208.705248] usb 3-1: Manufacturer: MOSART Semi.
[40208.707679] input: MOSART Semi. 2.4G Wireless Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/input/input24
[40208.763946] hid-generic 0003:062A:4102.0007: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MOSART Semi. 2.4G Wireless Mouse] on usb-0000:00:14.0-1/input0
ตอนนี้เราจะเห็นได้ว่าพอร์ตที่อุปกรณ์ USB usb 3-1
ของฉันได้รับเสียบในถูกระบุว่าเป็น
**Note:** this trick concerns the USB port ID, not a device ID. For example, if I plug my mouse to the next USB port, it becomes identified as `usb 3-2` in the `dmesg` result. But this solution #2 remains very useful if you take the habit to always plug your mice or keyboard to the same port, and it's generally what people use to do unconsciously ;)
ดำเนินการคำสั่งต่อไปนี้ใน Terminal ของคุณเปลี่ยนหมายเลขพอร์ตของฉัน3-1
ด้วยคำสั่งที่คุณพบในdmesg
ผลลัพธ์ของคุณเอง:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
ทราบว่าautosuspend_delay_ms
ได้เข้ามาแทนที่เลิกใช้autosuspend
ตั้งแต่รุ่นเคอร์เนล 2.6.38 ตามเอกสารที่เป็นทางการลินุกซ์
นี่เป็นวิธีแก้ปัญหาชั่วคราวแต่ตอนนี้คุณสามารถทดสอบได้อย่างง่ายดายว่าคำสั่งนี้แก้ไขปัญหาเมาส์หรือคีย์บอร์ดของคุณโดยอัตโนมัติหรือไม่
หากอุปกรณ์ USB ของคุณทำงานได้ดีในตอนนี้เพียงแค่แก้ไขสคริปต์ '/etc/rc.local' ของคุณเพื่อที่จะเรียกใช้คำสั่งนั้นเมื่อใดก็ตามที่ระบบบูต วิธีนี้คุณจะทำให้การแก้ไขปัญหาของชนิดถาวร แก้ไขไฟล์เช่น nano:
sudo nano /etc/rc.local
และวางecho -1
คำสั่งในไฟล์ '/etc/rc.local' ของคุณต่อหน้าexit 0
บรรทัดอีกครั้งอย่าลืมเปลี่ยนหมายเลขพอร์ตn-n
ในคำสั่ง:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
exit 0
รีสตาร์ทคอมพิวเตอร์ของคุณ
.
สำคัญ:อย่าลืมว่าคุณจะต้องดำเนินการsudo sh -c
คำสั่ง "ชั่วคราว" อีกครั้งด้วยตนเองหากคุณตัดการเชื่อมต่อ / เชื่อมต่ออุปกรณ์ USB ของคุณในขณะที่สภาพแวดล้อมเดสก์ทอปของคุณเริ่มต้นแล้วแม้ว่าคุณจะเสียบกลับเข้าไปในปลั๊ก USB เดียวกัน ปกติเพียงเพราะไฟล์ '/etc/rc.local' ถูกเรียกเพียงครั้งเดียวเมื่อเริ่มต้นระบบ
อย่างไรก็ตามการแก้ไขปัญหาเป็นไปได้ คนที่มีทักษะดีกว่าอาจมีวิธีที่ฉลาดกว่า แต่ฉันได้กำหนดค่านามแฝงเฉพาะพอร์ตใน Ubuntu มันช่วยให้ฉันสามารถใช้คำสั่งแบบง่ายusb1
หรือusb2
แบบเลือกได้หากฉันต้องถอด / เสียบอุปกรณ์ USB ของฉันที่นี่หรือที่นั่น คุณก็ด้วย! คุณสามารถสร้างนามแฝงคำสั่งเพื่อเล่นด้วยคำสั้น ๆ แทนที่จะพิมพ์คำสั่งแบบเต็ม ตั้งค่าได้ง่ายภายในเวลาไม่ถึงสองนาทีและใช้งานได้กับAlt+ F2:)
ความคิดเพิ่มเติมเพื่อให้ง่ายขึ้นก็จะยินดีมาก