USB の管理

第 2 章 USB デバイス (手順)

この章では、Solaris が動作するシステム上で USB デバイスを管理する手順について説明します。

この章で説明する手順は、次のとおりです。

USB デバイスの管理

Solaris 8 10/00 リリースから、USB の Zip、Jaz、Clik!、SmartMedia、CompactFlash、および ORB などのリムーバブル大容量ストレージデバイスがサポートされるようになりました。Solaris 環境でサポートされるデバイスについては、scsa2usb(7D) のマニュアルページを参照してください。

これらのデバイスは、ボリューム管理を実行している場合でも実行していない場合でも管理することができます。ボリューム管理を実行している場合のデバイス管理については、 vold(1M) を参照してください。

次の節では、Solaris 環境で USB デバイスを管理する場合の作業について説明します。

vold を使用して USB 大容量ストレージデバイスを管理する

Solaris 共通デスクトップ環境 (CDE) が動作している場合は、USB リムーバブル大容量ストレージデバイスは、CDE ファイルマネージャのコンポーネントであるリムーバブルメディア・マネージャによって管理されます。CDE ファイルマネージャについての詳細は、dtfile(1) のマニュアルページを参照してください。


注 –

この節に記載されているマニュアルページを表示するには、MANPATH 変数に /usr/dt/man を含める必要があります。これらのコマンドを使用するには、パスに /usr/dt/bin を含め、さらに CDE を実行している必要があります。また、これらのコマンドをリモートで使用する場合は、DISPLAY 変数を設定する必要があります。


次の表に、リムーバブルメディア・マネージャが CDE 環境からストレージデバイスを管理する際に使用するコマンドを示します。

コマンド 

作業 

sdtmedia_format(1)

USB デバイスのフォーマットおよびラベル付けを行う 

sdtmedia_prop(1)

デバイスのプロパティを表示する 

sdtmedia_prot(1)

デバイスの保護を変更する 

sdtmedia_slice(1)

デバイス上のスライスを作成または変更する 

USB デバイスのフォーマットが終了すると、通常は /rmdisk/label ディレクトリの下にマウントされます。リムーバブルストレージデバイスの構成方法についての詳細は、 rmmount.conf(4) のマニュアルページを参照してください。

次の手順は、ボリューム管理を使用して USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは /vol/dev ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。次の手順では、ホットプラグ可能な USB 大容量ストレージデバイスを追加したり取り外したりする方法についても説明しています。デバイスのホットプラグとは、オペレーティングシステムをシャットダウンしたりシステムの電源を切ったりしないで、デバイスを追加したり取り外したりすることを指します。

vold を使用して USB 大容量ストレージデバイスをマウントまたはマウント解除するには

  1. すべてのリムーバブル大容量ストレージデバイス (USB 大容量ストレージデバイスを含む) について、デバイスの別名を表示します。


    $ eject -n
    .
    .
    .
    rmdisk0 -> /vol/dev/rdsk/c4t0d0/clik40    (Generic USB storage)
    cdrom0 -> /vol/dev/rdsk/c0t6d0/audio_cd   (Generic CD device)
    zip1 -> /vol/dev/rdsk/c2t0d0/fat32        (USB Zip device)
    zip0 -> /vol/dev/rdsk/c1t0d0/zip100       (USB Zip device)
    jaz0 -> /vol/dev/rdsk/c3t0d0/jaz1gb       (USB Jaz device)
  2. 上記のようにリストされたデバイス別名を使用して、USB 大容量ストレージデバイスをマウントします。


    $ volrmmount -i device-alias
    

    次の例では、USB Jaz ドライブを /rmdisk/jaz0 の下にマウントします。


    $ volrmmount -i jaz0
    

  3. USB 大容量ストレージデバイスをマウント解除します。


    $ volrmmount -e device-alias
    

    次の例では、USB Zip ドライブを /rmdisk/zip0 からマウント解除します。


    $ volrmmount -e zip0
    
  4. USB デバイスを、汎用 USB ドライブから取り出します。


    $ eject device-alias
    

    たとえば、次のように入力します。


    $ eject rmdisk0
    

    注 –

    デバイスのマウントが解除されていない場合、eject コマンドは、そのデバイスのマウント解除も行います。また、そのデバイスにアクセスするアプリケーションが実行されている場合は、そのアプリケーションを終了させます。


vold を使用してホットプラグ可能な USB 大容量ストレージデバイスを取り外すには

