Як відключити живлення USB в миші, коли я призупиняю ноутбук?


19

Світлодіодне світло миші потрапляє мені на нерви під час сну. Зазвичай я закриваю свій ноутбук увечері і дзвінки Ubuntu pm-suspend. У будь-якому разі, розетка USB все ще подається з живленням. Я міг би навіть зарядити свій смартфон. Це погано для мене з двох причин. Мені потрібно відключити мишу, і батарея ноутбука [akku] працює менше. Чи є спосіб автоматичного вимкнення мого USB-пристрою або всіх USB-пристроїв, коли ноутбук переходить у режим призупинення?

Як це налаштувати?

EDIT: Як вимагають у коментарях, я додаю цю інформацію: я використовую Lenovo G550.

EDIT: Як вимагається тут мій вихід 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

EDIT: Я думаю, що ця інформація також призводить до відповіді.

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-портів під час сну.
The Wanderer

1
Ти впевнений? Google показав мені інформацію про ключове слово "usb suspend ubuntu". Але я ще не на 100% впевнений, як це зробити правильно. hamwaves.com/usb.autosuspend/en askubuntu.com/questions/80638/…
tokam

1
Ну ви можете їх відключити, але це поки працює сам Ubuntu. Якщо ви хочете змусити запускати сценарії до того, як ноутбук спить, щоб призупинити порти, можливо, але принаймні перевірити налаштування BIOS для цієї опції буде простіше.
TheWanderer

1
На жаль, моя BIOS не підтримує такий варіант.
токам

1
@tokam, ви можете відредагувати питання та додати марку та модель ноутбука? Також ви можете підтвердити, що це не порт USB-джерела живлення, як пояснено тут: dell.com/support/article/ro/ro/robsdt1/SLN155147/EN (значок блискавки)
user.dz

Відповіді:


4

Поточний камінь спотикання з посиланнями OP, поданими коментарями та запропонованими відповідями - ідентифікатор продукту статичний, 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де "ім'я файлу " - ім'я, яке ви вибрали.

Пояснення

Це рішення вимикає весь концентратор USB, що в моєму випадку означало телефон, бездротову мишу, бездротову клавіатуру тощо. При виклику сценарію з терміналу потрібно ввести пароль sudo. Будемо сподіватися, що, коли викликані від системного судо повноваження передаються у спадок. Я не міг цього перевірити, бо не маю дротової миші. Тому для судових повноважень може знадобитися додаткове вдосконалення.

Живлення фізично не відключається, коли BIOS забезпечує постійне 5В джерело живлення, а пристрої на шині, як повідомляється, відключаються. У моєму випадку бездротова клавіатура та миша перестали працювати, і для повернення живлення довелося вдатися до клавіатури ноутбука та тачпада.

Ви можете перевірити це вручну, зателефонувавши до сценарію та передавши параметри "призупинити". Передача параметра "відновити" не призводить до нічого, оскільки пристрій вимкнено, у нього немає ідентифікатора пристрою, щоб його знову ввімкнути.


Простіше вирішити живлення всіх 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

Чи можу я якось перевірити сценарій, перш ніж фактично призупинити блокнот нединамічною командою ехо?
tokam

ви змогли успішно виділити шину та пристрій, що також показано в lsusb, але, як ви вказали, каталог не існує, як показано в питанні, каталоги мають іншу структуру, ніж $ {BUS} - $ {DEVICE} , і я не впевнений, якщо навіть не знаючи, який з них є правильним, тимчасове працює
tokam

Тест, в якому я відключив і перезапустив мишку, допоміг визначити папку. Але подивіться на результат наступного тесту: Keine Berechtigung означає: немає дозволу root @ 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

Миша має світлодіод у вас на вулиці та лазер внизу. Завдяки поєднанню обох відповідей, я зміг вимкнути лазер миші, але не світлодіод, який додає світла не моєму сну. Може, ми не можемо вимкнути світлодіод Kernel? Я перевірив його на ізольованій USB-розетці для миші.
tokam

@tokam Після багатьох досліджень і тестувань я нарешті змусив його працювати в моїй системі вручну, але не маю миші, щоб перевірити це. Сподіваємось, це працює!
WinEunuuchs2Unix

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 на номери шини та пристрою, які відповідають миші. Це буде працювати, поки ви не перемістите пристрій на інший порт, і в цьому випадку вам доведеться знову знайти пристрій і відрегулювати файл відповідно.

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


У моєму geditоновлення ванілі Ubuntu 16.04 з 14.04 є Save asопція під Fileменю. Щось, мабуть, сталося з вашою конфігурацією ??? PS хороша відповідь, я спробую пізніше.
WinEunuuchs2Unix

Я також зберігаю файли, використовуючи Ubuntu Mate.
токам

@ WinEunuuchs2Unix Цікаво. Схоже, це не існує в новому встановленні. Можливо, це основа для нового питання ....
Старійшина Гік

@ElderGeek Оновлення, Save Asякщо я ввожу, geditотримую все меню верхнього рядка «Довідка редагування файлів Довідка Документи пошукових інструментів», але якщо я gksu geditвводить список меню не відображається. HTH.
WinEunuuchs2Unix

1
@tokam Ви можете оновити своє питання з виходом з lsusb -tі lsusbз усіма пристроями , підключеними як ви зазвичай використовуєте їм день у день. Це може допомогти нам візуалізувати концентратор, а що ні.
WinEunuuchs2Unix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.