ハブの段数制限

良記事。ただ、実際に127台繋がらないカドをI・Oデータの人に説明させるくらいまでを狙って欲しかった。
USBの納得しづらい様々な制限は、USB規格が"どうつかっても間違いが起こらない"ことを目指してデザインされていることによる。

USB1.1/2.0は半二重規格だからコリジョンや伝送速度不足でエラーが出ても不思議では無い

USBの転送はホスト主導で行われるので、全部のデバイスが規格を守るなら"原理的には"コリジョンは起こらない。これはEthernetのように原理的なコリジョンを想定しているネットワークとの大きな違いとなっている。もっとも、(例えば、ホストの要求するデータ量以上を転送するような)行儀の悪いデバイスコリジョンを起こせるので、コリジョンに対する対処は規格に規定されている。
逆に言えば、コリジョンを起こさないようにホストが転送を指示できるようにするには、ホストが転送をスケジュールできるようにする必要が有り、そのためには"許される最大遅延時間"を予め決めておく必要が有る。

(出典: Universal Serial Bus Specification Revision 2.0)
で、この時間を決めるためにUSB規格が想定しているHUBの段数が5段なのでWindowsは5段以上のHUBを却下する。USB規格が延長ケーブルを許可しないのは、この前提を崩す点にある。(実際には信号品質の問題も有る)
もちろんEthernetでもHUBの段数制限は存在するが、EthernetではそもそもUSBのホストにあたる存在が無いのでこの手の制約違反を検出する方法が無い。そういう意味ではEthernetはよりユーザに厳しいネットワークと言える。

ちなみに、仮にソフトウェア的に細工をしたとしても、市販のUSB2.0のHUBは7〜8段程度接続することで正常に通信できなくなるようだ。今は検証環境を持っているので再試したいところ。
USBにはなかなか分かりやすい解説が無いので、"恨まれる規格"になっている不幸な面が有るような気がする。