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 コマンドを使ってデバイスをリセットします。このコマンドを使うと、デバイスを論理的に削除し、再作成することができます。