ノートブックをサスペンドしたときにマウスのUSB電源をオフにする方法は?


19

寝ているとき、マウスのLEDライトが私の神経に届きます。私は通常、夕方にノートブックを閉じ、Ubuntuに電話しますpm-suspend。とにかく、USBプラグには電力が供給されています。スマートフォンを充電することさえできました。これは2つの理由で私にとって悪いです。マウスを抜かないと、ノートブックのバッテリーパック[akku]の寿命が短くなります。ノートブックがサスペンドモードになったときに、USBデバイスまたはすべてのUSBデバイスの電源を自動的にオフにする方法はありますか?

構成方法

編集:コメントで要求されたように、私はこの情報を追加します:私はレノボ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は私のラップトップ上でそれを行います。代わりに、スリープ中にUSBポートへの電源をオフにするためのBIOS設定が必要です。
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 powersには追加の改良が必要になる場合があります。

BIOSが一定の5V電源を供給している場合、電力は物理的にカットされず、むしろバス上のデバイスはオフになるように指示されます。私の場合、ワイヤレスキーボードとマウスは機能しなくなり、ノートパソコンのキーボードとタッチパッドに頼って電源を入れ直さなければなりませんでした。

スクリプトを呼び出してパラメーター「suspend」を渡すことにより、これを手動でテストできます。パラメータ「resume」を渡すと、デバイスの電源がオフになり、デバイスをオンに戻すデバイスIDがないため、何も実行されません。


より簡単なソリューションですべてのUSBポートの電源をオフにする

最近、未知のポートがラップトップのサスペンドを妨げている問題に遭遇しました。変更したこのソリューション(コード内のクレジット)を見つけました。

powersを/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}とは異なる構造を持っています、と私は確信している場合でも、1、右1中断作品である知っているといないです
tokam

マウスを抜き差ししたテストは、フォルダーを識別するのに役立ちました。しかし、次のテストの出力を見てください。KeineBerechtigungの意味:許可なし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

マウスの外側のthouseには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があります。スーパーユーザーとして起動したときに、名前を付けて保存オプションが見つからないためです)。

コマンドを発行して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

ファイル内のコメント(#で始まる行)は無関係であり、無視しても問題ありません。

注:デスクトップでサスペンドを介してこれをテストし、広告どおりに機能しました。私はあなたが持っているものと同じハードウェアにアクセスすることはできませんが、電源ボタンでシステムを再開しなければならなかったので、これがあなたにとってうまくいくと確信しています。

コメントと質問の展開に基づいて編集します。

これは、続行する必要がある情報のようです。 Bus 006 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver


私にはgedit14.04からのUbuntu 16.04バニラのアップグレードがあるSave as下のオプションFileメニューが。あなたの設定に何かが起こったに違いない?PS良い答え、私は後でそれを試してみます。
WinEunuuchs2Unix

Ubuntu Mateを使用して、ファイルも保存します。
-tokam

@ WinEunuuchs2Unix興味深い。新規インストールでは存在しないようです。おそらくこれは....新しい質問のための基礎である
エルダーオタク

上@ElderGeekアン更新Save AsIが入力した場合gedit、私は、「ファイル編集表示検索ツールドキュメントヘルプ」の全体のトップラインのメニューを取得するが、私は入力するとgksu geditメニューリストが表示されません。HTH。
WinEunuuchs2Unix

1
@tokamあなたがからの出力にあなたの質問更新することができますlsusb -tし、lsusbあなたが正常に彼らの日常を使用すると、すべてのデバイスでは、プラグイン。それは、ハブとそうでないものを視覚化するのに役立つかもしれません。
WinEunuuchs2Unix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.