USBポートの電源オン/オフ


18

Ubuntuのターミナルを使用して特定のUSBポートのオン/オフを切り替えることはできますか?

lsusb 次の結果が表示されます。

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2232:1020
Bus 002 Device 009: ID 0bc2:a013 Seagate RSS LLC
Bus 002 Device 003: ID 0a5c:219c Broadcom Corp.

シーゲイトは私の外付けハードディスクドライブです。ターミナルで電源を切ることはできますか?

LinuxでUSB電源の制御(オン/オフ)を試みました。しかし、私は何の代わりに置き換えられるべきかについて混乱していusbXます。

回答:


7

これまでの回答はすべて、USBサスペンドメカニズム、つまり「論理的な電源オフ」について語っていますが、USBポートからVBUS + 5Vを物理的に切断することはありません。

ここで説明するように、実際にVBUSをカットできるハブはわずかです

hubpowerの(ハブがサポートしている場合)ツールはそれを行うことができます。


7

同じ問題に遭遇した後、「sudo」が適切に権利を適用するように、コマンドを異なる方法で入力する必要があることがわかりました。

「tee」コマンドを使用します。

echo 0 | sudo tee /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms

「tee」コマンドにルート権限を適用し、指定されたファイルに0を書き込んで、現在そこにあるものをすべて置き換えます。追加するには、オプション-aを指定してteeコマンドを使用します。

詳細については、次のmanページを参照してください。 tee


2
このteeコマンドには、画面にも印刷するという副作用があります。必要に応じdd of=/sys/bus/...て、ファイルにのみ書き込み、それ以外には書き込みません。
ブランドンロードス

4

実際にusbXは何もありませんが、USBポート番号Xのような番号を表し1たり2というように...例えば、usb1およびusb2ポートの1および2。一般に、ラップトップには、USB 2.0およびUSB 3.0ポートを備えた3つまたは4つのUSBポートがあります。

Ubuntuではusb1usb2... usbXはへのリンク/sys/devices/pci000:00/*です。それをよく理解するには、次のコマンドを実行します。

ls -l /sys/bus/usb/devices/

したがって、USBポートを有効/無効にするには、有効/無効にする(またはStack Exchangeを参照する)ときusbXに置き換えusb1ますUSB Port Number 1


編集:sudoを使用してテキストをファイルにエコーする正しい方法を教えてくれたStefan Denchevに感謝します。(彼のコメントも確認してください。)許可が拒否されたというメッセージを今すぐ受け取るべきではありません。

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb1/power/control"

lsusb結果を確認すると、Seagateデバイスがに接続されているように見えるため、Port No. 2を無効にする必要がありますusb2。次に、コマンドは次のようになります。

sudo sh -c "echo '0' > /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"
sudo sh -c "echo 'auto' > /sys/bus/usb/devices/usb2/power/control"

ありがとう。echo "0" > "/sys/bus/usb/devices/usb2/power/autosuspend_delay_ms"出力を試してみるとbash: /sys/bus/usb/devices/usb2/power/autosuspend_delay_ms: Permission denied
-curious_coder

その後でみてくださいsudo。..何が起こるか見て
Sauravクマー

それを試してみました。それでも同じエラー。
curious_coder

実際、Linuxのポートを有効または無効にしようとしませんでした。私のモットーは、usbX問題を明確にすることでした。取得したコマンドについて明確な場合はStackOverflow、試してみてください。いずれにせよ、ポートを有効/無効にする実際のコマンドがどれであるかを知りたいと思っています。うまくいきましたらすぐに返信します。次に、デバイスのプラグを抜き、もう一度やり直してください。またはで与えられた最初の答えを試してくださいstackoverflow
Sauravクマー

1
sudo sh -c "echo 'on' >> /sys/bus/usb/devices/usb4/power/control"
UIlrvnd

1

udisksctl持っているpower-off私はあなたと一緒に使用することをお勧めフラグを、 unmount

からman udisksctl

power-off
           Arranges for the drive to be safely removed and powered off. On the
           OS side this includes ensuring that no process is using the drive,
           then requesting that in-flight buffers and caches are committed to
           stable storage. The exact steps for powering off the drive depends
           on the drive itself and the interconnect used. For drives connected
           through USB, the effect is that the USB device will be deconfigured
           followed by disabling the upstream hub port it is connected to

デモ

USBジャンプドライブをアンマウントしてから電源をオフにします

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 009: ID 154b:007a PNY 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk                                                                
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sdb      8:16   1    30G  0 disk 
└─sdb1   8:17   1    30G  0 part /media/xieerqi/6A32C4555E1C5B4D
sr0     11:0    1  1024M  0 rom  

testdir:$ udisksctl unmount -b /dev/sdb1 && udisksctl power-off -b /dev/sdb1
Unmounted /dev/sdb1.

testdir:$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 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 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

testdir:$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 111.8G  0 disk 
└─sda1   8:1    0 111.8G  0 part /
sr0     11:0    1  1024M  0 rom  

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