3
30
2015
Raspberry Pi 2 + Volumio + DAC でネットワークオーディオに挑戦(その2)
VolumioをRaspberry Pi 2にインストールする
今回のネットワークオーディオプレーヤーの要となるVolumioは、組み込み用のコンピュータのためのオペレーティングシステム(OS)の一種で、オーディオプレイヤーとして使うことを想定したカスタマイズOSと言った所だろうか.勿論、汎用のLinux OS をベースとしているので、中身はLinuxそのものだ.
Volumioプロジェクトの中心人物である MICHELANGELO GUARISE と DANIELE BUSCIANTELLA RICCI の簡単な紹介と、Volumioで用いられているオープンソースフレームワークに関するリストが載っている Credit ページがあるので、興味のある人は覗いてみると良いだろう.
Volumioを入手する
Volumioのダウンロードページから最新版(2015年3/29現在V1.55)を入手する.Raspbery Pi 以外のバージョンも用意されているようだが、今回は当然Raspberry Pi用のものをダウンロードする.SourceForge経由でダウンロードが行われるので、ダウンロード後にZIP圧縮されたイメージファイルを解凍する.”Volumio1.55PI.img” というような名前の単一のイメージファイルが現れる.
この後の手順は、このダウンロードページに詳しい手順が紹介されているので、そのとおり実行すれば問題無くSDカード(Raspberry Pi 2はMicroSD)に起動可能なVolumioをインストールすることができるだろう.Windows/Mac OS X/Linux での手順が示されているので、自分の環境に合わせてインストール作業を進めれば良い.
今回は、Mac OS X でPiWriterなどのアプリを使うこと無くコマンドライン操作だけで行う方法を紹介する.
VolumioのダウンロードページにSDカードへのインストール方法が詳しく紹介されている
【SDカードへのインストール手順】
(1) SDカードをMacにセットする
この時、予めMac OS X が対応しているフォーマットでSDカードが作成されていなければ
ディスク初期化作業を行う.どのみち、この後の作業で Volumioイメージの書き込み作業で、
Linux系のファイル形式に書き換えられてしまうので、ここではMac OS X から認識可能な
ファイルフォーマットであれば何でも良い.
(2)コマンドライン上で、df コマンドを打ち込み、各ディスクのサイズ情報を取得する.
このコマンドの出力情報から Mac OS X がSDカードをどのような物理デバイス名で認識しているのか確認可能だ.
$df
iMac27:~ yasuaki$ df
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on
/dev/disk0s2 156007392 120724088 34771304 78% 15154509 4346413 78% /
devfs 396 396 0 100% 687 0 100% /dev
/dev/disk2 2406460160 714689976 1691770184 30% 89336245 211471273 30% /Volumes/Home
/dev/disk1s2 156250000 150751568 5498432 97% 18843944 687304 96% /Volumes/OSXBackup
/dev/disk1s3 124969408 15448512 109520896 13% 0 0 100% /Volumes/SHARED
map -hosts 0 0 0 100% 0 0 100% /net
map auto_home 0 0 0 100% 0 0 100% /home
/dev/disk1s7 1953125000 849320776 1103804224 44% 106165095 137975528 43% /Volumes/Music
/dev/disk1s8 371336320 591528 370744792 1% 73939 46343099 0% /Volumes/Scratch
/dev/disk1s9 659088144 64222632 594865512 10% 8027827 74358189 10% /Volumes/Tmp
/dev/disk1s4 249999352 187451536 62547816 75% 169772 31275144 1% /Volumes/Win7Pro
/dev/disk3s1 15511808 4992 15506816 1% 0 0 100% /Volumes/UNTITLED
iMac27:~ yasuaki$
上記の例では、”/dev/disk3s1 … /Volumes/UNTITLED” という最後のラインがSDカード装置の情報で、最初の”/dev/disk3s1″ という部分から、SDカードの物理デバイス名が “disk3s1” であることが判明する.
この物理デバイス名はMacに搭載されているディスクドライブの数やどの起動ディスクからOSを起動したかによって変化するので、必ず自分が使う予定のSDカード装置のデバイス名をきちんと認識しておく必要がある.MacBookのようなノートでは通常1ドライブで運用しているので、OSの起動ドライブが “disk0” で SDカードは “disk1″となることが多いだろう.勿論、USBメモリや外部HDDなどを繋いでいる場合は、SDカード装置は”disk1″とはならないので注意して欲しい.
(3)マウントされているSDカードをアンマウントする(イジェクトではなくアンマウントであることに注意)
sudo diskutil unmount /dev/disk3s1
(4) ddコマンドを使用して、先程ダウンロードしたイメージファイルの中身をそのままSDカードに書き込む
sudo dd bs=1m if=[img_file_path] of=/dev/[sd_name]
[img_file_path] の部分は Volumioのイメージファイルのパスを指定する.
[sd_name] の部分は SDカード装置のデバイス名を指定するが、ddコマンドでは Rawデバイス名を用いるので、
”/dev/disk3s1″ という論理デバイス名ではなく、”/dev/rdisk3″ を指定する.
この dd コマンドによるイメージファイルのコピー作業は結構時間が掛かる.
(マシンの性能やSDカードの書き込みスピードにも依存するが、数分〜数10分以上掛かるようだ)
(5) ddコマンドによるコピーが終了したら、SDカードを取り外し(イジェクト)Raspbery Pi へセットする.
以上でVolumioのイメージファイルの作成は終了だ.
iMac27:~ yasuaki$ sudo diskutil unmount /dev/disk3s1
Volume UNTITLED on disk3s1 unmounted
iMac27:~ yasuaki$ sudo dd bs=1m if=/Volumes/Tmp/Downloads/Volumio1.55PI.img of=/dev/rdisk3
1700+0 records in
1700+0 records out
1782579200 bytes transferred in 329.558318 secs (5408995 bytes/sec)
iMac27:~ yasuaki$ sudo diskutil eject /dev/rdisk3
Password:
Disk /dev/rdisk3 ejected
iMac27:~ yasuaki$
Volumioを起動してみる
Volumioの起動イメージを書き込んだMicro SDカードをRaspberry Pi 2 の裏面にあるMicro SDカードホルダーにセットして、LANケーブルと電源を繋ぐとVolumioが起動し、DHCP経由でIPアドレスが取得される.一般的な家庭のLAN環境では通常DHCPでネットワーク環境が自動的にセットされる事が多いので、通常はネットワークの環境設定は何もしなくても良いだろう.DHCP経由で適切なIPアドレスが設定されていれば、デフォルトで “volumio.local” という名前でアクセス可能だ.
Volumioの環境を設定するのは、専用のWebGUIが用意されているのでコマンドラインの苦手な人でも環境設定はやりやすいだろう.Webブラウザの URL欄に
http://volumio.local
と入力すれば良い.
Volumio のWeb GUI 管理画面
一般ユーザがセットすべきVolumioの設定項目は全てこのWebGUI管理画面から設定可能だ.勿論、Volumioは単なるLinuxベースのOSなので、一般的なLinuxのコマンドや設定ルールに従って細かく管理する事が可能だ.初期アカウントとして sudo が仕える “pi” アカウントが予め設定してあるので、rootのパスワードと自分用の管理アカウントを作成しておくと良いだろう.
iMac27:~ yasuaki$ ssh -l pi volumio.local
The authenticity of host 'volumio.local (192.168.100.65)' can't be established.
RSA key fingerprint is db:b4:76:52:92:08:a8:b8:bb:5f:0a:73:af:f7:fd:c0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'volumio.local,192.168.100.65' (RSA) to the list of known hosts.
pi@volumio.local's password: ( "raspberry" が初期パスワード )
Linux volumio 3.18.5-v7+ #748 SMP PREEMPT Wed Feb 4 21:33:52 GMT 2015 armv7l
___
/\_ \ __
__ __ ___\//\ \ __ __ ___ ___ /\_\ ___
/\ \/\ \ / __`\\ \ \ /\ \/\ \ /' __` __`\/\ \ / __`\
\ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \
\ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/
\/__/ \/___/ \/____/ \/___/ \/_/\/_/\/_/\/_/\/___/
Free Audiophile Linux Music Player - Version 1.55
C 2013 Michelangelo Guarise - Volumio.org
Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Mar 30 00:24:34 2015
pi@volumio:~$
pi@volumio:~$ df -m
Filesystem 1M-blocks Used Available Use% Mounted on
rootfs 1501 660 762 47% /
/dev/root 1501 660 762 47% /
devtmpfs 484 0 484 0% /dev
tmpfs 98 1 97 1% /run
tmpfs 5 0 5 0% /run/lock
tmpfs 256 0 256 0% /run/shm
/dev/mmcblk0p1 75 25 51 33% /boot
Ramdisk 256 0 256 0% /run/shm
pi@volumio:~$ ps -ef
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2192 1340 ? Ss Mar30 0:04 init [2]
root 2 0.0 0.0 0 0 ? S Mar30 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Mar30 0:03 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Mar30 0:00 [kworker/0:0H]
... (途中省略)
root 72 0.0 0.0 0 0 ? S Mar30 0:01 [kworker/3:1]
root 174 0.0 0.2 2820 2024 ? Ss Mar30 0:00 udevd --daemon
root 284 0.0 0.1 2816 1816 ? S Mar30 0:00 udevd --daemon
root 1427 0.0 0.0 2816 940 ? S Mar30 0:00 udevd --daemon
root 1428 0.0 0.0 0 0 ? S< Mar30 0:00 [ipv6_addrconf]
root 1433 0.0 0.0 0 0 ? S Mar30 0:08 [kworker/0:2]
root 1465 0.0 0.3 6576 3644 ? Ss Mar30 0:00 dhclient -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0
root 1550 0.0 0.1 2404 1792 ? Ss Mar30 0:00 /sbin/rpcbind -w
statd 1581 0.0 0.3 4264 3324 ? Ss Mar30 0:00 /sbin/rpc.statd
root 1593 0.0 0.0 2840 184 ? Ss Mar30 0:00 /usr/sbin/rpc.idmapd
105 2042 0.0 0.1 3264 1988 ? Ss Mar30 0:00 /usr/bin/dbus-daemon --system
root 2059 0.0 0.2 6304 2880 ? Ss Mar30 0:00 /usr/sbin/sshd
avahi 2099 0.0 0.2 3680 2768 ? S Mar30 0:21 avahi-daemon: running [volumio.local]
avahi 2100 0.0 0.0 3456 220 ? S Mar30 0:00 avahi-daemon: chroot helper
root 2172 0.0 0.4 21228 4516 ? Ss Mar30 0:03 /usr/sbin/nmbd -D
root 2233 0.0 1.2 33792 12940 ? Ss Mar30 0:07 /usr/sbin/smbd -D
root 2274 0.0 0.6 33276 6632 ? S Mar30 0:00 /usr/sbin/smbd -D
root 2293 0.0 0.6 25756 6468 ? Ss Mar30 0:00 /usr/sbin/winbindd
root 2300 0.0 0.7 25884 7488 ? S Mar30 0:00 /usr/sbin/winbindd
root 2325 0.0 0.2 3020 2492 ? S Mar30 0:39 /bin/bash /var/www/command/player_wdog.sh startup
root 2338 0.1 0.2 5228 2704 ? S Mar30 4:18 /usr/bin/monit -c /etc/monit/monitrc
root 2356 0.0 0.2 9980 2140 ? Ss Mar30 0:00 nginx: master process /usr/sbin/nginx
root 2357 0.0 0.3 10276 3820 ? S Mar30 0:00 nginx: worker process
root 2380 0.0 0.2 4040 2556 tty1 Ss Mar30 0:00 /bin/login -f tty1
pi 2381 0.0 0.4 5720 4004 tty1 S+ Mar30 0:00 -bash
root 2447 0.0 0.9 29224 9792 ? Ss Mar30 0:02 /usr/bin/minidlna -f /run/minidlna.conf
root 2451 0.0 0.4 29696 4300 ? Sl Mar30 0:00 /usr/local/bin/shairport -a volumio -w -B (/usr/bin/mpc | grep -q play
upmpdcli 2453 0.1 0.4 110856 4116 ? Sl Mar30 2:25 /usr/bin/upmpdcli -f volumio -l 0
root 2465 0.0 0.0 0 0 ? S< Mar30 0:00 [kworker/3:1H]
root 2469 0.0 0.0 0 0 ? S< Mar30 0:00 [kworker/0:1H]
root 8096 0.0 0.0 0 0 ? S 08:03 0:00 [kworker/u8:0]
root 13287 0.0 0.6 32092 6868 ? Ss 12:23 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 13288 0.0 0.4 32020 4768 ? S 12:23 0:00 php-fpm: pool command
www-data 13291 0.0 1.1 32248 11364 ? S 12:23 0:00 php-fpm: pool display
www-data 13292 0.0 1.0 32020 10356 ? S 12:23 0:00 php-fpm: pool db
root 13297 0.0 0.6 23908 6736 ? Ss 12:23 0:00 /usr/bin/php5 /var/www/command/player_wrk.php
www-data 13454 0.0 1.1 32236 11336 ? S 12:27 0:00 php-fpm: pool display
root 13480 0.0 0.0 0 0 ? S 12:29 0:00 [kworker/u8:1]
www-data 13484 0.0 1.1 32504 10984 ? S 12:29 0:00 php-fpm: pool display
www-data 13616 0.0 1.0 32172 10508 ? S 12:36 0:00 php-fpm: pool display
mpd 13636 0.0 2.1 124752 21736 ? Ssl 12:36 0:00 /usr/bin/mpd /etc/mpd.conf
root 13695 0.0 0.6 11760 6084 ? Ss 12:37 0:00 sshd: pi [priv]
www-data 13707 0.0 1.0 32236 10904 ? S 12:38 0:00 php-fpm: pool display
pi 13724 0.0 0.3 11760 3524 ? S 12:39 0:00 sshd: pi@pts/0
pi 13725 0.0 0.4 5720 4040 pts/0 Ss 12:39 0:00 -bash
www-data 13743 0.0 0.9 32076 9520 ? S 12:39 0:00 php-fpm: pool display
root 13965 0.0 0.0 1740 312 ? S 12:50 0:00 sleep 10
pi 13966 0.0 0.2 4552 2212 pts/0 R+ 12:50 0:00 ps -aux
pi@volumio:~$
pi@volumio:~$ sudo passwd root ( root のパスワードを変更する )
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
pi@volumio:~$ su -
Password:
root@volumio:~#
USB接続のDACをつないでみる
VolumioをインストールしたRaspberry Pi 2 のUSB端子にUSB DACをつなぐと、普通のPCにUSB接続でDACをつないだ場合と同じようにUSBサウンドデバイスとして認識され、Volumioのサウンド出力先としてUSB DACを使用する事が可能だ.この場合は通常のPCオーディオと全く同じ扱いなので何の面白味もないが、手持ちのUSB DACをAirPlay対応のネットワークオーディオ装置に簡単に変身させることが可能だ.
手持ちのUSB DACをつなぐと、Volumioのサウンド出力デバイスとして認識される
Raspberry Pi 2 + Volumio + USB DAC の組み合わせで簡易ネットワークオーディオプレイヤー
Raspberry Pi 2 とVolumioの組み合わせだけでも、標準のALSAドライバ経由でHDMIポートから音声出力が可能なようだ.最初HDMIモニターを繋いだ状態でVolumioの設定を何も行っていないのに、音が出ていたので、AVアンプなどでHDMIサウンドを出力する場合は最も簡単な方法だろう.
ハイレゾサウンドに拘らなければ、最近値下げされた "Apple TV" が何と言っても便利だし安定している.AirPlayの御本家ということもあり、iTunesやiPad, iPhoneなどのApple製のプレイヤーとの相性は抜群だ.U.S のApple ID があれば iTunes Radio や CBSN, BloombergTV, WSJ Live, Sky TV などのコンテンツも視聴することができる.
Raspberry Pi 2 + Volumio の組み合わせでネットワークオーディオ装置として手軽に組むことができるのは良いのだが、この組み合わせではまだまだ一般のオーディオユーザの手に負える代物ではなさそうだ.