USBポートの電源を切ります。または、フルUSBサブシステムの電源を切ります。

USBポートの電源を切ります。または、フルUSBサブシステムの電源を切ります。

特定の時間にオフになるようにプログラムできるように、特別に購入したUSBライトがあるため、USBポートから電源を切る必要があります。

USBハブUSB6があると思います。照明はこのハブのポートの1つに接続されています。

#myhost$ lsusb 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 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 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 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 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub

私が試したことは次のとおりです。

2つの解決策はここ、最初の提案:

echo disabled > /sys/bus/usb/devices/usb1/power/wakeup 
echo suspend > /sys/bus/usb/devices/usb1/power/level  # turn off

しかし、私がwrite error: Invalid argument文章を書こうとしているとき/sys/bus/usb/devices/usb1/power/level

$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument

2番目の解決策:

sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'

これにより、USBハブデバイスの電源が切れます。

私もフォローしてみました。これ:

ただし、出力はlsusb -t中断されます。

$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C

これにより、「2-1.1」部分を取得するためにこの方法を使用することはできません。

echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind

この情報を取得する他の方法はありますか?

または、USBサブシステム全体の電源を切る方法はありますか?それはまるでmodprobe -r usb_etc

私のカーネルは次のとおりです

$uname -r
3.2.0-4-amd64

答え1

私のツールを使用できます。uhubctl- 互換性のあるUSBハブの各ポートのUSB電源を制御するためのコマンドラインユーティリティ。

ポート固有の電源切り替えをサポートするハブでのみ機能しますが、多くの最新のマザーボードにはこの機能をサポートするUSB​​ハブがあります。

まず、オペレーティングシステムのパッケージストアにすでにuhubctlがある可能性があります。閲覧ファイルインストール方法を確認し、最新バージョン(作成時に2.4.0)を使用していることを確認してください。

オペレーティングシステムにこのパッケージの最新バージョンがない場合は、次のようにソースからインストールできます。

編む:

git clone https://github.com/mvp/uhubctl
cd uhubctl
make

システム全体にインストールするには、次の手順を実行します/usr/sbin/uhubctl

sudo make install

uhubctlで制御できるすべてのハブ、その場所、およびポートのステータスを一覧表示します。

sudo uhubctl

sudo(udev USB権限が設定されている場合はこれを回避できます)。

単一互換ハブのポート5で電源を切るには:

sudo uhubctl -a 0 -p 5

互換性のあるハブが複数接続されている場合は、ハブの-l場所を指定して制御してください。

sudo uhubctl -a 0 -p 5 -l 3-1.2

電源を切ってからもう一度入れるには:

sudo uhubctl -a 2 -p 5

USB 3.0ハブもサポートされており、かなりの数の新しいUSB 3.0ハブが実際にうまく機能します。

読むここでもっと学ぶ

答え2

バラよりLinuxを使用したUSB電源(オン/オフ)の制御、最新のカーネルを使用する短いバージョンの「hang」はもう機能しません。

echo "0" > "/sys/bus/usb/devices/usbX/power/autosuspend_delay_ms"
echo "auto" > "/sys/bus/usb/devices/usbX/power/control"

しかし、実際に電源を切るわけではありません。デバイスに電源を切るように信号を送り、電源管理を実装し、正しいタスクを実行することはデバイスによって異なります。

その中に多くの詳細が含まれています。公式文書カーネル内では、さまざまなファイルとデバイス/sys/bus/usb/devices/.../power/とポートを管理する方法について説明します。

実際のUSBデバイスではない場合(USBインジケータはlsusbに表示されますか?)、運が悪くなる可能性があります。 USBインジケータとGPSロガーを使ってバッテリーを充電し、USB経由でデータを転送してみました。 cp210x USB to シリアルポートでの動作は、コンピュータの電源を切っても機能しません。 GPSを「接続解除」してからecho '5-4.6' > /sys/bus/usb/drivers/usb/unbind再接続できますが、echo '5-4.6' > /sys/bus/usb/drivers/usb/bindバッテリー充電インジケーターは点灯し続けます。

でもそうだいくつかのハブは素晴らしい仕事をしています。

関連情報