BeagleBone Black + MPD について
HOME BACK

はじめに

ANDBOX44 + MPD でMusic Serverを作る際、いろいろとネットで情報を集めたが、その時、BeagleBone BlackというCPUボードがあることを知った。
このCPUボードもMPDと組み合わせることができるが、ある日、アマゾンの「おすすめ商品」にリストされていたので、思わず購入してしまった。

BeagleBone Black

BeagleBone Blackは
CPU: AM335x 1GHz ARM Cortex-A8
メモリー:512MB DDR3
内部ストレージ:2GB
有線LAN、USBポート、マイクロSDカードスロット
を有している。
マイクロSDカードスロットにブートイメージを書き込んだSDカードを挿すと、これからブートすることができる。

仕様で比較するとRaberry Piよりもちょっぴりだけ高性能かと思われる。

ブート用のイメージはBeagleBone Black でMPD(備忘録)を参考にさせていただきARM HF Linuxにあるdebian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz (June 9, 2013)をダウンロードした。

マイクロSDカードへの書き込み

ダウンロードしたdebian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz (June 9, 2013)をSDカードに書き込む方法についてはGetting Started with an Ubuntu or Debian .img.xz Fileに詳細な解説がある。
いずれにしてもWindowsPCではこの作業はできないので、Linuxが走っているPCでの作業となる。
筆者の環境でLinuxが走っているPCとしてはDebian系列のVoyage MPDをインストールしたNASがあるので、これを使用した。
このNASはWindowsPCからもアクセスできるので、WindowsPCでダウンロードしたdebian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xzをNASの/Musicディレクトリーに貼り付ける。
次にイメージを書き込むマイクロSDカードをカードリーダーに装着しNASのUSBポートに差し込み、WindowsPCからSSHでNASに接続する。
最初にxzコマンドが使用できるか確認する。
root@voyage:~# xz
xz: Compressed data cannot be written to a terminal
xz: Try `xz --help' for more information.
xzコマンドは有効であることが判った。

次にdmesgでマイクロSDカードのデバイスを調べる。
root@voyage:~# dmesg
[ 381.833040] sd 5:0:0:0: [sdb] 7744512 512-byte logical blocks: (3.96 GB/3.69 GiB)
[ 381.833654] sd 5:0:0:0: [sdb] Write Protect is off
[ 381.833704] sd 5:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 381.834283] sd 5:0:0:0: [sdb] No Caching mode page present
[ 381.834333] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 381.838034] sd 5:0:0:0: [sdb] No Caching mode page present
[ 381.838087] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[ 381.839208] sdb: sdb1
使用したのは4GBのマイクロSDカードなので、デバイスは/dev/sdbであることが判った。

次にdebian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xzを格納してある/Musicに移動して
# xz -cd debian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz > /dev/sdb
とタイプして数十分、経過するとマイクロSDカードへの書き込みが終了した。

実際には試していないが、wheezyをインストールしたRaspberry PIでもxzコマンドは生きているので、
pi@raspberrypi:~$ xz
xz: Compressed data cannot be written to a terminal
xz: Try `xz --help' for more information.
書き込み用マシンとして使用できると思われる。

セットアップ

イメージを書き込んだマイクロSDカード、LANケーブル、USB-DACをBeagleBone Blackに装着し、5V電源を電源ジャックに差し込むと基板上のLEDが点滅しブートが始まる。
debian-wheezy-7.0.0-armhf-3.8.13-bone20.img.xz (June 9, 2013)ではデフォルトでsshサーバーが稼働しているので、他のPCからsshでアクセスできる。
筆者はWindows7PC上でsshクライアントのTera Termを使用しており、DHCPサーバーで割り当てられるIPも分かっているので、これによりアクセスしている。
ユーザー名: debian  パスワード: debian  と打ち込むと認証され、以下のようなメッセージが出てくる。
Linux debian-armhf 3.8.13-bone20 #1 SMP Wed May 29 03:11:01 UTC 2013 armv7l
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
debian@debian-armhf:~$

次に以下のコマントでupdate、upgradeを実施する。
debian@debian-armhf:~$sudo update
debian@debian-armhf:~$sudo upgrade