次の手順では、vold を使用してホットプラグ可能な USB デバイスを取り外す例として、Zip ドライブを使用しています。

  1. デバイスをマウント解除します。


    $ volrmmount -e zip0
    
  2. そのデバイスを使用しているアプリケーションが実行中の場合は、そのアプリケーションを停止します。

  3. デバイスを取り出します。


    $ eject zip0
    
  4. スーパーユーザーになり、vold を停止します。


    # /etc/init.d/volmgt stop
    
  5. USB 大容量ストレージデバイスを取り外します。

  6. vold を開始します。


    # /etc/init.d/volmgt start
    

vold を使用してホットプラグ可能な USB 大容量ストレージデバイスを追加するには

次の手順は、vold を使用してホットプラグ可能な USB デバイスを追加する方法を示します。

  1. USB 大容量ストレージデバイスを追加します。

  2. vold を再起動します。


    # pkill -HUP vold
    
  3. デバイスが追加されたことを確認します。


    $ ls device-alias
    

vold を使用しないで USB 大容量ストレージデバイスを管理する

USB 大容量ストレージデバイスは、ボリュームマネージャ (vold) を使用しないで管理することもできます。ボリュームマネージャを使用しないようにする方法は、次の 2 とおりあります。

次の手順は、vold(1M) を使用しないで USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは、文字型デバイスについては /dev/rdsk ディレクトリ、ブロック型デバイスについては /dev/dsk ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。

vold を使用しないで USB 大容量ストレージデバイスをマウントまたはマウント解除する

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

  2. USB 大容量ストレージデバイスをマウントします。


    # mount -F fs-type /dev/dsk/cntndnsn /mount-point
    

    このコマンドは、デバイスが読み取り専用の場合には失敗します。CD-ROM デバイスには、次のコマンドを使用します。


    # mount -F fs-type -o ro /dev/dsk/cntndnsn /mount-point
    

    たとえば、次のように入力します。


    # mount -F hsfs -o ro /dev/dsk/c0t6d0s2 /mnt
    
  3. USB 大容量ストレージデバイスをマウント解除します。


    # umount /mount-point
    
  4. デバイスを取り出します。


    # eject /dev/[r]dsk/cntndnsn
    

vold を使用しないでホットプラグ可能な USB 大容量ストレージデバイスを取り外すには

次の手順は、vold を使用しないでホットプラグ可能な USB デバイスを取り外す方法を示しています。

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

  2. ホットプラグ可能な USB デバイスを取り外します。

    1. デバイスをマウント解除します。


      # umount /mount-point
      
    2. そのデバイスを使用しているアプリケーションを実行中の場合は、そのアプリケーションを停止します。

    3. デバイスを取り外します。

vold を使用しないでホットプラグ可能な USB 大容量ストレージデバイスを追加する

次の手順は、 vold を使用しないでホットプラグ可能な USB デバイスを追加する方法を示しています。

  1. ホットプラグ可能な USB デバイスを USB ポートに追加します。

  2. USB デバイスが追加されたことを確認します。


    $ ls /dev/rdsk/cntndnsn
    

USB CD 上にデータを作成したり USB CD からデータを抽出したりする

cdrw コマンドを使用して、オーディオ CD 上にデータを作成したりオーディオ CD からデータを抽出したりすることができます。cdrw コマンドは、Software Supplement for the Solaris 8 Operating Environment 10/01 CD に含まれています。

このコマンドの使用法についての詳細は、『Solaris on Sun Hardware Reference Manual Supplement』の cdrw マニュアルページを参照してください。

USB CD 上にデータを作成または USB CD からデータを抽出するための準備をするには

cdrw コマンドは、 vold が実行されている状態でも実行されていない状態でも機能します。詳細は、cdrw(1) および mkisofs(1M) のマニュアルページを参照してください。

  1. CD を CD-RW デバイスに挿入します。

    CD は、デバイスが読み取ることができるものであれば、どんな種類の CD でもかまいません。

  2. デバイスのリストを表示して、その CD-RW ドライブが正しく接続されていることを確認します。


    # cdrw -l
        Node              |    Connected Device            |  Device type
    ----------------------+--------------------------------+-----------------
     /dev/rdsk/c0t0d0s2   | SONY     CD-RW  CRX120E   1.0k | CD Reader/Writer
  3. (省略可能) そのドライブがリスト中にない場合、システムがそのデバイスを認識するように再構成ブートを行う必要があることがあります。


    # touch /reconfigure
    # init 6
    

ホットプラグ可能な USB カメラを追加するには

