USB (Universal Serial Bus) は、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するために PC 業界で開発された低コストのソリューションです。
USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。デバイスはハブデバイスに接続できます。ハブデバイスは、他のハブデバイスを含めて複数のデバイスを接続します。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。つまり、システムの背面パネルの混雑を軽減することです。他にも、USB デバイスを使用すると次のような利点があります。
USB デバイスはホットプラグ可能です。詳細については、「USB デバイスのホットプラグ」を参照してください。
Solaris 環境で 1 ホストコントローラあたり、最大 126 台のデバイスをサポートします。
最大 12M ビット/秒のデータ転送速度をサポートします。
ロースピードデバイス (1.5M ビット/秒) からフルスピードデバイス (12M ビット/秒) までをサポートします。
Solaris Ready USB PCI コントローラをサポートします。詳細については、http://www.sun.com/ioを参照してください。
低コストの外部ハブを追加するだけで簡単にバスを拡張することが可能です。また、ハブとハブを接続してツリートポロジを構築できます。
Sun は USB デバイスを次のようにサポートしています。
Solaris 9 環境では、USB 1.1 デバイスをサポートします。
Solaris 8 10/00、Solaris 8 1/01、Solaris 8 4/01、Solaris 8 7/01、Solaris 8 10/01、Solaris 8 2/02、または Solaris 9 リリースが動作しているSun BladeTM 100 および Sun Blade 1000 システムで、USB デバイスをサポートします。
Solaris 9 リリースが動作している NetraTM X1/T1 および Sunfire 280R システムで、USB デバイスをサポートします。
Solaris 8 および Solaris 9 (Intel 版) が動作しているIA システムで、USB サポートを提供します。詳細については、scsa2usb(7D) マニュアルページを参照してください。
次の表に、Solaris 環境でサポートされるUSB デバイスを示します。
USB デバイス |
USB デバイスがサポートされるシステム |
---|---|
オーディオデバイス上の HID コントロール |
SPARC および IA システム |
ハブ |
SPARC および IA システム |
キーボードとマウス |
ohci コントローラに基づいた Sun の USB がサポートされている SPARC システム uhci コントローラに基づいた USB バ スを持つ IA システム オンボードの USB コントローラだけがサポートされる。 |
大容量ストレージ |
SPARC および IA システム |
プリンタ |
SPARC および IA システム |
スピーカおよびマイク |
SPARC および IA システム |
次の表に、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 ホストコントローラとルートハブ」を参照してください。
図 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 デバイスは複数のデバイスクラスに分類されます。各デバイスクラスには対応するドライバがあります。1 つのクラス内のデバイスは、同じデバイスドライバで管理されます。ただし USB 仕様では、特定のクラスに属さない、ベンダー固有のデバイスも許可しています。類似した属性とサービスを持つデバイスはグループ化されます。
Human Interface Device (HID) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio Device、Monitor Device、Printer Device、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送についてどのように動作するかを指定します。クラス情報についての詳細は、http://www.usb.org サイトを参照してください。
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 ハブドライバは自己検査ネクサスドライバであることです。