みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

USB per-port power switching対応ハブガチャを引いてみた

はじめに

USBハブにはper-port power switching(PPPS)という機能に対応しているものがある。 これはポート毎に給電を制御するものであって、これが使えるとそのハブに接続されたUSB機器の電源をPCから制御することができる。

USBハブのポートが供給する電力量は小さいので、直接制御できるのはせいぜい小型のライトとかファンとかのようなものになるのだが、 USB連動電源タップなどと組み合わせると、それなりの機器の電源制御にも使用することができる。

Linuxが使える環境ではuhubctlというツールがあり、コマンドラインで制御することができる。

ただし、全てのUSBハブがPPPSに対応しているわけではない。 むしろ、PPPSに関してはUSBハブを提供するメーカーは全然気にしていないので、どのハブが対応しているかは買ってみるまでわからない。

今回は、ヨドバシカメラなどの量販店で3000程度で購入できるUSBハブをいくつか買ってみて、対応しているものがあるかを検証してみた。

結果を最初にいうと、1つ以外全部ハズレ。

その1つのアタリも4ポートのうち2ポートしか制御できないという微妙な結果となった。

検証方法

下記の手順で検証した。

  1. LinuxPCにUSBハブを接続
  2. uhubctlでUSBの制御チップが対応しているか確認
  3. 対応している場合は各ポートの電源を制御
  4. USBケーブルから電源線を引っ張り出し、テスタで電圧を計測

まず、制御チップが電源制御に対応しているかが鍵となる。そもそもこれに対応していないとPPPSは使用できない。

次に、制御チップが対応していても回路設計上ポートのVBUSが5Vに接続されているなどの場合は、 いくらチップを制御しても接続されている機器には5Vが供給されることになる。

PPPSはポートごとの給電を制御するため、ハブ自体の電源が落ちるわけではないのでこういうことがあり得る。 こればかりは USBハブの基板の設計次第なので本当に実際電圧を測ってみるまでわからない のだ。

uhubctlの対応状況

uhubctlの対応状況はリンク先の表に記載されている。

これはユーザーからの報告によって更新されている。この表には実際に制御してみて電圧が変化することが確認できたものしか追加されない。 つまり、この表に記載があるものは確実に使用できる。

しかし先述の通り、制御チップがPPPS対応でも基板の設計によって非対応のケースがあるため、VID:PIDが同じ別の機種が必ず対応しているとは言えない。

表を見てもらえばわかるが、記載があるハブは下記の点から入手性が高いとは言い難い。

  • 古いものが多い
  • 海外の製品が多い

今回の戦果

筆者がもともと持っていたものもついでに記載する。それ以外はヨドバシなどの量販店Amazonなどで購入した物。

もともと持っていたものは古いものが多かったので備考に手持ち品と記載し、今回の検証用の購入したものとは区別できるようにする。

ブランド 型番 ポート USB VID:PID チップ対応 ポート制御 備考
Digio2 UH-2404BL 4 2.0 05e3:0608 × ×
Buffalo BSH4U050U2 4 2.0 05e3:0608 × ×
Buffalo BSH4A110U3 4 3.0 0bda:0411 ×
Buffalo BSH4U06 4 2.0 05e3:0608 × × 手持ち品
Buffalo BSH4U01BK 4 2.0 05e3:0608 × × 手持ち品
Digio2 UH-3034W 4 3.0 05e3:0612 × ×
ELECOM U3H-A422BX 4 3.0 05e3:0626 × ×
Anker A7516 4 3.0 0bda:0411 ×
Buffalo BSH4A01 4 2.0 05e3:0608 × × 手持ち品
System TALKS USB2-HUB4X(SUGOI-HUB) 4 2.0 0409:005a Port1、2のみ
100均 ???? 4 1.0 0a05:7211 × ×

寸評

手持ち品も含めて何故かBuffaloに偏ってしまった。

05e3:0608Genesys Logic製のチップで、今回買った価格帯のUSBハブには、このチップが多い気がした。 これはチップ自体がPPPSに対応していないのでlsusbなどでこれが出たら確実にハズレ。 USB2.0だし仕方ないかな?と思いつつ、USB3.005e3:0626もPPPS非対応。 VID:05e3はuhubctlの対応表にも出てくるのでGenesys Logic=ハズレというわけではないだろうが、今回の検証結果のせいで印象が悪い。

いくつかのハブに搭載されていた0bda:0411Realtek製のチップで、チップとしてはアタリ。 しかし今回買ったハブの基板設計上の問題でハズレ扱いに。ちょっと不遇。

今回唯一のアタリのSUGOI-HUBは0409:005aNEC製のチップが搭載されている。安心の日本製! 「SUGOI-HUB(スゴイハブ)なんて仰々しい名前ついてんな。」くらい思っていたが、本当にスゴイやつだった。

100均のハブはVIDからしてUnknownというキレっぷり。いつ火を吹いてもおかしくない感じがやばい。

まとめ

今回は、外れた時の精神的&経済的なダメージが大きいので高額のハブは避けたが、低価格帯はことごとくハズレという結果になった。 結局買ってみるまでわからないっていうのは結構イタイ話だ。

中には高額なUSBハブを持っているひともいるだろうし、 Linuxが使える人は、ぜひともuhubctlで対応状況を調べて見てほしい。 そして対応しているものがあれば積極的にuhubctlのコミュニティに報告してほしい。 ツイッターなんかでつぶやくだけでも嬉しい。

USBハブのベンダの人たちはPPPS対応している製品に関しては積極的に宣伝してほしい。 購入するかどうかの決め手になってもおかしくないぐらい使えると便利な機能のはず。 そしてもっと対応製品作ってくれ。。。

USBハブで機器の電源制御ができたらいちいちリレーくまなくて良くなるしね。