コルリ(戸隠森林公園)


Date/Time: 2014:05:18 10:44:50
Camera: PENTAX
Model: PENTAX K-5 II s
Exporsure Time: 1/320
FNumber: 0.0
Aperture Value:
Focal Length: 0.0

Close

y2blog » Raspberry Pi 2 + Volumio + DAC でネットワークオーディオに挑戦(その2)

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 Install
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 Top Page
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 Devices
手持ちのUSB DACをつなぐと、Volumioのサウンド出力デバイスとして認識される

Raspberry Pi 2 + USB DAC
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 の組み合わせでネットワークオーディオ装置として手軽に組むことができるのは良いのだが、この組み合わせではまだまだ一般のオーディオユーザの手に負える代物ではなさそうだ.