USBポート付きUSB制御電源ストリップがあります。
マイコンピュータの電源が入っていてUSB経由で電源ストリップに接続されている場合、電源ストリップはすべてのコンセントに電力を供給します。マルチタップに接続されているコンピュータのUSBポート電源をプログラムで無効にしたいと思います。
これはうまくいきません:
$ echo suspend > /sys/bus/usb/devices/usb*/power/level
-bash: echo: write error: Invalid argument
別の方法がありますか?他の場所から私のサーバーに接続し、コンセントに接続されているすべてのデバイスの電源を切ることができます。
答え1
マルチタップは、接続されたUSBポートから供給される+5Vを読み取る以外の操作を実行しますか? (貼り付けたときに何も表示されませんか?差し込んだdmesg
後に出力が変わりますか?)そうしないと、カーネルが追加された内容でさえ認識できない可能性があります。lsusb
デバイスが独自に列挙されていないと、デバイスを一時停止することはできません。デバイスは/sys/bus/usb/devicesの下に表示されず、USBを使用するとポート以外のデバイスを一時停止できます。
また、以下で提供されますDocumentation/usb/power-management.txt
。
power/control
This file contains one of two words: "on" or "auto".
You can write those words to the file to change the
device's setting.
"on" means that the device should be resumed and
autosuspend is not allowed. (Of course, system
suspends are still allowed.)
"auto" is the normal state in which the kernel is
allowed to autosuspend and autoresume the device.
(In kernels up to 2.6.32, you could also specify
"suspend", meaning that the device should remain
suspended and autoresume was not allowed. This
setting is no longer supported.)
したがって、最後の免責事項によれば、カーネルが2.6.32よりも最新の場合、とにかくUSBデバイスを強制的に停止できないように聞こえます。
申し訳ありません。あなたが本当に欲しい答えを与えることはできません。あなたがやろうとしていることは簡潔に聞こえますが、役に立つことを願っています。
答え2
# To enforce suspend immediately when device is unused:
echo -n "0" >$DEV_POWER_PATH"/power/autosuspend_delay_ms"
echo -n "auto" >$DEV_POWER_PATH"/power/control"
# Make the device was not used
rmmod drv_name # see result of lsmod
# Power on:
echo -n "2000" >$DEV_POWER_PATH"/power/autosuspend_delay_ms"
echo -n "on" >$DEV_POWER_PATH"/power/control"
# Make the device was used.
modprobe drv_name
答え3
ここにも同じ問題があります。 ls -al は、ルートにのみ書き込み権限があることを示します。
-rw-r--r-- 1 root root 4.0K May 8 10:27 level
そのため、sudoで同じコマンドを実行しようとしましたが、まだ同じエラーが発生しました。
私が見つけた唯一の方法は、このファイルをchmodして書き込むことです。しかも。私の考えでは、controlとautosuspens_delay_msだけでは十分ではありません。実際に一時停止するには、バインディングを解除する必要があります。
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/control
sudo chmod 777 /sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms
sudo chmod 777 /sys/bus/usb/drivers/usb/unbind
echo "auto" > "/sys/bus/usb/devices/2-1.7/power/control"
echo "0" > "/sys/bus/usb/devices/2-1.7/power/autosuspend_delay_ms"
echo -n "2-1.7" > /sys/bus/usb/drivers/usb/unbind
答え4
ハブを使用し、そのハブに電力を供給すると、ハブは独自の電源装置に接続されません。上記の投稿のデバイスのように機能している限り、ハブを終了できます。
しかし、実際には(偶然に)このストリップで電力が供給されている他のポートにUSBデバイスを置くことは、正しくマウント解除されていないために疲れてしまいます。
コンピュータの電源を切り、便利なマルチタップをオフにする方法があります。しかし、今は良い解決策を思い浮かべません。