この 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(7D) のマニュアルページを参照してください。
オーディオデバイスの音量をソフトウェアが制御する場合、音量ボタンを管理するために usb_ah という STREAMS モジュールが HID ドライバの先頭に置かれます。
USB オーディオデバイスは、USB コネクタを備えた SPARC Ultra および x86 プラットフォームでサポートされます。
ホットプラグ可能な USB オーディオデバイスがサポートされます。
USB オーディオデバイスは、8000 〜 48000 Hz の連続サンプリングレートをサポートしている必要があります。また、Solaris 8 10/01、Solaris 8 2/02、または Solaris 9 リリース上で再生または録音するには、48000 Hz のサンプリングレートをサポートしている必要があります。
主オーディオデバイスは、/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 オーディオデバイスがシステムに差し込まれると、それが主オーディオデバイス /dev/audio になります。そのデバイスは、システムをリブートした後でも、主オーディオデバイスのままです。USB オーディオデバイスが追加で差し込まれた場合、最後に差し込まれたデバイスが主オーディオデバイスになります。
USB オーディオデバイスに関する問題の障害追跡については、usb_ac(7D) のマニュアルページを参照してください。
USB オーディオデバイスを追加するには、次の手順を実行します。
USB スピーカとマイクを差し込みます。
主オーディオデバイス /dev/audio は通常、オンボードのオーディオを指します。USB オーディオデバイスを接続した後、/dev/audio は /dev/sound ディレクトリで認識される USB オーディオデバイスを指します。
作成されたオーディオデバイスファイルを確認します。
% ls /dev/sound 0 0ctl 1 1ctl 2 2ctl |
左右の USB スピーカをテストします。
% cd /usr/share/audio/samples/au % audioplay -d /dev/sound/1 -b 100 spacemusic.au % audioplay -d /dev/sound/1 -b -100 spacemusic.au |
USB マイクをテストします。
% cd $HOME/au % audiorecord -d /dev/sound/2 -p mic -t 30 test.au |
この手順は、すでに USB オーディオデバイスが接続されていることを前提としています。
現在のオーディオデバイスのリンク状態を識別します。
たとえば、次のようになります。
% 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 を指しています。
(省略可能) 新しい USB オーディオデバイスを追加します。
システムの新しいオーディオリンクを調べます。
たとえば、次のようになります。
% 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, instance #0 . . . |
USB オーディオデバイスを取り外すか変更して、特定のオーディオデバイス 1 つを主オーディオデバイスにしたい場合は、次の手順を実行してください。この手順では、例として主オーディオデバイスをオンボードのオーディオデバイスに変更します。
スーパーユーザーになります。
すべてのオーディオアプリケーションを閉じます。
オーディオドライバおよび 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) # |
オンボードのオーディオドライバを読み込んで再接続します。
# devfsadm -i audiocs |
オンボードのオーディオドライバは、Sunblade 1000 では audiocs、 Sunblade 100 では audiots です。
主オーディオデバイスのリンクがオンボードのオーディオを指していることを確認します。
# 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 # |
オンボードのオーディオが主オーディオデバイスになっていることを確認します。
% audioplay /usr/demo/SOUND/sounds/bark.au |
audioplay コマンドは、デフォルトでオンボードのオーディオデバイスを使用します。
(省略可能) 別の USB オーディオデバイスを差し込む前に、読み込み解除できるオーディオドライバをすべて読み込み解除します。
すべてのオーディオアプリケーションを閉じます。
オーディオドライバ情報を表示して、オーディオドライバが読み込まれていないことを確認します。
# 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) # |
オーディオドライバを読み込み解除します。
# 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 は、アプリケーションによって開かれている場合は何も変化しません。
(省略可能) USB オーディオデバイスを差し込みます。
(省略可能) 新しいオーディオリンクを調べます。
% 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 オーディオデバイスを取り外した場合、/dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがあります。