uhubctlでUSBをON/OFFする


Raspberry Pi B+以降のモデルではuhubctlを使ってUSBをON/OFFすることができるようになりました。
uhubctはこちらで公開されているツールで す。
オリジナルは日本人の新部 裕さんがこ ちらに公開したコードで、もともと電源制御機能付きのUSB-HUBを制御するために開発されたものです。
電源制御機能を持つUSB-HUBはごく少数存在していますが、メーカの商品ページを見てもこの機能が有るのかどうか分かりません。
以前はElecomのU2H-G4Sシリーズが中古で入手できましたが、最近は見当たらないです。

uhubctのインストールは以下の手順です。
$ sudo apt-get install libusb-1.0-0-dev
$ git clone https://github.com/mvp/uhubctl
$ cd uhubctl/
$ make
$ sudo make install

USBポートの現在の状態は以下のコマンドで確認することができます。
$ sudo uhubctl
Current status for hub 1-1 [0424:9514]
  Port 1: 0503 power highspeed enable connect [0424:ec00]
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0100 power
  Port 5: 0100 power
Current status for hub 1 [1d6b:0002 Linux 4.19.66-v7+ dwc_otg_hcd DWC OTG Controller 3f980000.usb]
  Port 1: 0503 power highspeed enable connect [0424:9514]

以下のコマンドで全てのUSBポートをOFFすることができます。
uhubctlのREADMEによると、個別のポートの制御はできないみたいです。
USB-WiFiを使っているときは、電源が遮断されてしまうので通信できなくなります。
$ sudo uhubctl -l 1-1 -p 2 -a 0
Current status for hub 1-1 [0424:9514]
  Port 2: 0100 power
Sent power off request
New status for hub 1-1 [0424:9514]
  Port 2: 0000 off

以下のコマンドで全てのUSBポートをONすることができます。
$ sudo uhubctl -l 1-1 -p 2 -a 1
Current status for hub 1-1 [0424:9514]
  Port 2: 0000 off
Sent power on request
New status for hub 1-1 [0424:9514]
  Port 2: 0100 power

続く...