Solaris のシステム管理 (基本編)

USB バスの説明

USB 仕様は、ライセンス料を払わずに入手することができます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。

USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの起点となるルートハブが含まれます。バスの詳細については、USB ホストコントローラとルートハブを参照してください。

図 29–1 USB 物理デバイスの階層

この図は、合成デバイス (ハブとプリンタ) と複合デバイス (キーボードとマウス) を含む、有効な USB ポートが 3 つ搭載されたシステムを示しています。

図 29–1 は、有効な USB ポートが 3 つ搭載されたシステムを示しています。1 番目の USB ポートは Zip ドライブに接続されています。この Zip ドライブにはハブが組み込まれていないため、他のデバイスは接続できません。2 番目の USB ポートはハブに接続されており、このハブには Jaz ドライブと、キーボードとマウスの複合デバイス が接続されています。2 番目のハブのポートの 1 つには、組み込みハブを 1 つ持つキーボードが接続されており、そのハブにマウスが接続されています。

図 29–1 は、ハブとプリンタの「合成デバイス」の例も示しています。ハブとプリンタは両方とも同じプラスチック製のケースに入っていますが、異なる USB バスアドレスを持ちます。また、図 29–1 は「複合デバイス」の例も示しています。キーボードとマウスの複合デバイスは、同じプラスチック製のケースに入っていますが、同じ USB バスアドレスを持ちます。この図では、1 本のケーブルが USB マウスをキーボードとコントローラの複合デバイス に接続しています。

次の表に、図 29–1 に示したデバイスの一部について、デバイスツリーパス名を示します。

Zip ドライブ 

/pci@1f,4000/usb@5/storage@1

キーボード 

/pci@1f,4000/usb@5/hub@2/device@1/keyboard@0

マウス 

/pci@1f,4000/usb@5/hub@2/device@1/mouse@1

Jaz ドライブ 

/pci@1f,4000/usb@5/hub@2/storage@3

プリンタ 

/pci@1f,4000/usb@5/hub@3/printer@1

USB デバイスとドライバ

USB デバイスは複数のデバイスクラスに分類されます。各デバイスクラスは対応するドライバを持っています。1 つのクラス内のデバイスは同じデバイスドライバで管理されます。ただし USB 仕様では、特定のクラスに属さない、ベンダー固有のデバイスも許可しています。類似した属性とサービスを持つデバイスはグループ化されます。

Human Interface Device (HID) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio Device、Monitor Device、Printer Device、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送についてどのように動作するかを指定します。クラス情報についての詳細はhttp://www.usb.org サイトを参照してください。

Solaris USB アーキテクチャ (USBA)

USB デバイスは、2 つのレベルのデバイスツリーノードとして表現されます。デバイスノードは、USB デバイス全体を表します。1 つまたは複数の子インタフェース ノードはデバイス上にある個々のUSB インタフェースを表します。特殊なケースとして、デバイスノードとインタフェースノードが 1 つのノードに「結合される」場合もあります。

ドライバのバインドは互換性のある名前属性の使用によって実現されます。詳細については、『IEEE 1275 USB binding (英語版)』の 3.2.2.1 項と『Writing Device Drivers (英語版)』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することができます。また、1 つのインタフェースだけにバインドすることも可能です。たとえば、キーボードやマウスだけにバインドすることもできます。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。1275 バインドの 3.2.2.1 項で定義されているように、このドライバは互換名プロパティを使用して、各インタフェースに対してドライバのバインドを試みます。

Solaris USB アーキテクチャ (USBA) は、USB 1.0 および 1.1 の仕様に加え、Solaris ドライバ条件に準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA とは、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層のことです。

SCSA と USBA の違いは、SCSA がバスを検査するときに .conf ファイルを使用するのに対して、USB ハブドライバは自己検査ネクサスドライバであることです。