cfgadm_usb - cfgadm の USB ハードウェア固有のコマンド
/usr/sbin/cfgadm [-f] [-y | -n] [-v] -c function ap_id...
/usr/sbin/cfgadm -f [-y | -n] [-v] [-o hardware_options] -x hardware_function ap_id...
/usr/sbin/cfgadm -v [-a] [-s listing_option] [-l [ap_id | ap_type...]]
/usr/sbin/cfgadm -v -h [ap_id]...
ユニバーサルシリアルバス (USB) ハードウェア固有ライブラリ /usr/lib/cfgadm/usb.so.1 は、cfgadm コマンドを介して USB デバイスを管理するための機能を提供します。cfgadm は、接続点で実行されます。接続点の詳細は、cfgadm(8) を参照してください。
USB の管理では、サポートされる接続点は、USB バスに接続されたハブのポートのみです。
接続点には、接続点 ID (ap_id) を通じて名前が付けられます。USB バスは階層構造であるため、ap_id も同様です。USB ハブには、1 から n までの番号が付けられたポートがあります。すべての USB の ap_id は、次の形式の文字列で構成されます。
usbN/A[.B[.C[...]]]
where
たとえば、USB コントローラ 0 (唯一のコントローラ) のルートハブの 1 番目のポートは、次のような論理 ap_id を持ちます。
usb0/1
同様に、1 番目の USB コントローラのルートハブの 1 番目のポートに接続された 1 番目の外部ハブの 2 番目のポートは、次のような論理 ap_id を持ちます。
usb0/1.2
たとえば、ap_id が usb0/1.4.3.4 である場合は、システム上の 1 番目の USB ホストコントローラのルートハブのポート 1 に接続されたハブのポート 4 に接続されたハブのポート 3 に接続されたハブのポート 4 を表しています。
example# cfgadm -l Ap_Id Type Receptacle Occupant Condition usb0/1 USB-hub connected configured ok usb0/2 unknown empty unconfigured ok usb0/1.1 USB-storage connected configured ok usb0/1.2 unknown empty unconfigured ok usb0/1.3 unknown empty unconfigured ok usb0/1.4 USB-device connected configured ok
USB2.0 チップには、EHCI ホスト USB2.0 ホストコントローラが 1 つと、いくつかのコンパニオン USB 1.x ホストコントローラ (OHCI または UHCI ホストコントローラ) が搭載されています。
USB2.0 デバイスは、接続されると、EHCI 論理ポートに接続されます。これらの論理ポートは、システム上の外部の物理ポート番号に対して 1 対 1 のマッピングになっていない場合があります。USB1.x デバイスを接続すると、EHCI ホストコントローラは、デバイスにコンパニオンホストコントローラの別の経路を指定し、デバイスはコンパニオンの論理ポート番号に接続されます。
論理ポート番号と物理ポート番号のマッピングは非常に複雑になる場合があります。例:
% cfgadm Ap_Id Type Receptacle Occupant Condition c0 scsi-bus connected configured unknown usb0/1 usb-mouse connected configured ok usb0/2 usb-kbd connected configured ok usb0/3 unknown empty unconfigured ok usb0/4 usb-hub connected configured ok usb0/4.1 unknown empty unconfigured ok usb0/4.2 unknown empty unconfigured ok usb0/4.3 unknown empty unconfigured ok usb0/4.4 usb-storage connected configured ok usb1/1 unknown empty unconfigured ok usb1/2 unknown empty unconfigured ok usb1/3 unknown empty unconfigured ok usb2/1 unknown empty unconfigured ok usb2/2 usb-device connected configured ok usb3/1 unknown empty unconfigured ok usb3/2 unknown empty unconfigured ok usb3/3 unknown empty unconfigured ok usb3/4 unknown empty unconfigured ok usb3/5 unknown empty unconfigured ok
この例では、usb0 はオンボード USB 1.x ホストコントローラです。usb1 と usb2 は、コンパニオン OHCI USB1.x ホストコントローラであり、usb3 は EHCI USB2.0 ホストコントローラです。
次の表は、この USB2.0 チップのややわかりにくい経路指定を示しています。
logical port number physical port number ------------------- -------------------- usb1/1 internal port 1 usb1/2 external port 1 usb1/3 external port 3 usb2/1 internal port 2 usb2/2 external port 2 usb3/1 internal port 1 usb3/2 internal port 2 usb3/3 external port 1 usb3/4 external port 2 usb3/5 external port 3
残念ながら、多くの場合、正確な経路指定は実験によってしかわかりません。
USB ポートにおける接続点の受容体の状態は、次の意味を持ちます。
USB は、電源が投入され、有効になっています。USB デバイスがポートに接続されています。デバイスが USB バスに論理的に接続されています。
USB は、電源が投入され、有効になっています。USB デバイスがポートに接続されています。(cfgadm –c disconnect コマンドを使用して) デバイスが USB バスから論理的に切断されています。
USB ポートは電源が投入されていますが、デバイスが接続されていません。
USB ポートにおける USB ポートの接続点でのデバイスの占有装置の状態は、次の意味を持ちます。
USB ポートの USB デバイスは構成されており、Solaris で使用できます。
USB ポートの USB デバイスは、cfgadm –c unconfigure を使用して明示的にオフラインにされているか、ドライバがない、またはデバイスに問題があるなど、Solaris で使用できるように正常に構成されていません。
接続点の条件は次のとおりです。
通常の状態 - 使用できます。
使用されていません。
使用されていません。
アプリケーションによってデバイスが開かれているときに、ユーザーによりデバイスが物理的に取り外されました (未処理の I/O がある場合があります)。ユーザーは、同じ物理デバイスを再度挿入し、アプリケーションを適切に終了してから、デバイスをあらためて取り外す必要があります。この処理が完了するまで、ほかの挿入されたデバイスをポートで構成することはできません。
元のデバイスをポートに再度挿入できない場合は、Managing Devices in Oracle Solaris 11.4に記載されている、この接続点の条件をクリアする手順を参照してください。
使用されていません。
USB デバイスは、いつでもホットプラグで接続または取り外しでき、システムによってイベントが検出され、適切に処理されます。
デバイスを USB から取り外す前に、受容体を disconnected 状態に移行する必要はありません。ただし、使用中のデバイス (ボリュームマネージャーまたはその他のアプリケーションによって現在開かれているリムーバブルディスクなど) をホットリムーブすることはお勧めしません。
cfgadm では、数種類の操作が定義されています。これらの操作には、構成状態の変更の開始 (–c)、ハードウェア固有の機能の実行 (–x)、および構成管理のヘルプ情報の表示 (–h) が含まれます。
いずれかの操作が失敗した場合、デバイスおよび接続点が想定した状態にならない場合があります。デバイスの現在のステータスを表示するには、cfgadm –l コマンドを使用します。
その他のすべてのオプションは、cfgadm(8) での定義と同じ意味を持ちます。
サポートしているオプションは、次のとおりです。
USB ハードウェア固有ライブラリでは、次の汎用コマンドが定義されています。次の構成状態の変更操作がサポートされています。
ポートに接続されている USB デバイスがある場合、このコマンドにより、Solaris で使用できるようにそのデバイスの構成とすべての設定が試みられます。このコマンドでは、必要に応じて暗黙的に、connect (disconnect の逆) が実行されます。このポートのデバイスがすでに構成されている場合、このコマンドは何も実行せず、エラーメッセージを返します。このコマンドが正常に実行されると、デバイスを Solaris で使用できるようになります。
ap_id で unconfigure を実行し (まだ unconfigured になっていない場合)、受容体を disconnected 状態に移行します。これは、デバイスがまだポートに接続されていても実行されます。ドライバを見つけることができ、デバイスの列挙と構成に問題がないと仮定して、cfgadm –c configure を発行するか、デバイスを物理的にホットプラグ接続すると、デバイスでは、受容体の状態が connected に、占有装置の状態が configured に戻ります。
ポートに接続されているデバイスを Solaris で使用できないようにします (オフラインにします)。成功した場合、cfgadm により、この ap_id の占有装置の状態は unconfigured と報告されます。configure を ap_id に発行すると (成功した場合)、デバイスをポートに物理的にホットプラグ接続した場合と同様に、その占有装置の条件は configured (オンライン) に戻ります。
サポートされていません。
ヘルプオプションと任意の USB 接続点を組み合わせて使用して、USB 固有のヘルプを表示できます。
–l オプションは、cfgadm(8) で説明されているように機能します。–v オプションと組み合わせて使用すると、Information フィールドに次の USB 固有の情報が表示されます。
Mfg: 製造元文字列 (iManufacturer)
Product: 製品文字列 (iProduct)
NConfigs: デバイスでサポートされる構成の合計数 (bNumConfigurations)
Config: 10 進数の現在の構成設定 (構成値ではなく、構成インデックス)
現在の構成の構成文字列記述子 (iConfiguration)
これらのフィールドの説明については、USB の仕様を参照してください。
ハードウェアオプションは、ハードウェア固有のコマンド –x usb_config でのみサポートされます。使用できるオプションの説明については、下記のそのコマンドの説明を参照してください。
select サブオプションを使用すると、クラス USB の接続点を一覧表示できます。cfgadm(8) を参照してください。
次のハードウェア固有の機能が定義されています。
このコマンドでは、–o オプションを使用して必須の config 値を指定する必要があります。
ap_id の複数構成 USB デバイスの USB 構成を、構成インデックス n に設定します。これ以降、デバイスはこの構成に設定され、この設定は、デバイスのリブート、ホットリムーブ、および構成解除/構成の後も保持されます。
n の有効な値の範囲は、0 から (Nconfigs -1) までです。disconnect に続けて configure を実行すると、デバイスはリセットされます。configure により、デバイスは新しい構成設定に構成されます。
いずれかの手順が失敗した場合、構成ファイルとデバイスが以前の状態に復元され、エラーメッセージが発行されます。
デバイスのソフトウェアリセット (再列挙) を実行します。これは、デバイスを取り外して再度挿入するのと同等の意味を持ちます。ハブで個々のポートの電源再投入がサポートされている場合、ハブのポートで電源が一度切断され、再度投入されます。
接続されているデバイスがハブである場合、この機能には、そのハブと、そのハブをルートとするツリーの下位のデバイスをリセットするという効果があります。
いずれかの手順が失敗した場合、デバイスが以前の状態に復元され、エラーメッセージが発行されます。
状態の表: 接続点の状態とコマンド:
Valid states: empty/unconfigured → no device connected disconnected/unconfigured → logically disconnected, unavailable, devinfo node removed, device physically connected connected/unconfigured → logically connected, unavailable, devinfo node present connected/configured → connected, available
次の表は、操作またはコマンドの実行による状態の移行を示しています。
current state operation new state ------------- --------- --------- empty/ unconfigured: device plugged in: connected/configured or connected/unconfigured (if enumeration failed) device removed: n/a cfgadm -c unconfigure: empty/unconfigured cfgadm -c configure: empty/unconfigured cfgadm -c disconnect: empty/unconfigured (no-op and error) disconnected/ unconfigured: device plugged in: n/a device removed: empty/unconfigured cfgadm -c unconfigure: disconnected/unconfigured cfgadm -c configure: connected/configured, or connected/unconfigured (if reenumeration failed) cfgadm -c disconnect: disconnected/unconfigured connected/unconfigured: device plugged in: n/a device removed: empty/unconfigured cfgadm -c unconfigure: connected/unconfigured cfgadm -c configure: connected/configured, or connected/unconfigured (if reenumeration failed) cfgadm -c disconnect: disconnected/unconfigured connected/configured: device plugged in: n/a device removed: empty/unconfigured or connected/configured, but with ap condition 'unusable' if device was open when removed cfgadm -c unconfigure: connected/unconfigured cfgadm -c configure: connected/configured cfgadm -c disconnect: disconnected/unconfigured
次のコマンドは、システム上のすべての USB デバイスのステータスを一覧表示します。
# cfgadm Ap_Id Type Receptacle Occupant Condition usb0/1 USB-hub connected configured ok usb0/2 unknown empty unconfigured ok usb0/1.1 USB-storage connected configured ok usb0/1.2 unknown empty unconfigured ok usb0/1.3 unknown empty unconfigured ok usb0/1.4 USB-device connected configured ok
cfgadm では、現時点では個々のインタフェースを制御できないため、ap_id usb0/1.4 の USB-device デバイスが単一のユニットとして処理されています。
使用例 2 デバイスが接続されていないポートのステータスの一覧表示次のコマンドは、デバイスが接続されていないポートのステータスを一覧表示します。
example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown empty unconfigured ok使用例 3 デバイスが接続されている同じポートのステータスの一覧表示
次のコマンドは、デバイスが物理的に接続され、問題なく構成されたあとの、同じポートのステータスを一覧表示します。
example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 USB-hub connected configured ok使用例 4 既存の USB デバイスの構成解除
次のコマンドは、usb0/1.3 に接続された USB デバイスを構成解除し、ap_id のステータスを表示します。
example# cfgadm -c unconfigure usb0/1.3 Unconfigure the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown connected unconfigured ok使用例 5 既存の USB デバイスの構成解除と論理的な切断
次のコマンドは、usb0/1.3 に接続された USB デバイスを構成解除し、論理的に切断します。
example# cfgadm -c disconnect usb0/1.3 Disconnect the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown disconnected unconfigured ok
disconnect の実行は、cfgadm によって最初に unconfigure が実行されることを暗黙的に意味します。デバイスがまだ物理的に接続されていても、受容体のステータスは disconnected と示されています。この場合、物理的なホットプラグ接続を行うか、または ap_id で cfgadm –c configure を使用すると、オンラインに戻ります。
使用例 6 以前に構成解除した USB デバイスの構成次のコマンドは、以前に usb0/1.3 に接続されていた USB デバイスを構成します。
example # cfgadm -yc configure usb0/1.3 example# cfgadm -l usb0/1.3 Ap_Id Type Receptacle Occupant Condition usb0/1.3 unknown connected configured ok使用例 7 USB デバイスのリセット
次のコマンドは、USB デバイスをリセットします。
example# cfgadm -x usb_reset usb0/1.3 Reset the device: /devices/pci@0,0/pci8086,7112@7,2/hub@2:2.3 This operation suspends activity on the USB device Continue (yes/no)? Enter: y使用例 8 単一の USB デバイスに関する詳細情報の表示
次のコマンドは、単一の USB デバイスに関する詳細情報を表示します。このデバイスでは、次の USB 固有の情報が「Information」フィールドに示されています。
製造元文字列: Iomega
製品文字列: USB Zip 250
サポートされる構成数: 1
現在アクティブな構成: 0
構成 0 の構成文字列記述子: Default
example# cfgadm -lv usb0/1.5 Ap_Id Receptacle Occupant Condition Information When Type Busy Phys_Id usb0/1.5 connected configured ok Mfg:"Io mega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default
example# cfgadm -l -s "cols=ap_id:info" usb0/1.5 Ap_Id Information usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default使用例 9 すべての USB デバイスに関する詳細情報の表示
次のコマンドは、システム上のすべての USB デバイスに関する詳細情報を表示します。
example# cfgadm -l -s "select=class(usb),cols=ap_id:info" Ap_Id Information usb0/1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/2 usb0/1.1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.2 usb0/1.3 usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 : V.90 Analog Modem usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default usb0/1.6 Mfg:"SOLID YEAR" Product:"SOLID YEAR USB"NConfigs:1 Config:0 <no cfg str descr> usb0/1.7
ap_id のみが含まれている行は、空のポートです。これらは、フィルタ処理によって除外できます。次の例では、接続されたデバイスがある USB ap_id と、それらのデバイスの情報のみが示されます。
example# cfgadm -l -s "select=class(usb),cols=ap_id:info" | grep Mfg usb0/1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.1 Mfg:<undefined> Product:<undefined> NConfigs:1 Config:0 <no cfg str descr> usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 : V.90 Analog Modem usb0/1.5 Mfg:"Iomega" Product:"USB Zip 250" NConfigs:1 Config:0 : Default usb0/1.6 Mfg:"SOLID YEAR" Product:"SOLID YEAR USB" Config:0 <no cfg str descr>使用例 10 複数構成 USB デバイスに関する情報の一覧表示
次の例では、複数構成 USB デバイスに関する情報が一覧表示されます。
NConfigs フィールドに注目してください。このデバイスで使用できる構成数は、0、1、および 2 (0 - (NConfigs-1)) です。
example# cfgadm -l -s "cols=ap_id:info" usb0/1.4 Ap_Id Information usb0/1.4 Mfg:"Wizard" Product:"Modem/ISDN" NConfigs:3 Config:1 V.90 Analog Modem"使用例 11 複数構成 USB デバイスの現在の構成の設定
次の例では、複数構成 USB デバイスの現在の構成が設定されます。
example# cfgadm -o config=2 -x usb_config usb0/1.4 Setting the device: /devices/pci@1f,2000/usb@1/device@3 to USB configuration 2 This operation suspends activity on the USB device Continue (yes/no)? Enter: y USB configuration changed successfully.
まったく同じタイプの複数のデバイスが同じバス上にある場合は、デバイスのパスを確認して、デバイスの正しいインスタンスが参照されていることを確認するようにしてください。この情報は、「Information」フィールドに示されています。
汎用的な USB デバイス管理のためのハードウェア固有ライブラリ
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
config_admin(3CFGADM)、scsa2usb(4D)、usba(4D)、attributes(7)、cfgadm(8)
Universal Serial Bus 1.1 Specification, https://www.usb.org/
cfgadm(8) では、現在アプリケーションによって開かれている USB デバイスの構成解除、切断、リセット、または構成の変更を行うことはできません。また、ハブの階層内のデバイスがアプリケーションによって開かれている場合、そのハブでこれらの操作を実行すると失敗します。現在使用中の USB 外部ストレージデバイスの構成解除については、scsa2usb(4D) を参照してください。
スーパーユーザーのみが、接続点で機能を実行できます。ただし、接続点の一覧表示については、スーパーユーザーである必要はありません。