>> 古い記事: 雑メモ: gedit: 外部ツールの「出力」が変更できない / 「ボトム・ペインに表示する」しか選べない
<< 新しい記事: 雑メモ: 2007-06a

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntu 7.04: 起動する度にサウンドカードが認識される順番が変わる、または音が出ない(ように見える)ときの対処法

Ubuntu Linux 7.04 で音が出ない、ときがある・・・(確率的に半々くらい)。
結論としては、一応解決しました。 調査の途中経過も含めてメモしておきます。


出ないときの特徴
  - ログイン画面のポコポン、という音が出ない
  - その他、音が出るはずのアプリケーションでほぼ全滅
  - 「デバイスがないよ」系のエラーメッセージが目につかず、
    まるで音量がゼロになっているだけのような手応えの無さ
  - しかし、ミキサーを見ると音量はゼロではないし
    gnome-sound-properties でテストするとちゃんと聞こえる

まずデバイスに関する情報を調べてみます。

$ cat /proc/asound/devices
  2:        : timer
  3:        : sequencer
  4: [ 1- 0]: raw midi
  5: [ 1]   : control
  6: [ 0- 4]: digital audio playback
  7: [ 0- 3]: digital audio capture
  8: [ 0- 2]: digital audio capture
  9: [ 0- 1]: digital audio capture
 10: [ 0- 0]: digital audio playback
 11: [ 0- 0]: digital audio capture
 12: [ 0]   : control
 13: [ 2- 0]: raw midi
 14: [ 2- 1]: digital audio playback
 15: [ 2- 0]: digital audio playback
 16: [ 2- 0]: digital audio capture
 17: [ 2]   : control

またはこう。

$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: I82801DBICH4 [Intel 82801DB-ICH4], デバイス 0: Intel ICH [Intel 82801DB-ICH4]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 0: I82801DBICH4 [Intel 82801DB-ICH4], デバイス 4: Intel ICH - IEC958 [Intel 82801DB-ICH4 - IEC958]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 2: AudioPCI [Ensoniq AudioPCI], デバイス 0: ES1371/1 [ES1371 DAC2/ADC]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 2: AudioPCI [Ensoniq AudioPCI], デバイス 1: ES1371/2 [ES1371 DAC1]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

次に、音がでるかどうか aplay で素朴に確認してみました。

上のカード番号、デバイス番号をもとに、 aplay でオプション -D の後に 「hw:カード番号,デバイス番号」の形で出力先を指定して実行。
(補足: この作業はスピーカーとサウンドカードの配線を切り替えながら試しました)

$ aplay -D hw:0,0 foo.wav # → カード0から音出る
$ aplay -D hw:0,4 foo.wav # → カード0から音出ない
$ aplay -D hw:2,0 foo.wav # → カード2から音出る
$ aplay -D hw:2,1 foo.wav # → カード2から音出る

これで試すとどちらのカードからも音自体はちゃんと出ます。


ENS1371 の方をスピーカーにつなげている場合、

(A) 音が出るとき:

$ cat /proc/asound/cards
 0 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                      Ensoniq AudioPCI ENS1371 at 0xa000, irq 16
 1 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x330, irq 10
 2 [I82801DBICH4   ]: ICH4 - Intel 82801DB-ICH4
                      Intel 82801DB-ICH4 with ALC650D at 0xe0182000, irq 22

(B) 音が出ないとき:

$ cat /proc/asound/cards
 0 [I82801DBICH4   ]: ICH4 - Intel 82801DB-ICH4
                      Intel 82801DB-ICH4 with ALC650D at 0xe0182000, irq 22
 1 [UART           ]: MPU-401 UART - MPU-401 UART
                      MPU-401 UART at 0x330, irq 10
 2 [AudioPCI       ]: ENS1371 - Ensoniq AudioPCI
                      Ensoniq AudioPCI ENS1371 at 0xa000, irq 16

サウンドカードが登録? される順番が起動する度に変わっていることが判明。
(B) の場合、デバイスはきちんと認識されているが、 (たぶん)カード0 の「ICH4 - Intel 82801DB-ICH4」の方が デフォルトの出力先にされてしまって、 ほとんどのアプリケーションはそっちを使ってしまう → ENS1371 につながっているスピーカーからは音が出ない・・・と推測される挙動です。

たとえば audacious はソフトウェア側の設定でカード2を出力先にできるけれど、 amarok ではできないみたいだし、Firefoxの flashのこととか考えるとちょっと憂鬱になるし、 それ以前の問題として起動する度に手動で設定変えるなんてのはさすがにナンセンス。 Ubuntu を起動すると ENS1371 が毎回カード0 として認識されるのが理想的です。

解決法

では、この認識・登録の順番はどこでどのように決まるのか。
検索ワード「linux hotplug soundcard order」で調べてみたところ、 あっさり次のページが見つかり、とりあえずどこで設定するかは分かりました。

Configuring and Troubleshooting Sound in Debian Linux
http://www.debianhelp.co.uk/sound.htm

まず、サウンドカードの名前?(モジュール名?)を調べます。

$ cat /proc/asound/modules
 0 snd_intel8x0
 1 snd_mpu401
 2 snd_ens1371

これを参考に /etc/modprobe.d/sound を編集します。 自分の場合はファイルがなかったので新規に作りました。

options snd_ens1371 index=0
options snd_intel8x0 index=1
options snd_mpu401 index=2

index=0 と指定することで、 再起動しても常に snd_ens1371 がカード0(1番目のカード)として認識されるようになりました。


検索ワード「ubuntu "/etc/modprobe.d/sound"」で調べたら
日本語でもいくつか見つかりましたorz
参考までに。
ubuntu "/etc/modprobe.d/sound" - Google 検索
http://www.google.co.jp/search?hl=ja&q=ubuntu+%22%2Fetc%2Fmodprobe.d%2Fsound%22&lr=lang_ja

上記の方法で解決しなかった、
あるいはそもそも症状が違うという方は以下も参照してみてください。

20110301 追記: 詳しく調べてはいませんが、 /etc/modprobe.d/sound ではなく /etc/modprobe.d/alsa-base.conf を使うという情報も見つかります。 「/etc/modprobe.d/alsa-base.conf」で検索してみてください。

関連記事

雑メモ: Ubuntu Linux 7.04(Feisty Fawn) メモ

参考(外部リンク)

テーマ:Linux - ジャンル:コンピュータ

>> 古い記事: 雑メモ: gedit: 外部ツールの「出力」が変更できない / 「ボトム・ペインに表示する」しか選べない
<< 新しい記事: 雑メモ: 2007-06a
** ホームに戻る

コメント

コメントの投稿

管理者にだけ表示を許可する

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。