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 

デバイスは物理的に接続されているかもしれないが、論理的に接続解除されており利用不可 

connected/unconfigured 

デバイスは論理的に接続されているが利用不可。このデバイスは、 prtconf の出力に表示される

connected/configured 

デバイスは接続されており利用可能 

次の節では、ソフトウェアから cfgadm コマンドを使用して USB デバイスにホットプラグする方法について説明します。次のすべてのサンプル USB デバイス情報は、関連した情報に焦点を合わせるために一部省略されています。

USB バス情報を表示する方法 (cfgadm)

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 ...
 usb0/4.5.3  Mfg: Mitsumi Product: Apple USB Mouse NConfigs: 1 Config: 0 ...
 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 : ...
 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

prtconf コマンドを使用して USB 構成情報を表示する例については、USB デバイス情報を表示する方法 (prtconf) を参照してください。

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

複数の構成を持つ USB デバイスのデフォルト構成を変更する方法

複数の構成を持つ USB デバイスを操作するときには、次の点を考慮してください。

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

  2. デフォルトの USB 構成を変更します。

    たとえば、次のようになります。


    # cfgadm -x usb_config -o config=2 usb0/4
       Setting the device: /devices/pci@1f,0/usb@c,3:4
       to USB configuration 2
       This operation will suspend activity on the USB device
       Continue (yes/no)? yes
    
  3. デバイスの変更を確認します。

    たとえば、次のようになります。


    # cfgadm -lv usb0/4
    Ap_Id  Receptacle   Occupant     Condition  Information When  Type    
         Busy     Phys_Id
    usb0/4 connected    unconfigured ok         Mfg: Sun  2000   
    Product: USB-B0B0 aka Robotech
    With 6 EPPS High Clk Mode   NConfigs: 7  Config: 2  : EVAL Board Setup  
    unavailable
    usb-device   n        /devices/pci@1f,0/usb@c,3:4

    Config が「2」になります。