Solaris のシステム管理 (デバイスとファイルシステム)

第 7 章 USB デバイスの使用 (概要)

この章では、Oracle Solaris OS における USB (Universal Serial Bus) デバイスの概要を説明します。

この章の内容は以下のとおりです。

USB デバイスに関する最新の情報については、次の Web サイトを参照してください。

http://www.sun.com/io_technologies/usb/USB-Faq.html

USB デバイスに関する一般的な情報については、次の Web サイトを参照してください。

http://developers.sun.com/solaris/developer/support/driver/usb.html

Oracle Solaris OS における USB デバイスの使用手順については、第 8 章USB デバイスの使用 (手順)を参照してください。

動的再構成およびホットプラグについての一般的な情報については、第 6 章デバイスの動的構成 (手順)を参照してください。

USB プリンタを構成する方法については、『Solaris のシステム管理 (印刷)』を参照してください。

USB デバイスの新機能

次の節では、Solaris リリースにおける USB の新機能について説明します。

Solaris の新機能の一覧および Solaris リリースについての説明は、『Oracle Solaris 10 9/10 の新機能』を参照してください。

EHCI アイソクロナス転送のサポート

Solaris 10 8/07: USB EHCI ホストコントローラドライバは、USB 2.0 または高速のアイソクロナスデバイスでアイソクロナス転送を行えるようにします。詳細は、usb_isoc_request(9S) のマニュアルページを参照してください。

CDC ACM デバイスのサポート

Solaris 10 8/07: このリリースでは、CDC ACM デバイスがサポートされます。詳細については、「USB ドライバの機能拡張」を参照してください。

USB デバイスのホットプラグ対応動作の変更

Solaris 10 6/06: この機能の情報は、Solaris 10 11/06 リリースで改訂されています。

この Solaris リリースでは、新規デバイス属性 hotpluggable が導入されました。この属性を使用すると、システムをリブートせずに接続または切り離しできるデバイスを識別したり、ユーザーの介入なしで自動的に設定および設定解除を実行したりできます。すべての USB および 1394 デバイスは、ホットプラグ対応デバイスとして識別され、「USB 大容量ストレージデバイスの使用」に記述されている利点が得られます。また、非リムーバブルメディア USB および 1394 デバイスは、リムーバブルメディアデバイスとしては識別されなくなり、removable-media 属性を持たなくなりました。

この変更は、非リムーバブルメディア USB および 1394 デバイスのサポートおよびそのパフォーマンスを改善する目的で、主にカーネルレベルで行われました。ただし、これらのデバイスの使用法が変更の影響を受けることはありません。たとえば、これらのデバイスのマウントおよびマウント解除は、vold を使用して制御します。ユーザーが識別できるのは、デバイスの hotpluggable および removable-media 属性の変更だけです。

詳細は、「USB と 1394 (FireWire) サポートの機能拡張」を参照してください。

USB デバイスでの Oracle Solaris ZFS のサポート

ZFS ファイルシステムは、USB 大容量ストレージデバイス上で作成およびマウントできます。USB 大容量ストレージデバイスの使用方法の詳細は、「USB 大容量ストレージデバイスの使用」を参照してください。

ZFS ファイルシステムの作成およびマウントについては、zfs(1M)zpool(1M) のマニュアルページを参照してください。

Prolific および Keyspan シリアルアダプタのサポート

Solaris 10 6/06: 以前に、この機能は Solaris 10 1/06 リリースで使用可能とされていましたが、これは正しい情報ではありません。この機能は、Solaris 10 6/06 リリース以降で使用できます。

USB の電源割り当て

Solaris 10 6/06: この Solaris リリースには、USB デバイスに供給される電源の管理を改善するための、USB デバイスの電源割り当て機能が実装されています。電源割り当ての制御は、過電流状態の発生を防ぎ、USB デバイスをより安全に使用するのに役立ちます。Solaris USB 電源割り当て制限の詳細については、「バス電源供給方式のデバイス」を参照してください。

x86: GRUB ブートにおける USB CD および DVD のサポート

Solaris 10 1/06: GRUB ベースのブート環境で次の USB 機能を使用できます。

GRUB ブートの詳細は、『Solaris のシステム管理 (基本編)』の第 9 章「システムのシャットダウンとブート (概要)」を参照してください。

