前提/計画
Raspberry Pi 3 を買ったので、これをなんでもサーバー化する計画を立てました。粒度が違う機能が並んでいますが、入れようと思っているのは...
1 NAS
2 メディサーバー
3 写真の自動バックアップ
4 オーディオサーバー
今回は最後のオーディオサーバーを立てるところをやってみたいと思います。
ハード環境
登場人物は以下の四人です。USB HDD はすでにマウントされている前提です。
- Raspberry Pi 3
- USB DAC: DigiFi No.13 付録 の USB DAC つきデジタルパワーアンプ
- Kenwood 製スピーカー
- USB 2.0 HDD
- テレビ (HDMI接続)
関係ないですが、今は亡き(日本仕向けの開発はまだ続けるようですが...)、東芝のテレビが映っています。東芝だからダメというわけではないのですが、これが後述するように悪さをします。
ソフト環境
- OS: Raspbian Jessie
- Alsa
- RasPod
Alsa + RasPod
RasPodを使うとシンプルなWeb UI 経由で MP3 などを再生することができます。まずは、こいつで実験。
pi@raspberrypi ~ $ sudo apt-get install python-tornado
pi@raspberrypi ~ $ sudo apt-get install vlc alsa-utils
pi@raspberrypi ~ $ git clone git://github.com/lionaneesh/RasPod.git
pi@raspberrypi ~ $ cd RasPod/
static ディレクトリーの下に再生したい MP3 を置くことになります。USB HDDを使用しているので、シンボリックリンクを置きました。
pi@raspberrypi:~/RasPod $ ls -l ./static/Media/
合計 4
-rw-r--r-- 1 root root 167 5月 1 19:49 README.txt
lrwxrwxrwx 1 root root 14 5月 15 03:30 mp3 -> /mnt/hdd0/mp3/
実行は以下のように。
pi@raspberrypi ~/RasPod $ python server.py
ブラウザから以下のアドレスにアクセスします。XXX.XXX.XXX.XXX は raspberry pi 側の IP です。固定IPにしていない場合は ifconfig などで確認してください。
http://XXX.XXX.XXX.XXX:8888/
以下のように表示され、再生ボタンを押すと再生される...はずでした。
問題: USB DAC が優先されない。
HDMI 接続のテレビから鳴ってしまう
鳴った!と思ったのですが、最初に鳴ったのは USB DAC ではなく HDMI 接続されたテレビでした。(これでいい人は以下の回避策は関係ないです。)
かと言ってテレビとの接続を切ってしまうと、後々のメディアサーバー化ができないし...と思い、映像はテレビ、音はUSB DACという構成にするためにHDMI の音声のみを切る方法を取りました。
[https://www.raspberrypi.org/documentation/configuration/config-txt.md](公式ページの config.txt 説明ページ)によると、HDMI接続デバイスを「音声非対応とみなす」オプションが有ることに気づきました。これを使ってみます。
pi@raspberrypi:~ $ cat /boot/config.txt
...
HDMI_IGNORE_EDID_AUDIO 1
これでテレビからはならなくなりましたが、今度は音が出ないです。どうやら内蔵オーディーが優先されているようです。
hdmi_drive=2
とする方法もあると書いてありましたが、そちらは試していないです。
内蔵オーディオのほうがUSB DAC の優先度が高い
そもそも USB DAC を認識しているか以下のように確認します。
pi@raspberrypi:~ $ cat /proc/asound/cards
0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA
1 [DAC ]: USB-Audio - USB AUDIO DAC
BurrBrown from Texas Instruments USB AUDIO DAC at usb-3f980000.usb-1.3.4, fu
1 の DAC が USB DAC ですね。これを優先させる設定の方法ですが、Raspbian Jessie から変更になったようです。google 先生にきいたら、
options snd-usb-audio index
などをいじれというblog記事が沢山出てきたのですが、これは Jessie 以前の設定のようで、うまくいきませんでした。
/etc/asound.conf
まずこのファイルを以下のように編集してください。
pcm.!default {
type hw
card <number of your card>
}
ctl.!default {
type hw
card <number of your card>
}
先ほどの cat /proc/asound/cards で確認した時に USB DAC は 1 になっていたので は 1 にします。
/usr/share/alsa/alsa.conf
またこのファイルも以下のようにデフォルト値を変更します。該当部分のみ書きます。
defaults.ctl.card 1
defaults.pcm.card 1
これで一旦、 reboot します。
pi@raspberrypi:~ $ sudo reboot
今度は USB DAC 側から鳴りました。