次の手順でホットプラグ可能な USB カメラを追加します。

  1. USB カメラを差し込み、電源をオンにします。

    USB サブシステムおよび SCSA サブシステムは、カメラ用に論理デバイスを作成します。カメラが差し込まれると、コンソールウィンドウと /var/adm/messages ファイルにメッセージが出力されます。

  2. コンソールウィンドウの出力を確認します。

    出力表示を確認すると、どの論理デバイスが作成されたかを確認でき、そのデバイスを使用してイメージにアクセスできます。出力表示は次のようになります。


    Jul 15 09:53:35 buffy usba:[ID 349649 kern.info]       OLYMPUS, C-3040ZOOM,
     000153719068
    Jul 15 09:53:35 buffy genunix:[ID 936769 kern.info] scsa2usb1 is 
    /pci@0,0/pci925,1234@7,2/storage@2
    Jul 15 09:53:36 buffy scsi:[ID 193665 kern.info] sd3 at scsa2usb1:
    target 0 lun 0
  3. USB カメラファイルシステムをマウントします。

    ほとんどの場合、カメラのファイルシステムは PCFS ファイルシステムです。作成されたデバイス上にファイルシステムをマウントするために、ディスクを表すスライスを指定する必要があります。スライスは通常、SPARC システムでは s0、Intel システムでは p0 です。

    たとえば、Intel システムにファイルシステムをマウントするには、次のコマンドを実行します。


    % mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt
    

    SPARC システムにファイルシステムをマウントするには、次のコマンドを実行します。


    % mount -F pcfs /dev/dsk/c3t0d0s0:c /mnt
    

    ファイルシステムのマウントについての詳細は、『Solaris のシステム管理 (第 1 巻)』の「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。

  4. イメージが使用可能であることを確認します。

    たとえば、次のように入力します。


    % ls /mnt/DCIM/100OLYMP/
    P7220001.JPG*  P7220003.JPG*  P7220005.JPG*
    P7220002.JPG*  P7220004.JPG*  P7220006.JPG*
  5. USB カメラが作成したイメージファイルを表示します。


    % /usr/dt/bin/sdtimage &
    
  6. カメラを切り離す前に、ファイルシステムをマウント解除します。

    次のコマンドを実行して、ファイルシステムをマウント解除します。


    % umount /mnt
    
  7. カメラの電源をオフにし、切り離します。

USB オーディオの概要

この Solaris リリースでは、2 つの連携するドライバ、usb_ac および usb_as の実装によって、USB オーディオサポートを提供しています。オーディオコントロールドライバである usb_ac は USBA (Solaris USB Architecture) 準拠のクライアントドライバで、ユーザーアプリケーションのインタフェースを制御します。オーディオストリーミングドライバである usb_as は、再生中および録音中にオーディオデータメッセージを処理し、サンプル周波数と精度を設定し、usb_ac ドライブからのエンコーディング要求を処理します。

どちらのドライバも、USB オーディオクラス 1.0 仕様に準拠しています。

Solaris では、再生専用または録音専用の外部 USB オーディオデバイスをサポートします。オンボードの USB オーディオデバイスはサポートされません。サポートされるオーディオデータ形式については、usb_ac のマニュアルページを参照してください。

主オーディオデバイスは、/dev/audio です。次のコマンドを使用して、/dev/audio が USB オーディオを指しているかを確認できます。


% mixerctl
Device /dev/audioctl:
Name    = USB Audio
  Version = 1.0
  Config  = external

Audio mixer for /dev/audioctl is enabled

使用する USB オーディオデバイスを接続した後、 audioplay コマンドおよび audiorecord コマンドを使用して、次のファイルにアクセスします。


/dev/sound/N

AUDIODEV 環境変数を設定するか、audioplay コマンドおよび audiorecord コマンドで -d オプションを指定して、特定のオーディオデバイスを選択できます。ただし、/dev/audio をオーディオファイルとしてハードコードしているアプリケーションでは AUDIODEV は動作しません。

USB オーディオデバイスを差し込むと、/dev/audio が使用中でない限り、自動的にそれが主オーディオデバイス /dev/audio になります。オンボードのオーディオから USB オーディオへ、および USB オーディオからオンボードのオーディオへ /dev/audio を変更する方法については、主 USB オーディオデバイスを変更するには および usb_ac(7D) のマニュアルページを参照してください。

複数の USB オーディオデバイスのホットプラグ