USB 仮想キーボードとマウスのサポート

Solaris 10 1/06: USB 仮想キーボードおよびマウスがサポートされているため、複数のキーボードおよび複数のマウスを接続して、それらを 1 つの仮想キーボードまたは仮想マウスとして動作させることができます。つまり、各物理デバイスの入力が 1 つの入力ストリームに統合されます。たとえば、一方のキーボードで Shift キーを押してもう一方のキーボードで A キーを押した場合、表示される文字は大文字の A になります。

また、USB キーボードまたはマウスをラップトップに追加し、これらのデバイスをラップトップの PS/2 キーボードおよびパッドと一緒に 1 つのデバイスとして動作させる機能もサポートされています。

さらに、仮想キーボードおよびマウス機能により、バーコードリーダーもサポートされています。

詳細については、virtualkm(7D) のマニュアルページを参照してください。

vold によるホットプラグ対応 USB デバイスの認識

Solaris 10 1/06: リムーバブルメディアマネージャー (vold) はホットプラグ対応になりました。ホットインサートされた USB 大容量ストレージデバイスをマウントするために、このデーモンを再起動する必要はありません。ただし、一部のデバイスでは vold が正常に機能しないことがあるため、手動によるデバイスのマウントが必要な場合があります。vold による USB デバイスの自動マウントが失敗した場合は、次のコマンドを実行して vold を停止します。


# /etc/init.d/volmgt stop

USB 大容量ストレージデバイスを手動でマウントする方法については、vold を使用しないで USB 大容量ストレージデバイスをマウントまたはマウント解除する方法」を参照してください。

USB デバイスの Solaris サポート

USB 1.1 および USB 2.0 の各デバイスが Solaris でどのようにサポートされるかを確認するには、次の表を使用してください。

USB デバイス 

Solaris 8 HW 5/03 以降のリリース 

Solaris 9 リリース 

Solaris 10 リリース 

一般的な USB 1.1 デバイスのサポート

SPARC と x86 

SPARC と x86 

SPARC と x86 

一般的な USB 2.0 デバイスのサポート

SPARC のみ 

SPARC と x86 (Solaris 9 4/04)  

SPARC と x86 

特定の USB 1.1 および USB 2.0 デバイスのサポート

     

オーディオデバイス (下の注意事項を参照してください。) 

USB 1.1 のみ:

USB 2.0 ハブではサポートされません 

USB 1.1 のみ:

USB 2.0 ハブではサポートされません 

USB 1.1 のみ:

USB 2.0 ハブでサポートされます 

汎用 USB ドライバ (ugen(7D))

SPARC のみ 

SPARC と x86 

SPARC と x86 

HID デバイス (キーボードおよびマウスデバイス、hid(7D))

SPARC と x86 

SPARC と x86 

SPARC と x86 

ハブ (hubd(7D))

SPARC と x86 

SPARC と x86 

SPARC と x86 

プリンタ 

SPARC と x86 

SPARC と x86 

SPARC と x86 

