जब मैं नोटबुक को निलंबित करता हूं, तो अपने माउस को यूएसबी पावर कैसे बंद करें?


19

मेरे माउस का एलईडी प्रकाश सोते समय मेरी नसों पर हो जाता है। मैं आमतौर पर शाम और उबंटू कॉल में अपनी नोटबुक बंद कर देता हूं pm-suspend। वैसे भी, USB प्लग को अभी भी पावर के साथ परोसा जाता है। मैं अपना स्मार्टफोन भी चार्ज कर सकता था। यह मेरे लिए दो कारणों से बुरा है। मुझे अपने माउस को अनप्लग करना है और नोटबुक बैटरी पैक [akku] कम रहता है। क्या मेरे USB डिवाइस, या सभी USB उपकरणों को स्वचालित रूप से बंद करने का एक तरीका है, जब नोटबुक निलंबित मोड में जाता है?

इसे कैसे कॉन्फ़िगर करें?

संपादित करें: जैसा कि टिप्पणियों में अनुरोध किया गया है, मैं इस जानकारी को जोड़ता हूं: मैं एक लेनोवो जी 550 का उपयोग कर रहा हूं।

संपादित करें: यहाँ मेरे 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
मुझे नहीं लगता कि यह स्लीप चार्ज फीचर उबंटू के साथ कुछ करना है। विंडोज और उबंटू मेरे लैपटॉप पर मेरे लिए करते हैं। इसके बजाय, नींद के दौरान यूएसबी पोर्ट पर बिजली बंद करने के लिए BIOS में एक सेटिंग होनी चाहिए।
द वेंडर सेप

1
क्या आपको यकीन है? Google ने मुझे "usb suspend ubuntu" कीवर्ड के लिए कुछ जानकारी दिखाई। लेकिन मैं अभी तक 100% निश्चित नहीं हूं कि यह कैसे करना है। hamwaves.com/usb.autosuspend/en askubuntu.com/questions/80638/…
tokam

1
वैसे आप उन्हें निष्क्रिय कर सकते हैं, लेकिन यह उबंटू खुद चल रहा है। यदि आप पोर्ट को निलंबित करने के लिए लैपटॉप के सोने से पहले चलाने के लिए स्क्रिप्ट बनाना चाहते हैं, तो यह संभव है, लेकिन उस विकल्प के लिए कम से कम अपनी BIOS सेटिंग्स की जांच करना आसान होने वाला है।
वेंडर

1
मेरा BIOS दुर्भाग्य से इस तरह के विकल्प का समर्थन नहीं करता है।
तोकाम

1
@tokam, क्या आप प्रश्न को संपादित कर सकते हैं और लैपटॉप के ब्रांड और मॉडल को जोड़ सकते हैं ? आप यह भी पुष्टि कर सकते हैं कि यह एक USB पॉवर-शेयर पोर्ट नहीं है जैसा कि यहाँ बताया गया है: dell.com/support/article/ro/ro/robsdt1/SLN155147/EN (लाइटनिंग बोल्ट आइकन)
user.dz

जवाबों:


4

ओपी लिंक, वर्तमान टिप्पणियों और प्रस्तावित उत्तरों के साथ वर्तमान ठोकर का उत्पाद आईडी स्थिर है, 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 शक्तियां विरासत में मिली हैं। मैं इसका परीक्षण नहीं कर सका, क्योंकि मेरे पास वायर्ड माउस नहीं है। इसलिए 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

क्या वास्तव में एक गैर गतिशील इको कमांड के साथ नोटबुक को निलंबित करने से पहले मैं किसी तरह स्क्रिप्ट का परीक्षण कर सकता हूं?
टोकम

आप बस और डिवाइस को सफलतापूर्वक अलग करने में सक्षम थे जो कि lsusb में भी दिखाया गया है, लेकिन जैसा कि आपने बताया कि निर्देशिका मौजूद नहीं है, जैसा कि प्रश्न में दिखाया गया है, निर्देशिका में $ {BUS} - $ {DEVICE} से भिन्न संरचना है , और मुझे यकीन नहीं है कि अगर यह जानने के बावजूद कि कौन सा सही काम है
tokam

एक परीक्षण जिसमें मैंने अनप्लग किया था और माउस को पहचानने में मदद की थी। लेकिन अगले परीक्षण के आउटपुट को देखें: कीन बेराचिटुंग का मतलब है: कोई अनुमति रूट @ लोकलहोस्ट: ~ # इको ​​सस्पेंड> / 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: कीन बेरेचिगंग
तोकाम