USB オーディオデバイスがシステムに差し込まれると、それが主オーディオデバイス /dev/audio になります。そのデバイスは、システムをリブートした後でも、主オーディオデバイスのままです。USB オーディオデバイスが追加で差し込まれた場合、最後に差し込まれたデバイスが主オーディオデバイスになります。

USB オーディオデバイスに関するトラブルシューティングについての詳細は、usb_ac(7D) のマニュアルページを参照してください。

ホットプラグ可能な USB オーディオデバイスを追加するには

次の手順で、ホットプラグ可能な USB オーディオデバイスを追加します。

  1. USB スピーカとマイクを差し込みます。

    主オーディオデバイス /dev/audio は通常、オンボードのオーディオを指します。USB オーディオデバイスを接続した後、/dev/audio /dev/sound ディレクトリで認識される USB オーディオデバイスを指します。

  2. 作成されたオーディオデバイスファイルを確認します。


    % ls /dev/sound
    0     0ctl  1     1ctl  2     2ctl
  3. 左右の USB スピーカをテストします。


    % cd /usr/demo/SOUND/sounds
    % audioplay -d /dev/sound/1 -b 100 spacemusic.au
    % audioplay -d /dev/sound/1 -b -100 spacemusic.au
    
  4. USB マイクをテストします。


    % cd $HOME/au
    % audiorecord -d /dev/sound/2 -p mic -t 30 test.au
    

USB オーディオデバイスに関するトラブルシューティング

この節では、USB オーディオデバイスに関する問題に対処する方法を説明します。

オーディオデバイスの所有権に関する注意事項

オーディオデバイスを操作するときは、オーディオデバイスの所有権に関する、次に挙げる点に注意してください。

システムの主オーディオデバイスを識別するには

