Solaris のシステム管理 (デバイスとファイルシステム)

USB オーディオデバイスの使用

特定の Solaris リリースでの USB オーディオサポートについては、「USB デバイスの Solaris サポート」を参照してください。

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

一部のオーディオデバイスでは、ソフトウェアが制御している音量を設定できます。この機能を管理するために、STREAMS モジュールの usb_ah が HID ドライバの先頭に置かれます。

Solaris では、再生専用、録音専用、録音および再生用の USB オーディオデバイスをサポートします。USB オーディオデバイスのホットプラグがサポートされます。

主オーディオデバイスは、/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 デバイスリンクを介してデバイスにアクセスします。

/dev/audio および /dev/sound/N デバイスは、スピーカ、マイク、またはコンボデバイスを参照できます。不正なデバイスタイプを参照すると、そのコマンドは失敗します。たとえば、マイクに対して audioplay を使用しようとすると、そのコマンドは失敗します。

ほとんどの Sun オーディオアプリケーションでは、特定のデフォルトオーディオデバイスを選択できます。たとえば、audioplayaudiorecord の場合には、AUDIODEV シェル変数を設定するか、-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) のマニュアルページを参照してください。

ProcedureUSB オーディオデバイスを追加する方法

  1. USB スピーカを差し込みます。

    主オーディオデバイス /dev/audio は、USB スピーカを指します。


    % ls -l /dev/audio
    lrwxrwxrwx   1 root     root    10 Feb 13 08:46 /dev/audio -> usb/audio0
  2. (省略可能) スピーカを取り外します。その後、再度差し込みます。

    スピーカを取り外すと、/dev/audio デバイスがオンボードのオーディオに戻ります。


    % ls -l /dev/audio
    lrwxrwxrwx   1 root     root   7 Feb 13 08:47 /dev/audio -> sound/0
  3. USB マイクを追加します。


    % ls -l /dev/audio
    lrwxrwxrwx   1 root     root    10 Feb 13 08:54 /dev/audio -> usb/audio1

Procedureシステムの主オーディオデバイスを識別する方法

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

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

    • ls コマンドを使用して、システムの新しいオーディオリンクを表示します。

      次に例を示します。


      % ls -lt /dev/audio*
      lrwxrwxrwx   1 root  root      7 Jul 23 15:46 /dev/audio -> usb/audio0
      lrwxrwxrwx   1 root  root     10 Jul 23 15:46 /dev/audioctl -> 
      usb/audioctl0/
      % 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:...
      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:...
      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/usb/audio0 を指していることがわかります。

    • 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, instance #0
      .
      .
      .

Procedure主 USB オーディオデバイスを変更する方法

  1. 主 USB オーディオデバイスを変更するには、次のいずれかの手順を選択します。

    • オンボードのオーディオデバイスを主オーディオデバイスにするには、USB オーディオデバイスを取り外してください。すると、/dev/audio リンクは /dev/sound/0 エントリを指すはずです。/dev/sound/0 エントリが主オーディオデバイスでない場合は、システムをシャットダウンして boot -r コマンドを実行するか、devfsadm -i コマンドをスーパーユーザーとして実行してください。

    • USB オーディオデバイスを主オーディオデバイスにするには、そのデバイスを差し込んでデバイスリンクを確認するだけです。

USB オーディオデバイスに関する問題の障害追跡

ドライバを適用し、音量も上げているのに、USB スピーカから音が出ないことがあります。デバイスのホットプラグを実行してもこの動作が変わらないことがあります。

この問題を解決するには、USB スピーカの電源を再投入します。

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

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