シリアルデバイス (Edgeport (usbser_edge(7D))、Prolific (usbsprl(7D))、Keyspan (usbsksp(7D))

SPARC と x86 

SPARC と x86 

SPARC と x86 

ストレージデバイス (scsa2usb(7D))

SPARC と x86 

SPARC と x86 

SPARC と x86 

ユーザー領域 USB デバイス管理ライブラリ (libusb(3LIB))

サポートされていません  

サポートされていません  

SPARC と x86 

注:

大容量ストレージデバイスに関連する作業については、第 8 章USB デバイスの使用 (手順)を参照してください。

ugen の詳細は、「USB ドライバの機能拡張」を参照してください。

USB デバイスの概要

Universal Serial Bus (USB) は PC 業界で開発された、周辺デバイス (キーボード、マウス、プリンタなど) をシステムに接続するための低コストのソリューションです。

USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。USB の設計により、システムの背面パネルの混雑を軽減できます。

デバイスは、外部 USB ハブ上の USB ポートか、コンピュータ本体に設置されたルートハブ上の USB ポートのいずれかに接続されます。ハブには複数のポートがあるため、1 つのハブからデバイスツリーの複数の枝が伸びることがあります。

詳細は、usba(7D) のマニュアルページまたは次の Web サイトを参照してください。

http://www.usb.org/home

よく使用される USB 関連の略語

次の表に、Oracle Solaris OS で使用される USB の略語を示します。USB の構成要素と略語についての詳細は、次の Web サイトを参照してください。

http://www.usb.org/home

略語 

定義 

参照先 

UGEN 

USB 汎用ドライバ 

ugen(7D)

USB 

Universal Serial Bus 

usb(7D)

USBA 

USB アーキテクチャー (Solaris) 

usba(7D)

USBAI 

USBA クライアントドライバインタフェース (Solaris) 

なし 

HCD 

USB ホストコントロールドライバ 

なし 

EHCI 

拡張ホストコントローラインタフェース 

ehci(7D)

OHCI 

オープンホストコントローラインタフェース 

ohci(7D)

UHCI 

ユニバーサルホストコントローラインタフェース 

uhci(7D)

USB バスの説明

USB 仕様は、ライセンス料を払わずに入手できます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。

USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの起点となるルートハブが含まれます。ハブの詳細は、「USB ホストコントローラとハブ」を参照してください。

図 7–1 USB 物理デバイスの階層

この図は、合成デバイス (ハブとプリンタ) と複合デバイス (キーボードとマウス) を含む、有効な USB ポートが 3 つ搭載されたシステムを示しています。

図 7–1 は、有効な USB ポートが 3 つ搭載されたシステムを示しています。1 番目の USB ポートは USB メモリースティックに接続されています。2 番目の USB ポートは外部ハブに接続されており、このハブには CD-RW デバイスと、キーボードとマウスの複合デバイスが接続されています。このキーボードは「複合デバイス」であるため USB コントローラが組み込まれており、このコントローラによって、キーボードとキーボードに接続されたマウスの両方が制御されます。キーボードとマウスは、同じ USB コントローラによって制御されるため、同一の USB バスアドレスを共有します。

図 7–1 は、ハブとプリンタの「合成デバイス」の例も示しています。このハブは外部ハブで、プリンタと同じケースに入っています。プリンタはこのハブに固定接続されます。このハブとプリンタは、それぞれ異なる USB バスアドレスを持ちます。

次の表に、図 7–1 に示したデバイスの一部について、デバイスツリーパス名を一覧表示します。

メモリースティック

/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 デバイスとドライバ

属性とサービスが似ている USB デバイスは、いくつかのデバイスクラスに分類されます。各デバイスクラスには対応するドライバが 1 つずつ存在しています。クラス内のデバイスは、同じ組み合わせのデバイスドライバによって管理されます。ただし、USB 仕様では、特定のクラスに属さないベンダー固有のデバイスも許可しています。

Human Interface Device (HID) クラスには、ユーザーが制御する次のようなデバイスが含まれます。

Communication Device クラスには、次のデバイスが含まれます。

その他にも、次のようなデバイスクラスがあります。

各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送についてどのように動作するかを指定します。クラス情報の詳細は、次の Web サイトを参照してください。

http://www.usb.org/home

Solaris リリースでサポートされる USB デバイスの詳細は、usb(7D) のマニュアルページを参照してください。

USB ドライバの機能拡張

次の USB ドライバ拡張が含まれています。

EHCI ドライバ、OHCI ドライバ、および UHCI ドライバ

EHCI ドライバには、次の特徴があります。

prtconf コマンドの出力を使用して、システムが USB 1.1 デバイスまたは USB 2.0 デバイスをサポートしているかどうかを確認します。次に例を示します。


# prtconf  -D | egrep "ehci|ohci|uhci"

prtconf の出力で EHCI コントローラが確認される場合、システムは USB 2.0 デバイスをサポートしています。

prtconf の出力で OHCI または UHCI コントローラが確認される場合、システムは USB 1.1 デバイスをサポートしています。

Solaris USB アーキテクチャー (USBA)

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 デバイスドライバインタフェース (DDI) の一部です。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。次の図が示すように、USBA は、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層で、汎用 USB の主要な機能を実装するサービスをクライアントドライバに提供します。

図 7–2 Solaris USB アーキテクチャー (USBA)

この図は、クライアントドライバ、USBA フレームワーク、ホストコントローラドライバ、およびデバイスバス間の関係を示しています。

Oracle Solaris OS における USB について

次の節では、Oracle Solaris OS における USB について知っておく必要のある情報を説明します。

USB 2.0 機能

次に示す USB 2.0 の機能が含まれます。

USB デバイスおよび USB 用語については、「USB デバイスの概要」を参照してください。

USB 2.0 デバイスの機能および互換性の問題

USB 2.0 デバイスは、USB 2.0 仕様に準拠した高速デバイスです。USB 2.0 仕様は、http://www.usb.org/home で確認できます。

Solaris 10 リリースで USB デバイスの速度を識別するには、/var/adm/messages ファイルで次のようなメッセージを確認します。


Dec 13 17:05:57 mysystem usba: [ID 912658 kern.info] USB 2.0 device
(usb50d,249) operating at hi speed (USB 2.x) on USB 2.0 external hub:
storage@4, scsa2usb0 at bus address 4

この Solaris リリースでは、たとえば、次の USB デバイスがサポートされます。

今回の Solaris リリースで検証済みの USB デバイスの一覧は、次のサイトで確認できます。

http://www.sun.com/io_technologies/USB.html

それ以外のストレージデバイスでも、scsa2usb.conf ファイルを変更すれば使用できることがあります。詳細は、scsa2usb(7D) のマニュアルページを参照してください。

Solaris USB 2.0 デバイスのサポートとして、次の機能が用意されています。

USB 2.0 デバイスのサポートの詳細は、ehci(7D) および usba(7D) のマニュアルページを参照してください。

バス電源供給方式のデバイス

バス電源供給方式のハブは、接続先の USB バスの電源を利用して、接続されているデバイスに電源を供給します。これらのハブの負荷が大きくなりすぎないように、十分に注意してください。これらのハブから接続先のデバイスに供給できる電源は限られているためです。

Solaris 10 6/06 リリースから、USB デバイスへの電源割り当てが実装されています。この機能には、次の制限があります。

USB キーボードとマウス

USB キーボードおよびマウスデバイスを使用するときは、次のことに注意してください。

USB ホイール付きマウスのサポート

Solaris 9 9/04 リリース以降では、次のホイール付きマウス機能がサポートされています。

USB ホストコントローラとハブ

USB ハブは次のことを行います。

USB ホストコントローラは「ルートハブ」という埋め込みハブを持っています。システムの背面パネルに見えるポートはルートハブのポートです。USB ホストコントローラは次のことを行います。

USB ハブデバイス

SPARC: USB 電源管理

SPARC システムでは、USB デバイスの保存停止および復元再開機能が完全にサポートされます。ただし、稼働中のデバイスを保存停止したり、システムの保存停止で電源がオフになっているときにデバイスを取り外すことは決してしないでください。

SPARC システムで電源管理を有効にしている場合、USB のフレームワークはすべてのデバイスの電源管理を最大限に試みます。USB デバイスの電源管理により、ハブドライバはデバイスが接続されているポートの中断も行います。「リモートウェイクアップ」をサポートするデバイスは、そのデバイスが利用可能な状態になるように、そのデバイスのパス上にあるすべてのデバイスを呼び起こすようシステムに通知できます。アプリケーションがデバイスに入出力を送信した場合も、ホストシステムはデバイスを呼び起こすことができます。

リモートウェイクアップ機能がサポートされている場合、すべての HID デバイス (キーボード、マウス、ハブ、およびストレージデバイス)、ハブデバイス、およびストレージデバイスは、デフォルトで電源管理されます。USB プリンタが電源管理されるのは、2 つの印刷ジョブ間だけです。汎用の USB ドライバ (UGEN) で管理されているデバイスの電源は、デバイスが閉じているときにのみ管理されます。

電源消費を減らすために電源管理を行なっている場合は、まず USB 末端デバイスの電源が切断されます。また、ハブのポートに接続されているすべてのデバイスの電源が切断されると、しばらくしてからハブの電源が切断されます。もっとも効率的に電源管理をするためには、あまり多くのハブをカスケード接続しないでください。

SPARC システムの SUSPEND/SHUTDOWN キーの使用についての詳細は、「USB キーボードとマウス」を参照してください。

USB ケーブルに関するガイドライン

USB ケーブルを接続する際には、次のガイドラインに従ってください。

詳細は、次の Web サイトを参照してください。

http://www.usb.org/about/faq/ans5