この章では、USB (Universal Serial Bus) デバイスの概要と、Solaris 環境で USB デバイスを使用する手順について説明します。
USB デバイスを使った手順については、次の節を参照してください。
この章の内容は次のとおりです。
動的再構成およびホットプラグについての一般的な情報については、第 28 章「デバイスの動的構成 (手順)」を参照してください。
USB プリンタの構成情報については、『Solaris のシステム管理 (上級編)』の「印刷の新機能」を参照してください。
Universal Serial Bus (USB) は PC 業界で開発された、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するための低コストのソリューションです。
USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。デバイスはハブデバイスに接続できます。ハブデバイスは、他のハブデバイスを含めて複数のデバイスを接続します。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。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 (x86 版) が動作している x86 システムで、USB サポートを提供します。詳細については、scsa2usb(7D) のマニュアルページを参照してください。
次の表に、Solaris 環境でサポートされるUSB デバイスを示します。
USB デバイス |
USB デバイスがサポートされるシステム |
---|---|
オーディオデバイス上の HID コントロール |
SPARC および x86 システム |
ハブ |
SPARC および x86 システム |
キーボードとマウス |
ohci コントローラに基づいた Sun の USB がサポートされている SPARC システム uhci コントローラに基づいた USB バ スを持つ x86 システム オンボードの USB コントローラだけがサポートされる。 |
大容量ストレージ |
SPARC および x86 システム |
プリンタ |
SPARC および x86 システム |
スピーカおよびマイク |
SPARC および x86 システム |
次の表に、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 ホストコントローラとルートハブを参照してください。
図 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 デバイスは複数のデバイスクラスに分類されます。各デバイスクラスは対応するドライバを持っています。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 ハブドライバは自己検査ネクサスドライバであることです。
次の節では、Solaris 環境における USB について知っておく必要のある情報を説明します。
公式にサポートされているのは、Sun 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 システムと x86 システムのどちらにおいても、ハブを 4 段を超えて多段接続しないでください。SPARC システムでは、OpenBootTM PROM (OBP) は 4 段を超えるデバイスを正確に認識できません。
バス電源供給方式のハブは多段接続しないでください。つまり、バス電源供給方式のハブを別のバス電源供給方式のハブに接続することはできません。バス電源供給方式のハブは独自の電源を持っていません。USB フロッピーディスクデバイスはすべての電源をバスから取り入れるため、バス電源供給方式のハブ上では機能しない可能性があります。
SPARC システムでは、USB デバイスの保存停止・復元再開機能が完全にサポートされます。ただし、稼働中のデバイスを保存停止したり、システムの電源がオフになっているときにデバイスを取り外すことは決してしないでください。
SPARC システムで電源管理を有効にしている場合、USB のフレームワークはすべてのデバイスの電源管理を最大限に試みます。USB デバイスの電源管理により、ハブドライバはデバイスが接続されているポートの中断も行います。リモートウェイクアップ (呼び起こし) をサポートするかしないかは、デバイスによって異なります。デバイスがリモートウェイクアップをサポートしている場合は、イベントの発生時 (たとえばマウスが移動したときなど) に、接続されているハブを呼び起こします。アプリケーションがデバイスに入出力を送信した場合も、ホストシステムはデバイスを呼び起こすことができます。
リモートウェイクアップ機能がサポートされている場合、すべてのHID (キーボード、マウス、スピーカ、マイクなど)、ハブ、およびストレージデバイスは、デフォルトで電源管理されます。USB プリンタが電源管理されるのは、2 つの印刷ジョブ間だけです。
電源消費を減らすために電源管理を行う場合、まず USB 末端デバイスの電源が切断されます。次に、しばらくしてから親ハブの電源が切断されます。また、ポートに接続されているすべてのデバイスの電源が切断されると、しばらくしてからハブの電源が切断されます。最も効率的に電源管理をするためには、あまり多くのハブを多段接続しないでください。
市販されている USB ケーブル延長機器は絶対に使用しないでください。デバイスを接続するときは、必ずハブと充分な長さのあるケーブルを使用してください。USB デバイスを接続するときは、必ずフルレイト (12M ビット/秒) の 20/28 AWG ケーブルを使用してください。
作業 |
説明 |
参照先 |
---|---|---|
1. ホットプラグ可能な USB 大容量ストレージデバイスを追加する |
vold を使用して、ホットプラグ可能な USB 大容量ストレージデバイスを取り付ける | |
vold を使用しないで、ホットプラグ可能な USB 大容量ストレージデバイスを取り付ける | ||
2. ホットプラグ可能な USB 大容量ストレージデバイスを取り外す |
vold を使用して、ホットプラグ可能な USB 大容量ストレージデバイスを取り外す | |
vold を使用しないで、ホットプラグ可能な USB 大容量ストレージデバイスを取り外す | ||
3. USB 大容量ストレージデバイスをマウントする |
vold を使用して、ホットプラグ可能な USB 大容量ストレージデバイスをマウントする | |
|
vold を使用しないで、ホットプラグ可能な USB 大容量ストレージデバイスをマウントする | |
4. ホットプラグ可能な USB カメラを追加する |
ホットプラグ可能な USB カメラを追加してデジタル画像にアクセスする |
Solaris 9 から、USB の CD-RW、ディスク、DVD、デジタルカメラ、Zip、Jaz、Clik!、SmartMedia、CompactFlash、および ORB などのリムーバブル大容量ストレージデバイスがサポートされるようになりました。
Solaris 環境でサポートされる USB デバイスについては、http://www.sun.com/io_technologies/usb.html を参照してください。
これらのデバイスは、ボリューム管理を実行している場合でも実行していない場合でも管理することができます。ボリューム管理を実行している場合のデバイス管理については、vold(1M) のマニュアルページを参照してください。
Solaris 9 で動作するシステムに USB 大容量ストレージデバイスを接続したが、システムでそのデバイスを使用できない場合、/kernel/drv/scsa2usb.conf ファイルでこのデバイスに一致するコメントエントリがあるかどうか確認できます。推奨されている USB 大容量ストレージデバイスの一覧については、http://www.sun.com/io を参照してください。
デバイスの識別が間違っていたり、USB 大容量ストレージクラスと互換性がないとされているドライバでも、USB 大容量ストレージドライバをサポートする場合があります。scsa2usb.conf ファイルには、大容量デバイスに対応するかどうかを示す、ベンダー ID、製品 ID、およびバージョンを一覧表示した属性オーバーライドリストが含まれています。またデフォルトのデバイス属性をオーバーライドするフィールドも含まれています。このリストのエントリにはデフォルトでコメントが表示されています。特定のデバイスのサポートを有効にするために、コメントをコピーしたり削除したりすることもできます。
scsa2usb.conf ファイルの指示に従って、オーバーライド情報を使用して、特定のデバイスをサポートできるかどうか確認してください。
詳細については、scsa2usb(7D) のマニュアルページを参照してください。
デバイスのホットプラグとは、オペレーティングシステムをシャットダウンすることなくあるいはシステムの電源を切ることなく、デバイスを追加したり取り外したりすることを指します。
USB デバイスは、ホットプラグするとすぐにシステムのデバイス階層に表示されます (prtconf コマンドで確認可能)。また、デバイスが使用中でない限り、USB デバイスを取り外すとシステムのデバイス階層から消えます。
使用中の USB デバイスを取り外した場合、ホットプラグの動作は若干異なります。使用中の USB デバイスを取り外した場合、デバイスノードは残り、このデバイスを制御しているドライバはデバイス上のすべての動作を停止します。それ以降、このデバイスに発行される新しい入出力動作はエラーで戻されます。
このような場合、システムは元のデバイスを接続するようにユーザーにプロンプトを表示します。間違って使用中の USB デバイスを取り外してしまった場合は、次のようにして回復します。
元のデバイスを同じポートに接続します。
そのデバイスを使用しているアプリケーションを停止します。
デバイスを取り外します。
元のデバイスが再びプラグインされるまで、USB ポートは使用できません。デバイスが使用できない場合は、USB ポートは次にリブートするまで使用できません。
動作中の、つまり開いているデバイスを削除すると、データの整合性が損なわれる可能性があります。デバイスを取り外す前には、必ずデバイスを閉じるようにしてください。ただし、コンソールキーボードとマウスは例外で、動作中でも移動することができます。
次の手順は、vold を使用してホットプラグ可能な USB デバイスを追加する方法を示します。
次の手順は、vold を使用しないでホットプラグ可能な USB デバイスを追加する方法を示しています。
次の手順では、vold を使用してホットプラグ可能な USB デバイスを取り外す例として、Zip ドライブを使用しています。
デバイスをマウント解除します。
$ volrmmount -e zip0 |
そのデバイスを使用しているアプリケーションを実行中の場合は、そのアプリケーションを停止します。
デバイスを取り出します。
$ eject zip0 |
スーパーユーザーになり、vold を停止します。
# /etc/init.d/volmgt stop |
USB 大容量ストレージデバイスを取り外します。
vold を開始します。
# /etc/init.d/volmgt start |
次の手順は、vold を使用しないでホットプラグ可能な USB デバイスを取り外す方法を示しています。
Solaris 共通デスクトップ環境 (CDE) が実行されている場合は、USB リムーバブル大容量ストレージデバイスは、CDE ファイルマネージャのコンポーネントであるリムーバブルメディア・マネージャによって管理されます。CDE ファイルマネージャについての詳細は、dtfile(1) のマニュアルページを参照してください。
この節に記載されているマニュアルページを表示するには、MANPATH 変数に /usr/dt/man ディレクトリを含める必要があります。これらのコマンドを使用するには、パスに /usr/dt/bin ディレクトリを含め、さらに CDE を実行している必要があります。また、これらのコマンドをリモートで使用する場合は、DISPLAY 変数を設定する必要があります。
次の表に、リムーバブルメディア・マネージャが CDE 環境からストレージデバイスを管理する際に使用するコマンドを示します。
コマンド |
マニュアルページ |
作業 |
---|---|---|
sdtmedia_format |
sdtmedia_format(1) |
デバイスのフォーマットおよびラベル付けを行う |
sdtmedia_prop |
sdtmedia_prop(1) |
デバイスのプロパティを表示する |
sdtmedia_prot |
sdtmedia_prot(1) |
デバイスのアクセス権を変更する |
sdtmedia_slice |
sdtmedia_slice(1) |
デバイス上のスライスを作成または変更する |
USB デバイスのフォーマットが終了すると、通常は /rmdisk/label ディレクトリの下にマウントされます。リムーバブルストレージデバイスの構成方法についての詳 細は、rmmount.conf(4) または vold.conf(4) のマニュアルページを参照してください。
デバイスノードは /vol/dev ディレクトリの下に作成されます。詳細については、scsa2usb(7D) のマニュアルページを参照してください。
USB 大容量ストレージデバイスは、ボリュームマネージャ (vold) を使用しないで管理することもできます。ボリュームマネージャを使用しないようにする方法は、次の 2 とおりあります。
次のコマンドを実行して、vold を停止します。
# /etc/init.d/volmgt stop |
vold を実行したままで、USB 大容量ストレージデバイスを vold に登録しないようにします。以下に示すように /etc/vold.conf ファイル内の次の行で # マークを挿入してコメント扱いにし、USB 大容量ストレージデバイスのボリュームマネージャの登録を削除します。
# use rmdisk drive /dev/rdsk/c*s2 dev_rmdisk.so rmdisk%d |
上記のようにコメントにした後、vold を再起動します。
# /etc/init.d/volmgt start |
この行をコメントにすると、そのシステム内に他の SCSI、ATAPI Zip、または Jaz リムーバブルデバイスがある場合、それらのデバイスの vold の登録も無効になります。
詳細については、vold.conf(4) のマニュアルページを参照してください。
次の手順は、vold を使用しないで USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは、文字型デバイスについては /dev/rdsk ディレクトリ、ブロック型デバイスについては /dev/dsk ディレクトリの下に作成されます。詳細については、scsa2usb(7D) のマニュアルページを参照してください。
すべてのリムーバブル大容量ストレージデバイス (USB 大容量ストレージデバイスを含む) について、デバイスの別名を表示します。
$ eject -n . . . rmdisk0 -> /vol/dev/rdsk/c4t0d0/clik40 (Generic USB storage) cdrom0 -> /vol/dev/rdsk/c0t6d0/audio_cd (Generic CD device) zip1 -> /vol/dev/rdsk/c2t0d0/fat32 (USB Zip device) zip0 -> /vol/dev/rdsk/c1t0d0/zip100 (USB Zip device) jaz0 -> /vol/dev/rdsk/c3t0d0/jaz1gb (USB Jaz device) |
上記のようにリストされたデバイス別名を使用して、USB 大容量ストレージデバイスをマウントします。
$ volrmmount -i device-alias |
次の例では、USB Jaz ドライブ (/rmdisk/jaz0 ) をマウントします。
$ volrmmount -i jaz0 |
USB 大容量ストレージデバイスをマウント解除します。
$ volrmmount -e device-alias |
次の例では、USB Zip ドライブ (/rmdisk/zip0) をマウント解除します。
$ volrmmount -e zip0 |
USB デバイスを、汎用の USB ドライブから取り出します。
$ eject device-alias |
たとえば、次のようになります。
$ eject rmdisk0 |
デバイスのマウントが解除されていない場合、eject コマンドは、そのデバイスのマウント解除も行います。また、そのデバイスにアクセスするアプリケーションが実行されている場合は、そのアプリケーションを終了させます。
スーパーユーザーになります。
USB 大容量ストレージデバイスをマウントします。
# mount -F fs-type /dev/dsk/cntndnsn /mount-point |
このコマンドは、デバイスが読み取り専用の場合には失敗することがあります。CD-ROM デバイスには、次のコマンドを使用します。
# mount -F fs-type -o ro /dev/dsk/cntndnsn /mount-point |
たとえば、次のようになります。
# mount -F hsfs -o ro /dev/dsk/c0t6d0s2 /mnt |
USB 大容量ストレージデバイスをマウント解除します。
# umount /mount-point |
デバイスを取り出します。
# eject /dev/[r]dsk/cntndnsn |
スーパーユーザーになります。
USB カメラを差し込み、電源をオンにします。
USB サブシステムおよび SCSA サブシステムは、カメラ用に論理デバイスを作成します。カメラが差し込まれると、/var/adm/messages ファイルにメッセージが出力されます。
/var/adm/messages ファイルの出力を確認します。
出力表示を確認すると、どの論理デバイスが作成されたかを確認でき、そのデバイスを使用してイメージにアクセスできます。出力表示は次のようになります。
# more /var/adm/messages Jul 15 09:53:35 buffy usba: [ID 349649 kern.info] OLYMPUS, C-3040ZOOM, 000153719068 Jul 15 09:53:35 buffy genunix: [ID 936769 kern.info] scsa2usb1 is /pci@0,0/pci925,1234@7,2/storage@2 Jul 15 09:53:36 buffy scsi: [ID 193665 kern.info] sd3 at scsa2usb1: target 0 lun 0 |
USB カメラファイルシステムをマウントします。
ほとんどの場合、カメラのファイルシステムは PCFS ファイルシステムです。作成されたデバイス上にファイルシステムをマウントするために、ディスクを表すスライスを指定する必要があります。スライスは通常、SPARC システムでは s0、x86 システムでは p0 です。
たとえば、x86 システムにファイルシステムをマウントするには、次のコマンドを実行します。
# mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt |
SPARC システムにファイルシステムをマウントするには、次のコマンドを実行します。
# mount -F pcfs /dev/dsk/c3t0d0s0:c /mnt |
ファイルシステムのマウントについては、第 40 章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。
異なる PCFS ファイルシステムのマウントの詳細については、mount_pcfs(1M) のマニュアルページを参照してください。
イメージが使用可能であることを確認します。
たとえば、次のようになります。
# ls /mnt/DCIM/100OLYMP/ P7220001.JPG* P7220003.JPG* P7220005.JPG* P7220002.JPG* P7220004.JPG* P7220006.JPG* |
USB カメラが作成したイメージファイルを表示します。
# /usr/dt/bin/sdtimage & |
カメラを切り離す前に、ファイルシステムをマウント解除します。
たとえば、次のようになります。
# umount /mnt |
カメラの電源をオフにし、切り離します。
作業 |
説明 |
参照先 |
---|---|---|
1. ホットプラグ可能な USB オーディオデバイスを追加する |
ホットプラグ可能な USB マイクおよびスピーカを追加する | |
2. システムの主オーディオデバイスを特定する |
システムの主オーディオデバイスを特定する | |
3. 主 USB オーディオデバイスを変更する |
USB オーディオデバイスを取り外したり変更したりする場合、特定の 1 つのオーディオデバイスを主オーディオデバイスにすることがある | |
4. 使用していない USB オーディオデバイスリンクを取り外す |
システムの電源がオフのときに USB オーディオデバイスを取り外すと、 /dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがある | |
5. USB オーディオデバイス障害に対処する |
USB スピーカの電源を再投入する必要がある |
この Solaris リリースでは、2 つの連携するドライバ、usb_ac および usb_as の実装によって、USB オーディオサポートを提供しています。オーディオコントロールドライバである usb_ac は USBA (Solaris USB Architecture) 準拠のクライアントドライバで、ユーザーアプリケーションのインタフェースを制御します。オーディオストリーミングドライバである usb_as は、再生中および録音中にオーディオデータメッセージを処理し、サンプル周波数と精度を設定し、usb_ac ドライバからのエンコーディング要求を処理します。
どちらのドライバも、USB オーディオクラス 1.0 仕様に準拠しています。
Solaris では、再生専用または録音専用の外部 USB オーディオデバイスをサポートします。オンボードの USB オーディオデバイスはサポートされません。サポートされているオーディオデータ形式については、usb_ac(7D) のマニュアルページを参照してください。
音量コントロール、低音コントロール、高音コントロールが 1 つである USB オーディオデバイスだけがサポートされます。USB オーディオクラス仕様についての詳細は、http://www.usb.org を参照してください。
USB オーディオデバイスは、USB コネクタのある SPARC Ultra および x86 プラットフォームでサポートされます。
ホットプラグ可能な USB オーディオデバイスがサポートされます。
Solaris 8 10/01、Solaris 8 2/02、または Solaris 9 リリース上で USB オーディオデバイスを再生または録音するには、デバイスが 8000 から 48000 Hz の連続サンプリングレートまたは 48000 Hz のサンプリングレートをサポートしている必要があります。
主オーディオデバイスは、/dev/audio です。次のコマンドを使用して、/dev/audio が USB オーディオを指しているかを確認できます。
% mixerctl Device /dev/audioctl: Name = USB Audio Version = 1.0 Config = external Audio mixer for /dev/audioctl is enabled |
使用する USB オーディオデバイスを接続した後、audioplay コマンドおよび audiorecord コマンドを使用して、次のファイルにアクセスします。
/dev/sound/N |
AUDIODEV 環境変数を設定するか、audioplay コマンドおよび audiorecord コマンドで -d オプションを指定して、特定のオーディオデバイスを選択できます。ただし、/dev/audio をオーディオファイルとしてハードコードしているアプリケーションでは AUDIODEV は動作しません。
USB オーディオデバイスを差し込むと、/dev/audio が使用中でない限り、自動的にそれが主オーディオデバイス /dev/audio になります。オンボードのオーディオから USB オーディオへ、および USB オーディオからオンボードのオーディオへ /dev/audio を変更する方法については、主 USB オーディオデバイスを変更するには および usb_ac(7D) のマニュアルページを参照してください。
USB オーディオデバイスがシステムに差し込まれると、それが主オーディオデバイス /dev/audio になります。そのデバイスは、システムをリブートした後でも、主オーディオデバイスのままです。USB オーディオデバイスが追加で差し込まれた場合、最後に差し込まれたデバイスが主オーディオデバイスになります。
USB オーディオデバイスに関する障害追跡についての詳細は、usb_ac(7D) のマニュアルページを参照してください。
次の手順で、ホットプラグ可能な USB オーディオデバイスを追加します。
USB スピーカとマイクを差し込みます。
主オーディオデバイス /dev/audio は通常、オンボードのオーディオを指します。USB オーディオデバイスを接続した後、/dev/audio は /dev/sound ディレクトリで認識される USB オーディオデバイスを指します。
作成されたオーディオデバイスファイルを確認します。
% ls /dev/sound 0 0ctl 1 1ctl 2 2ctl |
左右の USB スピーカをテストします。
% cd /usr/share/audio/samples/au % audioplay -d /dev/sound/1 -b 100 spacemusic.au % audioplay -d /dev/sound/1 -b -100 spacemusic.au |
USB マイクをテストします。
% cd $HOME/au % audiorecord -d /dev/sound/2 -p mic -t 30 test.au |
この手順は、すでに USB オーディオデバイスが接続されていることを前提としています。
現在のオーディオデバイスのリンク状態を識別します。
たとえば、次のようになります。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:41 /dev/audio -> sound/0 lrwxrwxrwx 1 root root 10 Jul 23 15:41 /dev/audioctl -> sound/0ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
主オーディオデバイス /dev/audio は、現在オンボードのオーディオ、/dev/sound/0 を指しています。
(省略可能) 新しい USB オーディオデバイスを追加します。
システムの新しいオーディオリンクを調べます。
たとえば、次のようになります。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:46 /dev/audio -> sound/1 lrwxrwxrwx 1 root root 10 Jul 23 15:46 /dev/audioctl -> sound/1ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 74 Jul 23 15:46 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,audio lrwxrwxrwx 1 root root 77 Jul 23 15:46 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
主オーディオデバイス /dev/audio が、新しく差し込まれた USB オーディオデバイスの /dev/sound/1 を指していることがわかります。
ここで USB オーディオデバイスを取り外しても、主オーディオデバイス /dev/audio はオンボードのオーディオには戻りません。主オーディオデバイスをシステムのオンボードのオーディオに戻す方法については、次の手順を参照してください。
prtconf コマンドを使用して USB デバイス情報を参照して、システム上の USB オーディオデバイスを調べることもできます。
% prtconf . . . usb, instance #0 hub, instance #0 mouse, instance #0 keyboard, instance #1 device, instance #0 sound-control, instance #0 sound, instance #0 input, instance #0 . . . |
USB オーディオデバイスを取り外すか変更して、特定のオーディオデバイス 1 つを主オーディオデバイスにしたい場合は、次の手順を実行してください。この手順では、例として主オーディオデバイスをオンボードのオーディオデバイスに変更します。
スーパーユーザーになります。
すべてのオーディオアプリケーションを閉じます。
オーディオドライバおよび USB ドライバが読み込まれているかを調べます。
# modinfo | grep -i audio 124 780e6a69 bb6e - 1 audiosup (Audio Device Support 1.12) # modinfo | grep -i usb 48 13dba67 18636 199 1 ohci (USB OpenHCI Driver 1.31) 49 78020000 1dece - 1 usba (USBA: USB Architecture 1.37) 50 12e5f1f 35f 195 1 hubd (USB Hub Driver 1.4) 51 13ef53d 5e26 194 1 hid (USB HID Client Driver 1.16) 54 13f67f2 1b42 10 1 usbms (USB mouse streams 1.6) 56 127bbf0 2c74 11 1 usbkbm (USB keyboard streams 1.17) # |
オンボードのオーディオドライバを読み込んで再接続します。
# devfsadm -i audiocs |
オンボードのオーディオドライバは、Sunblade 1000 では audiocs、 Sunblade 100 では audiots です。
主オーディオデバイスのリンクがオンボードのオーディオを指していることを確認します。
# ls -lt /dev/audio* lrwxrwxrwx 1 root other 7 Jul 23 15:49 /dev/audio -> sound/0 lrwxrwxrwx 1 root other 10 Jul 23 15:49 /dev/audioctl -> sound/0ctl # ls -lt /dev/sound/* lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl # |
オンボードのオーディオが主オーディオデバイスになっていることを確認します。
% audioplay /usr/demo/SOUND/sounds/bark.au |
audioplay コマンドは、デフォルトでオンボードのオーディオデバイスを使用します。
(省略可能) 別の USB オーディオデバイスを差し込む前に、読み込み解除できるオーディオドライバをすべて読み込み解除します。
すべてのオーディオアプリケーションを閉じます。
オーディオドライバ情報を表示して、オーディオドライバが読み込まれていないことを確認します。
# modinfo | grep -i audio 60 78048000 bb6e - 1 audiosup (Audio Device Support 1.12) 61 78152000 39a97 - 1 mixer (Audio Mixer 1.49) 62 78118000 bf9f - 1 amsrc1 (Audio Sample Rate Conv. #1 1.3) 128 7805e000 14968 54 1 audiocs (CS4231 mixer audio driver 1.21) # |
オーディオドライバを読み込み解除します。
# modunload -i 0 # modinfo | grep -i audio 60 78048000 bb6e - 1 audiosup (Audio Device Support 1.12) 61 78152000 39a97 - 1 mixer (Audio Mixer 1.49) # |
この時点で、オンボードのオーディオドライバ audiocs は読み込み解除され、オープンすることはできません。ただし、主オーディオデバイスの /dev/audio は、アプリケーションによって開かれている場合は何も変化しません。
(省略可能) USB オーディオデバイスを差し込みます。
(省略可能) 新しいオーディオリンクを調べます。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 16:12 /dev/audio -> sound/1 lrwxrwxrwx 1 root root 10 Jul 23 16:12 /dev/audioctl -> sound/1ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 77 Jul 23 16:12 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root root 74 Jul 23 16:12 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root root 66 Jul 23 15:59 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root root 69 Jul 23 15:59 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,aud... % |
システムの電源がオフのときに USB オーディオデバイスを取り外した場合には、次の手順を実行します。システムの電源がオフのときに USB オーディオデバイスを取り外した場合、/dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがあります。
この節では、USB オーディオデバイスに関する問題に対処する方法を説明します。
ドライバを適用し、音量も上げているのに、USB スピーカから音が出ないことがあります。デバイスをホットプラグしてもこの動作が変化しないことがあります。
この問題を解決するには、USB スピーカの電源を再投入します。
オーディオデバイスを操作するときは、オーディオデバイスの所有権に関する、次に挙げる点に注意してください。
USB オーディオデバイスを差し込む時にコンソールからログインしていると、コンソールが /dev/* エントリの所有者になります。つまり、コンソールでログインしている限り、オーディオデバイスを使用できることになります。
USB オーディオデバイスを差し込む時にコンソールにログインしていない場合、root がそのデバイスの所有者になります。ただし、その後にコンソールにログインして USB オーディオデバイスにアクセスしようとすると、デバイスの所有権はコンソールに変更されます。詳細については、logindevperm(4) のマニュアルページを参照してください。
リモートから rlogin コマンドでログインして USB オーディオデバイスにアクセスしようとした場合は、所有権は変更されません。たとえば、権限のないユーザーが、他の人の所有するマイクを通して行われる会話を聞くことはできません。
作業 |
説明 |
参照先 |
---|---|---|
1. USB デバイス情報を表示する |
USB デバイスおよびバスについての情報を表示する | |
2. USB デバイスの構成を解除する |
システムに物理的に接続されている USB デバイスを論理的に構成解除する | |
3. USB デバイスを構成する |
以前に構成を解除した USB デバイスを構成する | |
4. 論理的に USB デバイスの接続を解除する |
物理的にシステムの近くにいないときには、USB デバイスを論理的に切り離すことができる | |
5. 論理的に USB デバイスに接続する |
以前に論理的に接続解除または構成解除した USB デバイスを物理的に接続する | |
6. USB デバイスのサブツリーの接続を解除する |
ハブの下位階層 (または下位のツリー) である USB デバイスサブツリーの接続を解除する | |
7. USB デバイスをリセットする |
USB デバイスをリセットして、デバイスを論理的に削除し、再作成する |
cfgadm コマンドを使用せずに稼働中のシステムから USB デバイスを追加または削除することができます。ただし、USB デバイスは、デバイスを物理的に削除しなくても「論理的に」ホットプラグすることができます。 この方法は、リモートで作業中に機能していない USB デバイスを無効にしたりリセットしたりする必要がある場合に便利です。cfgadm コマンドを使うと、メーカーや製品情報を含む USB デバイスツリーを表示することもできます。
cfgadm コマンドは接続点についての情報を表示します。接続点とは、動的再構成を行うことができるシステム内の特定の場所のことです。接続点は、次の要素から構成されています。
占有装置 (occupant): システムに構成できるハードウェアリソースのことです。
受容体 (receptacle): 占有装置を受け入れる場所のことです。
接続点は、論理と物理の両方の接続点 ID (Ap_Id) で表現されます。物理 Ap_Id は接続点の物理的なパス名です。論理 Ap_Id は物理 Ap_Id に代わるユーザーに理解しやすい ID です。Ap_Id の詳細については、 cfgadm_usb(1M) のマニュアルページを参照してください。
cfgadm コマンドを使用すると、USB デバイスステータス情報を取得できます。
受容体の状態 |
説明 |
---|---|
empty/unconfigured |
デバイスが接続されていない |
disconnected/unconfigured |
デバイスが論理的に接続解除されており利用不可。デバイスが物理的に接続されていても、devinfo ノードが削除される |
connected/unconfigured |
デバイスは論理的に接続されているが利用不可。devinfo ノードが存在する |
connected/configured |
デバイスは接続されており利用可能 |
次の節では、cfgadmin コマンドを使用した USB デバイスのホットプラグ方法について説明します。次のすべてのサンプル USB デバイス情報は、関連した情報に焦点を合わせるために一部省略されています。
prtconf コマンドを使用して USB デバイス情報を表示します。
$ prtconf usb, instance #0 hub, instance #2 device, instance #8 interface (driver not attached) printer (driver not attached) mouse, instance #14 device, instance #9 keyboard, instance #15 mouse, instance #16 storage, instance #7 disk (driver not attached) communications, instance #10 modem (driver not attached) data (driver not attached) storage, instance #0 disk (driver not attached) storage, instance #1 disk (driver not attached) |
cfgadm コマンドを使用して USB バス情報を表示します。たとえば、次のようになります。
% cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok usb0/4.6 usb-storage connected configured ok usb0/4.7 usb-storage connected configured ok |
前の例で usb0/4.5.1 は、第 2 レベルの外部ハブのポート 1 に接続されているデバイスを識別します。この第 2 レベルハブは第 1 レベルの外部ハブのポート 5 に接続されており、また第 1 レベルのハブは最初の USB コントローラのルートハブであるポート 4 に接続されています。
次の cfgadm コマンドを使用して、特定の USB デバイス情報を表示します。たとえば、次のようになります。
% cfgadm -l -s "cols=ap_id:info" Ap_Id Information usb0/4.5.1 Mfg: Inside Out Networks Product: Edgeport/421 NConfigs: 1 Config: 0 : ... usb0/4.5.2 Mfg: <undef> Product: <undef> NConfigs: 1 Config: 0 <no cfg str descr> usb0/4.5.3 Mfg: Mitsumi Product: Apple USB Mouse NConfigs: 1 Config: 0 <no cfg str descr> usb0/4.5.4 Mfg: NMB Product: NMB USB KB/PS2 M NConfigs: 1 Config: 0 usb0/4.5.5 Mfg: Hagiwara Sys-Com Product: SmartMedia R/W NConfigs: 1 Config: 0 : Default usb0/4.5.6 Mfg: 3Com Inc. Product: U.S.Robotics 56000 Voice USB Modem NConfigs: 2 ... usb0/4.5.7 usb0/4.6 Mfg: Iomega Product: USB Zip 250 NConfigs: 1 Config: 0 : Default usb0/4.7 Mfg: Iomega Product: USB Zip 100 NConfigs: 1 Config: 0 : Default # |
システムに物理的に接続されている USB デバイスの構成を解除することはできますが、ドライバを適用することはできません。USB デバイスの構成を解除すると、そのデバイスが prtconf 出力に表示されます。
スーパーユーザーになります。
USB デバイスの構成を解除します。
# cfgadm -c unconfigure usb0/4.7 Unconfigure the device: /devices/pci@8,700000/usb@5,3/hub@4:4.7 This operation will suspend activity on the USB device Continue (yes/no)? y |
デバイスの構成が解除されていることを確認します。
# cfgadm Ap_Id Type Receptacle Occupant Condition usb0/4.5 usb-hub connected configured ok usb0/4.5.1 usb-device connected configured ok usb0/4.5.2 usb-printer connected configured ok usb0/4.5.3 usb-mouse connected configured ok usb0/4.5.4 usb-device connected configured ok usb0/4.5.5 usb-storage connected configured ok usb0/4.5.6 usb-communi connected configured ok usb0/4.5.7 unknown empty unconfigured ok usb0/4.6 usb-storage connected configured ok usb0/4.7 usb-storage connected unconfigured ok |
スーパーユーザーになります。
# cfgadm -c configure usb0/4.7 |
USB デバイスが構成されていることを確認します。
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
システムから USB デバイスを取り外し、 prtconf 出力を削除したいが、物理的にシステムの近くにいない場合、USB デバイスの接続を論理的に解除できます。デバイスが物理的に接続されているが、論理的に接続解除されている場合には、そのデバイスは使用できず、システムにも表示されません。
スーパーユーザーになります。
USB デバイスの接続を解除します。
# cfgadm -c disconnect -y usb0/4.7 |
デバイスが接続解除されていることを確認します。
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 unknown disconnected unconfigured ok |
次の手順を使用して、以前に論理的に接続解除または構成解除された USB デバイスを論理的に接続します。
スーパーユーザーになります。
# cfgadm -c configure usb0/4.7 |
デバイスが接続されていることを確認します。
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
デバイスを利用できるようになり、システムにも表示されるようになります。
次の手順を使用して、USB デバイスのサブツリーを接続解除します。サブツリーは、ハブの下位デバイスの階層 (ツリー) です。
スーパーユーザーになります。
# cfgadm -c disconnect -y usb0/4 |
USB デバイスサブツリーの接続解除を確認します。
# cfgadm usb0/4 Ap_Id Type Receptacle Occupant Condition usb0/4 unknown disconnected unconfigured ok |
USB デバイスでエラーが発生した場合は、cfgadm コマンドを使ってデバイスをリセットします。このコマンドを使うと、デバイスを論理的に削除し、再作成することができます。