FreeBSD をクライアントとして利用する (サウンド)

FreeBSD

Seichan です.FreeBSD をクライアントとして利用する為の覚え書き其ノ一.
まずはやっぱり音でしょう.と言う事でサウンド関連.

FreeBSD は割と多くのオーディオチップをサポートしており,ローダブルモジュールになっているので,まずは pciconf でデバイスを確認しつつ kldload でロードしてみるのが手っ取り早いです.

[seichan@ayanami:~] > pciconf -lv | grep -B3 -C3 multimedia
hdac0@pci0:0:27:0:    class=0x040300 card=0x02111028 chip=0x293e8086 rev=0x02 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = '82801IB/IR/IH (ICH9 Family) HD Audio Controller'
    class      = multimedia
    subclass   = HDA
pcib2@pci0:0:28:0:    class=0x060400 card=0x02111028 chip=0x29408086 rev=0x02 hdr=0x01
    vendor     = 'Intel Corporation'


手元の環境だと,Intel の HD Audio なチップがのっています.
サウンド関連の kernel module をロードしてみる.sound.ko はサウンド関連で必須なモジュールです.
その後,それぞれチップにあったモジュールをロードします.

[root@ayanami:~] > kldload sound
[root@ayanami:~] > kldload snd_hda

無事チップにあったモジュールがロード出来ると,次のような出力がコンソールに出ます.dmesg コマンドや,/var/log/messages ファイルも合わせて確認して下さい.

hdac0: HDA Codec #0: Analog Devices AD1984
pcm0: <HDA Analog Devices AD1984 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Analog Devices AD1984 PCM #1 Analog> at cad 0 nid 1 on hdac0

この PC の場合,前面,背面の両方にオーディオジャックがある為か 2つの pcm デバイスが現れます.
また,pcm0 が背面,pcm1 が前面にアサインされている様です.
合わせて,/dev 以下に dsp デバイスが生えているか確認して下さい.

[seichan@ayanami:~] > ls /dev/dsp*
/dev/dsp0.0  /dev/dsp0.1  /dev/dsp1.0  /dev/dsp1.1  /dev/dsp1.2

デバイスが上記の様に生成された事を確認したら,/boot/loader.conf に反映させます.

[root@ayanami:~] > echo 'sound_load="YES"' >> /boot/loader.conf
[root@ayanami:~] > echo 'snd_hda_load="YES"' >> /boot/loader.conf

この状態で,xmms 等のアプリケーションから音を鳴らす事が出来ます.上記の様に2つ以上のデバイスが生えている場合,どのデバイスを使っているか.を確認して下さい.
例えば,xmms の場合,サウンドデバイスを指定する事が出来ます.この PC の場合前面のジャックにスピーカを接続していて,pcm1 を利用する形となっている為,出力デバイスは /dev/dsp1.0 になりました.

もし,アプリケーション側で出力デバイスを指定出来ない場合,次の様に sysctl を設定する事でデフォルトデバイスを変更する事が可能です.動作としては devfs によって /dev/dsp のリンク先を /dev/dsp.n にアサインする動作となります.まず,現在の設定値の確認です.

[seichan@ayanami:~] > sysctl hw.snd.default_unit
hw.snd.default_unit: 0

default_unit が 0 の場合,pcm0 (/dev/dsp0.0) を使う事になります.他のデバイスをデフォルトとしたい場合は次の様に sysctl でデバイス番号を渡します

[root@ayanami:~] > sysctl hw.snd.default_unit=1
hw.snd.default_unit: 0 -> 1

これで改めてサウンド出力を確認して下さい.問題なく音が出るようになったら,/etc/sysctl.conf に変更を反映してしまいましょう.

[root@ayanami:~] > echo 'sysctl hw.snd.default_unit=1' >> /etc/sysctl.conf


以上で,再起動後もサウンドデバイスが利用でき,且つデフォルトデバイスが変更された状態で利用が可能になります.

その他,sysctl で色々と変更出来ます.詳細は man sound(4) を参照すると良いでしょう.

取り合えず,今回はこんな感じで.

コメント

タイトルとURLをコピーしました