Solaris のシステム管理 (基本編)

cfgadm コマンドを使った USB デバイスのホットプラグ

cfgadm コマンドを使用せずに稼働中のシステムから USB デバイスを追加または削除することができます。ただし、USB デバイスは、デバイスを物理的に削除しなくても「論理的に」ホットプラグすることができます。 この方法は、リモートで作業中に機能していない USB デバイスを無効にしたりリセットしたりする必要がある場合に便利です。cfgadm コマンドを使うと、メーカーや製品情報を含む USB デバイスツリーを表示することもできます。

cfgadm コマンドは接続点についての情報を表示します。接続点とは、動的再構成を行うことができるシステム内の特定の場所のことです。接続点は、次の要素から構成されています。

接続点は、論理と物理の両方の接続点 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 デバイス情報は、関連した情報に焦点を合わせるために一部省略されています。

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 デバイスの構成を解除することはできますが、ドライバを適用することはできません。USB デバイスの構成を解除すると、そのデバイスが prtconf 出力に表示されます。

  1. スーパーユーザーになります。

  2. 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
    
  3. デバイスの構成が解除されていることを確認します。


    # 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

USB デバイスの構成方法

  1. スーパーユーザーになります。

  2. USB デバイスを構成します。


    # cfgadm -c configure usb0/4.7 
    
  3. USB デバイスが構成されていることを確認します。


    # cfgadm usb0/4.7
    Ap_Id                  Type         Receptacle  Occupant    Condition
    usb0/4.7               usb-storage  connected   configured  ok

論理的に USB デバイスを接続解除する方法

システムから USB デバイスを取り外し、 prtconf 出力を削除したいが、物理的にシステムの近くにいない場合、USB デバイスの接続を論理的に解除できます。デバイスが物理的に接続されているが、論理的に接続解除されている場合には、そのデバイスは使用できず、システムにも表示されません。

  1. スーパーユーザーになります。

  2. USB デバイスの接続を解除します。


    # cfgadm -c disconnect -y usb0/4.7
    
  3. デバイスが接続解除されていることを確認します。


    # cfgadm usb0/4.7
    Ap_Id                  Type      Receptacle    Occupant      Condition
    usb0/4.7               unknown   disconnected  unconfigured  ok

論理的に USB デバイスを接続する方法

次の手順を使用して、以前に論理的に接続解除または構成解除された USB デバイスを論理的に接続します。

  1. スーパーユーザーになります。

  2. USB デバイスを接続します。


    # cfgadm -c configure usb0/4.7
    
  3. デバイスが接続されていることを確認します。


    # cfgadm usb0/4.7
    Ap_Id                  Type         Receptacle  Occupant    Condition
    usb0/4.7               usb-storage  connected   configured  ok

    デバイスを利用できるようになり、システムにも表示されるようになります。

論理的に USB デバイスのサブツリーを接続解除する方法

次の手順を使用して、USB デバイスのサブツリーを接続解除します。サブツリーは、ハブの下位デバイスの階層 (ツリー) です。

  1. スーパーユーザーになります。

  2. USB デバイスサブツリーを削除します。


    # cfgadm -c disconnect -y usb0/4
    
  3. USB デバイスサブツリーの接続解除を確認します。


    # cfgadm usb0/4
    Ap_Id                  Type       Receptacle   Occupant     Condition
    usb0/4                 unknown    disconnected unconfigured ok

USB デバイスのリセット方法

USB デバイスでエラーが発生した場合は、cfgadm コマンドを使ってデバイスをリセットします。このコマンドを使うと、デバイスを論理的に削除し、再作成することができます。

  1. スーパーユーザーになります。

  2. デバイスが使用中でないことを確認します。

  3. デバイスをリセットします。


    # cfgadm -x usb_reset -y usb0/4.7
    
  4. デバイスが接続されていることを確認します。


    # cfgadm usb0/4.7
    Ap_Id                  Type         Receptacle   Occupant     Condition
    usb0/4.7               usb-storage  connected    configured   ok