2020年 10月 26日
Raspberry Pi Model 3B+VolumioをNAS化する
音楽データはCDデータのリッピング等で随時発生しますが、それをVolumio上にコピーするには、データディスクを外してオフラインで操作するなどするのは少々面倒です。
そこで、Raspberry Pi Model 3Bを使って音楽再生しながらファイル転送する場合に負荷が適切であるかどうかを確認してみました。
実際にはGCCもインストールし、単に計算負荷を与えるプログラムを走らせながら音楽再生し、同時にファイル転送しても音楽再生が途切れないか確認すると、問題なく実行が可能でした。
余談ですがRaspberry Pi Model 3Bでも計算は十分に速いことが確認できました。
Raspberry Pi Model 3Bでも、FortranやC等のプログラミング学習のタイムシェアリング機(時代遅れで古い使い方だが)としても十分使えるだろうと思います。
そりゃそうです。40年前の大学のタイムシェアリングマシンよりもいまのCPUは十分に計算が速いはずです。
プログラミングの基本は40年前も今も変わっていないので、大学のプログラミング教育用マシンがラズパイに置き換わることも可能でしょう(端末専用機のほうが却って高価かもしれないが)。
そこで、NASの構成を下記のようにしました。
これは市販のNASでも同じようなものでしょう。
ハードウェア:
- Raspberry Pi基板(RAM、USBやネットワーク機能等必要なものは基板に標準実装済なので、必要なのはOS用MicroUSBカードのみ)+電源
- USB接続の外付けハードディスク(複数台使用する場合は補助電源を使うほうが良い)
ソフトウェア:
- Volumio OS (Debian系Linuxディストリビューション)
- SAMBA(Volumioには最初からインストールされている)
たったこれだけです。
SAMBAは、UNIX機をWindowsのファイルサーバにするサーバプログラムです。
Windows Serverは高価ですが、ほぼ同じことがLinuxで可能になる訳で、これを使わない手はありません。
Volumioは、ネットワーク経由での使用を前提とするOSです。
モニターやキーボード等を直接ラズパイに繋げば画面は出るでしょうが、面倒なので、リモートログインします。
Volumioは、デフォルトでSSHをブロックしているので、リモートログインするには、同じネットワークにつながったマシン(OSは何でも良い)のウェブブラウザの下記のURLを入力して接続します。
http://volumioのIPアドレス/DEV
デフォルトでは、"http://volumio.local/DEV"でいけるはず(名前解決できない場合や名前を変更済みの場合には、設定した名前にするか、IPアドレスにする)です。
(私の場合、http://192.168.0.2/DEV)
ここで、"SSH"を"ENABLE"にします。
これでリモートログインできるようになります(できなかったら再起動する)。
Windows 10でもバージョン1803以降は、SSHクライアントが実装されているそうです。
Linuxクライアントの場合は、ターミナルを開いて、そこから
$ ssh volumio@192.168.0.2(IPアドレスは実際のアドレスに合わせる)
volumio@192.168.0.2's password:
___
/\_ \ __
__ __ ___\//\ \ __ __ ___ ___ /\_\ ___
/\ \/\ \ / __`\\ \ \ /\ \/\ \ /' __` __`\/\ \ / __`\
\ \ \_/ |/\ \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.
ここまでくればあとはDebianの機能を使えます。
まず、SAMBAがインストールされているかどうかを確認します。
$ apt list --installed|grep samba
WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.
python-samba/oldstable,now 2:4.2.14+dfsg-0+deb8u10 armhf [installed]
samba/oldstable,now 2:4.2.14+dfsg-0+deb8u10 armhf [installed]
samba-common/oldstable,now 2:4.2.14+dfsg-0+deb8u10 all [installed]
samba-common-bin/oldstable,now 2:4.2.14+dfsg-0+deb8u10 armhf [installed]
samba-dsdb-modules/oldstable,now 2:4.2.14+dfsg-0+deb8u10 armhf [installed]
samba-libs/oldstable,now 2:4.2.14+dfsg-0+deb8u10 armhf [installed]
ということで、すでにインストールされているので、それを使います。
次はSAMBAを設定します。
SAMBAの設定は
/etc/samba/smb.conf
に記述されているのでこれを編集します。
Volumioには、nanoエディタがインストールされているので、これを使います。
(私はnanoエディタの使い方がよくわからないので、vimをインストールしてviエディタを使いました。viエディタを使用できる人にはこれ以上の説明は不要でしょう。)
$ sudo nano /etc/samba/smb.conf
デフォルトのままでは使いにくいので、私は下記のようにしました。
[global]
netbios name = Rp3
server string = Audiophile Music Player
unix charset = UTF-8
dos charset = CP932
workgroup = WORKGROUP
security = user
map to guest = Bad User
encrypt passwords = yes
wins support = yes
local master = no
preferred master = no
os level = 30
interface = 127.0.0.0/8 192.168.0.0/24
bind interfaces only = yes
[USB]
comment = Rp3 USB Music Folder
path = /mnt/USB
read only = no
guest ok = yes
"WORKGROUP"は、ワークグループ名で、適当に付けることができます。
いまのWindowsデフォルトでは"HOMEGROUP"だったような気がします。
interfaceには、アクセスできるIPアドレスを記載します。
私の場合、自宅LANのネットワークアドレスが、192.168.0.0/24だったのでこのようにしていますが、これは実際の環境に合わせます。
実際の環境は、インターネットルータを使っている場合には、DNSの設定で分かります。
編集した"smb.conf"を保存して、samba serverプログラムを再起動します。
$ sudo /etc/init.d/samba restart
[sudo] password for volumio:
[ ok ] Restarting nmbd (via systemctl): nmbd.service.
[ ok ] Restarting smbd (via systemctl): smbd.service.
[ ok ] Restarting samba-ad-dc (via systemctl): samba-ad-dc.service.
これでSAMBAが再起動されて使えるようになります。
こうすると、ラズパイのUSBに接続したハードディスクやUSBメモリーなどの記憶デバイスがNASとして機能するので、音楽ファイルを自在に更新できます。
Raspberry Pi Model 3Bの場合、1台の2.5インチハードディスクと3つのUSBメモリーがバスパワーだけで問題なく同時に動作しました(同時に音楽再生とリモート端末からのコマンドでのファイルコピーを実施)。
ちなみに、VolumioのウェブUGIでは、音声ファイルのないフォルダや音声の入ったファイル以外は表示されませんので、音楽ファイル以外の操作は、ウェブブラウザではなく、ファイルブラウザを使う必要があります。
このあたりは上手にできていると思います。
CPUの温度は、音楽ファイルの連続再生では、小さな放熱器(ファンなし)を付けた状態で、室温23℃に対して49.4℃なので室温+26.4℃でした。
これは、前回放熱器なしでSAMBAサーバインストール前は、室温+33.3℃だったので、放熱器の効果はまずまずでした。
しかも音楽再生しながらGCCでコンパイルした計算プログラム(終わらないように連続計算させる整数演算)を同時に2つ同時に走らせた状態でも室温+43℃程度だったので、(I2S DACで放熱効果を妨げた状態)この放熱器(ファンなし)で十分だろうと思います。

コマンド操作に慣れてしまえば、これはこれですごく使いやすいと思います。
普段スマホしか使わない方は、是非ともラズパイ(最新のモデルで搭載RAMが最大のものを推奨)をパソコン代わりにしてパソコンに慣れ、もう一台ラズパイを導入して音楽サーバー+NASにしてみましょう。
ラズパイをパソコンとして使う場合のOSには、VolumioではなくGUI操作のディストリビューション(標準はRaspbianですが、Fedoraなど別のディストリビューションもあります)を使いましょう。

