Làm cách nào để tắt nguồn USB cho chuột khi tôi treo máy tính xách tay?


19

Đèn LED của chuột làm tôi lo lắng khi ngủ. Tôi thường đóng máy tính xách tay của mình vào buổi tối và các cuộc gọi Ubuntu pm-suspend. Dù sao, phích cắm USB vẫn được phục vụ với nguồn điện. Tôi thậm chí có thể sạc điện thoại thông minh của tôi. Điều này là xấu cho tôi vì hai lý do. Tôi phải rút chuột ra và bộ pin máy tính xách tay [akku] kéo dài ít hơn. Có cách nào để tự động tắt thiết bị USB của tôi hoặc tất cả các thiết bị USB khi máy tính xách tay chuyển sang chế độ treo không?

Làm thế nào để cấu hình nó?

EDIT: Theo yêu cầu trong các bình luận, tôi thêm thông tin này: Tôi đang sử dụng Lenovo G550.

EDIT: Theo yêu cầu ở đây đầu ra lsusb của tôi

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

EDIT: Tôi nghĩ thông tin này cũng dẫn đến câu trả lời.

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

BIÊN TẬP:

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
Tôi không nghĩ rằng tính năng tính phí ngủ này là một cái gì đó để làm với Ubuntu. Windows và Ubuntu làm điều đó cho tôi trên máy tính xách tay của tôi. Thay vào đó, nên có một cài đặt trong BIOS để tắt nguồn cho các cổng USB trong khi ngủ.
TheWanderer

1
Bạn có chắc không? Google chỉ cho tôi một số thông tin cho từ khóa "usb treo ubfox". Nhưng tôi chưa chắc chắn 100% làm thế nào cho đúng. hamwaves.com/usb.autosuspend/en askubuntu.com/questions/80638/...
tokam

1
Chà, bạn có thể vô hiệu hóa chúng, nhưng đó là trong khi bản thân Ubuntu đang chạy. Nếu bạn muốn tạo các tập lệnh để chạy trước khi máy tính xách tay ngủ để tạm dừng các cổng, thì có thể, nhưng ít nhất sẽ dễ dàng hơn để kiểm tra cài đặt BIOS của bạn cho tùy chọn đó.
TheWanderer

1
Rất tiếc, BIOS của tôi không hỗ trợ tùy chọn như vậy.
tokam

1
@tokam, bạn có thể chỉnh sửa câu hỏi và thêm thương hiệu và kiểu máy tính xách tay không? Ngoài ra, bạn có thể xác nhận rằng đó không phải là cổng chia sẻ nguồn USB như được giải thích ở đây: dell.com/support/article/ro/ro/robsdt1/SLN155147/EN (biểu tượng tia sét)
user.dz

Câu trả lời:


4

Khối vấp ngã hiện tại với các liên kết OP, theo dõi các bình luận và câu trả lời được đề xuất là ID sản phẩm là tĩnh 1b1a:7001 nhưng số Bus và Thiết bị vẫn thay đổi.

Giải pháp

Tạo một tập lệnh (bất kỳ tên nào bạn muốn) trong thư mục /etc/pm/sleep.d/và đặt đoạn mã sau vào đó:

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

Đánh dấu tệp là tệp thực thi với sudo chmod +x file_name"file_name" là tên bạn đã chọn.

Lời giải thích

Giải pháp này tắt toàn bộ trung tâm USB, trong trường hợp của tôi có nghĩa là điện thoại, chuột không dây, bàn phím không dây, v.v. Khi gọi tập lệnh từ thiết bị đầu cuối, nhắc nhập mật khẩu sudo. Hy vọng khi được gọi từ quyền hạn sudo systemd được kế thừa. Tôi không thể kiểm tra điều này mặc dù tôi không có chuột có dây. Do đó, sàng lọc bổ sung có thể cần thiết cho quyền hạn sudo.

Nguồn điện không bị cắt về mặt vật lý khi BIOS cung cấp nguồn điện 5V không đổi, thay vào đó các thiết bị trên xe buýt sẽ tự tắt. Trong trường hợp của tôi, bàn phím và chuột không dây ngừng hoạt động và phải dùng đến bàn phím máy tính xách tay và bàn di chuột để bật lại nguồn.

Bạn có thể kiểm tra điều này bằng tay bằng cách gọi tập lệnh và truyền tham số "tạm dừng". Truyền tham số "tiếp tục" không thực hiện được gì vì thiết bị đã tắt nguồn, thiết bị không có ID thiết bị để bật lại.


Giải pháp dễ dàng hơn tắt tất cả các cổng USB

Gần đây tôi gặp phải một vấn đề trong đó một cổng không xác định đang ngăn máy tính xách tay ngừng hoạt động. Tôi tìm thấy giải pháp này (tín dụng bằng mã) mà tôi đã sửa đổi.

Tạo tập tin /lib/systemd/system-sleep/custom-xhci_hcdbằng sudoquyền hạn và chèn mã này:

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

