JazzSakuraをmpg123で鳴らしているRT3883なモジュールはUSBポートが二つあるので、両方にDACを接続してみました。
uaudio0 on uhub0
uaudio0: <Ten X Technology, Inc. USB AUDIO, class 0/0, rev 1.10/1.40, addr 3> on usbus1
uaudio0: Play[0]: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio0: No recording.
uaudio0: No MIDI sequencer.
pcm0: <USB audio> on uaudio0
uaudio0: HID volume keys found.
uaudio1 on uhub0
uaudio1: <Burr-Brown from TI USB Audio DAC, class 0/0, rev 1.10/1.00, addr 2> on usbus1
uaudio1: Play[0]: 48000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio1: Play[0]: 44100 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio1: Play[0]: 32000 Hz, 2 ch, 16-bit S-LE PCM format, 2x8ms buffer.
uaudio1: No recording.
uaudio1: No MIDI sequencer.
pcm1: <USB audio> on uaudio1
uaudio1: HID volume keys found.
0がTP6902でキッチンのスピーカーに接続されていて、1がPCM2704でリビングのパソコンの付属のパワードスピーカーに接続されています。音は追求せずセルフパワーでお手軽なので、この二つにしました。
kldは起動してから以下のスクリプトでロードしています。
#!/bin/sh
# USB Power On
#gpioctl -f /dev/gpioc1 11 1
kldload snd_uaudio
kldload umass
kldload msdosfs
mixer -f /dev/mixer0 pcm 75 vol 6
mixer -f /dev/mixer1 pcm 90 vol 90
sysctl hw.snd.default_unit=1
TP6902をデフォルトのボリュームで鳴らすと大きすぎるので、小さくしています。
切り替えのスクリプトも用意してみました。
#!/bin/sh
CUR=`sysctl -n hw.snd.default_unit`
if [ ${CUR} -eq 0 ]; then
sysctl hw.snd.default_unit=1
fi
if [ ${CUR} -eq 1 ]; then
sysctl hw.snd.default_unit=0
fi
当たり前ですが、再生中に切り替えても代わりません。
いろいろ決め打ちでお行儀が悪いのですが、そもそもFreeBSDのサウンド機能がへっぽこなので、こんなところで良しとします。