web-dev-qa-db-ja.com

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

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

16

ターミナルでヒット:

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とマウスを使用して、サスペンドから復帰できます。

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

21

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

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

解決:

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

lsusb

キーボードデバイスID情報では、最初の4桁がベンダーIDで、次の4桁が製品IDです(スクリーンショットを参照) enter image description here

次は:

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 終了して再起動します。

9

Pavlos Theodorouの答えは非常に役立ちます。 dmesgからgrepを数回、次にegrepを1回、最後にtailを使用して、最新のエントリであることを確認します。

この方法を使用すると、do n'tでウェイクを有効にする必要がありませんALL usbポート。

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

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桁の数字で始まる名前を付けます。私のスクリプトは次のようになります。ここでもyour 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

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

2
jcn1

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

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 Receiver 
/sys/bus/usb/devices/3-4/product:USB2.0 Hub 
/sys /bus/usb/devices/4-4/product:USB3.0 Hub 
/sys/bus/usb/devices/usb1/product:EHCI Host Controller 
/sys/bus/usb/devices/usb2/product:EHCI Host Controller 
/sys/bus/usb/devices/usb3/product:xHCI Host Controller 
/sys/bus/usb/devices/usb4/product:xHCI Hostコントローラ


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のサスペンド#からのウェイクアップを有効/無効にしますdevices。
#
#-スクリプトには実行権限が必要です。
#
#-システムの起動時にこのスクリプトを実行するには、
#優先度S01 
#の/etc/rc3.d/内のシンボリックリンク(例:/etc/rc3.d/S01usbwakeup)
#
 ########################### 
#関連する便利なコマンド#
 ######## ################### 
#
#-USBデバイスの識別:
#grep。 /sys/bus/usb/devices/*/product
#
#-USBデバイスの「サスペンションのウェイクアップ」のステータスを確認します:
#grep。/sys/bus/usb/devices/*/power/wakeup 
#
#
 #################### 
#SCRIPT ACTIONS#
 #################### 
#
#オプティカルのサスペンドからのウェイクアップを無効にしますmouse 
 echo disabled> /sys/bus/usb/devices/3-3/power/wakeup
#
#ワイヤレスキーボードのサスペンドからのウェイクアップを有効にします
 USBポートnr.4 
 echo enabled> /sys/bus/usb/devices/3-4.4/power/wakeup
でUSB 3.0 HUBに接続したこと


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/

https://unix.stackexchange.com/questions/83748/the-rc0-d-rc1-d-directories-in-etc