ワイヤレスUSBキーボードまたはマウスを使用したサスペンドからの復帰(Linux Distroの場合)


18

私は何時間か、あるいはそれ以上の解決策を探していましたが、それを見つけました。みんなと共有したいです。この方法では、この問題をグーグルで調べて、より迅速に解決策を見つけやすくなります。したがって、タイトルが言うように、以下が解決策です。

回答:


26

ターミナルでヒット:

grep . /sys/bus/usb/devices/*/power/wakeup

その結果、私にとっては、すべてのUSBが無効になっていることがわかりました。だから今、入力:

1。

sudo su

これでルート特権があります。

2.私は8つのUSBポートを持っています(あなたが持っているのと同じ数のUSBポートに対してそれを行います)、そう:

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
echo enabled > /sys/bus/usb/devices/usb5/power/wakeup
echo enabled > /sys/bus/usb/devices/usb6/power/wakeup
echo enabled > /sys/bus/usb/devices/usb7/power/wakeup
echo enabled > /sys/bus/usb/devices/usb8/power/wakeup

さあ、テストしてください。これで、ワイヤレスまたは有線のUSBキーボードとマウスから起動できます。

そのため、すべてを有効にする必要がある理由は、次のステップで、これをrc.localに記述して、再起動するたびにコマンドを実行し、再起動後に一部のLinuxディストリビューション(すべて)でusbポートを変更するためです。 Linuxは一時停止または休止状態にあるため、すべてを有効にすることで問題が発生することを心配する必要はありません。wifiを使用して何かをダウンロードすることはできないため、意図的に起動しないと起動しません。

次の一歩:

3。

sudo nano /etc/rc.local

そしてそこにステップ2のすべてを貼り付けます(もちろん出口0の前)。

それでおしまい。これからは、ワイヤレスUSBとマウスを使用して、サスペンドから復帰できます。

皆さんの役に立つことを願っています。このガイドは、インターネット上で可能な他のすべてのソリューションをテストした後に作成されました。


6
どのデバイスがどのデバイスであるかを知りたい場合/sys/bus/usb/devices/<device id>/productは、テキストの説明を調べることができます。
ntc2

grep . /sys/bus/usb/devices/*/power/wakeup」のすべてのデバイスを有効にしましたが、まだ機能しませんでした。おそらく、キーボードとマウスが間接的に-画面上にあるドングルにワイヤレスで接続されているためでしょうか?画面はUSB経由でラップトップに接続されます。
AlikElzin-kilaka

1
:NTC2が言った@として、それぞれの説明を参照するためにこれを使用し grep . /sys/bus/usb/devices/*/product、私が見ていますかを把握するために私を助けた
ベンYitzhaki

それでも機能しない場合は、PCがスリープモードのときにデバイス(キーボード/マウス)に電力が供給されていることを確認してください。デバイスにLEDがない場合は、USB電源モニター(オンラインで約10ドル)を使用して、USBポートの電源を確認できます。
Jスミス

この質問の永続的な部分は、少なくともubuntu 18.04では機能しなくなりました。さらに(askubuntu.com/a/874701/516072 pavlos-theodorouは、Ubuntuの18.04での恒久的な部分のために助けが提供するこの回答へ)
ローレンス

10

上記のガイドに加えて、この情報を追加したいと思います。最近、スリープから復帰した後にワイヤレスusbデバイスが無効に戻ったことを発見したためです。繰り返しますが、すべてではなく、一部のUSBデバイスがそれを行います。そのため、この小さなガイドをガイドに追加しませんでした。

上記の指示どおりに実行すると、PCは正常に起動しますが、その日のうちに突然起動することはありません。

解決:

ターミナルを開いて実行します:

lsusb

キーボードのデバイスID情報では、最初の4桁がベンダーIDで、次の4桁が製品IDです(スクリーンショットを参照) ここに画像の説明を入力してください

次は:

sudo nano /etc/udev/rules.d/10-wakeup.rules

「ウェイクアップ」には、希望するスクリプト名を入力します。番号10は、他の多くのudevルールがある場合の優先順位です。番号が小さいほど、「ルール」は他のルールよりも先に実行されます。

これをコピーして貼り付け、ベンダーIDと製品IDを独自のワイヤレスキーボードベンダーIDと製品IDに置き換えます。

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8は私のワイヤレスキーボードです(スクリーンショット(Bus 008)でも確認できます)。自分のものに置き換えてください。

Ctrl+ Oで保存、Ctrl+ Xで終了して再起動します。


4
これを最初の回答に組み込む方が良いでしょう。
NTC2

1
それらは2つの異なるものです。1つ目は、ウェイクアップの問題に対する答えです。2つ目は「ブートを実行しないルールを作成する方法」に似ていますが、それは「余分な」ものです。
パブロス

2

Pavlos Theodorouの答えは非常に役立ちます。起動時にマウスとキーボードが接続されているusbデバイスを見つけることができることを付け加えます。dmesggrepに数回配管し、次にegrepを 1回使用し、最後にtailを使用して最新であることを確認しますエントリ。

この方法を使用すると、すべての USBポートでウェイクを有効にする必要はありません

/etc/rc.localファイルに以下を追加すると、USBポートから別のポートに移動しても、毎回Logitechレシーバーが検出されます。「Logitech K270」の代わりにdmesgのキーボードまたはマウスの名前に置き換えてください

KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup

これはブート時に機能しますが、サスペンドからの復帰時に実行されないようです。そのため、スクリプトファイルを/ lib / systemd / system-sleep /に配置する必要がありました。それを作成し、グローバルに実行可能として設定し、00から99の間の2桁の数字で始まる名前を付けます。私のスクリプトは次のようになります。再びdmesgのキーボード/マウスの表現を置き換えます

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [ $1 = post ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

if [ $1 = pre ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

なんらかの理由で説明できませんが、「ポスト」スリープifステートメントは他のすべてのウェイクアップでのみ機能します...しかし、「プレ」スリープifステートメントは毎回機能するようです。


1

上記の答えのどれも私を助けませんでした。だからここに自分のブログを投稿します。

USBデバイスのサスペンドからのウェイクアップの有効化/無効化

Ubuntu 18.04ベースのKDEネオン5.16.2でテストされていますが、どのディストリビューションでも動作するはずです。


1. USBデバイスのリストを表示して、有効/無効にするデバイスを特定します。

grep . /sys/bus/usb/devices/*/product