DHCPサーバーで割り当てられたIPは場合によっては変わってしまうので、IPを固定する。
以下のコマンドで /etc/network/interfaces を編集する。
#iface eth0 inet dhcp をコメントアウトしてiface eth0 inet static 以下を追加した。

debian@debian-armhf:~$sudo vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# loopback network interface
auto lo
iface lo inet loopback
# primary network interface
auto eth0
#iface eth0 inet dhcp
#hwaddress ether DE:AD:BE:EF:CA:FE
iface eth0 inet static
address 192.168.0.87
netmask 255.255.255.0
gateway 192.168.0.1
# wireless network interface
#auto wlan0
#iface wlan0 inet dhcp
# wpa-ssid "my_wifi_name"
# wpa-psk "my_wifi_pass"

次に /etc/resolv.conf を以下のように書き換える。
nameserverのIPアドレスは /etc/network/interfaces における gatewayのIPアドレスと同じである。
$sudo vi /etc/resolv.conf
nameserver 192.168.0.1

リブートして新しいIPで接続できるか確認する。
$sudo reboot

MPDの設定

基本的な設定が終了したのでMPDの設定を行う。
以下のコマントでMusic Serverに必要なソフトをインストールする。
最初にmpdとmpcをインストールする。なお、mpcはクライアント・ソフトである。
$sudo apt-get install mpd mpc

次にalsa-utilsをインストールする。
$sudo apt-get install alsa-utils

次に接続したUSB-DACの状態を確認しておく。
$ cat /proc/asound/cards
0 [Black ]: TI_BeagleBone_B - TI BeagleBone Black
TI BeagleBone Black
1 [DAC ]: USB-Audio - USB Audio DAC
Burr-Brown from TI USB Audio DAC at usb-musb-hdrc.1.auto-1, full speed
デバイス番号1がUSB Audio DACであり、確かに接続した自作DACはTI Burr-Brown製のチップを使用している。

次に /etc/modprobe.d/alsa-base.conf におけるUSB Audio DACに関する部分を赤字のように編集する。
$sudo vi /etc/modprobe.d/alsa-base.conf
options snd-usb-audio index=1

MPDの設定ファイルである /etc/mpd.conf を編集する。
$sudo vi /etc/mpd.conf
最初に bind_to_address という行を探し#でコメントアウトする。
#bind_to_address "localhost"

次の箇所を赤字のように編集する。
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:1,0" # optional
# format "44100:16:2" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "1" # optional
}

最後に
#mixer_type "software"
の行を探し出し、#を削除する。

設定が終わったら、MPDを下記のコマンドで再起動する。
$sudo /etc/init.d/mpd restart
Stopping Music Player Daemon: mpd.
Starting Music Player Daemon: mpdlisten: bind to '0.0.0.0:6600' failed: Address already in use (continuing anyway, because binding to '[::]:6600' succeeded)

bind to '0.0.0.0:6600' failedのエラーであるが、ネット検索すると Binding to IPV6 before IPV4 とのことで、以下のように記述すると解消される。
#bind_to_address "localhost"
bind_to_address "127.0.0.1"
bind_to_address "192.168.0.87"
ただし、筆書の場合、エラーが出たままでも問題なく動作しているが、気になるようであれば追加されたい。
なお、"192.168.0.87"はNICに割り当てたIPである。

自作NASに接続できるように/etc/fstabを編集する。
$sudo vi /etc/fstab
//192.168.0.95/Music /music cifs username=root,password=samba,uid=mpd,file_mode=0644,dir_mode=0755,iocharset=utf8 0 0
次は / に music ディレクトリーを作りマウントし、/var/lib/mpd/musicへリンクする。
$sudo mkdir /music
$sudo mount -a
$sudo ln -s /music /var/lib/mpd/music

MPDのバージョンは0.16.7である。
debian@debian-armhf:/$ mpd -V
mpd (MPD: Music Player Daemon) 0.16.7

USB-DACの動作確認