この手順は、すでに USB オーディオデバイスが接続されていることを前提としています。

  1. 現在のオーディオデバイスのリンク状態を識別します。

    たとえば、次のように入力します。


    % ls -lt /dev/audio*
    lrwxrwxrwx   1 root     root         7 Jul 23 15:41 /dev/audio -> sound/0
    lrwxrwxrwx   1 root     root        10 Jul 23 15:41 /dev/audioctl -> 
    sound/0ctl
    % ls -lt /dev/sound/* 
    lrwxrwxrwx   1 root     other       66 Jul 23 14:21 /dev/sound/0 -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio
    lrwxrwxrwx   1 root     other       69 Jul 23 14:21 /dev/sound/0ctl -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl
    %

    主オーディオデバイス /dev/audio は、現在オンボードのオーディオ、/dev/sound/0 を指しています。

  2. (省略可能) 新しい USB オーディオデバイスを追加します。

  3. システムの新しいオーディオリンクを調べます。

    たとえば、次のように入力します。


    % ls -lt /dev/audio*
    lrwxrwxrwx   1 root     root         7 Jul 23 15:46 /dev/audio -> sound/1
    lrwxrwxrwx   1 root     root        10 Jul 23 15:46 /dev/audioctl -> 
    sound/1ctl
    % ls -lt /dev/sound/*
    lrwxrwxrwx   1 root     root        74 Jul 23 15:46 /dev/sound/1 -> 
    ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,audio
    lrwxrwxrwx   1 root     root        77 Jul 23 15:46 /dev/sound/1ctl -> 
    ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud...
    lrwxrwxrwx   1 root     other       66 Jul 23 14:21 /dev/sound/0 -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio
    lrwxrwxrwx   1 root     other       69 Jul 23 14:21 /dev/sound/0ctl -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl
    %

    主オーディオデバイス /dev/audio が、新しく差し込まれた USB オーディオデバイスの /dev/sound/1 を指していることがわかります。

    ここで USB オーディオデバイスを取り外しても、主オーディオデバイス /dev/audio はオンボードのオーディオには戻りません。主オーディオデバイスをシステムにオンボードのオーディオへ戻す方法については、次の手順を参照してください。

    prtconf コマンドを使用して USB デバイス情報を参照して、システム上の USB オーディオデバイスを調べることもできます。


    % prtconf
    .
    .
    .
    usb, instance #0
       hub, instance #0
            mouse, instance #0
            keyboard, instance #1
            device, instance #0
                sound-control, instance #0
                sound, instance #0
                input (driver not attached).
    .
    .
    .

主 USB オーディオデバイスを変更するには

USB オーディオデバイスを取り外すかまたは変更して、特定のオーディオデバイス 1 つを主オーディオデバイスにしたい場合は、次の手順を実行してください。この手順では、例として主オーディオデバイスをオンボードのオーディオデバイスに変更します。

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

  2. オーディオアプリケーションをすべて閉じます。

  3. オーディオドライバおよび USB ドライバが読み込まれているかを調べます。


    # modinfo | grep -i audio
    124 780e6a69   bb6e   -   1  audiosup (Audio Device Support 1.12)
    # modinfo  | grep -i usb
     48  13dba67  18636 199   1  ohci (USB OpenHCI Driver 1.31)
     49 78020000  1dece   -   1  usba (USBA:USB Architecture 1.37)
     50  12e5f1f    35f 195   1  hubd (USB Hub Driver 1.4)
     51  13ef53d   5e26 194   1  hid (USB HID Client Driver 1.16)
     54  13f67f2   1b42  10   1  usbms (USB mouse streams 1.6)
     56  127bbf0   2c74  11   1  usbkbm (USB keyboard streams 1.17)
    #
  4. オンボードのオーディオドライバを読み込んで再接続します。


    # devfsadm -i audiocs
    
  5. 主オーディオデバイスのリンクがオンボードのオーディオを指していることを確認します。


    # ls -lt /dev/audio*
    lrwxrwxrwx   1 root     other        7 Jul 23 15:49 /dev/audio -> sound/0
    lrwxrwxrwx   1 root     other       10 Jul 23 15:49 /dev/audioctl -> 
    sound/0ctl
    # ls -lt /dev/sound/*
    lrwxrwxrwx   1 root     other       66 Jul 23 14:21 /dev/sound/0 -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio
    lrwxrwxrwx   1 root     other       69 Jul 23 14:21 /dev/sound/0ctl -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl
    #
  6. オンボードのオーディオが主オーディオデバイスになっていることを確認します。


    % audioplay /usr/demo/SOUND/sounds/bark.au
    

    audioplay コマンドは、デフォルトのオンボードのオーディオデバイスを返します。

  7. (省略可能) 別の USB オーディオデバイスを差し込む前に、読み込み解除できるオーディオドライバをすべて読み込み解除します。

    1. すべてのオーディオアプリケーションを閉じます。

    2. オーディオドライバ情報を表示して、オーディオドライバが読み込まれていないことを確認します。


      # modinfo | grep -i audio
       60 78048000   bb6e   -   1  audiosup (Audio Device Support 1.12)
       61 78152000  39a97   -   1  mixer (Audio Mixer 1.49)
       62 78118000   bf9f   -   1  amsrc1 (Audio Sample Rate Conv.#1 1.3)
      128 7805e000  14968  54   1  audiocs (CS4231 mixer audio driver 1.21)
      #
    3. オーディオドライバを読み込み解除します。


      # modunload -i 0
      # modinfo | grep -i audio
       60 78048000   bb6e   -   1  audiosup (Audio Device Support 1.12)
       61 78152000  39a97   -   1  mixer (Audio Mixer 1.49)
      #

      この時点で、オンボードのオーディオドライバ audiocs は読み込み解除され、オープンすることはできません。ただし、主オーディオデバイスの /dev/audio は、アプリケーションによって開かれている場合は何も変化しません。

  8. (省略可能) USB オーディオデバイスを差し込みます。

  9. (省略可能) 新しいオーディオリンクを調べます。


    % ls -lt /dev/audio*
    lrwxrwxrwx   1 root     root         7 Jul 23 16:12 /dev/audio -> sound/1
    lrwxrwxrwx   1 root     root        10 Jul 23 16:12 /dev/audioctl -> 
    sound/1ctl
    % ls -lt /dev/sound/*
    lrwxrwxrwx   1 root     root        77 Jul 23 16:12 /dev/sound/1ctl -> 
    ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud...
    lrwxrwxrwx   1 root     root        74 Jul 23 16:12 /dev/sound/1 -> 
    ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud...
    lrwxrwxrwx   1 root     root        66 Jul 23 15:59 /dev/sound/0 -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio
    lrwxrwxrwx   1 root     root        69 Jul 23 15:59 /dev/sound/0ctl -> 
    ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,aud...
    %

使用されていない USB オーディオデバイスのリンクを削除するには

システムの電源がオフのときに USB オーディオデバイスを取り外した場合には、次の手順を実行します。システムの電源がオフのときに USB オーディオデバイスを取り外した場合、 /dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがあります。

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

  2. すべてのオーディオアプリケーションを閉じます。

  3. 使用されていないオーディオリンクを削除します。


    # devfsadm -C -c audio