ANDBOX44 + MPD でMusic Serverを作る際、いろいろとネットで情報を集めたが、その時、BeagleBone BlackというCPUボードがあることを知った。
このCPUボードもMPDと組み合わせることができるが、ある日、アマゾンの「おすすめ商品」にリストされていたので、思わず購入してしまった。
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)をダウンロードした。
ダウンロードした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の設定を行う。
以下のコマントで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を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 | OK | NG(認識せず) | NG(認識せず) |
BeagleBone Black | OK | NG(音量 小) | NG(音量 小) | OK | OK |
BeagleBone Blackで動作するVoyage MPDであるVoyage MuBoxがあります。 詳細は「Voyage MuBox on BeagleBone Black」でどうぞ。