次のようなものを取得する必要があります。

/ sys / bus / usb / devices / 3-3 / product:Cord Optical Mouse
/sys/bus/usb/devices/3-4.3/product:802.11n WLAN Adapter
/sys/bus/usb/devices/3-4.4/product:USBレシーバー
/sys/bus/usb/devices/3-4/product:USB2.0ハブ
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / devices / usb1 / product:EHCIホストコントローラー
/ sys / bus / usb / devices / usb2 / product:EHCIホストコントローラー
/ sys / bus / usb / devices / usb3 / product:xHCIホストコントローラー
/ sys / bus / usb / devices / usb4 / product:xHCIホストコントローラー


2.すべてのUSBデバイスのウェイクアップステータスを確認します。

grep。/ sys / bus / usb / devices / * / power / wakeup

結果は次のようになります。

/ sys / bus / usb / devices / 1-1 / power / wakeup:disabled
/ sys / bus / usb / devices / 2-1 / power / wakeup:disabled
/ sys / bus / usb / devices / 3-11 / power / wakeup:disabled
/ sys / bus / usb / devices / 3-3 / power / wakeup:enabled
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ sys / bus / usb / devices / 3-4 / power / wakeup:disabled
/ sys / bus / usb / devices / 4-4 / power / wakeup:disabled
/ sys / bus / usb / devices / usb1 / power / wakeup:disabled
/ sys / bus / usb / devices / usb2 / power / wakeup:disabled
/ sys / bus / usb / devices / usb3 / power / wakeup:disabled
/ sys / bus / usb / devices / usb4 / power / wakeup:disabled

私の場合、ウェイクアップは、前述のリストによると「Cord Optical Mouse」であるUSBデバイス3-3でのみ有効になっています。

サスペンドからのウェイクアップをワイヤレスキーボードに対してのみ有効にし、それ以外は無効にします。キーボードUSBレシーバーはHUBに接続され、前のリストの「3-4.4」に対応します(「USBレシーバー」)。


3.作業を行うスクリプトを作成します。

ルート権限を取得するには:

sudo su

次に、スクリプト用のファイルを作成します(ファイルは「usbwakeup」または必要に応じて記述できます)。

nano /etc/init.d/usbwakeup 

ファイルの内容。「SCRIPT ACTIONS」セクションを変更して、ニーズに合わせて調整します(スクリプトをコメントに追加して、いつか再び開いたときに実際に何が起こるかを知るのが好きです)。

#!/ bin / bash
#
#######################
# 一般情報 #
#######################
#
#-このスクリプトは、USBデバイスのサスペンドからのウェイクアップを有効/無効にします。
#
#-スクリプトには実行権限が必要です。
#
#-システムの起動時にこのスクリプトを実行するには、次のものが必要です。
#優先度S01の/etc/rc3.d/内のシンボリックリンク
#(例:/etc/rc3.d/S01usbwakeup)
#
#############################
#関連する便利なコマンド#
#############################
#
#-USBデバイスを識別する:
#grep。/ sys / bus / usb / devices / * / product
#
#-USBデバイスの「サスペンションのウェイクアップ」のステータスを確認します。
#grep。/ sys / bus / usb / devices / * / power / wakeup
#
#
##################
#スクリプトアクション#
##################
#
#光学式マウスのサスペンドからの復帰を無効にします
エコー無効化> / sys / bus / usb / devices / 3-3 / power / wakeup
#
#ワイヤレスキーボードのサスペンドからの復帰を有効にします
USBポートnr.4でUSB 3.0ハブに接続したこと
エコー有効化> /sys/bus/usb/devices/3-4.4/power/wakeup


4.実行許可を付与します。

chmod +x /etc/init.d/usbwakeup


5. /etc/rc3.d/にシンボリックリンクを作成して、起動時に開始します。

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


システムを再起動すると、スクリプトで指定されたとおりにすべてが機能します。変更は、システムが起動するたびに実行されるため、永続的です。

相談した情報源(この投稿の一部):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubuntu-sleep/

/unix/83748/the-rc0-d-rc1-d-directories-in-etc


同じ目的でシンプルなGUIを作成する方法を説明した興味深い投稿を見つけました。私はそれをテストしていませんが、おそらくそれをグラフィカルにし、シングルクリックで簡単に有効/無効にすることができます: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb-非表示
フアンゴメスカリージョ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.