Linux Mint12でHDMI Audioを有効にしたい

常用のPCに入れているOSのお気に入りは最近はLnux Mintです。気に入りかけてたPinguyOSはアップデートすると「言語サポート」が起動中に落ちて日本語が更新できなくなってしまったのでMintに戻りました。ちなみにPinguyOSはMintベースなので使い勝手はメニューバーとドックの違い程度であまり変わりません。

使ってるマシンはAMDのE350という最下層のグレードのCPU、ハードディスクの代わりに32GBのSDカードを内部ストレージとして使用、メモリだけ価格暴落中なので8GBと普通の容量を積んだ激安君です。(CPUオンボードマザーボード9千円程度、32GB-SDカード2000円程度、8GBメモリ3000円程度 2012年12月の平均的な価格)

intelの新しいAtom2***シリーズが何故か32bitOSしか使えないということと、メモリが最大4GBしか積めないというケチ仕様で、Core i3のTDP35W版の2120Tが単品で1万円を超えているので買う気になりません。低価格のPentiumやCeleronという選択肢もありますが。
最近のPCはどれも非常に速いので一番重い処理が動画観る程度の私にとってはE350でも十分過ぎるスペックです。ネットを見てメールする程度ならメモリも要らないんだけど時々GIMPで画像加工するのでメモリだけは8GBは譲れません。

モニタには家庭用テレビのRegza42Z2という42型のテレビを利用。フルHD程度の(低い)解像度を42型で表示して凝視すると画面の粗さが気になるが、目が悪いのでとにかく大きな画面はありがたいです。

で、Regza42Z2は外部入力が基本的にHDMIなのでPCとの接続はHDMIになります。HDMIは音声も一緒に送ることができるので別途オーディオケーブルを繋がなくて良いのが嬉しいところ。
しかし、HDMI AudioはLinuxではトラブルの元でもあります。出る筈の音が出ないという。

私の環境でも案の定音が出ません。早速ググると同じように音が出ない人がいっぱい居て色んな解決方法が書かれています。ググった時の最悪のパターンです。

解決方法1: ALSAドライバ関係のモジュールを入れるまたはアップデートする

ALSAのドライバだのモジュールだのをインストールすれば良いとのこと。aplayで見てPLAYBACKリストに目的のデバイスが正しく表示されれば良いようですが、私の環境ではカード0のデバイス3に何かそれらしいものが既に表示されてます。

#aplay -l

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: Generic [HD-Audio Generic], デバイス 3: HDMI 0 [HDMI 0]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: SB [HDA ATI SB], デバイス 0: ALC892 Analog [ALC892 Analog]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
カード 1: SB [HDA ATI SB], デバイス 1: ALC892 Digital [ALC892 Digital]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0

解決方法2: default.paに設定を書く

PulseAudioの設定が必要らしい。こんなのを書くと良いらしいがこれは全然解りません。

/etc/pulse/default.pa load-module module-alsa-sink device=hw:0,3

解決方法3: asound.confに設定を書く

こんなのを書くと良いらしいが認識は既にされていると思う。

/etc/asound.conf

pcm.!default {
    type hw
    card 0
    device 3
    }

解決方法4: sound.confに設定を書く

こんなのを書くと良いらしいが同上。

/etc/asound.conf

options snd-hda-intel enable_msi=*** probe_mask=*** index=*** (***はビデオカードの種類に応じて変わる)

解決方法5: alsa-base.confに設定を書く

options snd-hda-intel *** ***
(***はビデオカードの種類に応じて変わる)
上のと何がどう違うんだろう。ていうか書き方解りません。

解決方法6: alsamixerでHDMI Audioのミュートを解除

alsamixerを実行してHDMI Audioの項目を[MM]ではなく[00]にすればミュートが解除されて音が出るらしい。
しかし、最初から[00]になっている。

と、いうことで

いろんな解決方法が書かれていて全部やったとしたら大変です。こういう辺りがLinuxは難しいと言われてしまう所以なのかもしれません。見てピンとこない解決策は除外していけばその内に答えに突き当たるものですが全部除外してしまったら別のものを探すしかありません。
私の場合は上の解決策を見る限り納得できるものがなく、実際にアドバイスに従っていろいろやっても解決出来なくて諦めている人もいるようなので別の解決策を探すことにしました。

そもそもE350に付いている内蔵グラフィックはRadeonHD6310です。
LinuxではRadeon系のビデオドライバCatalyst(fglrx)はトラブルが多い。
HDMI AudioはオーディオではあるがHDMIなのでビデオドライバと関係がある筈。

以上から導き出した方法: ビデオドライバをアップデートしてやる

#sudo apt-get install fglrx-updates

1分もかからずに終わるのでその後でリブート。

当たりです、音出ました。