このプロジェクトのコンセプトには、USBホストとUSBデバイスを有線ではなく無線で接続することを目的とした数々の取り組みや製品と相通ずるところがある。しかし、これらの取り組みでまだ解決されていないのが、複数のホストコントローラがネットワーク経由でシリアルにUSBデバイスを共有できないという問題である。
USBサーバーを使用して、ネットワーク接続を介してUSBを拡張すれば、この問題は解決できる。Keyspan社のWelch氏は、「シリアル共有モデルはネットワークUSBのキラーアプリケーションだと考えている。たとえば、多機能プリンタのFax、スキャナ、メモリーカードインターフェースといったすべての機能を共有できるようになる。すでに販売されているほとんどのUSBデバイスは、設計を変更しなくても共有できる」と語っている。
最近発表されたワイヤレスUSB規格では、USBデバイスとホスト間の接続を無線化するために何が必要となるかが定められている*3)。現時点では有線からの移行のみに焦点が当てられており、ネットワークを介したUSBデバイスのシリアル共有については考慮されていない。この規格では、いずれはホストコンピュータ上で実行されている他のアプリケーションとUSBでUWB(超広帯域無線)を共有できるようにする必要があるとして、この帯域幅共有機能のサポートをワイヤレスUSBホスト側に要求している。ホスト側で他のアプリケーションとの帯域幅の共有を考慮しなければならないのなら、ワイヤレスネットワーク接続への移行を、デバイスと帯域幅を同一ネットワーク上にある他のホストコンピュータと共有する機会と捉えたらどうだろう?
USBインターフェース自体は、電気的および論理的プロトコルとして便利かつ優れたものであることが実証されている。USBインターフェースを使えば、設計者はユーザーにコンピュータのケースを開けさせたり、電源を切らせたりしなくても、ワイヤレスネットワーキングなどのインターフェース機能をホストコンピュータに追加することができる。この実践プロジェクトでは、リエンジニアリングを行わなくても、あるいは接続機能が搭載されたUSBデバイスの登場を待たなくても、USBデバイスの接続性と共有性をすぐに拡張できることが実証された。
USB(universal serial bus)デバイスを開発・サポートするためには、USB 2.0規格とそれに関連するOHCI(Open Host Controller Interface)規格の内容を理解する必要がある*A)、*B)。このプロジェクトでは、Jan Axelson氏の著書も参考にした*C)。USB用語になじみのない読者には、これらの参考文献から抜粋した以下の説明が役立つだろう。
USBは、同時アクセスが可能な周辺機器とホストコンピュータ間のデータ交換を可能にするポーリング式のケーブルバスである。どのUSBシステムにもホストは1台しかない。ホストコンピュータシステムへのUSBインターフェースをホストコントローラ、すなわちUSBホストと呼ぶ。ホストコントローラは、ハードウエア、ファームウエア、ソフトウエアを任意に組み合わせて実装できる。ホストコントローラによってすべてのデータ転送が開始されるため、接続されている周辺機器はホストでスケジューリングされたトークンベースのプロトコルを介してUSB帯域幅を共有できる。USBバスは、ホストや他の周辺機器の動作中に接続、設定、使用、取り外しができるホットプラグ対応の周辺機器をサポートしている。USB 2.0では、高速(480Mビット/秒)、フルスピード(12Mビット/秒)、低速(1.5Mビット/秒)の3つのデータ転送速度がサポートされている。
実際にシステムに機能を提供するのはUSBデバイスであり、1つの物理的デバイスが複数の機能を持つこともある。USBデバイスは、ハブ、ヒューマンインターフェース、プリンタ、イメージング、大容量ストレージなどのデバイスクラスに分類される。USBデバイスは、自己認識と汎用設定を行うための情報を保持する必要があり、常に定義されているUSBデバイスの状態と一貫した動作を示していなければならない。ハブの役割を持つUSBデバイスは、USBデバイス接続ポイントとして機能する。
USBデバイスは枝分かれ状にホストと接続される。バスの各有線セグメントは、ハブまたは機能とホスト間の、あるいは別のハブまたは機能に接続されたハブとホスト間のポイントツーポイント接続で構成される。ハブが各分岐点となる。ホストシステムには1つ以上の接続ポイントを提供するルートハブが組み込まれている。ハブには、USBデバイスのポートへの接続またはポートからの取り外しを通知するステータスビットが保持される。ホストはハブに対してこれらのステータスビットの問い合わせを行う。接続の場合には、ホストはポートを有効にして、USBデバイスの制御パイプを介してデフォルトアドレスを割り当てる。USBケーブルの終端はホスト側とデバイス側で形状が異なり、ユーザーが誤ったデバイスに接続できないようになっている。USBホストは、公称5V、500mAまでの電源およびグラウンドラインを各デバイスに提供するなど、USBデバイスよりも多くの要件を満たさなければならないため、この制約があることは重要である。最長5mのケーブルを使用できるが、ホストとデバイスの間に最大5台のハブを設置すれば、周辺機器からホストまでの距離を30mまで延長できる。30mを超えるような長距離の接続には別のインターフェースを必要とし、このプロジェクトではイーサネット接続を使用した。
ホスト上にある送信元および宛先と、デバイス上のエンドポイントとの間におけるUSBのデータ転送モデルはパイプである。ストリームデータパイプはUSB定義構造ではないが、メッセージデータパイプはそうだ。パイプは、データの帯域幅、転送サービスのタイプ、そして方向性やバッファサイズなどのエンドポイントの特性と関連付けられている。ほとんどのパイプは、ユーザーによってUSBデバイスが設定されたときに有効になる。メッセージパイプというデフォルトの制御パイプが必ず存在し、ユーザーがデバイスを起動すると、そのデバイスの設定、ステータス、制御情報へのアクセスを提供する。
バスエニュメレーションによって、バスに接続されたデバイスが識別され、固有のアドレスが割り当てられる。USBデバイスはいつでも接続・取り外しが可能なため、バスエニュメレーションはUSBシステムソフトウエアの進捗中の動作となっている。バスエニュメレーションには、デバイスの取り外しの検出および処理も含まれる。
*A)USB Implementers Forum, Universal Serial Bus Specification, Revision 2.0, April 27, 2000,www.usb.org/pub/supportinformation/papers/hcir1_0a.pdf.
*B)USB Implementers Forum, Open Host Controller Interface Specification for USB, Release 1.0a, 1999, ftp://ftp.compaq.com/developers/docs.
*C)Axelson, Jan, USB Complete, Third Edition, Lakeview Research, 2005.
米Icron社のアプローチは、USB(universal serial bus)デバイスをネットワーク経由で操作することではなく、USBケーブルを専用のワイヤレスインターフェースに置き換えることを主眼としている。Icron社のワイヤレスアーキテクチャでは、ローカルとリモートのExtremeUSBサブシステムドングル(LexおよびRex)を使用して、USBデバイスをホストシステムに接続する(図A)。タイミング要件はLexとRexで処理されるため、ホストUSBシステムソフトウエアを修正する必要はない。
ホストまたはデバイスのメッセージ受信ACK応答時間はターンアラウンド時間パラメータによって制限される。ワイヤレス方式では、この時間制限は送信モードと受信モードで半二重無線を切り替える時間や、帯域幅の制限による転送遅延、パケットの損失、高い転送エラーレートのほかにも、エラー訂正や暗号化処理による遅延の影響を受ける場合がある。
Lex・Rexシステムでは、割り当てられた時間内にデータパケットをホストに返せないことをLexサブシステムが認識したときに、NAK(否定ACK)でホストシステムに応答することでこのタイミング制約に対応する(図B)。同時に、Lexはその要求をRexに転送する。Rexは要求をデバイスに転送し、デバイスへのローカルACKを生成する。続いて、RexはそのメッセージをLexに転送する。ホストシステムによって要求が再発行されると、Lexは要求された情報がキャッシュされていることを認識し、ホストに送信する。
※3…USB Implementers Forum, Wireless Universal Serial Bus Specification, Revision 1.0, 2005, www.usb.org.
Copyright © ITmedia, Inc. All Rights Reserved.