Raspberry Pi をデジタルオーディオプレイヤーにする

以前の記事Raspberry Piとネットワーク越しにオーディオをやりとりする方法を紹介しました。
Raspberry Piをリモートスピーカーのように出力として使用する場合、Raspberry PiDACを使って出力してもよいのですが、
固定オーディオとしてある程度のクオリティが欲しいとなると、DAC以降アナログ系は専用オーディオ機器(DAC内蔵アンプとか)を使いたくなります。
この場合、USBオーディオバイスとして見える機器であれば直接Raspberry Piに接続すれば良いのですが、一般的には光または同軸のS/PDIF入力となります。

そこでUSB->S/PDIFコンバータを探したのですが、このあたりに落ち着きました。メーカーもわからん中華デバイスですが、2000円弱で問題なく使用できています。

ルートアール USB to 5.1ch オーディオアダプタ RA-AUD51

ルートアール USB to 5.1ch オーディオアダプタ RA-AUD51

これをRaspberry Piに接続すればUSBオーディオとして認識されます。

[    3.512557] usb 1-1.3: new full-speed USB device number 5 using dwc_otg
[    3.645807] usb 1-1.3: New USB device found, idVendor=0d8c, idProduct=0102
[    3.662375] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    3.671767] usb 1-1.3: Product: USB Sound Device        
[    3.695980] input: USB Sound Device         as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.3/input/input0
[    3.732808] hid-generic 0003:0D8C:0102.0001: input,hidraw0: USB HID v1.00 Device [USB Sound Device        ] on usb-bcm2708_usb-1.3/input3

alsamixerを起動してF6で"USB Sound Device"を選択すると各入出力のレベル調整ができますが、S/PDIF Outの項目はありません。
要するに常時Onの垂れ流しのようです。

pulseaudioを使用している場合は、デフォルトの出力先をUSBにしておきます。
まず pactl list sinks で出力デバイスのリストを表示します。

% pactl list sinks
Sink #0
        State: SUSPENDED
        Name: alsa_output.usb-0d8c_USB_Sound_Device-00-Device.analog-stereo
        Description: CM106 Like Sound Device Analog Stereo
        Driver: module-alsa-card.c
        Sample Specification: s16le 2ch 44100Hz
        Channel Map: front-left,front-right
 :
Sink #1
        State: SUSPENDED
        Name: alsa_output.platform-bcm2835_AUD0.0.analog-stereo
        Description: bcm2835 ALSA Analog Stereo
        Driver: module-alsa-card.c
        Sample Specification: s16le 2ch 44100Hz
        Channel Map: front-left,front-right
 :

この中で、USBオーディオをデフォルトsinkとして設定します。

pacmd set-default-sink 0

USBオーディオからデジタルアンプに光ケーブルを接続し、aplayかpaplayあたりで音楽を再生して音が出ればOKです。

aplay xxx.wav