FreeBSD で サウンドドライバの組み込み

FreeBSD でサウンドデバイスを利用するための設定である。FreeBSD の GENERIC カーネルには、サウンド機能の基盤である sound と、主要なドライバ(snd_hda、snd_ich、snd_uaudio など)が含まれており、多くの機器は起動時に自動的に認識される。デバイスファイル(/dev/dsp など)は devfs により自動で生成される。

認識状況を確認するには、次のコマンドを実行する。認識されている場合は、pcm0 などの pcm デバイスが表示される。

dmesg | grep pcm
cat /dev/sndstat

pcm デバイスが表示されない場合は、ドライバを手動で読み込む。読み込み済みのモジュールの一覧は kldstat、利用可能なサウンドドライバのモジュールファイルは /boot/kernel で確認する。読み込みは kldload で行う(次の例は Intel High Definition Audio 用の snd_hda)。

kldstat
ls /boot/kernel/snd_*.ko
kldload snd_hda
cat /dev/sndstat

使用すべきドライバが分からない場合は、すべてのサウンドドライバを読み込むメタドライバ snd_driver を使用する。読み込み後に /dev/sndstat を確認し、認識されたデバイスから使用するドライバを判断する。

kldload snd_driver
cat /dev/sndstat

起動時に自動で読み込むには、/boot/loader.conf に次の行を追加する。個別のドライバを指定する場合と、メタドライバを指定する場合がある。

snd_hda_load="YES"
snd_driver_load="YES"

グラフィックスカードの HDMI 音声など、複数の pcm デバイスがある場合は、既定のデバイスを指定する。cat /dev/sndstat または dmesg | grep pcm でデバイス番号を確認し、hw.snd.default_unit に設定する(次の例は pcm4 を既定にする場合)。

sysctl hw.snd.default_unit=4

再起動後も設定を有効にするには、/etc/sysctl.conf に次の行を追加する。

hw.snd.default_unit=4

音量の設定と確認には mixer コマンドを使用する。音が出ることの確認には beep コマンドを使用する。

mixer
beep