特集
USB規格の限界127デバイスに挑む!でも実際に認識されたのは○○台だった
2024年4月2日 06:16
米中SSDの書き込み検証が終わり、しばらくは”やってみよう系”のネタはなさそうかな、と思っていたところ、担当編集から次のような提案が。
担当編集「この前のSSDはお疲れ様でした。で、次のネタなんですが」
筆者「お、また何かやりますか? (SSDほど時間がかからないものがいいなあ……)」
担当編集「今度は、USBネタなんですが、127台のUSB機器をつなげてみた、なんていうのはどうでしょう」
筆者「あ~、そのネタ、これまでにもいろんなメディアがやってますよね」
担当編集「はい。でもその多くは結構前にやってるものだし、最新のシステムだとだいぶ違ってくるんじゃないのかな、と」
筆者「なるほど、確かに一理ありますね。でも結果はそんなに変わらないと思いますよ」
担当編集「いやいや、そんなことないですって。個人的には、今なら世界初の127台接続成功するんじゃないかと。もしいけたらギネス級じゃないですかね!」
筆者「まあ、そこまで言うならやってみましょうか。でも厳しいと思いますよ……」
とまあ、ちょっと端折ってはいるが、こんなやりとりを行ないつつ、今回のネタが決定。内容的には、1台のPCにUSB機器を接続して問題なく利用できる最大数を検証する、というものだ。
USBの規格上では、1台のPCあたり最大128台のUSB機器を接続できることになっている。この128台という数字はUSB登場当初から変わっていない。そして、128台のうち1つは、USBを制御する「USBホストコントローラ」の先に接続される「USBルートハブ」という組み込み型のハブが消費している。そのため、実際に接続できるUSB機器の最大数は127台となる。
もちろんこれは理論値であり、実際にはこれまでさまざまな媒体でやられてきたように、理論値に届かない可能性が高いと筆者は考えた。それに対し担当編集は、今のシステムなら100台は余裕で突破できるんじゃね? と意見が割れた。そこで、実際に127台のUSB機器を用意し、PCに接続してどれだけ接続できるか確認してみることにした。
4ポートハブを30台と、その他のUSB機器を94台の調達が必要に
今回の検証で最初の課題となるのが、127台のUSB機器を集める、という部分だ。そして、それだけの数のUSB機器を1台のPCに接続するとなると、USBポートの数を増やす「USBハブ」が不可欠となる。
現在市販されているUSBハブは、その多くが1ポートを4ポートに拡張する、いわゆる「4ポートハブ」が大多数を占めている。中には8ポートや12ポートなど、より多くのポートを備えるハブも存在しており、そういった多数のポートを備えるUSBハブを利用すればハブの数を減らせそうだが、実際にはそう単純ではない。
USBハブは、ハブ内に搭載の「USBハブコントローラ」が制御を行なっている。ただ、このUSBハブコントローラは、そのほとんどが4ポート対応。そのため、8ポートや12ポートなど、4ポートより多い数のUSBポートを備えるUSBハブでは、4ポート対応のUSBハブコントローラを複数利用し、内部でUSBハブコントローラをカスケード接続して多数のポートを実現している場合がほとんど。
つまり、外見的には1つのハブで8や12ポートのUSBポートを実現しても、実際には4ポートハブをカスケード接続している状態とほぼ同じというわけだ。
というわけで、ポート数の多いUSBハブを用意するのは得策ではないと考え、今回は4ポートハブを必要な台数用意することにした。
では、127個の機器を接続するために、4ポートハブは何台必要となるのか。
USBの規格では、PCのUSBポート1つあたりUSBハブは最大5台までしか接続できない、という制限がある。そのため、4ポートハブを利用する場合、5台カスケード接続することで、1ポートの最大拡張数は最大16ポートとなる。
となると、この組み合わせを6セット用意すれば96ポートまで拡張でき、その状態では30台の4ポートハブを使うことになる。
そして、当然4ポートハブも接続するUSB機器としてカウントされるため、その状態での残りの接続可能数は127-30で97個となる。拡張したポート数が96なので残り1ポートだが、これはPCの余っているUSBポートを使えば大丈夫。ということで、4ポートハブは30個用意すればいい計算だ。
次に検証用のPCだが、ノートPCやミニPCでは確実にUSBポートが不足すると考え、今回はATXサイズのマザーボードをバラックで組み上げて用意することにした。先ほど紹介したように、USBポートが最低7ポートあれば足りる計算だが、マザーボードの内部ヘッダピンも活用すれば、背面のI/Oポートと合わせて7ポートは余裕で確保可能というわけだ。
ただ、なるべく余裕を持たせておこうということで、今回はASRockの「Z790 LiveMixer」を用意した。
このマザーボードの変態っぷりはこちらの記事に詳しいので、ここでは詳細説明を省くが、マザーボードの背面I/Oパネル部だけでUSB 3.1 Type-C×2、USB 3.1×2、USB 3.0×4、USB 2.0×6と、実に14ポートものUSBポートそ備えている。このほか、内部ヘッダピンも含めると23ポートものUSBポートを確保できる。
ただ、搭載チップセットのIntel Z790ではUSB 2.0で最大14ポート、USB 3.1 Gen1では最大10ポート、USB 3.1では最大5ポートしか確保できず、そのままでは23ポートも用意できない。
そこでZ790 LiveMixerでは追加のUSBホストコントローラとしてASMediaの「ASM3042」を搭載し、背面I/OポートのUSB 3.0×1とUSB 2.0×1を確保。さらに、USB 3.0対応USBハブコントローラ(ASMedia ASM1074)×1とUSB 2.0対応ハブコントローラ(Senesys Logic GL852)×2(いずれも4ポート対応)もオンボードで搭載。つまりUSB全23ポートのうち2ポートは追加のUSBホストコントローラ、12ポートは3台の内蔵USBハブによって実現している。
チップセット直結のUSBポートは残りの9ポートで、背面I/Oパネルに配置されるのはそのうちの8ポート。その内訳は、USB 3.1 Type-C×2、USB 3.1×2、USB 3.0×3、USB 2.0×1となっている。
当然だが、オンボードのUSBハブコントローラも接続USB機器としてカウントする必要があるため、Z790 LiveMixerに接続できるUSB機器の最大数は127-3の124台となる。
というわけで、最終的に必要となるUSB機器は、4ポートハブを30台以上、そのほかのUSB機器は124からハブの台数である30を引いた94台用意すれば足りると判断し、その数を用意することにした。
アイ・オー・データ機器に協力いただき、大量のハブとUSBメモリを確保
次の問題は、30台以上のUSBハブと94台のUSB機器の用意だ。まずは筆者手持ちのUSB機器をかき集めてみた。過去、展示会は発表会などでリリースなどを入れて配布されたUSBメモリが多数残っているのでそちらをかき集めてみたところ、約80台のUSBメモリを確保できた。このほかにポータブルSSDを9台、USB接続のスピーカー、スキャナなどで、さらにキーボードやマウス、Webカメラなどを合わせると15台ほど。というわけで、接続するUSB機器については手持ちのものだけでなんとかなりそうだ。
ただし、USBハブについてはそうはいかない。筆者は4ポートハブを2台しか持っていないし、担当編集も1台しかないという。となると、どうにかしてUSBハブを調達する必要がある。
また、USBハブを用意するといっても、多くのハブやUSB機器をカスケード接続することから、PCのUSBポートから供給される電力だけで動作するバスパワー対応のUSBハブでは確実に電力不足となってしまう。となると、ACアダプタを接続して電力を補えるセルフパワー対応USBハブの用意が必須となる。
30台のセルフパワーUSBハブを購入して用意するとなると、結構なコストがかかってしまう。さあどうしよう、と考えていたところ、担当編集が「ちょっといくつかのメーカーに借りられないか確認してみますよ」とのことで、お願いすることに。
その結果、アイ・オー・データ機器にご協力いただけることとなり、バスパワー対応USBハブに加えてUSBメモリも貸していただけることとなった。USB機器はほぼ必要な数が確保できてはいたが、可能な限り同じ機器を接続したほうが条件はいいだろうと考えて、今回はお借りしたUSBメモリを優先的に使って検証を行なうことにした。
お借りしたのは、セルフパワー対応のUSB 3.1 Gen1準拠4ポートUSBハブ「USB3-HB4」にセルフパワー用ACアダプタをそれぞれ38台ずつと、USB 3.0対応のUSBメモリ「U3-AL8G/VP」を60台。USBメモリは必要数に届いていないが、そこは手持ちのUSBメモリを追加すれば十分に足りる。というわけで、機材調達も無事完了し、実際に検証を行なうだけとなった。
2時間ほどかけて準備を行ない、検証を開始
では、いざ検証開始。ただ、今回は検証にあたって下準備の時間がなかったため、まずは検証に向けた準備から開始となった。
準備といっても特に難しいことはない。やるべきことは、検証用マザーボードのZ790 LiveMixerにプロセッサやメモリ、OSインストール用SSDを装着してWindows 11をインストールすることと、検証用の機材を開封することだ。双方を1人でやるとさすがに時間がかかってしまうため、PCの準備は担当編集に任せ、筆者は機材の開封を行なった。
さて、お借りした機材の開封だが、これが結構な時間を要してしまった。数としては、USBハブが36台とACアダプタが36台、USBメモリが60台だが、全て新品同様に梱包されており、お借りしている物なので乱暴に扱うわけにもいかない。結局、全てを開封するだけで1時間半ほど時間がかかってしまった。
筆者が機材を開封している横で、PCのセットアップも順調に進められ、機材を開封し終わる頃にはPCの準備も完了。結局、下準備を初めて約2時間経過したあたりから実際の接続検証を開始したのだった。
序盤は順調に進むも、終焉はあっけなく訪れた
今回の検証では、USB機器の接続状態や認識状態を確認するツールとして「USB Device Tree Viewer」を利用。その上で、ハブやU3-AL8G/VPを1台ずつ接続していき、正常に認識を確認した後に次の機器を接続する、という作業を繰り返すこととした。また、接続するハブには全てセルフパワー用ACアダプタも接続した。なお、検証用PCの環境は以下にまとめた通りだ。
【表】検証用PCの環境 | |
---|---|
マザーボード | ASRock Z790 LiveMixer |
CPU | Core i5-13600K |
メモリ | DDR5-5600 32GB |
システム用ストレージ | Crucial P5 SSD 1TB |
OS | Windows 11 64bit |
ではPCにUSB機器を接続していこう。まず背面のUSB 3.1ポートにハブを1台接続。そして、そのハブにハブをカスケード接続し、有線USBキーボード、ワイヤレスマウスのUSBドングルを接続。ここから先は、U3-AL8G/VPとハブをどんどんとつなげていった。
2つ目のハブの残り2ポートにU3-AL8G/VPを接続したが、当然問題なく認識。その後、3~5台目のハブにもU3-AL8G/VPを接続しても問題なく認識した。先にも紹介したように、PC側の1つのUSBポートにはハブを最大5台しか接続できないため、1ポート目は5台のハブとキーボード、マウス、14台のU3-AL8G/VPを接続し、問題なく認識されたところで終了。
続いて2ポート目だが、こちらも順調そのもので、計5台のハブと16台のU3-AL8G/VPが問題なく認識された。なお、U3-AL8G/VPを全部で23台接続した時点で、Windowsが割り振るドライブレターが尽きてしまったが、それ以降もUSB Device Tree ViewerでU3-AL8G/VPがストレージデバイスとして問題なく認識できていることは確認している。
3ポート目も同様に、計5台のハブと16台のU3-AL8G/VPがそれぞれ問題なく認識された。
これならまだまだ余裕そうだな、と意気揚々と4ポート目に突入したところで、いきなり終焉が訪れた。背面USBポートにハブを接続、続いてそのハブにハブをカスケード接続してU3-AL8G/VPを接続していったところ、3台目までは正常に認識したが、4台目を接続したところでエラーとなり、正常に認識されなくなったのだ。
この時点での接続数は、ハブが17台、キーボード、マウス、U3-AL8G/VPが51台の70台でしかない。これはあまりにも少ないという印象だ。
これには担当編集も首を傾げ、こんなはずはないと、全ての機材を外し、ポートを変えながら検証してみたが、結局は数回繰り返しても結果は同じであった。
そんな中、USB Device Tree Viewerを確認すると、表示されている数字がおかしいことに気が付いた。実際に接続しているハブは、オンボードのものを除いて17台のはずなのに、「USB Standard Hubs」の項目が38と、実接続数の2倍以上にもなっていたのだ。
なんだこれは、と思いつつ、全ての機材を外してハブのみを接続してみたところ、ハブを接続するたびにUSB Standard Hubsの数字が2ずつ増えていくことが判明。つまり、先ほどの状態で物理的には17台しかハブを接続していないのに、内部では34台のハブを接続していることになっていたわけだ。
結局、検証はここで時間切れとなり、接続できた機器の総数はハブが17台、キーボード、マウスがそれぞれ1台ずつ、U3-AL8G/VPが51台の70台という結果だった。
USB 3.0ハブは1台接続しただけで2デバイス分を消費する
検証後に、この結果をアイ・オー・データ機器に確認してもらったところ、USBの規格上、USB 3.0ハブはUSB 3.0部分とUSB 2.0部分を別々のデバイスとして登録する必要があるため、USB3-HB4を接続するとUSBハブ2台として接続される仕様であることが判明。つまり、USB3-HB4を接続すると2デバイス分が消費されるという挙動は正しいものだったのだ。そしてこれはUSB3-HB4に限らず、USB 3.0対応のハブ全てで同じ挙動になるそうだ。
それを考慮した上で再度計算してみると、物理的に接続したハブは17台で、内部的には34台接続していることになる。このほか、Z790 Live MixerのオンボードUSB 3.0ハブが同様に2台分消費。最後にオンボードのUSB 2.0ハブ2台分を加えると38となり、確かにUSB Device Tree Viewerの数字と一致している。
そういうことならはじめからUSB 2.0ハブを用意すればよかった、と言っても今回はあとの祭り。というわけで今回の検証では、物理的に接続できた機器の総数はハブが17台、キーボード、マウスがそれぞれ1台ずつ、U3-AL8G/VPが51台の計70台。論理的にはハブがオンボードも含めて38台、キーボード、マウスがそれぞれ1台ずつ、U3-AL8G/VPが51台の計91台が認識された、というのを最終結果にすることとした。
個人的には、USB 3.0ハブの仕様があったとはいえ、物理的な接続台数が70台とかなり少なかったことで、非常に中途半端な結果という印象を受けたのは事実だ。とはいえ、論理的には90台以上のUSB機器を接続できていることから、結果としてはまずまず妥当と考える。
また、最後に認識エラーが発生するまでは非常に順調に認識され、動作の不安定さも全くなかった。こういったあたりは最新システムだからこそという部分かもしれないが、同時に、やはり理論値はあくまでも理論値であり、実際は異なることが改めて実証された形だ。
そして、今回の結果はともかく、1台のPCにこれだけ多くのUSB機器を同時に接続することはまずないだろうし、ほとんどのユーザーには全く影響がない、ということだけは間違いないだろう。