ฉันจะปิดการใช้งาน USB ได้อย่างไรเมื่อฉันระงับโน้ตบุ๊ก


19

แสงไฟ LED ของเม้าส์ของฉันกระวนกระวายใจเมื่อฉันหลับ pm-suspendฉันมักจะปิดสมุดบันทึกของฉันในตอนเย็นและบริการโทรอูบุนตู อย่างไรก็ตามปลั๊ก USB ยังคงทำงานด้วยพลังงาน ฉันสามารถชาร์จสมาร์ทโฟนของฉันได้ นี่เป็นสิ่งที่ไม่ดีสำหรับฉันด้วยเหตุผลสองประการ ฉันต้องถอดปลั๊กเมาส์และแพ็คแบตเตอรี่โน้ตบุ๊ค [akku] ใช้เวลาน้อยกว่า มีวิธีการปิดอุปกรณ์ USB ของฉันหรืออุปกรณ์ USB ทั้งหมดโดยอัตโนมัติเมื่อโน้ตบุ๊คเข้าสู่โหมด Suspend หรือไม่

วิธีกำหนดค่า

แก้ไข:ตามที่ร้องขอในความคิดเห็นฉันเพิ่มข้อมูลนี้: ฉันใช้ Lenovo G550

แก้ไข:ตามที่ร้องขอที่นี่เอาต์พุต lsusb ของฉัน

Bus 002 Device 019: ID 1058:25a3 Western Digital Technologies, Inc. 
Bus 002 Device 017: ID 1b1a:7001  
Bus 002 Device 009: ID 2109:2812 VIA Labs, Inc. VL812 Hub
Bus 002 Device 008: ID 2109:2812 VIA Labs, Inc. VL812 Hub
Bus 002 Device 003: ID 0402:5608 ALi Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

แก้ไข:ฉันคิดว่าข้อมูลนี้ยังนำไปสู่คำตอบ

root@localhost:/sys/bus/usb/devices# ls -al
insgesamt 0
drwxr-xr-x 2 root root 0 Okt  6 10:56 .
drwxr-xr-x 4 root root 0 Okt  6 10:56 ..
lrwxrwxrwx 1 root root 0 Okt  6 10:56 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.7/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-3:1.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.1.2:1.1 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1/2-5.1.2/2-5.1.2:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 2-5.2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.2/2-5.2:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 3-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.0/usb3/3-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 4-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.1/usb4/4-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 5-0:1.0 -> ../../../devices/pci0000:00/0000:00:1a.2/usb5/5-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.0 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.1 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 6-1:1.2 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 7-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.1/usb7/7-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 8-0:1.0 -> ../../../devices/pci0000:00/0000:00:1d.2/usb8/8-0:1.0
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb1 -> ../../../devices/pci0000:00/0000:00:1a.7/usb1
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb2
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb3 -> ../../../devices/pci0000:00/0000:00:1a.0/usb3
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb4 -> ../../../devices/pci0000:00/0000:00:1a.1/usb4
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb5 -> ../../../devices/pci0000:00/0000:00:1a.2/usb5
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb6 -> ../../../devices/pci0000:00/0000:00:1d.0/usb6
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb7 -> ../../../devices/pci0000:00/0000:00:1d.1/usb7
lrwxrwxrwx 1 root root 0 Okt  6 10:56 usb8 -> ../../../devices/pci0000:00/0000:00:1d.2/usb8

แก้ไข:

tokam@localhost:~$ lsusb -t
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M
    |__ Port 3: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 3: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 5: Dev 51, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 52, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 54, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
            |__ Port 2: Dev 54, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 53, If 0, Class=Mass Storage, Driver=usb-storage, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/6p, 480M

8
ฉันไม่คิดว่าฟีเจอร์นี้จะทำอย่างไรกับ Ubuntu Windows และ Ubuntu ทำเพื่อฉันบนแล็ปท็อปของฉัน แต่ควรมีการตั้งค่าใน BIOS เพื่อปิดไฟเข้ากับพอร์ต USB ในระหว่างที่หลับ
TheWanderer

