USBポートへの電源をオフにします。または、USBサブシステム全体の電源をオフにします


28

特定の時間にプログラムでオフにするために特別に購入したusbランプがあります。そのため、USBポートの電源を切る必要があります。

usb6にusb-hubがあると思います。ランプは、このハブのいずれかのポートに接続されています。

#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-hubデバイスの電源がオフになります。

私もこれに従おうとしていました

しかし、出力が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

どの構文エラーですか?この場合、単純な文字列「suspend」、「disabled」を引用符で囲む必要はありません。引用の習慣が好きな人には最適ですが、この場合は必要ありません。
user84207 14年

lsusb -t呼び出しを追跡しようとしましたが、デバッグしなければならなかった時間内に有用なものが見つかりませんでした。正直なところ、lsubのバグを見つける時間がないので、すぐに再現することすらできないので、プラグインされているデバイスに依存する可能性があります。それを再現します。
user84207 14年

回答:


20

uhubctl-コマンドラインユーティリティを使用して、互換性のあるUSBハブのポートごとのUSB電力を制御できます。

ポートごとの電源切り替えをサポートするハブでのみ動作しますが、最近のマザーボードの多くはこの機能をサポートするUSB​​ハブを備えていることに注意してください。

コンパイルします:

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

すべてのハブのステータス、それらの場所、およびuhubctlで制御できるポートを一覧表示するには:

uhubctl

単一の互換性のあるハブのポート5で電源をオフにするには:

uhubctl -a 0 -p 5

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

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

電源をオフにしてからオンに切り替えるには:

uhubctl -a 2 -p 5

USB 3.0ハブもサポートされており、新しいUSB 3.0ハブの多くは実際に機能することに注意してください。

読むよりここに

開示-私はuhubctlの著者です。


もう少し情報があればいいでしょう。特に、あなたは作者であり、それを使用する方法の標準パッケージ例ではないため、機能/制限がある場合、リスクがある場合、リンクのみの回答は優先されません。
ザカリーブレイディ

2
さて、READMEファイル全体をコピー/貼り付けすることは、私にとって明るいアイデアとは思えません。すべての警告が説明されています。
mvp

いいえ、readme全体が過剰になります。プログラムを使用して、質問で提起された問題を解決する方法。そして、アプリケーション全体ではなく、特定のユースケースに注意点がある場合。最初のコメントではっきりしていなかったら申し訳ありません。
ザカリーブレイディ

1
参考:この方法は、ルネサスUPD720202ファミリのPCIe-USBホストコントローラで機能します。:)ありがとう。
ウォスネーム

@Wossnameに感謝します。github.com/mvp/uhubctl/issuesで新しい問題として追加してもよろしいですか?サポートされているデバイスのリストを更新します。
mvp

20

LinuxのUSB電源の制御(オン/オフ)を参照してください。新しいバージョンのカーネルでは、「サスペンド」が機能しなくなりました。

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ランプと、バッテリーを充電し、USBを介してデータを転送するGPSロガーを試してみましたシリアルへのcp210x usbとして起動し、どちらも電源オフしません。GPSを「切断」しecho '5-4.6' > /sys/bus/usb/drivers/usb/unbindて再接続できますecho '5-4.6' > /sys/bus/usb/drivers/usb/bindが、バッテリーの充電は常にオンになっています。

しかし、一部のハブはそれを適切に行っているようです。


0

autosuspend_delay_ms」ファイルを個別に編集する必要はありません

USBの自動サスペンドを無効にすることができGLOBALLY永続的に:

sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub

update-grub

systemctl reboot

提案された修正をテストし、その正確性を検証するのにわずか数秒かかります。

以下のUbuntu 18.04の注釈付きスクリーンショットは、上記のように変更し、すべての USB自動サスペンド設定を無効にしてホストを再起動することを示しています。

USB自動サスペンドを無効にするUbuntu 18.04デモ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.