ALSA で snd_pcm_dmix_open が unable to open slave になる場合

サウンドテストとして aplay や speaker-test を実行した場合に下記のようなエラーが出るケースがある。

ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave

その場合は、まず aplay -l コマンドで、現在使用されているサウンドデバイス一覧を調べる。

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 0: ALC892 Analog [ALC892 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Generic [HD-Audio Generic], device 1: ALC892 Digital [ALC892 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0

上記のケースでは、HDMI 用と汎用オーディオのアナログ・デジタルの計3つが備わっていることが分かる。
とりあえず、どれかはなるはずなので鳴らしてみる。

  • HDMIの場合
    • aplay -D hwplug:0,0 /usr/share/sounds/alsa/Front_Center.wav
  • 汎用アナログオーディオの場合
    • aplay -D hwplug:1,0 /usr/share/sounds/alsa/Front_Center.wav
  • 汎用デジタルオーディオの場合
    • aplay -D hwplug:1,1 /usr/share/sounds/alsa/Front_Center.wav

それぞれ、 hwplug の後に【カード番号】,【デバイス番号】を入力すれば良い。

今回は、汎用アナログで鳴ったとする。
この場合、 /etc/asound.conf に次の記述を追加する。

# cat /etc/asound.conf
defaluts.pcm.card 1
defaults.pcm.device 0
defaults.ctl.card 1

pcm.!default {
    type plug
    slave.pcm "hw:1,0"
}

記述後に ALSA を再起動する。
再起動の仕方はディストリビューションによって異なるが、多分以下のどれかのはず。
面倒くさかったら OS ごと再起動だ。

  • rc.d force-restart alsa
  • /etc/init.d/alsa-utils restart

その後、-D オプションを付けずに aplay を実行すれば音がなるはずだ。
それでも鳴らなければ、modprobe 関係や、radeon.audio=1 とか他の手段を試してみよう。

 

You can leave a response, or trackback from your own site.

Leave a Reply

Subscribe to RSS Feed Follow me on Twitter!