1
คุณแน่ใจไหม? Google แสดงข้อมูลให้ฉันสำหรับคำค้นหา "usb suspend ubuntu" แต่ฉันยังไม่แน่ใจ 100% ว่าจะทำอย่างไร hamwaves.com/usb.autosuspend/en askubuntu.com/questions/80638/…
tokam

1
คุณสามารถปิดการใช้งานได้ แต่นั่นก็คือขณะที่ Ubuntu กำลังทำงานอยู่ หากคุณต้องการให้สคริปต์ทำงานก่อนแล็ปท็อปพักเพื่อหยุดพอร์ตเป็นไปได้ แต่อย่างน้อยก็ง่ายกว่าที่จะตรวจสอบการตั้งค่า BIOS สำหรับตัวเลือกนั้น
TheWanderer

1
BIOS ของฉันน่าเสียดายที่ไม่รองรับตัวเลือกดังกล่าว
tokam

1
@tokam คุณสามารถแก้ไขคำถามและเพิ่มแบรนด์และรุ่นของแล็ปท็อปได้หรือไม่ นอกจากนี้คุณยังสามารถยืนยันได้ว่ามันไม่ใช่พอร์ตเพาเวอร์แชร์ USB ตามที่อธิบายไว้ที่นี่: dell.com/support/article/ro/ro/robsdt1/SLN155147/EN (ไอคอนรูปสายฟ้า)
user.dz

คำตอบ:


4

บล็อกสะดุดปัจจุบันที่มีลิงก์ OP ติดตามความคิดเห็นและคำตอบที่เสนอคือ ID ผลิตภัณฑ์คงที่1b1a:7001แต่หมายเลขบัสและอุปกรณ์เปลี่ยนแปลงตลอดเวลา

การแก้ไขปัญหา

สร้างสคริปต์ (ชื่อใด ๆ ที่คุณต้องการ) ในไดเรกทอรี/etc/pm/sleep.d/และวางต่อไปนี้ในมัน:

#!/bin/bash
ZeroBUS=$(lsusb | grep 1b1a:7001 | cut -c  5-7 )

# Strip leading zeros
BUS=$(echo $ZeroBUS | sed 's/^0*//')

# Build "usbX" usb number
USB=usb$BUS

case $1 in
     suspend|suspend_hybrid|hibernate)
     echo "Powering off: " $USB
        echo $USB | sudo tee /sys/bus/usb/drivers/usb/unbind
        ;;
     resume|thaw)
        # No need to do anything here, kernel unsuspends USB devices
        # Show how to power on for interest sake but since device is
        # powered off the usb number will be blank.
        echo "Powering on: " $USB
        echo $USB | sudo tee /sys/bus/usb/drivers/usb/bind
        ;;
esac

ทำเครื่องหมายไฟล์ว่าสามารถใช้งานได้โดยsudo chmod +x file_nameที่ "file_name" เป็นชื่อที่คุณเลือก

คำอธิบาย

โซลูชันนี้จะปิดฮับ USB ทั้งหมดซึ่งในกรณีของฉันหมายถึงโทรศัพท์เมาส์ไร้สายคีย์บอร์ดไร้สาย ฯลฯ เมื่อเรียกสคริปต์จากเทอร์มินัลพรอมต์ต้องป้อนรหัสผ่าน sudo หวังว่าเมื่อเรียกจาก systemd sudo powers ได้รับมรดก ฉันไม่สามารถทดสอบสิ่งนี้ได้เพราะฉันไม่มีเมาส์แบบมีสาย ดังนั้นการปรับแต่งเพิ่มเติมอาจจำเป็นสำหรับพลัง sudo

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

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


โซลูชันที่ง่ายขึ้นปิดพอร์ต USB ทั้งหมด

ฉันเพิ่งพบปัญหาที่พอร์ตที่ไม่รู้จักป้องกันแล็ปท็อปจากการระงับ ฉันพบโซลูชันนี้ (เครดิตเป็นรหัส) ที่ฉันแก้ไข

สร้างไฟล์/lib/systemd/system-sleep/custom-xhci_hcdโดยใช้sudoอำนาจและใส่รหัสนี้:

#!/bin/bash

# Original script was using /bin/sh but shellcheck reporting warnings.

# NAME: custom-xhci_hcd
# PATH: /lib/systemd/system-sleep
# CALL: Called from SystemD automatically
# DESC: Suspend broken for USB3.0 as of Oct 25/2018 various kernels all at once

# DATE: Oct 28 2018.

# NOTE: From comment #61 at: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/522998

TMPLIST=/tmp/xhci-dev-list

# Original script was: case "${1}" in hibernate|suspend)

case $1/$2 in
  pre/*)
    echo "$0: Going to $2..."
    echo -n '' > $TMPLIST
          for i in `ls /sys/bus/pci/drivers/xhci_hcd/ | egrep '[0-9a-z]+\:[0-9a-z]+\:.*$'`; do
              # Unbind xhci_hcd for first device XXXX:XX:XX.X:
               echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/unbind
           echo "$i" >> $TMPLIST
          done
        ;;
  post/*)
    echo "$0: Waking up from $2..."
    for i in `cat $TMPLIST`; do
              # Bind xhci_hcd for first device XXXX:XX:XX.X:
              echo -n "$i" | tee /sys/bus/pci/drivers/xhci_hcd/bind
    done
    rm $TMPLIST
        ;;
esac

ฉันสามารถทดสอบสคริปต์ก่อนที่จะระงับโน้ตบุ๊กด้วยคำสั่ง echo แบบไดนามิกหรือไม่?
tokam

คุณสามารถแยกบัสและอุปกรณ์ที่แสดงใน lsusb ได้สำเร็จ แต่เมื่อคุณชี้ให้เห็นไดเรกทอรีไม่มีอยู่ดังที่แสดงในคำถามไดเรกทอรีมีโครงสร้างที่แตกต่างจาก $ {BUS} - $ {DEVICE} และฉันไม่แน่ใจว่าแม้จะรู้ว่าอันใดที่ถูกต้องงานที่ถูกระงับ
tokam

การทดสอบที่ฉันถอดปลั๊กและเสียบเมาส์ช่วยในการระบุโฟลเดอร์ แต่ดูที่ผลลัพธ์ของการทดสอบถัดไป: Keine Berechtigung หมายถึง: ไม่มีสิทธิ์รูท @ localhost: ~ # echo suspend> /sys/bus/usb/devices/2-5.1.2:1.1/power/level -bash: / sys /bus/usb/devices/2-5.1.2:1.1/power/level: Keine Berechtigung
tokam

เมาส์มี LED อยู่ข้างนอกและเลเซอร์ที่อยู่ด้านล่าง ด้วยการผสมผสานทั้งสองคำตอบที่ได้รับทำให้ฉันสามารถปิดแสงเลเซอร์ของเมาส์ได้ แต่ไม่ใช่ LED ซึ่งจะเพิ่มแสงให้กับสภาพแวดล้อมการนอนของฉัน บางทีเราไม่สามารถปิดไฟ LED โดยเคอร์เนล? ฉันทดสอบบนปลั๊ก USB แบบแยกสำหรับเมาส์
tokam

@tokam หลังจากการวิจัยและการทดสอบจำนวนมากในที่สุดฉันก็สามารถใช้งานระบบของฉันได้ด้วยตนเอง แต่ไม่มีเมาส์ทดสอบ หวังว่ามันจะใช้งานได้!
WinEunuuchs2Unix

5

ค้นหาบัสและอุปกรณ์ # ของเมาส์ด้วยการออกคำสั่งlsusb(โดยไม่ต้องเสียบปลั๊ก) คุณต้องการอันที่นั่นเมื่อเสียบปลั๊กแล้วจดบันทึกตัวเลข ในกรณีของคุณดูเหมือนว่าจะเป็น 6 และ 6

ออกคำสั่งsudo cp /etc/pm/sleep.d/novatel_3g_suspend /etc/pm/sleep.d/mouse_suspend(เราต้องทำเช่นนี้เพราะgeditไม่มีตัวเลือกบันทึกเป็นอีกต่อไปเมื่อเปิดตัวเป็น superuser ที่ฉันสามารถหาได้)

ออกคำสั่งgksu gedit /etc/pm/sleep.d/mouse_suspendเปลี่ยนหมายเลขบัสและอุปกรณ์เพื่อให้ตรงกับหมายเลขที่คุณจดบันทึกไว้ก่อนหน้านี้ บันทึกไฟล์ผลลัพธ์ มันจะถูกดำเนินการเมื่อคุณระงับแล็ปท็อปของคุณ

ในกรณีของคุณคุณควรเปลี่ยน BUS = X และ DEVICE = Y เป็นหมายเลข Bus และอุปกรณ์ที่ตรงกับเมาส์ที่สงสัย สิ่งนี้จะทำงานจนกว่าคุณจะย้ายอุปกรณ์ไปยังพอร์ตอื่นซึ่งในกรณีนี้คุณจะต้องค้นหาอุปกรณ์อีกครั้งและปรับไฟล์ตามนั้น

BUS=X
DEVICE=Y

if [ ! -x /sys/bus/usb/devices/${BUS}-${DEVICE}/power/level ]; then
    exit 0
fi

case $1 in
     suspend|suspend_hybrid|hibernate)
    echo suspend > /sys/bus/usb/devices/${BUS}-${DEVICE}/power/level
        ;;
     resume|thaw)
    # No need to do anything here, kernel unsuspends USB devices
    :
        ;;
esac

ความคิดเห็นในไฟล์ (บรรทัดที่ขึ้นต้นด้วย #) ไม่เกี่ยวข้องและสามารถละเว้นได้อย่างปลอดภัย

หมายเหตุ: ฉันทดสอบผ่านทาง Suspend บนเดสก์ท็อปและทำงานได้ตามที่โฆษณาไว้ ฉันไม่สามารถเข้าถึงฮาร์ดแวร์เดียวกับที่คุณมี แต่ฉันต้องกลับมาทำงานระบบผ่านปุ่มเปิด / ปิดดังนั้นฉันค่อนข้างมั่นใจว่ามันจะทำงานให้คุณ

แก้ไขตามความคิดเห็นและการขยายคำถาม:

ดูเหมือนว่านี่คือข้อมูลที่คุณต้องดำเนินการ: Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver


ในgeditUbuntu 16.04 วานิลลาของฉันอัพเกรดจาก 14.04 มีSave asตัวเลือกใต้Fileเมนู มีบางอย่างเกิดขึ้นกับการกำหนดค่าของคุณ ??? ป.ล. คำตอบที่ดีฉันจะลองในภายหลัง
WinEunuuchs2Unix

ฉันมีไฟล์บันทึกเช่นกันโดยใช้ Ubuntu Mate
tokam

@ WinEunuuchs2Unix น่าสนใจ ไม่ปรากฏว่ามีอยู่ในการติดตั้งใหม่ บางทีนี่อาจเป็นพื้นฐานสำหรับคำถามใหม่ ....
Elder Geek

@ElderGeek การอัปเดตSave Asหากฉันพิมพ์geditฉันจะได้รับเมนูบรรทัดบนสุดทั้งหมดของ "แก้ไขไฟล์ดูเครื่องมือค้นหาเอกสารช่วยเหลือ" แต่ถ้าฉันพิมพ์gksu geditรายการเมนูจะไม่ปรากฏขึ้น HTH
WinEunuuchs2Unix

1
@tokam คุณสามารถอัปเดตคำถามของคุณด้วยเอาต์พุตจากlsusb -tและlsusbเชื่อมต่อกับอุปกรณ์ทั้งหมดของคุณได้ตามปกติโดยใช้แบบวันต่อวัน นั่นอาจช่วยให้เราเห็นภาพของฮับและสิ่งที่ไม่
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.