サウンドドライバ High Definition Audio driver, snd_hda(4)を試す

メーリングリスト

DELL Inspiron 1300 が手元にやって来たので早速 6.2-PRERELEASE で
使えるようにしてみました。
ところが、音が出ません。ICH6 なので楽勝と思っていたのですが ICH6
には AC '97 Audio Controller なものと
Intel High DefiNition Audio Controller なもの 2種類が存在するよ
うです。

pciconf -lv すると、
pcm0@pci0:27:0: class=0x040300 card=0x01c91028 chip=0x26688086
rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82801FB/FR/FW/FRW Intel High DefiNition Audio Controller'
class = multimedia
と表示されるのが音が出ない ICH6 です。

一旦は諦めていたのですが、探していると以下のページを見つけました。
http://lists.freebsd.org/pipermail/freebsd-multimedia/2006-September/004864.html
kld module をそのまま使うのが一番簡単です。

というのを見付ける。ちょうど音が出ないICH6を使ってるので試してみた。

準備

用意するFreeBSDのバージョン:6.1-RELEASE-p10
pciconf -lvの結果:

pcm0@pci0:27:0:	class=0x040300 card=0x01c91028 chip=0x26688086
 rev=0x03 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = '82801FB/FR/FW/FRW Intel High DefiNition Audio Controller'
    class    = multimedia

手順

下記のコマンドを実行してドライバをダウンロード。

# mkdir /tmp/hoge
# cd /tmp/hoge
# fetch http://people.freebsd.org/~ariff/HDA/kmod/i386/CHECKSUM.MD5
# fetch http://people.freebsd.org/~ariff/HDA/kmod/i386/snd_hda.ko
# fetch http://people.freebsd.org/~ariff/HDA/kmod/i386/sound.ko
# chmod +x *.ko
# chmod -w *.ko


ダウンロードが成功してるかチェックサムを調べる。

# cat CHECKSUM.MD5
MD5 (sound.ko) = d5aa780cacdd8d27856581083c710c8e
MD5 (snd_hda.ko) = 84fada47711c9339a403aefdd94d7d1a
# cat sound.ko | md5
d5aa780cacdd8d27856581083c710c8e
# cat snd_hda.ko | md5
84fada47711c9339a403aefdd94d7d1a


ドライバをインストールする。

# cd /boot/kernel
# cp /tmp/hoge/*.ko ./


リブートしてkldloadでドライバを読み込み、cat /dev/sndstatでドライバが読み込まれてるか見る。

# kldload snd_hda
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit)
Installed devices:
pcm0:  at memory 0xdff3c000 irq 16 kld snd_hda [20061017_0033] (1p/1r/0v channels duplex default)


適当なプレイヤで音を鳴らすテストをする。

$ mplayer hoge.wav


mixerでボリュームを合わせる。

# mixer -s
vol 75:75 pcm 75:75 speaker 75:75 mic 0:0 rec 0:0 =rec mic%
# mixer vol 50
Setting the mixer vol from 75:75 to 50:50.


ちゃんと動作してくれたら、/boot/loader.confに次回から自動的にドライバを読み込むように記述する。

snd_hda_load="YES"
hint.pcm.0.vol="50"

おまけ:その他のドライバ

他の方法で音を出すには、http://www.4front-tech.com/にある無料版のドライバがある。(有償版でもいいと思うが)