Raspberry Pi の遊び方の一つにいわゆる ラズパイオーディオ と呼ばれたりする、Raspberry Pi に I2S DAC を繋いでハイレゾ品質のオーディオを楽しむものがあり、私もいくつか I2S DAC 基板を持っていますが、今回その中から携帯性の良いモバイルバッテリと Raspberry Pi Zero Wを使った組み合わせを考えてみます。
VolumioをSDカードへインストール
Raspberry Piにおけるオーディオ再生に特化したディストリビューションには、今回使うVolumioを始め、moode AudioやRuneAudioなどがありますが、仕組みはどれも似たりよったりなので、見た目にこだわりが無い限りは、手持ちのI2S DACでちゃんと音が鳴るシステムを選べば良いと思います。
Volumio公式サイトのダウンロードページより、Zip圧縮されたイメージをダウンロードして、Ubuntu 18.04母艦で16GB micro SDカードに焼きます。
1 2 3 4 5 6 7 8 |
$ ls -l ~/Downloads/vol* -rw-rw-r-- 1 user user 420090742 Aug 12 10:25 volumio-2.907-2021-07-02-pi.img.zip $ unzip -p ~/Downloads/volumio-2.907-2021-07-02-pi.img.zip | sudo dd of=/dev/sdd bs=4M conv=fsync status=progress 2931228672 bytes (2.9 GB, 2.7 GiB) copied, 201 s, 14.6 MB/s 0+35916 レコード入力 0+35916 レコード出力 2936012800 bytes (2.9 GB, 2.7 GiB) copied, 614.854 s, 4.8 MB/s |
VolumioはRaspberryPi OS(但し、Debian Jessie相当)をベースとしていますが、SquashFSとOverlayFSを採用していることもあり、焼きあがったSDカードの中身は、これまでのRaspberry Pi OSとは異なる構成になっていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ sudo fdisk -l /dev/sdd ディスク /dev/sdd: 14.5 GiB, 15523119104 バイト, 30318592 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x2243a670 デバイス 起動 開始位置 最後から セクタ サイズ Id タイプ /dev/sdd1 * 1 125000 125000 61M c W95 FAT32 (LBA) /dev/sdd2 125001 4882812 4757812 2.3G 83 Linux /dev/sdd3 4882813 5468750 585938 286.1M 83 Linux $ df -h /dev/sdd* Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev /dev/sdd1 61M 57M 3.4M 95% /media/user/boot /dev/sdd2 2.2G 358M 1.7G 18% /media/user/volumio /dev/sdd3 262M 160K 241M 1% /media/user/volumio_data |
初回ブート前の各パーティション内のファイルは次のようになっていました。尚、 volumio_data パーティションは、初回ブート時に領域いっぱいまでリサイズされます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ ls /media/user/boot bcm2708-rpi-b-plus.dtb bcmFig6.2711-rpi-4-b.dtb fixup_db.dat start4cd.elf bcm2708-rpi-b.dtb bootcode.bin fixup_x.dat start4db.elf bcm2708-rpi-cm.dtb cmdline.txt kernel.img start4x.elf bcm2708-rpi-zero-w.dtb config.txt kernel7.img start_cd.elf bcm2708-rpi-zero.dtb fixup.dat kernel7l.img start_db.elf bcm2709-rpi-2-b.dtb fixup4.dat overlays start_x.elf bcm2710-rpi-2-b.dtb fixup4cd.dat resize-volumio-datapart volumio.initrd bcm2710-rpi-3-b-plus.dtb fixup4db.dat ssh bcm2710-rpi-3-b.dtb fixup4x.dat start.elf bcm2710-rpi-cm3.dtb fixup_cd.dat start4.elf $ ll /media/user/volumio drwx------ 2 root root 16384 Jul 2 18:45 lost+found/ -rw-r--r-- 1 root root 125 Jul 2 18:49 remoteConfig -rw-r--r-- 1 root root 371339264 Jul 2 19:03 volumio_current.sqsh $ ll -a /media/user/volumio_data drwx------ 2 root root 16384 Jul 2 18:45 lost+found/ |
OSの準備は以上です。続いてI2S DACをRaspberry Pi Zero Wに載せるのですが、今回は次の2種類のI2S DACを試してみました。
1) NXEZ HiFi DAC Zero (PCM5122)
NXEZ HiFi DAC Zeroは、公式ブログの記事がとても興味深い中国のブランド、NXEZから発売されているRaspberry Pi Zero向けのI2S DACで、米TI社のPCM5122を搭載を搭載しています(淘寶にてRMB116+送料にて購入)。Raspberry Pi Zero系のみならず、GPIOピンが同じRaspberry Pi 2B以降でも使用可能です。日本からでも、Aliexpressなどで比較的容易に入手出来ると思います。
Raspberry Pi Zero WとNXEZ HiFi DAC Zeroを組み上げたら、その小型少電力を活かして18650バッテリ1本を内蔵した、モバイルバッテリ(こちらの記事で基板改造済)から給電してみました。
Volumioを入れたmicro SDカードを挿しての初回起動は、公式クイックスタートガイドで解説されている通り、Volumio自身のWiFiホットスポットが立ち上がるまで、ひたすら待ちます。公式ガイドでは6分程度とありますが、おおよそ3分程度待ちました。
スマホのWiFiスキャンでVolumioホットスポットを見つけたら以下の要領で接続後、さらに数分待つとWiFiログインを促されるのでタップすると、初期設定ウィザードが始まります。
- SSID: Volumio
- Pass: volumio
初期設定ウィザードは後から何度でも実行可能なので、取り敢えずWiFiの接続設定だけ済ませて、それ以外の項目は別途、LAN上のPCのブラウザから続けることも可能です。
まずはホスト名の入力に続いてI2S DACの選択は、システムが互換性のありそうな種類をデフォルトでセットしていたので、これをそのまま採用して先へ進めます。
- I2S DAC: HiFiBerry Amp2
WiFiの設定では、LAN内のAPを選んでパスフレーズを入力しますが、実際に接続が切り替わるのはこのウィザードが終了してからです。音源ファイルの収められたUSBストレージは、続く遷移でドライブを追加せずとも、自動的に認識されるので、何もせずにウィザードを完走させます。
再起動後はLAN上のWiFiへ接続しているので、Ubuntu 18.04母艦のブラウザ上で、次の要領でホスト名でアクセスしてみます(名前解決出来ていない様子なら、LANのDHCPサーバで払い出されたIPアドレスを調べて直接打ち込みます)。
1 |
http://volumio.local/ |
実はI2S DACの設定はまだ終わっていないので、まだ音は出ません。設定を次の要領で進み、
【設定→プレイバックオプション→音量オプション】
その中のMixer Typeが正しく設定されていない( None や Hardware になっている)ためで、これを Software へ変更・保存の後、再び再起動させるとようやくハイレゾサウンドが鳴るようになりました。
- Mixer: Software
Volumioの設定項目
音が鳴るようになったので、その他の設定項目で必要な部分をピックアップしてみました。
匿名情報送信無効
【設定→システム→Privacy Settings】
下記注釈の通り、Facebook PixelやGoogle Analyticsを通じた利用状況データ収集を有効・無効設定する項目があり、デフォルトでは有効になっているので、気になる場合はここで無効にすることが出来ます。
“Allow the collection of behavioural and usage statistics on Volumio UI via Facebook Pixel and Google Analytics. These datas are used to improve Volumio user experience.”
Hotspot Fallback
【設定→ネットワーク→Hotspot】
初回起動時にお世話になったホットスポットも普段は必要有りませんが、設置場所が変わるなどWiFiの接続情報が変わる場合、予めこのHotspot Fallbackを有効にしておけば、既知のWiFiが見当たらない場合にホットスポットモードで起動するので、孤立化を防ぐことが出来ます。
ssh有効
セキュリティ上の理由から、デフォルトではsshは無効になっています。これを有効にするには、デバッグ用隠しページを次の要領で開き、
1 |
http://volumio.local/dev/ |
ページ中のSSH項のENABLEボタンを押せば、即sshアクセスが可能になります。尚、これは再起動後も保持されるので、属するネットワーク環境如何によっては、注意が必要です。
せっかくなので、sshで中身を覗いてみました。起動前はSquashFSとOverlayFSで見慣れぬファイル構成でしたが、起動中は普通のLinux
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$ ssh volumio@voluzero.local ___ /\_ \ __ __ __ ___\//\ \ __ __ ___ ___ /\_\ ___ /\ \/\ \ / __`\\ \ \ /\ \/\ \ /' __` __`\/\ \ / __`\ \ \ \_/ |/\ \L\ \\_\ \_\ \ \_\ \/\ \/\ \/\ \ \ \/\ \L\ \ \ \___/ \ \____//\____\\ \____/\ \_\ \_\ \_\ \_\ \____/ \/__/ \/___/ \/____/ \/___/ \/_/\/_/\/_/\/_/\/___/ Free Audiophile Linux Music Player - Version 2.0 C 2015 Michelangelo Guarise - Volumio Team - Volumio.org Volumio Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. $ uname -a Linux volzero 4.19.118+ #1311 Mon Apr 27 14:16:15 BST 2020 armv6l GNU/Linux $ df -h Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p2 2.2G 826M 1.3G 40% /imgpart /dev/loop0 355M 355M 0 100% /static overlay 12G 535M 11G 5% / devtmpfs 219M 0 219M 0% /dev tmpfs 233M 0 233M 0% /dev/shm tmpfs 233M 8.7M 224M 4% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 233M 0 233M 0% /sys/fs/cgroup /dev/mmcblk0p3 12G 535M 11G 5% /swap tmpfs 233M 32K 233M 1% /tmp tmpfs 233M 0 233M 0% /var/spool/cups tmpfs 20M 16K 20M 1% /var/log tmpfs 233M 0 233M 0% /var/spool/cups/tmp /dev/mmcblk0p1 61M 57M 3.4M 95% /boot /dev/sda1 58G 50G 8.2G 86% /media/F2B1-FB36 tmpfs 47M 0 47M 0% /run/user/1000 $ free -h total used free shared buffers cached Mem: 464M 436M 27M 8.3M 121M 164M -/+ buffers/cache: 150M 314M Swap: 511M 512K 511M |
次のページでは、もう一つのI2S DACへ載せ替えて、音の違いを検証してみます。