LoginSignup
2
2

More than 1 year has passed since last update.

USBのパワーコントロール

Last updated at Posted at 2022-06-19

USBのHUBのポートの電源を制御するために以下のような回路を考えていました。

USB_POWER1.png

制御にはUSBが使えるPICやAVRのマイコンを使うつもりでした。

この仕組みだと普通のHUBは4ポートなので3ポートしか使えなくなります。

USB HUBのチップのGL850Gのデータシートを眺めていたら、PWRENという信号が出ているのに気がつきました。

image.png

どうもUSBのper-port power switching(PPPS)という仕様でHUBのポートの電源コントロールができるみたいです。

USB_POWER2.png

いろいろ調べていたら、uhubctlというツールが見つかりFreeBSDでも使えるようです。

早速ZRouterのportsもどきに追加してみました。本家のportsには無いようです。

RT3883で確認してみます。

# ./uhubctl 
Current status for hub 1-0.0 [0000:0000 MediaTek OHCI root HUB]
  Port 1: 0100 power
  Port 2: 0103 power enable connect []
Current status for hub 0-0.0 [0000:0000 MediaTek EHCI root HUB]
  Port 1: 0503 power highspeed enable connect []
  Port 2: 0500 power highspeed
Current status for hub 0-1 [0409:0059]
  Port 1: 0100 power
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0100 power
# ./uhubctl -l 0-1 -p 4 -a off
Current status for hub 0-1 [0409:0059]
  Port 4: 0100 power
Sent power off request
New status for hub 0-1 [0409:0059]
# ./uhubctl
Current status for hub 1-0.0 [0000:0000 MediaTek OHCI root HUB]
  Port 1: 0100 power
  Port 2: 0103 power enable connect []
Current status for hub 0-0.0 [0000:0000 MediaTek EHCI root HUB]
  Port 1: 0503 power highspeed enable connect []
  Port 2: 0500 power highspeed
Current status for hub 0-1 [0409:0059]
  Port 1: 0100 power
  Port 2: 0100 power
  Port 3: 0100 power
  Port 4: 0000 off

最初の二つがSOC内蔵のHUBで最後のが接続したHUBでバッファローの古い2.0初期のものです。NECのuPD720112というチップが使われています。ただこのHUBはチップは設定はできますが、VCCの回路は直につながっているみたいで、意味がありません。

このルーターのUSBの電源はgpioで制御できて、gpioctlでHUBごと見えなくすることはできます。

uhubctlはオプション無しで起動すると、対応してるHUBの状況がでますが、結構対応してないHUBが多いので、分かりにくいような気がします。

ルーターのUSBのようにUSB電源制御用のチップを使えばオーバーロードすると流れなくなって、検知できますが、リレーだとできないので、安全のためにポリスイッチを入れておくのが良いかもしれません。

GL850Gは28ピンのパッケージもあって、こちらはPWRENは二つしか出てないです。

image.png

Terminus Technology IncのFE 1.1は4ポートのチップで1本Power Controlがあるのですが、uhubctlは対応していないようです。

image.png

VID PID uhubctl 備考
05e3 0608 非対応
05e3 0606 非対応 ALCOR USB Hub 2.0
1a40 0101 非対応 Terminus Technology Inc FE 1.1
0409 0059 対応 NEC uPD720112
0409 005a 対応 NEC uPD720114
0451 2046 非対応 TI TUSB2046(12M)
2109 2812 非対応 VIA Labs, Inc. VL812 Hub(3.0)

NECのチップはピンによるコンフィグレーションで非対応になることもあるようです。

uhubctlはAtheros(BigEndian)のモジュールで確認するとPID,VIDのエンディアンが間違えてるようです。

調べてみるとHUBのIC自体はPower Controlのピンがあるケースが多いですが、ほとんど未使用のようです。またたいていPower ControlはOver Currentとペアーになっています。

ジャンクのルーターでGlobal Mixed-mode Technology Inc.のG526というチップでPowerを制御しているものがありました。

image.png

Apple Pro KeyboardにはAIC1525が使われていました。

MAX8586ETAというチップもあるようです。

ポートごとに制御する方法はIndividualモードとよばれ、ポートをまとめて制御する方法はGang(ギャング)モードと呼ばれているようです。

usbconfigだけでもできるようです。

以前はUSBのOn/Offで制御できる電源タップがあってこれを制御されている方がいましたが、最近は製品のタップはほとんど見かけませんし、けっこう高価だったようで、今だとスマートプラグも安くなったので、そっちの方が良いかもれません。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2