RaspberryPI 3 Model B で USBポートの電源をON/OFFする方法です。
先に結論
USB外付けHDDで確認しました。
Port2~Port5 まとめてなら、完全に電源を切ることが出来ます。
HDDの電源が落ち、HDD筐体のLEDも消灯します。
Port3~Port5 個別では、HDDの電源が落ちますが、HDD筐体のLEDは消灯することもあれば、点灯したままだったり、一定しません。
Port2は個別では電源OFFできません。
なお、Port2~Port5 は、RaspberryPi 3 Model B では LAN/USBポートがある面を見て、次のようになっています。
Port2~Port5 が各USBポートの口です。
LAN +---+ Port2 Port4 | | +---+ Port3 Port5
準備
以降で hub-ctrlコマンドが出てきますが、RaspberryPI でのインストールは次のようにします。
sudo apt-get install libusb-dev wget http://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c gcc -O2 hub-ctrl.c -o hub-ctrl-armhf-static -lusb -static sudo cp hub-ctrl-armhf-static /usr/local/bin/hub-ctrl
USBポートの電源ON/OFF方法
Port2~Port5 まとめての場合
HDDの電源が落ち、HDD筐体のLEDも消灯します。
まず、下記の X を USBポート番号(2~5)で置き換えた上で、実行します。
USB取り外しを実行するコマンドで、RaspberryPI から認識されなくなります。
echo -n "1-1.X" > /sys/bus/usb/drivers/usb/unbind
これだけでは、まだHDDはスピンダウンもしません。
下記を実行します。
hub-ctrl -b 1 -d 2 -P 2 -p 0
USBのPort2の給電が停止し、Port3~Port5 への通信が停止します。
ちょっと変な挙動ですが、下記サイトのコメント欄の情報からわかりました。
オーバー苦ロック: ジャイアンのその日暮らし のパパリウスさんのコメント部分
補足:
本来はhub-ctrlで各ポートを独立して操作できるはずなのですが、ラズパイのUSBポートはポート2(左上)がちょっと特殊で、ポート2をOFFにすると、ポート2は通信OFF・バスパワーOFF、ポート3〜ポート5は通信OFF・バスパワーON(?)という謎の状態になり、そこからさらにポート3〜ポート5に対してOFFを指示することで最終的に全てのポートでバスパワーをOFFにしています。
投稿: パパリウス | 2017年10月10日 (火) 23時39分
この段階で、Port2 につなげていたHDDは、HDDの電源が落ち、HDD筐体のLEDも消灯します。
以降は、Port3~Port5 の場合です。
Port3~Port5 では、PC電源連動機能/USB電源連動機能を持つHDDは、USBの通信停止を検出してHDDの電源が落ちます。
HDD筐体のLEDは消灯することもあれば、点灯したままだったり、一定しません。
次に下記の X を USBポート番号(3~5)で置き換えた上で、実行します。
USBポートへの給電が停止します。
hub-ctrl -b 1 -d 2 -P X -p 0
これで、HDD筐体のLEDも消灯します。
電源ONする場合は、逆に作業します。
電源OFFしたPort3~Port5 を最初にONします。
下記の X を USBポート番号(2~5)で置き換えた上で、実行します。
hub-ctrl -b 1 -d 2 -P X -p 1
OFFしていた Port2 を ON にします。
hub-ctrl -b 1 -d 2 -P 2 -p 1
USBポートの電源がONになると、USB機器はRaspberryPI から認識されます。
Port3~Port5 個別に電源ON/OFFする方法
下記の X を USBポート番号(3~5)で置き換えた上で、実行します。
USB取り外しを実行するコマンドで、RaspberryPI から認識されなくなります。
echo -n "1-1.X" > /sys/bus/usb/drivers/usb/unbind
これだけでは、まだHDDはスピンダウンもしません。
下記の X を USBポート番号(3~5)で置き換えた上で、実行します。
USBポートへの給電が停止します。
hub-ctrl -b 1 -d 2 -P X -p 0
これでHDDの電源が落ちます。
(HDDのスピンダウンでは無く、HDDの電源が落ちます)
HDD筐体のLEDは消灯することもあれば、点灯したままだったり、一定しません。
Port2は個別では電源OFFできません。
Port2 をOFFにすると、連動して Port3~Port5 のUSB通信が停止してしまう為です。
先の「Port2~Port5 まとめての場合」を参照してください。
電源ONする場合は、下記の X を USBポート番号(3~5)で置き換えた上で、実行します。
hub-ctrl -b 1 -d 2 -P X -p 1
USBポートの電源がONになると、USB機器はRaspberryPI から認識されます。
参考
オーバー苦ロック: ジャイアンのその日暮らし のパパリウスさんのコメント部分
how to get bus id of an usb device – Unix & Linux Stack Exchange
LinuxからUSB HUBの電源のON/OFFを制御してみる – memoメモ
Raspberry PiにUSB扇風機を接続してUSBポートをON/OFF制御する方法 | きのこタイムズ
linuxでのusbの抜き差しをコマンドで実施する | えむけいプラン(公式)
USB抜き差しせずコマンドで再認識 – Qiita
コメント