Intel HD Audio (ALC889) のデジタルアウトから音を鳴らす

ドータカードだからデジタル出力されないのかなとか言ってましたが、良く考えたらアナログだってドータカード経由で繋がってるわけでw じゃぁ鳴らないのは他に原因がある! ググった感じだと鳴らないわけでもなさそうだってことでチャレンジしてみました。
google:alsa snd-hda-intel とかやってみて、見つけたのがこちらです。


SDB:Intel-HDAで音が出ない問題 - openSUSE Wiki


↑ 作業中。とっても目にやさしいです!w

作業手順

載っているチップを確認する
$ lspci -v | grep Audio
00:1b.0 Audio device: Intel Corporation Ibex Peak High Definition Audio (rev 05)
03:00.1 Audio device: ATI Technologies Inc Device aa50

$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfbaf8000 irq 22
 1 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xfbbbc000 irq 17

2つ載っています。1つは Intel HD Audio で、1つは Radeon HD5870 の HDMI ですね。

  • card0 が HDA-Intel です
  • card1 はこれだと良く分かりませんが、 irq17 は自分の環境では Radeon です
$ head -n 1 /proc/asound/card0/codec*
Codec: Realtek ALC889

card0 には ALC889 が使われています。

$ head -n 2 /proc/asound/card1/codec*
Codec: ATI ATI R6xx HDMI

card1 には RadeonHDMI が使われています。

/etc/modprobe.d/alsa-base.conf を眺める
$ less /etc/modprobe.d/alsa-base.conf
とか
$ cat /etc/modprobe.d/alsa-base.conf | grep intel
とか

ubuntu (Debian) の設定ファイルの配置を全く把握してないのですが、昨日チラッと見た限りだとここであるらしい。自分の環境だと、 snd-hda-intel に関する記述はありません。

カーネルソースの ALSA のドキュメントからオプションを探す
$ less /usr/src/linux/Documentation/sound/alsa/ALSA-Configuration.txt

「/ALC8」とか押して調べてみると、ALC889 に関する記述はありません。 ALC883/888 ならあるんですが。

        ALC883/888
          3stack-dig    3-jack with SPDIF I/O
          6stack-dig    6-jack digital with SPDIF I/O
          3stack-6ch    3-jack 6-channel
          3stack-6ch-dig 3-jack 6-channel with SPDIF I/O
          6stack-dig-demo  6-jack digital for Intel demo board
          acer          Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
          acer-aspire   Acer Aspire 9810
          medion        Medion Laptops
          medion-md2    Medion MD2
ALSA Project から、最新の ALSA ドライバのソースを拾ってきてドキュメントを眺めてみる

Download - AlsaProject ここから最新の alsa-driver を落として、 ALC889 に関する記述がないか確認してみます。

  • とりあえず、 ALC883/888 と共通のスイッチが使えるか知りたい
    1. ALC883/888 と共通のスイッチで鳴るならそれで OK
    2. ALC883/888 と共通のスイッチで鳴ならないなら、このドライバを別途組み込むことも考える
alsa-driver のドキュメントを読む

落としてきたファイルは alsa-driver-1.0.22.1.tar.bz2 。この中のドキュメントを読んでみます。HD-Audio に関する記述は /alsa-driver-1.0.22.1/alsa-kernel/Documentation/HD-Audio-Models.txt にありました。

$ tar vfx alsa-driver-1.0.22.1.tar.bz2
$ cd alsa-driver-1.0.22
$ grep -l -r ALC889 .
./alsa-kernel/Documentation/HD-Audio-Models.txt
./alsa-kernel/pci/hda/patch_realtek.c
./sound/Documentation/HD-Audio-Models.txt
./sound/pci/hda/patch_realtek.c

HD-Audio-Models.txt の中身を見るとこんな感じで書いてありますね。

ALC882/883/885/888/889
======================
  3stack-dig    3-jack with SPDIF I/O
  6stack-dig    6-jack digital with SPDIF I/O
  arima         Arima W820Di1
  targa         Targa T8, MSI-1049 T8
  asus-a7j      ASUS A7J
  asus-a7m      ASUS A7M
  macpro        MacPro support
  mb5           Macbook 5,1
  mbp3          Macbook Pro rev3
  imac24        iMac 24'' with jack detection
  imac91        iMac 9,1
  w2jc          ASUS W2JC
・
・
・

ALC883 と同じオプションでいける感じがします。

/etc/modprobe.d/alsa-base.conf を編集する

どのオプションをつければいいか迷いましたが、自分のカード (Big Bang-Trinergy 付属カード)の場合『 6-jack digital with SPDIF I/O 』でいい気がします。SDB:Intel-HDAで音が出ない問題 - openSUSE Wiki にならって、次の一行を書き加えます。

options snd-hda-intel model=6stack-dig enable=1 index=0

自分の環境の場合も、index=0 でいいはず。昔 Gentoo でやった記憶をたどると、確かカードの優先順位とかそんな感じだった気がする。

書き加えたらサービスを再起動すればいいはずなんですが、面倒くさいので PC ごと再起動します。

デスクトップ (GNOME) 上のミキサーをいじる

いくつか方法がありますが、簡単な方法で。

  1. デスクトップ上部の音量調節ボタンを押す。
  2. ボリューム調節の下に『音量調節ツール』ボタンがあるので押す。
    • 音量コントロールが立ち上がります。
    • もしくは端末から『 gnome-volume control &』でもOK。
  3. バイスで『 HDA Intel (Alsa mixer) 』を選択。
  4. 音量コントロール下の『設定』ボタンを押す。
    • 音量コントロールの設定が立ち上がります。
  5. 『IEC958』スイッチを有効にして閉じます。自分の場合はいろいろチェック入れてみたけど。
  6. 音量コントロールに戻って、スイッチタブの『IEC958』を有効にする。自分の場合はry
  7. システム→設定→サウンドを開く。
    • もしくは端末から『 gnome-sound-properties &』 でもOK。
  8. 出力関係を『 HDA Intel ALC889 Digital (ALSA) 』にする。
  9. あとはテストボタンを押して音が鳴れば成功。