माउस में बाहर की तरफ एक एलईडी और नीचे एक लेजर है। प्रदान किए गए दोनों उत्तरों के संयोजन के साथ, मैं माउस के लेजर को बंद करने में सक्षम था, लेकिन एलईडी नहीं, जो कि मेरे सोने के वातावरण को प्रकाश में जोड़ता है। शायद हम कर्नेल द्वारा एलईडी को बंद नहीं कर सकते हैं? मैंने इसे माउस के लिए एक अलग USB प्लग पर परीक्षण किया।
टोकम

@tokam बहुत शोध और परीक्षण के बाद आखिरकार मैंने इसे अपने सिस्टम पर मैन्युअल रूप से काम करने के लिए प्राप्त किया, लेकिन इसे परीक्षण करने के लिए आपके माउस नहीं है। उम्मीद है कि यह काम करता है!
विनयुनुच्स

5

अपने माउस की बस और डिवाइस # को कमांड जारी करके lsusb(इसके बिना और प्लग किए बिना) खोजें। आप चाहते हैं कि केवल वही हो, जब वह प्लग में हो। संख्याओं पर ध्यान दें। आपके मामले में वे 6 और 6 प्रतीत होते हैं

आदेश जारी करें sudo cp /etc/pm/sleep.d/novatel_3g_suspend /etc/pm/sleep.d/mouse_suspend(हमें यह करना होगा क्योंकि geditअब सुपरसुसर के रूप में लॉन्च किए जाने पर सेव अस विकल्प नहीं है जो मुझे मिल सकता है।)

आदेश जारी करें जो gksu gedit /etc/pm/sleep.d/mouse_suspendआपने पहले नोट किया था उससे मेल खाने के लिए बस और डिवाइस नंबर बदलें। परिणामी फ़ाइल को सहेजें। यह तब निष्पादित किया जाएगा जब आप अपने लैपटॉप को निलंबित कर देंगे।

आपके मामले में आपको बस और डिवाइस नंबरों में बस = और डिवाइस को बस में बदलना चाहिए जो प्रश्न में माउस से मेल खाते हैं। यह तब तक काम करेगा जब तक आप डिवाइस को एक अलग पोर्ट पर नहीं ले जाते हैं, उस स्थिति में आपको डिवाइस को फिर से ढूंढना होगा और तदनुसार फाइल को समायोजित करना होगा।

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

फ़ाइल में टिप्पणियां (# से शुरू होने वाली रेखाएं) अप्रासंगिक हैं और इसे सुरक्षित रूप से अनदेखा किया जा सकता है।

नोट: मैंने इसे एक डेस्कटॉप पर सस्पेंड के माध्यम से परीक्षण किया और इसने विज्ञापित के रूप में काम किया। मेरे पास आपके पास उसी हार्डवेयर तक पहुंच नहीं है, लेकिन मुझे पावर बटन के माध्यम से सिस्टम को फिर से शुरू करना होगा, इसलिए मुझे पूरा यकीन है कि यह आपके लिए काम करेगा।

टिप्पणियों और प्रश्न के विस्तार के आधार पर संपादित करें:

ऐसा प्रतीत होता है कि यह वह जानकारी है जिसे आपको आगे बढ़ने की आवश्यकता है: Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver


मेरे geditUbuntu 16.04 वेनिला के उन्नयन में 14.04 से मेनू के Save asनीचे एक विकल्प है File। आपके कॉन्फ़िगरेशन के लिए कुछ हुआ होगा ??? पुनश्च अच्छा जवाब, मैं इसे बाद में कोशिश करूँगा।
WinEunuuchs2Unix

उबंटू मेट का उपयोग करते हुए मेरे पास फाइल सेव भी है।
टोकम

@ WinEunuuchs2Unix दिलचस्प। यह एक ताजा स्थापित करने के लिए मौजूद नहीं है। शायद यह एक नए सवाल का आधार है ....
एल्डर गीक

@ElderGeek Save Asअगर मैं टाइप करता geditहूं तो एक अपडेट "फाइल एडिट व्यू सर्च टूल डॉक्यूमेंट्स हेल्प" का पूरा टॉप लाइन मेन्यू मिलता है, लेकिन अगर मैं टाइप gksu geditकरता हूं तो मेन्यू लिस्ट दिखाई नहीं देती है। HTH।
विनयुनुच्स

1
@tokam क्या आप आउटपुट से अपने प्रश्न को अपडेट कर सकते हैं lsusb -tऔर lsusbअपने सभी उपकरणों को प्लग इन कर सकते हैं जैसा कि आप सामान्य रूप से दिन-प्रतिदिन उपयोग करते हैं। यह हब की कल्पना करने में हमारी मदद कर सकता है और क्या नहीं।
विनयुनुच्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.