Tôi có thể kiểm tra tập lệnh bằng cách nào đó trước khi thực sự treo máy tính xách tay bằng lệnh echo không động không?
tokam

bạn đã có thể cách ly thành công xe buýt và thiết bị cũng được hiển thị trong lsusb, nhưng như bạn đã chỉ ra thư mục không tồn tại, như trong câu hỏi, các thư mục có cấu trúc khác với $ {BUS} - $ {DEVICE} , và tôi không chắc liệu ngay cả khi biết ai là người đúng thì công việc đình chỉ
tokam

Một thử nghiệm trong đó tôi rút phích cắm và cắm lại chuột đã giúp xác định thư mục. Nhưng hãy nhìn vào kết quả của bài kiểm tra tiếp theo: Keine Berechtigung có nghĩa là: không có quyền root @ localhost: ~ # echo đình chỉ> /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

Chuột có đèn LED ở bên ngoài và tia laser ở phía dưới. Với sự kết hợp của cả hai câu trả lời được cung cấp, tôi có thể tắt tia laser của chuột, nhưng không phải là đèn LED, giúp thêm ánh sáng vào môi trường ngủ của tôi. Có lẽ chúng ta không thể tắt đèn LED bằng Kernel? Tôi đã thử nó trên một phích cắm USB bị cô lập cho chuột.
tokam

@tokam Sau rất nhiều nghiên cứu và thử nghiệm, cuối cùng tôi cũng có được nó để hoạt động trên hệ thống của mình một cách thủ công nhưng không có chuột để kiểm tra nó. Hy vọng nó hoạt động!
WinEunuuchs2Unix

5

Tìm xe buýt và số thiết bị của chuột bằng cách ra lệnh lsusb (có và không có cắm) bạn muốn cái đó chỉ ở đó khi nó được cắm. Hãy ghi lại các con số. Trong trường hợp của bạn, chúng có vẻ là 6 và 6

ban hành lệnh sudo cp /etc/pm/sleep.d/novatel_3g_suspend /etc/pm/sleep.d/mouse_suspend(chúng ta phải làm điều này vì geditkhông còn tùy chọn Save As khi được khởi chạy dưới dạng siêu người dùng mà tôi có thể tìm thấy.)

ban hành lệnh gksu gedit /etc/pm/sleep.d/mouse_suspendThay đổi số xe buýt và thiết bị để khớp với số bạn đã lưu ý trước đó. Lưu tập tin kết quả. Nó sẽ được thực thi khi bạn treo máy tính xách tay của bạn.

Trong trường hợp của bạn, bạn nên thay đổi BUS = X và DEVICE = Y thành số Bus và số thiết bị khớp với con chuột đang đề cập. Điều này sẽ hoạt động cho đến khi bạn di chuyển thiết bị sang một cổng khác, trong trường hợp đó bạn sẽ phải xác định lại thiết bị và điều chỉnh tệp cho phù hợp.

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

Các ý kiến ​​trong tệp (dòng bắt đầu bằng #) không liên quan và có thể được bỏ qua một cách an toàn.

Lưu ý: Tôi đã thử nghiệm điều này qua Suspend trên máy tính để bàn và nó hoạt động như quảng cáo. Tôi không có quyền truy cập vào cùng phần cứng mà bạn có nhưng tôi phải tiếp tục hệ thống thông qua nút nguồn nên tôi khá chắc chắn điều này sẽ phù hợp với bạn.

Chỉnh sửa dựa trên ý kiến ​​và mở rộng câu hỏi:

Dường như đây là thông tin bạn cần tiến hành: Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver


Trong bản geditnâng cấp Ubuntu 16.04 vanilla của tôi từ 14.04, có một Save astùy chọn trong Filemenu. Một cái gì đó đã xảy ra với cấu hình của bạn ??? PS trả lời tốt, tôi sẽ thử nó sau.
WinEunuuchs2Unix

Tôi cũng có tệp lưu, sử dụng Ubuntu Mate.
tokam

@ WinEunuuchs2Unix Thú vị. Nó dường như không tồn tại trên một bản cài đặt mới. Có lẽ đây là cơ sở cho một câu hỏi mới ....
Elder Geek

@ElderGeek Một bản cập nhật Save Asnếu tôi nhập geditTôi nhận toàn bộ menu dòng trên cùng của "Chỉnh sửa tệp Xem công cụ tìm kiếm tài liệu trợ giúp" nhưng nếu tôi nhập gksu geditdanh sách menu sẽ không xuất hiện. HTH.
WinEunuuchs2Unix

1
@tokam Bạn có thể cập nhật câu hỏi của mình với đầu ra từ lsusb -tlsusbvới tất cả các thiết bị của bạn được cắm như bạn thường sử dụng chúng hàng ngày. Điều đó có thể giúp chúng ta hình dung trung tâm và những gì không.
WinEunuuchs2Unix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.