この章では、USB (Universal Serial Bus) デバイスの概要と、Solaris 環境で USB デバイスを使用する手順について説明します。
USB デバイスを使った手順については、次の節を参照してください。
この章の内容は次のとおりです。
動的再構成およびホットプラグについての一般的な情報については、第 28 章「デバイスの動的構成 (手順)」を参照してください。
USB プリンタの構成情報については、『Solaris のシステム管理 (上級編)』の「印刷の新機能」を参照してください。
ここでは、この Solaris リリースで拡張された USB デバイスの機能について説明します。
Solaris 9 12/03 リリースで導入された USBA フレームワークは、USB 1.1 デバイス用に開発されたものです。USBA 1.0 と呼ばれる新しいフレームワークは、USB 2.0 デバイスの高度な要件を満たすために開発されました。このフレームワークでは、USB 1.1 デバイスも使用できます。この Solaris リリースは、「二重フレームワーク」という機能で、両方のフレームワークに対応しています。二重フレームワークは、従来のフレームワークから新しいフレームワークに簡単に移行するための機能です。
SPARC システム – 従来の USBA フレームワークは、システムの USB 1.1 ポートに接続されたデバイスに対応し、新しい USBA 1.0 フレームワークは、システムの USB 2.0 ポートに接続されたデバイスに対応しています。Sun のマザーボードのポートはすべて USB 1.1 ポートですが、ほとんどの PCI カードのポートは USB 2.0 に対応しています。
x86 システム – 従来の USBA フレームワークは、システムの UHCI USB 1.1 ポートに接続されたデバイスに対応し、新しい USBA 1.0 フレームワークは、OHCI USB 1.1 ポートを含む、ほかのすべてのポートに対応しています。
USB 二重フレームワークの詳細については、http://www.sun.com/desktop/whitepapers.html を参照してください。
一方の USB フレームワーク用に作成されたドライバは、もう一方の USB フレームワークでは機能しません。Sun が提供している USB ドライバのほとんどには、それぞれのフレームワークに対応するバージョンがあります。
USB デバイスをポートに接続しようとすると、互換性の問題が発生することがあります。この問題は、ドライバがフレームワークと互換性がないために、そのデバイス用のドライバをフレームワークが認識しないために発生します。フレームワークが接続しようとしたドライバがそのフレームワークと互換性のないドライバである場合には、次のようなメッセージがコンソールに表示されます。
The driver for device binding name is not for USBA1.0 |
このメッセージは、Sun 以外のドライバ用のデバイスが USBA 1.0 フレームワークと互換性があり、そのデバイスが従来の USBA 1.0 フレームワークがサポートしているポートに接続されている場合などに表示されます。従来の USBA 1.0 フレームワークはそのデバイスを認識して適切なドライバに関連付けようとしますが、接続先のフレームワークと互換性がないためにそのデバイスは拒否されます。
USB フレームワークの構成の詳細については、USB デバイス情報を表示する方法 (prtconf) を参照してください。
次の表に、Solaris がサポートしている USB 1.1 デバイスおよび USB 2.0 デバイスを示します。
|
Solaris 8 HW* リリース |
Solaris 9 リリース | Solaris 9 4/04 |
---|---|---|---|
USB 1.1 |
SPARC と x86 |
SPARC と x86 |
SPARC と x86 |
USB 2.0 |
SPARC |
なし |
SPARC と x86 |
*Solaris 8 リリースではなく、Solaris 8 HW リリース (Solaris 8 HW 5/03 以降) です。Solaris 8 HW 5/03 リリースの USB 二重フレームワークのパッチ番号は、109896 です。
次の表は、Sun SPARC ハードウェアがサポートしている USB の一覧です。
システムの種類 |
Solaris リリース |
サポートしている USB デバイスと速度 |
---|---|---|
Sun Blade 100、150、1000、および 2000 |
Solaris 9 4/04 リリースより前の Solaris 9 リリース、および Solaris HW 5/03 リリースより前の Solaris 8 リリース |
12 MB/秒のすべての USB デバイス |
Sun Blade 100、150、1000、および 2000 |
Solaris 9 4/04 および Solaris 8 HW 5/03 |
USB 1.1 デバイス、12 MB/秒 (任意の USB ポートに接続した場合) USB 2.0 デバイス、12 MB/秒 (マザーボードのポートに接続した場合) USB 2.0 デバイス、480 MB/秒 (拡張 PCI USB 2.0 カードのポートに接続した場合) |
Sun Blade 1500 および 2500 |
Solaris 9 4/04 および Solaris 8 HW 5/03 |
USB 1.1 デバイス、12 MB/秒 (任意の USB ポートに接続した場合) USB 2.0 デバイス、12 MB/秒 (マザーボードのポートに接続した場合) USB 2.0 デバイス、480 MB/秒 (PCI コンボカードのポートに接続した場合) |
その他の Sun SPARC PCI プラットフォーム |
Solaris 9 4/04 および Solaris 8 HW 5/03 |
USB 1.1 デバイス、12 MB/秒 USB 2.0 デバイス、480 MB/秒 (拡張 PCI USB 2.0 カードのポートに接続した場合) |
Sun x86 システム。Sun Fire V20z、SunFire V40z、Sun Fire V60x、および Sun Fire V65x システムを含む |
Solaris 9 4/04 |
USB 1.1 デバイス、12 MB/秒 USB 2.0 デバイス、480 MB/秒 (拡張 PCI USB 2.0 カードのポートに接続した場合) |
Solaris リリースで検証済みの PCI カードについては、次のサイトを参照してください。 http://www.sun.com/io_technologies/USB.html
USB デバイスをサポートする Sun のプラットフォームは、次のとおりです。
USB 1.1 をサポートする OHCI ホストコントローラを搭載した次の SPARC システムは、ロースピードおよびフルスピードのデバイスをサポートします。
Solaris 8 または Solaris 9 リリースで動作する Sun BladeTM システム
Solaris 9 リリースで動作する NetraTM X 1/T1 および一部の Sun FireTM システム
Sun Blade 1500 や 2500 システムなど、OHCI および EHCI ホストコントローラを搭載した SPARC システムは、ハイスピードの USB 2.0 デバイス、およびロースピードとフルスピードの USB 1.1 デバイスをサポートします。Solaris 8 HW 5/03 リリースまたは Solaris 9 4/04 リリースで動作する PCI ベースの sun4u システムも含まれます (USB 2.0 PCI カードが搭載されている場合)。
Solaris 8 または Solaris 9 の x86 版で動作し、UHCI ホストコントローラを搭載した x86 ベースのシステムは、USB 1.1 をサポートします。
USB サポートの追加情報については、USB デバイスの概要を参照してください。
この Solaris リリースでは、次の USB 2.0 機能がサポートされます。
パフォーマンスの向上 – USB 2.0 コントローラに接続されたデバイスの場合は、データのスループットが USB 1.1 デバイスと比較して最大で 40 倍速に向上します。
DVD やハードディスクなどの高速大容量ストレージデバイスにアクセスするときに、高速の USB プロトコルを利用できます。
互換性 – 1.0 および 1.1 デバイスおよびドライバとの下位互換性があるので、同じケーブル、コネクタ、およびソフトウェアインタフェースを使用できます。
USB デバイスおよび USB 用語については、USB デバイスの概要を参照してください。
USB 2.0 デバイスは、USB 2.0 仕様に準拠した高速デバイスです。USB 2.0 仕様については、http://www.usb.org を参照してください。
Solaris x86 版で動作するシステムでは、USB 2.0 デバイスがサポートされていないため、USB 2.0 デバイスは、ハイスピードの USB 2.0 デバイスとしてではなく、フルスピードの USB 1.1 デバイスとして動作します。
この Solaris リリースの SPARC システムおよび x86 システムでは、たとえば、次の USB デバイスがサポートされます。
大容量ストレージデバイス – CD-RW、ハードディスク、DVD、デジタルカメラ、Zip、フロッピーディスク、およびテープドライブ
キーボード、マウス、スピーカ、およびマイク
オーディオデバイス
この Solaris リリースで検証済みの USB デバイスをすべて確認するには、以下のサイトを参照してください。
http://www.sun.com/io_technologies/USB.html
それ以外のストレージデバイスでも、scsa2usb.conf ファイルを変更すれば使用できることがあります。詳細については、scsa2usb(7D) のマニュアルページを参照してください。
Solaris USB 2.0 デバイスでは、次の機能がサポートされます。
USB バス速度が、12 Mbps から 480 Mbps に向上しています。このため、USB 2.0 仕様をサポートするデバイスを USB 2.0 ポートに接続すると、対応する USB 1.1 デバイスに比べて速度が大幅に向上します。
USB 2.0 ポートは、SPARC システムでは次のように定義されています。
USB 2.0 PCI カード上のポート
USB 2.0 ポートに接続された USB 2.0 ハブ上のポート
Solaris x86 版で動作するシステムでは、USB 2.0 PCI カード上のポートを含むすべてのポートが、USB 1.1 ポートと見なされます。
USB 2.0 は、PCI ベースのすべての SPARC プラットフォーム上で Solaris Ready 認証済みです。USB 2.0 ポートを利用するには、USB 2.0 PCI カードが必要です。Solaris リリースで検証済みの USB 2.0 PCI カードについては、http://www.sun.com/io_technologies/USB.html を参照してください。
同じシステムで USB 1.1 と USB 2.0 デバイスを併用する場合でも、USB 1.1 デバイスは、以下の例外を除き、従来と同様に動作します。
USB 2.0 ポートに接続された USB 2.0 ハブに USB 1.1 デバイスを接続した場合、その USB 1.1 デバイスは動作しません。
USB 2.0 デバイスは USB 1.x ポートでも動作しますが、USB 2.0 ポートに接続するとパフォーマンスが大幅に向上します。
ほとんどの USB 2.0 ホストコントローラには、1 つのハイスピード EHCI (Enhanced Host Controller) と、1 つ以上のロースピードまたはフルスピードの OHCI (OpenHCI Host Controller) が組み込まれたコントローラが用意されています。USB 2.0 ポートに接続されたデバイスは、USB 2.0 をサポートするかどうかに応じて、EHCI または OHCI コントローラに動的に割り当てられます。
いくつかの USB 2.0 ホストコントローラには、1 つの EHCI と、1 つ以上のロースピードまたはフルスピードの UHCI (Universal Host Controller) が組み込まれたコントローラが用意されています。ロースピードおよびフルスピードのデバイスは、それらのホストコントローラ上のポートで問題なく使用できる可能性が高いです。一方、これらのポートに接続されたハイスピードのデバイスは、それ自体で動作する可能性があり、このようなデバイスは推奨されません。
USB 2.0 PCI カード上のポートに 接続された USB 2.0 ストレージデバイスのデバイス名は、以前の Solaris リリースで同じハードウェア構成で使用していた場合には、このリリースにアップグレードした後で変更されることがあります。この変更は、アップグレードによりこれらのデバイスが USB 2.0 デバイスとして認識され、制御が EHCI コントローラに引き継がれるために発生します。コントローラの番号 ( /dev/[r]dsk/c wtxd ysz の w) は、それらのデバイスに合わせて変更されます。
USB 2.0 デバイスのサポートの詳細については、ehci(7D) および usba(7D) のマニュアルページを参照してください。
サポートされている最大ケーブル長は 5 m です。
延長ケーブルを使用しないでください。ケーブルを延長するには、最良の結果が得られるよう、自己電源供給方式のハブを使ってください。
詳細については、http://www.usb.org/channel/training/warning/ を参照してください。
バス電源供給方式のハブは、接続先の USB バスの電源を利用して、接続されているデバイスに電源を供給します。これらのハブの負荷が大きくなりすぎないように、十分に注意してください。これらのハブから接続先のデバイスに供給できる電源は限られているためです。
バス電源供給方式のハブは、カスケード接続しないでください。たとえば、バス電源供給方式のハブを別のバス電源供給方式のハブに接続しないでください。
キーボードやマウスなどの低速で消費電力の小さいデバイスを除いて、できるだけバス電源供給方式のデバイスをバス電源供給方式のハブに接続しないでください。ディスク、スピーカ、マイクなどの消費電力の大きいデバイスをバス電源供給方式のハブに接続すると、ハブに接続されたすべてのデバイスで電力が不足することがあります。この場合、デバイスが予期しない動作をすることがあります。
この Solaris リリースでは、すべての USB ストレージデバイスがリムーバブルメディアデバイスとしてアクセスされます。この変更には、次のような利点があります。
標準の MS-DOS または Windows (FAT) ファイルシステムを使用する USB ストレージデバイスがサポートされます。
format コマンドの代わりに、使いやすい rmformat コマンドを使用して、すべての USB ストレージデバイスをフォーマットしたり、パーティションを操作したりできます。format コマンドの機能が必要な場合は、format -e コマンドを使用してください。
fdisk 方式でパーティションを操作する必要がある場合は、fdisk コマンドを使用できます。
ルート権限を必要とする mount コマンドが必要なくなったため、ルート以外のユーザーでも USB ストレージデバイスにアクセスできます。デバイスは vold コマンドによって自動的にマウントされ、/rmdisk ディレクトリの下で利用できます。システムの停止中に新しいデバイスを接続した場合は、boot -r コマンドを使用して再構成ブートを実行し、そのデバイスを vold に認識させます。vold は、ホットプラグ対応のデバイスを自動的に認識しません。システムの稼働中に新しいデバイスを接続した場合は、vold を再起動してください。詳細については、vold(1M) および scsa2usb(7D) のマニュアルページを参照してください。
FAT ファイルシステムのディスクをマウントしてアクセスできます。たとえば、次のようになります。
mount -F pcfs /dev/dsk/c2t0d0s0:c /mnt |
LOG SENSE ページをサポートするデバイスを除いて、すべての USB ストレージデバイスの電源が管理されます。LOG SENSE ページを使用するデバイスは通常、USB-SCSI ブリッジデバイスを介して接続する SCSI デバイスです。以前の Solaris リリースでは、一部の USB ストレージデバイスはリムーバブルメディアとして認識されなかったため、電源管理の対象外でした。
USB 大容量ストレージデバイスでは、アプリケーションの動作が異なることがあります。USB ストレージデバイスでアプリケーションを使用するときには、次の点に考慮してください。
以前のリリースでは、フロッピーディスクや Zip ドライブなどの小容量のデバイスだけがリムーバブルメディアとして認識されていたため、アプリケーションがメディアのサイズを正しく認識しないことがあります。
メディアを取り出すことができないデバイス (ハードディスクドライブなど) に対して、メディアを取り出す要求を行うと、要求は成功しますが、何も実行されません。
以前の Solaris リリースの動作が必要な場合、つまり、すべての USB 大容量ストレージがリムーバブルメディアデバイスとして認識されるとは限らないようにするには、/kernel/drv/scsa2usb.conf ファイルを更新すれば、以前の動作を強制的に適用できます。
USB 大容量ストレージデバイスの使用方法の詳細については、scsa2usb(7D) のマニュアルページを参照してください。
USB 大容量ストレージデバイスを追加または削除するときに問題が発生した場合は、次のヒントを参考にしてください。
システムの停止中に USB デバイスを追加または削除した場合は、再構成ブートを実行する必要があります。
ok boot -r |
システムの稼働中に接続したデバイスにアクセスするときに、問題が発生した場合は、次のコマンドを実行してください。
# devfsadm |
保存停止モードでシステムの電力消費を抑えている場合は、デバイスを移動しないでください。詳細については、SPARC: USB 電源管理を参照してください。
アプリケーションがデバイスを使用しているときに、そのデバイスが取り外されて使用できなくなっている場合は、アプリケーションを停止してください。そのデバイスノードが削除されているかどうかを確認するには、 prtconf コマンドを使用します。
この節では、この Solaris リリースで拡張された USB ドライバの機能について説明します。
新しい汎用 USB ドライバ – Unix 標準の read(2) および write(2) システムコールを使って、アプリケーションから USB デバイスのアクセスおよび操作を実行できるようになりました。特別なカーネルドライバを記述する必要はありません。次の機能が追加されています。
アプリケーションから raw デバイスのデータおよびステータスにアクセスできます。
制御転送、バルク転送、および割り込み (入力と出力) 転送がサポートされます。
ugen は、USBA 1.0 フレームワークに対応するポート上でのみサポートされています。
ポートが USBA 1.0 フレームワークに対応するかどうか確認するためには、デバイスをポートに接続します。それから prtconf -D コマンドを実行します。prtconf -D による階層ツリーには、ポートに接続されているデバイスが表示されます。ただし、その時点では「デバイス」としてドライバに結合されていません。その名前に ohci、ehci、または uhci が含まれるドライバを示すエントリを prtconf の階層ツリーから探してください。ohci、ehci、または uhci エントリはホストコントローラを表します。ホストコントローラのドライバ名が usba10_で始まっている場合は、そのサブツリーにあるデバイスは USBA 1.0 フレームワークに対応します。
詳細については、ugen(7D) のマニュアルページ、および次の Web サイトで USB DDK を参照してください。
http://developers.sun.com/solaris/developer/support/driver/usb.html |
Digi Edgeport USB のサポート – シリアルポート変換デバイス用に複数の Digi Edgeport のサポートを提供します。
新しいデバイスは、/dev/term/[0-9]* および /dev/cua/[0-9]* としてアクセスします。
USB シリアルポートは、ローカルシリアルコンソールとして使用できない点を除き、ほかのシリアルポートと同様に使用できます。USB シリアルポートのデータが USB ポートを使用して転送されますが、このことをユーザーは意識する必要はありません。
x86 プラットフォーム – Digi Edgeport USB シリアルドライバは、USBA 1.0 フレームワーク上でのみサポートされます。それぞれのフレームワークをどのポートに対応させるか決定するための情報については、前節の ugen に関する部分を参照してください。
詳細については、usbser_edge(7D) を参照するか、http://www.digi.com および http://www.sun.com/io を参照してください。
ユーザーが記述したカーネルおよびユーザー独自のドライバの文書サポートおよびバイナリサポート – Solaris USB Driver Development Kit (DDK) を利用できます。DDK に関する情報など、USB ドライバの開発に関する最新の情報については、次の Web サイトを参照してください。
http://developers.sun.com/solaris/developer/support/driver/usb.html |
EHCI ドライバには、次の特徴があります。
USB 2.0 をサポートする拡張ホストコントローラインタフェースに準拠しています。
高速の制御転送、バルク転送、および割り込み転送をサポートします。
現在、高速のアイソクロナス (isochronous、等時性) トランザクションまたは分割トランザクションはサポートされていません。たとえば、USB 1.x デバイスは、USB 2.0 ポートに接続された 2.0 ハブに接続することはできません。
システムに USB 2.0 および USB 1.x デバイスが実装されている場合には、EHCI ドライバおよび OHCI ドライバは、システムに接続されているデバイスの種類に応じてデバイス制御を渡します。
USB 2.0 PCI カードには、1 つの EHCI コントローラおよび 1 つ以上の OHCI コントローラが組み込まれています。
USB 1.1 デバイスを接続すると、OHCI コントローラに動的に割り当てられます。USB 2.0 デバイスを接続すると、EHCI コントローラに動的に割り当てられます。
Universal Serial Bus (USB) は PC 業界で開発された、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するための低コストのソリューションです。
USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。USB の設計により、システムの背面パネルの混雑を軽減できます。
デバイスは、外部 USB ハブ上の USB ポートか、コンピュータ本体に設置されたルートハブ上の USB ポートのいずれかに接続されます。ハブには複数のポートがあるため、1 つのハブからデバイスツリーの複数の枝が伸びることがあります。
次の表に、Solaris 環境でサポートされるUSB デバイスを示します。
USB デバイス |
USB デバイスがサポートされるシステム |
---|---|
オーディオデバイス上の HID コントロール |
SPARC および x86 システム |
ハブ |
SPARC および x86 システム |
キーボードとマウス |
SPARC および x86 システム |
大容量ストレージ |
SPARC および x86 システム サポートされる構成では、キーボードとマウスは 1 つずつしか含めることができない。これらのデバイスは、オンボードの USB ホストコントローラに接続する必要がある |
プリンタ |
SPARC および x86 システム |
スピーカおよびマイク |
SPARC および x86 システム |
USB シリアルコンバータ |
SPARC システム |
次の表に、Solaris 環境で使用される USB の略語について説明します。USB の構成要素と略語についての詳細は http://www.usb.org を参照してください。
略語 |
定義 |
---|---|
ugen |
USB 汎用ドライバ |
USB |
Universal Serial Bus |
USBA |
USB アーキテクチャ (Solaris) |
USBAI |
USBA クライアントドライバインタフェース (Solaris) |
HCD |
USB ホストコントロールドライバ |
EHCI |
拡張オープンコントローラインタフェース |
OHCI |
オープンホストコントローラインタフェース |
UHCI |
ユニバーサルホストコントローラインタフェース |
USB 仕様は、ライセンス料を払わずに入手することができます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。
USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの起点となるルートハブが含まれます。ハブの詳細については、USB ホストコントローラとルートハブを参照してください。
図 29–1 は、有効な USB ポートが 3 つ搭載されたシステムを示しています。1 番目の USB ポートは Zip ドライブに接続されています。2 番目の USB ポートは外部ハブに接続されており、このハブには CD-RW デバイスと、キーボードとマウスの複合デバイスが接続されています。このキーボードは「複合デバイス」であるため USB コントローラが組み込まれており、このコントローラによって、キーボードとキーボードに接続されたマウスの両方が制御されます。キーボードとマウスは、同じ USB コントローラによって制御されるため、同一の USB バスアドレスを共有します。
図 29–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 |
CD-RW デバイス |
/pci@1f,4000/usb@5/hub@2/storage@3 |
プリンタ |
/pci@1f,4000/usb@5/hub@3/printer@1 |
属性とサービスが似ている USB デバイスは、いくつかのデバイスクラスに分類されます。デバイスクラスごとに 1 つのドライバが割り当てられます(フレームワークごとに 1 つ)。 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 インタフェースを表します。
ドライバのバインドは互換性のある名前属性の使用によって実現されます。詳細については、『IEEE 1275 USB binding (英語版)』の 3.2.2.1 項と『Writing Device Drivers (英語版)』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することも、1 つのインタフェースだけにバインドすることも可能です。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。IEEE 1275 バインド仕様の 3.2.2.1 項で定義されているように、このドライバは互換名プロパティを使用して、各インタフェースに対してドライバのバインドを試みます。
Solaris USB アーキテクチャ(USBA) は、USB 1.1 および USB 2.0 の仕様に加え、Solaris ドライバ条件にも準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA は、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層で、汎用 USB の主要な機能を実装するサービスをクライアントドライバに提供します。
次の節では、Solaris 環境における USB について知っておく必要のある情報を説明します。
サポートされているのは、Sun USB キーボードとマウスデバイスだけです。また、複数の USB キーボードとマウスデバイスを含むシステム構成は場合によっては機能しますが、Solaris 環境ではサポートされていません。詳細については、次の説明を参照してください。
USB キーボードおよびマウスは、バス上の任意の場所に接続して、コンソールキーボードおよびマウスとして構成することができます。キーボードとマウスが外部ハブに接続されている場合は、システムのブートが遅くなります。
リブート中または 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 ドライバ (UGEN) に接続しているデバイスの電源は、デバイスが閉じているときにのみ管理されます。
電源消費を減らすために電源管理を行なっている場合は、まず USB 末端デバイスの電源が切断されます。また、ハブのポートに接続されているすべてのデバイスの電源が切断されると、しばらくしてからハブの電源が切断されます。もっとも効率的に電源管理をするためには、あまり多くのハブをカスケード接続しないでください。
USB ケーブルを接続する際には、以下のガイドラインに従ってください。
USB 2.0 デバイスを接続するときは、必ず USB 2.0 に準拠したフルレイト (480M ビット/秒) の 20/28 AWG ケーブルを使用してください。
USB 1.0 または 1.1 デバイスを接続するときは、必ず USB 1.0 に準拠したフルレイト (12M ビット/秒) の 20/28 AWG ケーブルを使用してください。また、バス電源供給方式のハブは低速のデバイスだけに使用してください。USB デバイスを接続するときは、必ずフルレイト (12M ビット/秒) の 20/28 AWG ケーブルを使用してください。
サポートされている最長ケーブル長は 5 m です。
延長ケーブルを使用しないでください。ケーブルを延長するには、最良の結果が得られるよう、自己電源供給方式のハブを使ってください。
詳細については、http://www.usb.org/channel/training/warning を参照してください。
Solaris 環境でのすべての USB デバイス管理作業を次のマップに一覧表示します。作業ごとにいくつかの詳細タスク (USB デバイスの使用、USB デバイスのホットプラグ、USB オーディオデバイスの追加など) を説明しています。
作業 |
説明 |
参照先 |
---|---|---|
USB デバイスを使用する |
ファイルシステムを作成およびマウントする前に、USB デバイスをフォーマットする必要がある | |
USB デバイスをホットプラグする |
USB デバイスをシステムに動的に追加し、システムから動的に取り外す |
|
|
USB デバイスを物理的にシステムに追加し、物理的にシステムから取り外すことができる | |
|
cfgadm コマンドを使用して、USB デバイスをシステムに物理的または論理的に追加し、システムから物理的または論理的に取り外す | |
USB オーディオデバイスを追加する |
この作業マップを使用して、USB オーディオデバイスの追加に関連する作業を特定する |
作業 |
説明 |
参照先 |
---|---|---|
USB 大容量ストレージデバイスを使用できるように準備する |
vold を使用して USB 大容量ストレージデバイスを使用できるように準備する | |
|
vold を使用しないで USB 大容量ストレージデバイスを使用できるように準備する | |
USB デバイス情報を表示する |
prtconf コマンドを使用して USB デバイス情報を表示する | |
USB 大容量ストレージデバイスをフォーマットする |
USB 大容量ストレージデバイスをフォーマットして、データを格納できるようにする | |
USB 大容量ストレージデバイスをマウントする |
vold を使用して USB 大容量ストレージデバイスをマウントする | |
|
vold を使用しないで USB 大容量ストレージデバイスをマウントする | |
(省略可能) USB デバイスドライバを無効にする |
システムで USB サポートを必要としない場合は、USB デバイスドライバを無効にする | |
(省略可能) 未使用の USB デバイスのリンクを削除する |
devfsadm コマンドを使って、未使用の USB デバイスのリンクを削除する |
この Solaris リリースで USB 大容量ストレージデバイスを使用する場合の最新情報については、USB 大容量ストレージデバイスを参照してください。
Solaris 9 4/04 から、USB の CD-RW、ハードディスク、DVD、デジタルカメラ、Zip、Peerless、SmartMedia、CompactFlash、ORB、および USB フロッピーディスクデバイスなどのリムーバブル大容量ストレージデバイスが、USBA 1.0 フレームワークに対応するポートでサポートされるようになりました。
使用しているデバイスがどのフレームワークで動作しているかを判断する簡単な方法は、デバイスに接続する前と後で、prtconf -D コマンドを実行することです。この方法で、接続後に出力されたものが使用しているデバイスです。上記の出力で、prtconf エントリに usba10_scsa2usb が見つかった場合、使用しているデバイスは USBA 1.0 フレームワークで動作しています。ここで scsa2usb は、接続前のフレームワークを表します。
Solaris 環境でサポートされるすべての USB デバイスを確認するには、 http://www.sun.com/io_technologies/USB.html を参照してください。
これらのデバイスは、ボリューム管理を実行している場合でも実行していない場合でも管理することができます。ボリューム管理を実行している場合のデバイス管理については、vold(1M) のマニュアルページを参照してください。
USB フロッピーディスクデバイスは、ほかの USB デバイスと同様に、リムーバブルメディアデバイスとして表示されます。USB フロッピーディスクデバイスは、fd (フロッピー) ドライバでは管理されません。アプリケーションから fd (ネイティブフロッピー) ドライバに対する ioctl(2) 呼び出しを実行すると、そのアプリケーションは失敗します。read(2) および write(2) 呼び出しのみを実行するアプリケーションは成功します。SunPCI や rmformat などのアプリケーションも成功します。
現時点では、CDE のファイルマネージャは USB フロッピーディスクを完全にはサポートしていません。ただし、UFS ファイルシステムを含むフロッピーディスクは、ファイルマネージャのリムーバブルメディアマネージャから開いたり、名前を変更したり、フォーマットしたりすることはできます。PCFS ファイルシステムを含むフロッピーディスクを開くには、リムーバブルメディアマネージャを使用する必要があります。フロッピーディスクがいずれかの種類のファイルシステムを含む場合には、フロッピーディスクとファイルマネージャ間でファイルをドラッグ&ドロップできます。
ボリューム管理 (vold) では、USB フロッピーディスクデバイスは SCSI リムーバブルメディアデバイスとして認識されます。ボリューム管理を使用して、/rmdisk ディレクトリのUSB フロッピーディスクデバイスにアクセスできます。
USB フロッピーディスクデバイスの使用方法の詳細については、第 17 章「リムーバブルメディアの管理 (概要)」を参照してください。
デバイスの識別が間違っていたり、USB 大容量ストレージクラスと互換性がないとされているドライバでも、USB 大容量ストレージドライバをサポートする場合があります。scsa2usb.conf ファイルには、大容量デバイスに対応するかどうかを示す、ベンダー ID、製品 ID、およびバージョンを一覧表示した属性オーバーライドリストが含まれています。またデフォルトのデバイス属性をオーバーライドするフィールドも含まれています。このリストのエントリにはデフォルトでコメントが表示されています。特定のデバイスのサポートを有効にするために、コメントをコピーしたり削除したりすることもできます。
この Solaris リリースで動作するシステムに USB 大容量ストレージデバイスを接続したが、システムでそのデバイスを使用できない場合、/kernel/drv/scsa2usb.conf ファイルでこのデバイスに一致するコメントエントリがあるかどうか確認できます。scsa2usb.conf ファイルの指示に従って、オーバーライド情報を使用して、特定のデバイスをサポートできるかどうか確認してください。推奨される USB 大容量ストレージデバイスについては、http://www.sun.com/io_technologies/USB.html を参照してください。
詳細については、scsa2usb(7D) のマニュアルページを参照してください。
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) のマニュアルページを参照してください。
次の手順は、vold を使用しないで USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは、文字型デバイスについては /dev/rdsk ディレクトリ、ブロック型デバイスについては /dev/dsk ディレクトリの下に作成されます。デバイスリンクは、デバイスをホットプラグしたときに作成されます。詳細については、scsa2usb(7D) のマニュアルページを参照してください。
USB 大容量ストレージデバイスは、ボリューム管理 (vold) を使用しないで準備することもできます。次のコマンドを実行して 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、Peerless などのリムーバブルデバイスがある場合、それらのデバイスの vold の登録も無効になります。
詳細については、vold.conf(4) のマニュアルページを参照してください。
prtconf コマンドを使用して USB デバイス情報を表示します。
SPARC システムの場合、prtconf の出力は、以下のように示されるはずです。
$ 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) |
x86 システムの場合、prtconf 出力中の usb の代わりに、ベンダー ID および デバイス ID を元に PCI カード番号が表示されます。たとえば、usb, instance #0 の代わりに pci1022,7460, instance #0 と表示されます。
prtconf コマンドの -D オプションを使用すれば、追加ドライバ情報を表示できます。この情報を使用して、SPARC システム上の USBA 1.0 フレームワークが使用しているポートおよびデバイスを確認できます。たとえば、次のように表示されます。
$ prtconf -D . . . SUNW,Sun-Blade-1500 . . . 1 pci, instance #0 (driver name: pcisch) isa, instance #0 (driver name: ebus) . . . 2 usb, instance #0 (driver name: ohci) usb, instance #1 (driver name: ohci) . . . 3 pci, instance #0 (driver name: pci_pci) 4 usb, instance #0 (driver name: usba10_ohci) usb, instance #1 (driver name: usba10_ohci) usb, instance #0 (driver name: usba10_ehci) storage, instance #9 (driver name: usba10_scsa2usb) disk, instance #9 (driver name: usb_sd) firewire, instance #0 (driver name: hci1394) . . . |
上の出力から、次の構成の特徴を確認できます。
PCI カードポートは、usb ノードの上に出力されている一連の pci ノード番号からわかります。
PCI カードポート (4) は、pci ノード 1 およびノード 3 という 2 つの階層になっています。これらのポートは、マザーボードと PCI カードの両方が使用するためです。オンボードポート (2) は、1 つの PCI ノード (1) として出力されています。これらのポートは、メインシステムバスに近い 1 つのハードウェアアーキテクチャ層であるためです。
デバイスノードに関連付けられたドライバの名前は、デバイスおよびそのデバイスが割り当てられているポートを使用しているフレームワークを示しています。(4) のうち、usba10 で始まるすべての USB インスタンスのドライバは、USBA 1.0 フレームワークがこれらのポートおよびポートに割り当てられているデバイスを管理していることを示しています。これらのポートだけが、ハイスピード USB 2.0 デバイスをサポートしています。
USB 大容量ストレージデバイスは、Solaris オペレーティングシステムが使用する他のすべてのデバイスと同様に、使用する前にフォーマットしてファイルシステムを作成する必要があります。USB 大容量ストレージデバイス (フロッピーディスクも含む) は、PCFS および UFS の両方のファイルシステムをサポートします。PCFS または UFS ファイルシステムを作成する前に、ディスクがフォーマットされていることを確認してください。
vold を無効する方法については、vold を使用しないで USB 大容量ストレージデバイスを使用できるように準備する方法 を参照してください。
(省略可能) USB フロッピーディスクデバイスをシステムに追加します。
USB デバイスをホットプラグする方法については、以下を参照してください。
(省略可能) フロッピーディスクデバイスを特定します。
たとえば、次のようになります。
# cd /dev/rdsk # devfsadm -C # ls -l c*0 | grep usb lrwxrwxrwx 1 root root 55 Mar 5 10:35 c2t0d0s0 -> ../../devices/pci@1f,0/usb@c,3/storage@3/disk@0,0:a,raw |
この例では、フロッピーディスクデバイスは c2t0d0s0 です。
フロッピーディスクをフロッピーディスクドライブに挿入します。
フロッピーディスクをフォーマットします。
% rmformat -Flong raw-device |
たとえば、次のようになります。
% rmformat -Flong /dev/rdsk/c2t0d0s0 |
ファイルシステムの種類を決定し、次のいずれかの作業を選択します。
PCFS ファイルシステムを作成します。
# mkfs -F pcfs -o nofdisk,size=size raw-device |
-size オプションを 512 バイトブロック単位で指定します。
次の例は、1.4M バイトのフロッピーディスクに PCFS ファイルシステムを作成する方法を示しています。
# mkfs -F pcfs -o nofdisk,size=2880 /dev/rdsk/c4t0d0s0 |
次の例は、100M バイトの Zip ドライブに UFS ファイルシステムを作成する方法を示しています。
# mkfs -F pcfs -o nofdisk,size=204800 /dev/rdsk/c5t0d0s0 |
このコマンドの実行には、数分かかることがあります。
UFS ファイルシステムを作成します。
# newfs raw-device |
たとえば、次のようになります。
# newfs /dev/rdsk/c4t0d0s0 |
フロッピーディスクの記憶容量は少ないので、UFS ファイルシステムのためにフロッピーディスクのかなりの容量が消費されます。
すべてのリムーバブル大容量ストレージデバイス (USB 大容量ストレージデバイスを含む) について、デバイスの別名を表示します。
$ eject -n . . . cdrom0 -> /vol/dev/rdsk/c0t6d0/audio_cd (Generic CD device) zip0 -> /vol/dev/rdsk/c1t0d0/zip100 (USB Zip device) zip1 -> /vol/dev/rdsk/c2t0d0/fat32 (USB Zip device) rmdisk0 -> /vol/dev/rdsk/c5t0d0/unnamed_rmdisk (Peerless, HD or floppy) rmdisk1 -> /vol/dev/rdsk/c4t0d0/clik40 (Generic USB storage) |
次のいずれかの方法を選択して、USB 大容量ストレージデバイスをマウントまたはマウント解除します。
USB デバイスを、汎用の USB ドライブから取り出します。
$ eject device-alias |
たとえば、次のようになります。
$ eject rmdisk0 |
デバイスのマウントが解除されていない場合、eject コマンドは、そのデバイスのマウント解除も行います。また、そのデバイスにアクセスするアプリケーションが実行されている場合は、そのアプリケーションを終了させます。
vold を無効にする方法については、vold を使用しないで USB 大容量ストレージデバイスを使用できるように準備する方法 を参照してください。
スーパーユーザーになります。
(省略可能) フロッピーディスクデバイスを特定します。
たとえば、次のようになります。
# cd /dev/rdsk # devfsadm -C # ls -l c*0 | grep usb lrwxrwxrwx 1 root root 55 Mar 5 10:35 c2t0d0s0 -> ../../devices/pci@1f,0/usb@c,3/storage@3/disk@0,0:a,raw |
この例では、フロッピーディスクデバイスは c2t0d0s0 です。
次のいずれかの方法を選択して、USB 大容量ストレージデバイスをマウントまたはマウント解除します。
USB 大容量ストレージデバイスをマウントします。
# mount [ -F fstype ] block-device mount-point |
次の例は、UFS ファイルシステムを使用しているデバイスのマウント方法を示しています。
# mount /dev/dsk/c1t0d0s2 /mnt |
次の例は、PCFS ファイルシステムを使用していするデバイスのマウント方法を示しています。
# mount -F pcfs /dev/dsk/c1t0d0s0:c /mnt |
次の例は、読み取り専用の HSFS ファイルシステムを使用している CD のマウント方法を示しています。
# mount -F hsfs -o ro /dev/dsk/c1t0d0s2 /mnt |
USB 大容量ストレージデバイスをマウント解除します。
デバイス上のファイルシステムを使用しているユーザーがいないことを最初に確認してください。
たとえば、次のようになります。
# fuser -c -u /mnt # umount /mnt |
デバイスを取り出します。
# eject /dev/[r]dsk/cntndnsn |
たとえば、次のようになります。
# eject /dev/rdsk/c1t0d0s2 |
特定の種類の USB デバイスを無効にするには、対応するクライアントドライバを無効にします。たとえば、USB プリンタを無効にするには、そのプリンタを使用している usbprn ドライバを無効にします。usbprn を無効にしても、USB ストレージデバイスなどの他のデバイスには影響しません。
両方のフレームワークでデバイスタイプを無効にする必要があります。一方のフレームワークだけでデバイスタイプを無効にすることはできません。次の表に、USB デバイスタイプとそれに対応するドライバを示します。
デバイスの種類 |
無効にするドライバ |
---|---|
オーディオ |
usb_ac および usb_as |
HID (通常はキーボードとマウス) |
hid |
ストレージ |
scsa2usb |
プリンタ |
usbprn |
シリアル |
usbser_edge |
システムに接続されている USB デバイスのドライバを無効にすると、次のようなコンソールメッセージが表示されます。
usba10: WARNING: usba: no driver found for device name |
スーパーユーザーになります。
削除するドライバの別名を記録します。
# cp /etc/driver_aliases /etc/driver_aliases.orig |
無効にする USB ドライバの別名を特定します。
たとえば、次のようになります。
# grep usbprn /etc/driver_aliases usbprn "usbif,class7.1.1" usbprn "usbif,class7.1.2" |
ドライバの別名エントリを削除します。
たとえば、次のようになります。
# update_drv -d -i '"usbif,class7.1.1"' usbprn # update_drv -d -i '"usbif,class7.1.2"' usbprn |
システムをリブートします。
# init 6 |
システムの電源がオフのときに USB デバイスを取り外した場合には、次の手順を実行します。システムの電源が切断されているときに USB デバイスを取り外すと、存在しないデバイスへのリンクが残る場合があります。
スーパーユーザーになります。
そのデバイスにアクセスする可能性のあるアプリケーションをすべて閉じます。
特定の USB クラスの未使用のリンクを削除します。
たとえば、次のようになります。
# devfsadm -C -c audio |
または、関連するリンクをすべて削除します。
# devfsadm -C |
作業 |
説明 |
参照先 |
---|---|---|
USB 大容量ストレージデバイスを追加する |
vold を使用して USB 大容量ストレージデバイスを取り付ける | |
vold を使用しないで USB 大容量ストレージデバイスを取り付ける | ||
USB 大容量ストレージデバイスを取り外す |
vold を使用して USB 大容量ストレージデバイスを取り外す | |
vold を使用しないで USB 大容量ストレージデバイスを取り外す | ||
USB カメラを追加する |
USB カメラを追加して、デジタル画像にアクセスする |
デバイスのホットプラグとは、オペレーティングシステムをシャットダウンすることなくあるいはシステムの電源を切ることなく、デバイスを追加したり取り外したりすることを指します。USB デバイスはすべてホットプラグ可能です。
USB デバイスは、ホットプラグするとすぐにシステムのデバイス階層に表示されます (prtconf コマンドで確認可能)。また、デバイスが使用中でない限り、USB デバイスを取り外すとシステムのデバイス階層から消えます。
使用中の USB デバイスを取り外した場合、ホットプラグの動作は若干異なります。使用中の USB デバイスを取り外した場合、デバイスノードは残り、このデバイスを制御しているドライバはデバイス上のすべての動作を停止します。それ以降、このデバイスに発行される新しい入出力動作はエラーで戻されます。
このような場合、システムは元のデバイスを接続するようにユーザーにプロンプトを表示します。デバイスが使用できない場合は、アプリケーションを停止してください。数秒後に、ポートが再び使用できるようになります。
動作中の、つまり開いているデバイスを削除すると、データの整合性が損なわれる可能性があります。デバイスを取り外す前には、必ずデバイスを閉じるようにしてください。ただし、コンソールキーボードとマウスは例外で、動作中でも移動することができます。
次の手順は、vold を使用して USB デバイスを追加する方法を示します。
USB 大容量ストレージデバイスを接続します。
vold を使用して新しいデバイスがあるかどうか調べます。
# touch /etc/vold.conf |
vold を再起動します。
# pkill -HUP vold |
デバイスが取り付けられていることを確認します。
$ ls device-alias |
ボリューム管理デバイス名の詳細については、第 17 章「リムーバブルメディアの管理 (概要)」を参照してください。
次の手順は、vold を使用しないで USB デバイスを追加する方法を示します。
必要に応じて、 vold を無効にする方法について vold を使用しないで USB 大容量ストレージデバイスを使用できるように準備する方法 を参照してください。
USB 大容量ストレージデバイスを接続します。
USB デバイスが追加されたことを確認します。
非 USB ストレージデバイスのデバイスリンクの間にあるかもしれない USB ディスクのデバイスリンクを、次のようにして確認します。
$ cd /dev/rdsk $ ls -l c*0 | grep usb lrwxrwxrwx 1 root root 67 Apr 30 15:12 c1t0d0s0 -> ../../devices/pci@1f,0/pci@5/pci@0/usb@8,2/storage@1/disk@0,0:a,raw |
次の手順では、vold を使用して USB デバイスを取り外す例として、Zip ドライブを使用しています。
そのデバイスを使用しているアプリケーションを実行中の場合は、そのアプリケーションを停止します。
デバイスをマウント解除します。
たとえば、次のようになります。
$ volrmmount -e zip0 |
デバイスを取り出します。
たとえば、次のようになります。
$ eject zip0 |
スーパーユーザーになり、vold を停止します。
# /etc/init.d/volmgt stop |
USB 大容量ストレージデバイスを取り外します。
vold を開始します。
# /etc/init.d/volmgt start |
次の手順は、vold を使用しないで USB デバイスを取り外す方法を示します。
必要に応じて、 vold を無効にする方法について vold を使用しないで USB 大容量ストレージデバイスを使用できるように準備する方法 を参照してください。
スーパーユーザーになります。
そのデバイスを使用しているアプリケーションを実行中の場合は、そのアプリケーションを停止します。
USB デバイスを取り外します。
スーパーユーザーになります。
USB カメラを差し込み、電源をオンにします。
システムによって、カメラ用の論理デバイスが作成されます。カメラが差し込まれると、/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 |
次のコマンドを実行して、デバイスをマウント可能な /dev/dsk リンクエントリに関連付けます。
# ls -l /dev/dsk/c*0 | grep /pci@0,0/pci925,1234@7,2/storage@2 lrwxrwxrwx 1 root root 58 Jul 15 2002 c3t0d0p0 -> ../../devices/pci@0,0/pci925,1234@7,2/storage@2/disk@0,0:a |
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 P7220001.JPG & |
カメラを切り離す前に、ファイルシステムをマウント解除します。
たとえば、次のようになります。
# umount /mnt |
カメラの電源をオフにし、切り離します。
作業 |
説明 |
参照先 |
---|---|---|
USB オーディオデバイスを追加する |
USB マイクおよびスピーカを追加する | |
システムの主オーディオデバイスを特定する |
システムの主オーディオデバイスを特定する | |
主 USB オーディオデバイスを変更する |
USB オーディオデバイスを取り外したり変更したりする場合、特定の 1 つのオーディオデバイスを主オーディオデバイスにすることがある | |
使用していない USB デバイスリンクを削除する |
システムの電源がオフのときに USB オーディオデバイスを取り外すと、 /dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがある | |
USB オーディオに関する問題の障害追跡 |
USB スピーカからサウンドが出力されない場合は、この節を参照する |
この Solaris リリースでは、2 つの連携するドライバ、usb_ac および usb_as の実装によって、USB オーディオサポートを提供しています。オーディオコントロールドライバである usb_ac は USBA (Solaris USB Architecture) 準拠のクライアントドライバで、ユーザーアプリケーションのインタフェースを制御します。オーディオストリーミングドライバである usb_as は、再生中および録音中にオーディオデータメッセージを処理します。また、サンプル周波数と精度を設定し、usb_ac ドライバからの要求を符号化します。どちらのドライバも、USB オーディオクラス 1.0 仕様に準拠しています。
一部のオーディオデバイスでは、ソフトウェアが制御している音量を設定できます。この機能を管理するために、STREAMS モジュールの usb_ah が HID ドライバの先頭に置かれます。
Solaris では、再生専用、録音専用、録音および再生用の USB オーディオデバイスをサポートします。USB オーディオデバイスのホットプラグがサポートされます。
USB オーディオデバイスは、USB コネクタを備えた SPARC Ultra および x86 プラットフォームでサポートされます。
Solaris 8 10/01、Solaris 8 2/02、または Solaris 9 リリース上で再生または録音するには、USB オーディオデバイスが 44100 Hz または 48000 Hz の固定サンプリングレートをサポートしている必要があります。
Solaris 9 リリース上で再生または録音するには、USB オーディオデバイスが 48000 Hz のサンプリングレートをサポートしている必要があります。
サポートされているオーディオデータ形式をすべて確認するには、usb_ac(7D) のマニュアルページを参照してください。
主オーディオデバイスは、/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 デバイスリンクを介してデバイスにアクセスします。
/dev/audio および /dev/sound/N デバイスは、スピーカ、マイク、またはコンボデバイスを参照できます。不正なデバイスタイプを参照すると、そのコマンドは失敗します。たとえば、マイクに対して audioplay を使用しようとすると、そのコマンドは失敗します。
ほとんどの Sun オーディオアプリケーションでは、特定のデフォルトオーディオデバイスを選択できます。たとえば、audioplay や audiorecord の場合には、AUDIODEV シェル変数を設定するか、-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,... 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,... 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,... 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,... 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 スピーカから音が出ないことがあります。デバイスをホットプラグしてもこの動作が変化しないことがあります。
この問題を解決するには、USB スピーカの電源を再投入します。
オーディオデバイスを操作するときは、オーディオデバイスの所有権に関する、次に挙げる点に注意してください。
USB オーディオデバイスを差し込む時にコンソールからログインしていると、コンソールが /dev/* エントリの所有者になります。つまり、コンソールでログインしている限り、オーディオデバイスを使用できることになります。
USB オーディオデバイスを差し込む時にコンソールにログインしていない場合、root がそのデバイスの所有者になります。ただし、その後にコンソールにログインして USB オーディオデバイスにアクセスしようとすると、デバイスの所有権はコンソールに変更されます。詳細については、logindevperm(4) のマニュアルページを参照してください。
リモートから rlogin コマンドでログインして USB オーディオデバイスにアクセスしようとした場合は、所有権は変更されません。たとえば、権限のないユーザーが、他の人の所有するマイクを通して行われる会話を聞くことはできません。
作業 |
説明 |
参照先 |
---|---|---|
USB バス情報を表示する |
USB デバイスおよびバスについての情報を表示する | |
USB デバイスの構成を解除する |
システムに物理的に接続されている USB デバイスを論理的に構成解除する | |
USB デバイスを構成する |
以前に構成を解除した USB デバイスを構成する | |
論理的に USB デバイスの接続を解除する |
物理的にシステムの近くにいないときには、USB デバイスを論理的に切り離すことができる | |
論理的に USB デバイスに接続する |
以前に論理的に接続解除または構成解除した USB デバイスを物理的に接続する | |
USB デバイスのサブツリーの接続を解除する |
ハブの下位階層 (または下位のツリー) である USB デバイスサブツリーの接続を解除する | |
USB デバイスをリセットする |
USB デバイスをリセットして、デバイスを論理的に削除し、再作成する | |
複数の構成を持つ USB デバイスのデフォルト構成を変更する |
複数の構成を持つ USB デバイスのデフォルト構成を変更する |
cfgadm コマンドを使用せずに稼働中のシステムから USB デバイスを追加または削除することができます。ただし、USB デバイスは、デバイスを物理的に削除しなくても「論理的に」ホットプラグすることができます。 この方法は、リモートで作業中に機能していない USB デバイスを無効にしたりリセットしたりする必要がある場合に便利です。cfgadm コマンドを使うと、メーカーや製品情報を含む USB デバイスツリーを表示することもできます。
cfgadm コマンドは接続点についての情報を表示します。接続点とは、動的再構成を行うことができるシステム内の特定の場所のことです。接続点は、次の要素から構成されています。
占有装置 (occupant)。USB デバイスなどの、システムに構成可能なハードウェアリソースのことです。
受容体 (receptacle)。USB ポートなどの、占有装置を受け入れる場所のことです。
接続点は、論理と物理の両方の接続点 ID (Ap_Id) で表現されます。物理 Ap_Id は接続点の物理的なパス名です。論理 Ap_Id は物理 Ap_Id に代わるユーザーに理解しやすい ID です。Ap_Id の詳細については、cfgadm_usb(1M) のマニュアルページを参照してください。
cfgadm コマンドを使用すると、USB デバイスステータス情報を取得できます。
受容体の状態 |
説明 |
---|---|
empty/unconfigured |
デバイスが物理的に接続されていない |
disconnected/unconfigured |
デバイスは物理的に接続されているかもしれないが、論理的に接続解除されており利用不可 |
connected/unconfigured |
デバイスは論理的に接続されているが利用不可。このデバイスは、 prtconf の出力に表示される |
connected/configured |
デバイスは接続されており利用可能 |
次の節では、ソフトウェアから cfgadm コマンドを使用して USB デバイスにホットプラグする方法について説明します。次のすべてのサンプル USB デバイス情報は、関連した情報に焦点を合わせるために一部省略されています。
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 ... usb0/4.5.3 Mfg: Mitsumi Product: Apple USB Mouse NConfigs: 1 Config: 0 ... 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 : ... 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 |
prtconf コマンドを使用して USB 構成情報を表示する例については、USB デバイス情報を表示する方法 (prtconf) を参照してください。
システムに物理的に接続されている 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 コマンドを使ってデバイスをリセットします。このコマンドを使うと、デバイスを論理的に削除し、再作成することができます。
スーパーユーザーになります。
デバイスをリセットします。
# cfgadm -x usb_reset -y usb0/4.7 |
デバイスが接続されていることを確認します。
# cfgadm usb0/4.7 Ap_Id Type Receptacle Occupant Condition usb0/4.7 usb-storage connected configured ok |
複数の構成を持つ USB デバイスを操作するときには、次の点を考慮してください。
USB デバイスの構成には、デバイス自体がどのようにオペレーティングシステムに表示されるかを定義します。この構成方法は、前の節で cfgadm について説明したシステムデバイスの構成方法とは異なります。
一部の USB デバイスでは、複数の構成がサポートされますが、一度に有効にできる構成は 1 つだけです。
複数の構成を持つデバイスを特定するには、cfgadm -lv の出力を確認します。Nconfigs は、1 より大きい値になります。
デフォルトの USB 構成は、configuration 1 です。現在の構成は、cfgadm -lv 出力の Config に反映されます。
デフォルトの構成を変更しても、同じポートに再接続している間は、デバイスのリブート、ホットリムーブ、および再構成を行なっても、構成の変更は適用されません。
デバイスが使用中でないことを確認します。
デフォルトの USB 構成を変更します。
たとえば、次のようになります。
# cfgadm -x usb_config -o config=2 usb0/4 Setting the device: /devices/pci@1f,0/usb@c,3:4 to USB configuration 2 This operation will suspend activity on the USB device Continue (yes/no)? yes |
デバイスの変更を確認します。
たとえば、次のようになります。
# cfgadm -lv usb0/4 Ap_Id Receptacle Occupant Condition Information When Type Busy Phys_Id usb0/4 connected unconfigured ok Mfg: Sun 2000 Product: USB-B0B0 aka Robotech With 6 EPPS High Clk Mode NConfigs: 7 Config: 2 : EVAL Board Setup unavailable usb-device n /devices/pci@1f,0/usb@c,3:4 |
Config が「2」になります。