この章では、Solaris 環境で USB デバイスを管理する方法の概要を説明します。
この章で説明する内容は、次のとおりです。
Solaris 環境でのデバイス管理に関する全般的な情報は、『Solaris のシステム管理 (第 1 巻)』の「デバイスの管理 (概要)」を参照してください。
USB (Universal Serial Bus) は、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するために PC 業界で開発された低コストのソリューションです。
USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。デバイスはハブデバイスに接続できます。ハブデバイスは、他のハブデバイスを含めて複数のデバイスを接続します。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らして、システムの背面パネルをより整理された状態にすることです。他にも、USB デバイスを使用すると次のような利点があります。
USB デバイスはホットプラグ可能です。詳細は、USB デバイスのホットプラグを参照してください。
ロースピードデバイス (1.5M ビット/秒) からフルスピードデバイス (12M ビット/秒) までをサポートします。
低コストの外部ハブを追加するだけで簡単にバスを拡張することが可能です。また、ハブとハブを接続してツリートポロジを構築できます。
Sun は USB デバイスを次のようにサポートしています。
Solaris 8 10/00、Solaris 8 1/01、Solaris 8 4/01、Solaris 8 7/01、または Solaris 8 10/01 リリースが動作している Sun BladeTM 100 および Sun Blade 1000 システムで、USB デバイスをサポートします。
Sun RayTM システムで USB デバイスをサポートします。
Solaris 8 (Intel 版) が動作している IA システムで、キーボード、マウス、一部の大容量ストレージデバイス (Zip ドライブなど) について、USB サポートを提供します。詳細は、scsa2usb(7D) のマニュアルページを参照してください。
次の表に、Solaris 環境でサポートされる USB デバイスを示します。
USB デバイス |
USB デバイスがサポートされるシステム |
---|---|
キーボードとマウス |
ohci(7D) コントローラに基づいた Sun の USB がサポートされている SPARC システム uhci(7D) コントローラに基づいた USB バスを持つ IA システム オンボードの USB コントローラだけがサポートされる。プラグイン式のホストコントローラ PCI カードはサポートされない。 |
大容量ストレージ |
SPARC と IA |
プリンタ |
SPARC と IA |
ハブ |
SPARC と IA |
次の表に、Solaris 環境で使用される USB の略語について説明します。USB の構成要素と略語についての詳細は、http://www.usb.org を参照してください。
略語 |
定義 |
---|---|
USB |
Universal Serial Bus |
USBA |
Universal Serial Bus Architecture (Solaris) |
USBAI |
USBA Client Driver Interface (Solaris) |
HCD |
USB host controller driver |
USB 仕様は、ライセンス料を払わずに入手することができます。 USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。
USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの起点となるルートハブが含まれます。ハブについての詳細は、USB ハブデバイスを参照してください。
上記の例では、1 つのシステムに 3 つの有効な USB ポートが 3 つあります。1 番目の USB ポートは Zip ドライブに接続されています。この Zip ドライブにはハブが組み込まれていないため、他のデバイスは接続できません。2 番目の USB ポートはハブに接続されており、このハブには Jaz ドライブと、キーボードとマウスの合成デバイス が接続されています。2 番目のハブのポートの 1 つには、組み込みハブを 1 つ持つキーボードが接続されており、そのハブにマウスが接続されています。
次の表に、上記の例に示したデバイスの一部について、デバイスツリーパス名を示します。
Zip ドライブ |
/pci@1f,4000/usb@5/storage@1 |
キーボード |
/pci@1f,4000/usb@5/hub@2/keyboard@1 |
マウス |
/pci@1f,4000/usb@5/hub@2/mouse@2 |
Jaz ドライブ |
/pci@1f,4000/usb@5/hub@2/storage@3 |
プリンタ |
/pci@1f,4000/usb@5/hub@3/printer@1 |
USB デバイスは複数のデバイスクラスに分類されます。各デバイスクラスには対応するドライバがあります。1 つのクラス内のデバイスは、同じデバイスドライバで管理されます。ただし USB 仕様では、特定のクラスに属さない、ベンダー固有のデバイスも許可しています。類似した属性とサービスを持つデバイスはグループ化されます。
HID (Human Interface Device) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio Device、Monitor Device、Printer Device、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送についてどのように動作するかを指定します。クラス情報についての詳細は、http://www.usb.org サイトを参照してください。
USB デバイスは、2 つのレベルのデバイスツリーノードとして表現されます。1 つのデバイスノードは USB デバイス全体を表し、1 つまたは複数の子インタフェースノードはデバイス上にある個々の USB インタフェースを表します。特殊なケースとして、デバイスノードとインタフェースノードが 1 つのノードに結合される場合もあります。
ドライバのバインドは、互換性のある名前属性を使用することによって実現されます。詳細は、『IEEE 1275 USB binding』の 3.2.2.1 項と『Writing Device Drivers』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することも、キーボードやマウスなど 1 つのインタフェースだけにバインドすることも可能です。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。1275 バインドの 3.2.2.1 項で定義されているように、このドライバは互換名プロパティを使用して、各インタフェースに対してドライバのバインドを試みます。
図 1–1 に、ハブとプリンタの複合デバイスの例を示します。ハブとプリンタは両方とも同じプラスチック製のケースに入っていますが、異なる USB バスアドレスを持ちます。また、図 1–1 に、合成デバイスの例を示します。キーボードとコントローラは同じプラスチック製のケースに入っていますが、同じ USB バスアドレスを持ちます。この例では、1 本のケーブルが USB マウスをキーボードとコントローラの合成デバイス に接続しています。
Solaris USB Architecture (USBA) は、USB 1.0 および 1.1 の仕様に加え、Solaris ドライバ条件に準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA とは、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層のことです。
SCSA と USBA の違いは、SCSA がバスを検査するときに .conf ファイルを使用するのに対して、USB ハブドライバは自己検査ネクサスドライバであることです。
次の節では、Solaris 環境における USB について知っておく必要のある情報を説明します。
Solaris 環境では複数の USB キーボードとマウスをサポートしていないため、USB キーボードとマウスは常に 1 つだけシステムに接続するようにしてください。詳細は、次の説明を参照してください。
バス上に接続されたキーボードおよびマウスは、コンソールキーボードおよびマウスとして構成されます。キーボードとマウスがルートハブにない場合、システムのブートが遅くなります。
コンソールキーボードおよびマウスは、システムのリブート後であればいつでも別のハブへ移動することができます。ただし、リブート中や ok プロンプトが出ている間は移動できません。キーボードおよびマウスは、プラグインした後は再び完全に機能します。
SPARC のみ – USB キーボードの電源キーと Sun タイプ 5 キーボードの電源キーの動作は異なります。USB キーボードでは、「SUSPEND/SHUTDOWN」キーを使用してシステムを中断またはシャットダウンすることができますが、システムの電源を入れることはできません。
Sun 社製以外の USB キーボードでは、キーパッドの左側にある機能は使用できません。
複数のキーボードはサポートされません。
キーボードは認識され、使用できますが、コンソールキーボードとしては認識されません。
ブート時に最初に認識されたキーボードがコンソールキーボードとなります。このため、複数のキーボードが接続されていると、ブート時に混乱の原因となります。
コンソールキーボードを取り外した場合、次に利用可能な USB キーボードはコンソールキーボードにはなりません。次にホットプラグされるキーボードがコンソールキーボードになります。
複数のマウスはサポートされません。
マウスは認識され、使用できますが、コンソールマウスとしては認識されません。
ブート時に最初に認識されたマウスがコンソールマウスとなります。このため、複数のマウスが差し込まれていると、ブート時に混乱の原因となります。
コンソールマウスを取り外した場合、次に利用可能な USB マウスはコンソールマウスにはなりません。次にホットプラグされるマウスがコンソールマウスになります。
Sun 社製以外のキーボードを PS/2 マウスと合成して使用する場合、このキーボードがブート時に最初に認識されると、PS/2 マウスが差し込まれていなくても、このキーボードとマウスがコンソールキーボードとマウスになります。このため、別の USB マウスがシステムに差し込まれていても、コンソールマウスとして構成されないので機能しません。
2 ボタンと 3 ボタンのマウスだけがサポートされます。ホイール付きマウスは動作しません。3 ボタンよりも多いマウスは 3 ボタンのマウスのように動作します。
USB ハブは次のことを行います。
ポートにおけるデバイスの取り付けと取り外しの監視
ポートにおける個々のデバイスの電源管理
ポートへの電源の制御
USB ホストコントローラにはルートハブという組み込みハブがあります。背面パネルに見えるポートはルートハブのポートです。USB ホストコントローラは次のことを行います。
USB バスの管理。個々のデバイスはバスの調整はできません。
デバイスによって決定されるポーリング間隔による、デバイスのポーリング。ポーリング間隔 (時間) を考慮してデバイスに十分なバッファがあることを前提とします。
USB ホストコントローラとそれに接続されているデバイス間でのデータの送信。ピアツーピア通信はサポートされません。
SPARC システムと IA システムのどちらにおいても、ハブを 4 段を超えて多段接続しないでください。SPARC システムでは、Open Boot PROM (OBP) は 4 段を超えるデバイスを正確に認識できません。
バス電源供給方式のハブは多段接続しないでください。つまり、バス電源供給方式のハブを別のバス電源供給方式のハブに接続することはできません。バス電源供給方式のハブは独自の電源を持っていません。USB フロッピーディスクデバイスはすべての電源をバスから取り入れるため、バス電源供給方式のハブ上では機能しない可能性があります。
Solaris 8 10/00 リリースから、USB の Zip、Jaz、Clik!、SmartMedia、CompactFlash、および ORB などのリムーバブル大容量ストレージデバイスがサポートされるようになりました。Solaris 環境でサポートされるデバイスの完全なリストについては、scsa2usb(7D) のマニュアルページを参照してください。
これらのデバイスは、ボリューム管理を使用してもしなくても管理することができます。ボリューム管理を実行している状態でのデバイス管理についての情報は、 vold(1M) のマニュアルページを参照してください。
システムが電源管理を有効にしている場合、USB のフレームワークはすべてのデバイスの電源管理を最大限に試みます。USB デバイスの電源管理により、ハブドライバはデバイスが接続されているポートの中断も行います。リモートウェイクアップ (呼び起こし) をサポートするかしないかは、デバイスによって異なります。デバイスがリモートウェイクアップをサポートしている場合は、イベントの発生時 (たとえばマウスが移動したときなど) に、接続されているハブを呼び起こします。アプリケーションが入出力を送信した場合も、ホストシステムはデバイスを呼び起こすことができます。
リモートウェイクアップ機能がサポートされている場合、すべての HID (キーボードやマウスなど)、ハブ、およびストレージデバイスは、デフォルトで電源管理されます。USB プリンタが電源管理されるのは、2 つの印刷ジョブ間だけです。
電源消費を削減するために電源管理を行う場合、まず、USB 末端デバイスの電源が切断され、しばらくしてから親ハブの電源が切断されます。また、ポートに接続されているすべてのデバイスの電源が切断されると、しばらくしてからハブの電源が切断されます。最も効率的に電源管理をするためには、あまり多くのハブを多段接続しないでください。
USB デバイスは、プラグインするとすぐにシステムのデバイス階層に表示されます (prtconf(1M) コマンドで確認できます)。また、デバイスが使用中でない限り、USB デバイスを取り外すとシステムのデバイス階層から消えます。
使用中の USB デバイスを取り外した場合、ホットプラグの動作は若干異なります。使用中の USB デバイスを取り外した場合、デバイスノードは残り、このデバイスを制御しているドライバはデバイス上のすべての動作を停止します。それ以降、このデバイスに発行される新しい入出力動作はエラーで戻されます。
このような場合、システムは元のデバイスを接続するようにプロンプトを表示します。使用中の USB デバイスを誤って取り外してしまった場合は、次のようにして回復します。
元のデバイスを同じポートに接続します。
そのデバイスを使用しているアプリケーションを停止します。
デバイスを取り外します。
元のデバイスが再びプラグインされるまで、USB ポートは使用できません。デバイスが使用できない場合は、USB ポートは次にリブートするまで使用できません。
動作中の、つまり開いているデバイスを削除すると、データの整合性が損なわれる可能性があります。デバイスを取り外す前には、必ずデバイスを閉じるようにしてください。ただし、コンソールキーボードとマウスは例外で、動作中でも移動することができます。
市販されている USB ケーブル延長機器は絶対に使用しないでください。デバイスを接続するときは、必ずハブと充分な長さのあるケーブルを使用してください。USB デバイスを接続するときは、必ずフルレイト (12M ビット/秒) の 20/28 AWG ケーブルを使用してください。
Solaris 8 10/00 リリースから、Solaris の印刷マネージャを使用して USB ポート付きの SPARC システムに接続されている USB プリンタを設定できます。Solaris 8 4/01 リリースから、IA システムにも USB プリンタを設定できるようになりました。
USB プリンタ用の新しい論理デバイス名は次のとおりです。
/dev/printers/N |
このため、USB プリンタをプリンタサーバーに追加するときは、「新しいローカルプリンタを設定」画面の「プリンタポート」で、上記デバイスの 1 つを USB プリンタ用に選択します。Solaris 印刷マネージャを使用してプリンタを設定する方法についての詳細は、『Solaris のシステム管理 (第 2 巻)』を参照してください。
新しい Solaris USB プリンタドライバは USB プリンタクラス準拠のプリンタをすべてサポートします。推奨される PostScriptTM プリンタについては、usbprn(7D) のマニュアルページを参照してください。
usbprn ドライバは、GhostScript など Sun 社製以外の PostScript 変換パッケージを使用する PostScript 以外のプリンタにも準拠しています。変換パッケージは Solaris 8 Software Companion CD から入手できます。Solaris 8 Software Companion CD の入手方法については、http://www.sun.com/software/solaris/binaries/package.html を参照してください。
USB プリンタのホットプラグに関する情報と注意事項については、usbprn(7D) のマニュアルページの「NOTES」と「DIAGNOSTICS」の節を参照してください。