手持ちのUSB-DACをBeagleBone Blackに接続して動作確認をしてみる。
●PCM2704
最初はTIのPCM2704を使用した自作トランス式DACである。
DACがどのように44.1kHz16Bitの音楽ファイルを再生してるかを以下のコマンドで確かめてみる。
debian@debian-armhf:/$ cat /proc/asound/card1/stream0
Burr-Brown from TI USB Audio DAC at usb-musb-hdrc.1.auto-1, full speed : USB Audio
Playback:
Status: Running
Interface = 1
Altset = 1
Packet Size = 192
Momentary freq = 44100 Hz (0x2c.199a)
Interface 1
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 2 OUT (ADAPTIVE)
Rates: 32000, 44100, 48000

●DN-USB DAC
二番手は上海問屋のDN-USB DACで、バッファ・アンプと組み合わせて96kHz24BitのDACとして使用している。
96kHz24Bitの音楽ファイルを再生中に以下のコマントで確認してみた。
ただし、44.1kHz16Bitでも96kHz24Bitでも再生できているが、どういうわけか音量がかなり低下している。
96kHz24BITと44.1kHz16BITの1kHz0dBFSの信号で確信したところ、出力は両者とも0.2Vであった。
ALIX3D2+Voyage MPDと接続した場合、出力は2Vが得られているので、それと比較すると20dBも減衰している。
上述した自作トランス式DACで44.1kHz16BITの1kHz0dBFSの出力は1.62Vで正常である。
debian@debian-armhf:~$ cat /proc/asound/card1/stream0
Shin Kin DAC USB Audio at usb-musb-hdrc.1.auto-1, full speed : USB Audio
Playback:
Status: Running
Interface = 3
Altset = 2
Packet Size = 582
Momentary freq = 96000 Hz (0x60.0000)
Interface 3
Altset 1
Format: S16_LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 8000, 16000, 32000, 44100, 48000, 96000
Interface 3
Altset 2
Format: S24_3LE
Channels: 2
Endpoint: 3 OUT (ADAPTIVE)
Rates: 8000, 16000, 32000, 44100, 48000, 96000

●EDIROL UA-1EX
EDIROL UA-1EXは96kHz24Bitで再生可能なUSB-DACである。
96kHz24BITと44.1kHz16BITの1kHz0dBFSの信号で確信したところ、出力は両者とも0.68Vで正常であった。
debian@debian-armhf:~$ cat /proc/asound/card1/stream0
EDIROL UA-1EX at usb-musb-hdrc.1.auto-1, full speed : USB Audio
Playback:
Status: Running
Interface = 0
Altset = 1
Packet Size = 608
Momentary freq = 96000 Hz (0x60.0000)
Interface 0
Altset 1
Format: S24_3LE
Channels: 2
Endpoint: 1 OUT (ADAPTIVE)
Rates: 96000

まとめ

基板のままでは不都合なので、手持ちのタカチ YM-130(W:130mm D:90mm H:30mm) アルミケースに収納したが、 少し窮屈である。
5Vの電源ラインにON-OFFのスイッチを入れてあるが、これは halt で停止させたBeagleBone Blackを再起動させる場合、5V電源ジャックからプラグを抜き、再挿入していたがその代わりである。

これでARM系のMusic SrverはRaspberry Pi、ANDBOX44、BeagleBone Blackと3種類となったが、手持ちのUSB-DACと組み合わせると以下のような結果となった。
PCM2704であれば、いずれのCPU BOARDでもOKであるが、それ以外のUSB-DACではいろいろと違いがある。
これらをオーディオ・マニアの知人宅に持ち込んで試聴してもらおうと思っている。

                 
CPU BOARD PCM2704
(44.1kHz16BIT)
DN-USB DAC
(44.1kHz16BIT)
DN-USB DAC
(96kHz24BIT)
UA-1EX
(44.1kHz16BIT)
UA-1EX
(96kHz24BIT)
Raspberry Pi OK OK NG(ノイズ混入)NG(音量 小) NG(音量 小)
ANDBOX OK OK OKNG(認識せず) NG(認識せず)
BeagleBone Black OK NG(音量 小) NG(音量 小) OK OK

Voyage MuBox on BeagleBone Black

BeagleBone Blackで動作するVoyage MPDであるVoyage MuBoxがあります。 詳細は「Voyage MuBox on BeagleBone Black」でどうぞ。

HOME BACK

Last Update 28/Jan/2014 by mac