ここでは、この 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 コントローラに動的に割り当てられます。