パソコン鳥のブログ

アクセスカウンタ

zoom RSS RaspberryPI 3 Model B で USBポートの電源をON/OFFする

<<   作成日時 : 2017/11/06 21:29   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0

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


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
RaspberryPI 3 Model B で USBポートの電源をON/OFFする パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる