LoginSignup
13
17

More than 5 years have passed since last update.

Rapberry Pi に USB DAC をつないでオーディオサーバーにする (接続編)

Last updated at Posted at 2016-05-15

前提/計画

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接続)

_DSC6189.JPG

関係ないですが、今は亡き(日本仕向けの開発はまだ続けるようですが...)、東芝のテレビが映っています。東芝だからダメというわけではないのですが、これが後述するように悪さをします。

ソフト環境

  • 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/

以下のように表示され、再生ボタンを押すと再生される...はずでした。

WS000003.JPG

問題: USB DAC が優先されない。

HDMI 接続のテレビから鳴ってしまう

鳴った!と思ったのですが、最初に鳴ったのは USB DAC ではなく HDMI 接続されたテレビでした。(これでいい人は以下の回避策は関係ないです。)

かと言ってテレビとの接続を切ってしまうと、後々のメディアサーバー化ができないし...と思い、映像はテレビ、音はUSB DACという構成にするためにHDMI の音声のみを切る方法を取りました。

https://www.raspberrypi.org/documentation/configuration/config-txt.mdによると、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 側から鳴りました。

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17