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

USB デバイスの概要

USB (Universal Serial Bus) は、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するために PC 業界で開発された低コストのソリューションです。

USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。デバイスはハブデバイスに接続できます。ハブデバイスは、他のハブデバイスを含めて複数のデバイスを接続します。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。USB の設計により、システムの背面パネルの混雑を軽減できます。他にも、USB デバイスを使用すると次のような利点があります。

Sun は USB デバイスを次のようにサポートしています。

次の表に、Solaris 環境でサポートされるUSB デバイスを示します。

USB デバイス 

USB デバイスがサポートされるシステム 

オーディオデバイス上の HID コントロール 

SPARC および IA システム 

ハブ 

SPARC および IA システム 

キーボードとマウス 

ohci コントローラに基づいた Sun の USB がサポートされている SPARC システム

uhci コントローラに基づいた USB バ スを持つ IA システム

オンボードの USB コントローラだけがサポートされる。 

大容量ストレージ 

SPARC および IA システム 

プリンタ 

SPARC および IA システム 

スピーカおよびマイク 

SPARC および IA システム 

よく使用される USB 関連の略語

次の表に、Solaris 環境で使用される USB の略語について説明します。USB の構成要素と略語についての詳細は、http://www.usb.org を参照してください。

略語 

定義 

USB 

Universal Serial Bus 

USBA 

USB アーキテクチャ (Solaris) 

USBAI 

USBA クライアントドライバインタフェース (Solaris) 

HCD 

USB ホストコントロールドライバ 

USB バスの説明

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

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

図 28-1 USB 物理デバイスの階層

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

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

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

次の表に、図 28–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 ハブドライバは自己検査ネクサスドライバであることです。