
(2020/9追記)
ラズパイ関連の記事は消費期限が短くて困ります・・・サーバーアプリをバージョンアップされたMinimServer2に、UPSは電池を使わないタイプに変更し、2020年版として書き直しました。
こちらへどうぞ。
我が家&我が車で稼働中のUSBオーディオ。
動作は安定しているし、音質的にも悪くないと思うのですが、安定しちゃうと面白くないというか、次に行ってみたくなり。
ホームオーディオの世界を眺めていると、ここ数年はUSBオーディオに代わってネットワークオーディオが
騒がしい賑やかなので、そっち方面からネタを導入します。
まずはラズパイとMinimServerで音楽用サーバーを組んでみました。
Raspberry Pi 3 Model B
「ラズパイオーディオ」といえばI2S接続のDACやDDCを載せるのが定番ですが、今回は違った使い方で行きます。
MinimServerはJavaベースのUPnP(DLNA)サーバーで、flacはもちろんDSDにも対応しています。寄付歓迎のドネーションウェアです。
以前PC版を使った時の印象は、タグやアルバムアートの処理が確実で、ナビゲーションツリーの見せ方も実用的なものでした。
現時点では数少ない「ちゃんとした」音楽サーバーアプリと言ってよいと思います。
「ちゃんとしてない」市販DLNA製品の何と多いことか。
WindowsやMacだけでなくLinux版もあり、QNAP他のNASやラズパイでも動作可能です。
公式ページの「Installing」に機種別のインストール解説があります。
以下、備忘録ってことで。環境によって多少のアレンジが必要なので「この通りやったけど動かんぞ!」とか言わないで。
準備作業1(PC側)
・MinimServer推奨のOSはRaspbianです。
ラズパイ公式サイトから、最小構成のRaspbian Stretch Liteをダウンロード。
(2019/8追記)現在はRaspbian Buster Liteに変わっています。
(2020/7追記)現在はRaspberry Pi OS Liteに変わっています。
(2020/9追記)Raspberry Pi OSでインストールしてみて、変更が必要な部分を追記しました。
・ダウンロードしたファイルを解凍して出来たOSイメージをmicroSDカードに書き込み、ラズパイにセットします。
SD Card Formatterと
Win32DiskImagerを使いました。
・楽曲ファイルの保存にはUSBストレージを使います。
ポータブルSSD 480GB SSD-PL480U3-BK/N (バッファロー)
480GBで7000円弱。いい時代になりました。
exFAT形式でフォーマットし(後で使うのでディスクラベルを控える)、楽曲ファイルを入れておきます。
また
MinimServer(Linux ARM hard float版)もダウンロードして入れておきます。
・MinimServerの状態監視と設定はPCから行えます。
PCに
Javaおよび
MinimWatchをインストールしておきます。
準備作業2(ラズパイ側)
・最初だけラズパイをローカルで設定します。

USBポートにキーボードを接続。
テレビとHDMIケーブルで接続。
家のルーターとLANケーブルで接続。(ネット接続が必要です)
SSDもつないでおきます。
・電源を投入し、テレビとキーボードでログインします(pi/raspberry)。
・ラズパイに割り当てられたIPアドレスを調べます。
$ ifconfig
同一ネットワークにスマホがあれば、アプリの
Fingでも調べられます。
・設定ツールでブートパーティションをリサイズ、SSHを有効化。
$ sudo raspi-config

「Advanced Options」から「Expand Filesystem」
「Interfacing Options」から「SSH」→「Yes」
終了→リブートすると、以降の作業はPCから可能になります。
モニターやキーボードはここで外してしまっても大丈夫。
USBディスクを使えるようにする
・SSHでログイン
PCでターミナルアプリの
PuTTYを起動。

調べたIPアドレスに接続しログイン。
【2020/9追記】「自分もやってみよう」という方は、最低でもパスワードは変更してください。原理的にNATで守られるIPv4と異なり、IPv6が通る環境では外部から直接SSHポートに侵入されるリスクがあります。
特にフレッツのIPoE接続でレンタルルーターをセキュリティレベル「標準」に設定している場合、フレッツIPv6網からのアクセスは拒否しない仕様(!)となっています。そこにデフォルトのユーザー名・パスワードでSSHポートを開くのは・・・
いったんSSHからラズパイに入られてしまえば、それを踏み台にしてPCのHDDやWebカメラを狙う位のことは可能ですし、実際企業では勝手に社内ネットワークにつながれたラズパイがセキュリティホールになった事例があります。
対策としては他にユーザー名やポート番号変更、証明書発行などが可能で、作業後はSSHを無効にしてしまえばより安心です。
・exFATファイルシステムをインストール。
$ sudo apt-get install exfat-fuse exfat-utils
・接続したUSBディスクのIDを調べます。
$ sudo blkid
表示されたリストからフォーマット時につけたラベルのある行を探します。「UUID」が必要な情報です。
/dev/sda1: LABEL="SSD-PLU3" UUID="C2C4-9374" TYPE="exfat" ...
・起動時にUSBディスクを自動マウントするように設定します。マウント名は任意。
$ sudo mkdir /mnt/usbhdd1
$ cd /etc
$ sudo cp fstab fstab.bak
$ sudo nano fstab
fstabファイルに設定を追加します。
UUID="C2C4-9374" /mnt/usbhdd1 exfat-fuse sync,auto,dev,exec,gid=65534,rw,uid=65534,noatime 0 0
保存してエディタを終了。
・リブートしてUSBディスクにアクセスできることを確認します。
$ sudo reboot
(起動待ち→ログイン後)
$ ls /mnt/usbhdd1
ファイルが表示されればOK。
MinimServerのインストール
引き続きSSHコンソールから
・javaをインストール。
$ sudo apt-get install oracle-java8-jdk
(2020/9追記)現在の公式OSであるRaspberry Pi OSでは上のコマンドは使えませんでした。代わりに以下のように入力します。
$ sudo apt install default-jdk
・SSDに入れておいたMinimServerのインストールパッケージを/home/piディレクトリに展開します。
$ sudo cp /mnt/usbhdd1/MinimServer-0.8.5-2-linux-armhf.tar.gz /home/pi
$ cd /home/pi
$ tar xf MinimServer-0.8.5-2-linux-armhf.tar.gz
(2020/9修正)tarはsudoで実行しない。
・MinimServerのセットアップ
$ minimserver/bin/setup
デスクトップ統合→無効
自動スタートアップ→有効
※setupをsudoで実行すると自動スタートアップに失敗する。
・MinimServer起動
$ minimserver/bin/startc
初回にライブラリの場所を聞かれるので入力する
ライブラリのスキャンが始まり、しばらく経って「MinimServer is running」と表示されれば起動完了。

PC側のMinimWatchのアイコンが緑色になります。
・自動起動に設定
このままだとターミナルを終了するとMinimServerも終了してしまうので、
以下の手順で自動起動に設定する。
> exit (MinimServerをいったん終了する)
$ minimserver/bin/startd
起動確認後リブートして、PCのタスクトレイにあるMinimWatchのアイコンが再度緑色になれば成功です。
$ sudo reboot
この時点でflacなどは再生可能になっています。
ローカルレンダリングに対応した(=コントローラ兼レンダラーとなれる)スマホアプリの
BubbleUpnpや
Hi-Fi Castを使って動作確認します。

それぞれの端末から音を出しています。サーバー1台からの4ストリーム同時再生ってことですね。やるじゃんラズパイ。
これはこれで別の使い道がありそうな・・・と思いつつ先に進みます。
MinimStreamerのインストール
アドオンパッケージのMinimStreamerをインストールすると、レンダラーで対応しないコーデックをトランスコード配信可能になります。DSDのDoP配信にも必要です。
・ffmpegのインストール
コーデック群のffmpegを使えるようにしておきます。
再度SSHでログイン。
$ dpkg-query -W ffmpeg
dpkg-query: no packages found matching ffmpeg
↑入っていなかったのでインストールしました。
$ sudo apt-get install ffmpeg
以前はラズパイ用のパッケージが無くソースコードからビルドする必要があったそうですが、今はapt-get一発で楽ちんです。
(2020/9追記)Raspberry Pi OSではffmpegのインストール前にupdateが必要でした。
$ sudo apt-get update
・MinimStreamerのインストール

アドオンパッケージはPCからインストールします。MinimWatchのアイコンを右クリック→Propertiesで設定画面を開き、Packagesのタブにあります。

インストールが終わったらRelaunchで再起動。

ffmpegを自動検出したことが、設定画面のSystemタブで確認できます。
使用するレンダラーに応じてstream.transcodeに設定を追加します・・・が、レンダラーはまだ作ってないので保留。
Linuxなので電源ブチ切りはNG。シャットダウン操作が必要です。
$ sudo shutdown -h now
UPSの取り付け
コンソールを開いてシャットダウンコマンドを打ち込まないと電源を落とせないのは不便なので、探したら対策パーツがありました。
UPS PIco HV3.0B+ (πmodules)
ラズパイ専用の無停電電源です。
450mAhと比較的小さなバッテリーを搭載していて、ラズパイからの5V電源で動作、数分間だけバックアップが可能です。(オプションの大容量バッテリーあり)
外部からの電源供給が途絶えるとバッテリー給電に切り替え、設定した時間で自動シャットダウンまでできる優れもの。
これで最後のピースが埋まるぞ!
と飛び付いたわけです。
購入は
公式オンラインショップから。3モデルあり、用途に応じて選択します。
・Stack 450
・Advanced 450
・Top-End 450
DACなどの拡張ボード(HAT)と併用する場合は「スタック」または「アドバンスト」を。ただしGPIOを2本使用するので、HATとピンが重複する場合は使えません。「アドバンスト」は外部電源端子があり7~28Vを入力できます。
接続するラズパイのモデルにより異なる場所に取り付けるピンがあり、いくつかの部品はユーザーが半田付けする仕様になっています。購入時オプションの組み立てサービスを利用すると半田付け済みで出荷してくれるので楽ですが、注文から到着まで1ヶ月弱かかりました。
(2019/8追記)
公式ショップがリニューアルし、上記リンクから新ショップに誘導されます。しかし新ショップでは購入時オプションが指定できなくなっているようです。直してくれると良いのですが・・・
(2019/9追記)直ったようです。リンクを新ショップに更新しました。

HATを使わない「トップエンド」を調達しました。
組み立てサービスを利用しても背の高いI/Oピンヘッダ(UPSを動作させるのに必須ではない)だけは実装されておらず、この通りラズパイごとksyの公式ケースに収められます。(最初に使っていた透明ケースには高さが足りず入りませんでした)
組み立てとソフトウェアのインストールは公式サイトに詳細な
マニュアルがあります。
作業のほとんどは半田付けで、そこを組み立てサービスで回避すれば完成品をラズパイに載せてバッテリーを取り付けるだけ。ラズパイの基板と接触させるピンが繊細なので曲げないよう、また指定の場所に接触するよう注意。
ソフトウェアの方も難しくはありません(
GitHubのガイド)が手順がやや多いです。テクニカルフォーラムにあるインストールスクリプトが簡単なので利用させてもらいました。
(UPS PIco HV3.0A, HV3.0B and HV3.0B+
→ UPS PIco HV3.0 Python and other Tools
→ [script] PIco HV3.0A Toolkit に説明があります)
$ sudo raspi-config
「Interfacing Options」からI2Cを有効化
「Localisation Options」からタイムゾーンを「None of the above」→「GMT+9」に設定(PIcoにはRTCモジュールが搭載されています)
以下の通りスクリプトをインストール&実行。
$ sudo apt-get install git
$ git clone https://github.com/Siewert308SW/pico_installer PIcoToolKit
$ cd PIcoToolKit
$ sudo chmod +x picotoolkit.sh
$ sudo bash picotoolkit.sh
最後にシャットダウンまでの時間を好みで修正して完成。i2cget/i2csetコマンドを使います。設定時間は、現在のバージョンでは最短60秒のようです。以前は10秒位にできたそうなので何かの対策があったのかもしれません。
ひとまず以上です。
電源を入れるだけで立ち上がり、電源を落とせば安全に終了する、手のひらサイズのサーバーができました。電源投入から再生可能までは30秒ほどかかります。
ネットオーディオなので、サーバー、レンダラー、コントローラのいわゆる3点セットが必要です。残り2点をどうするか、ファイル共有(sambaやNFS)でなくUPnPを選択した時点で方針は固まっているのですが、長くなったので次回に続きます。
(2020/1追記)
MinimServerの次期バージョンとして、MinimServer2のアナウンスがありました。現時点では一部のNAS用のみリリースされています。
新バージョンは無償の機能限定版と年間ライセンス版の二本立てになります。
(2020/3追記)
MinimServer2にWindows版が追加となりました。
(2020/8追記)
UPSに使っている電池が

こんな事になったので交換しました。
1年で電池が膨らんでしまうのは早い気もしますが、UPSの特性上常に満充電状態、しかもラズパイに温められて使われているので、条件として厳しいことは確か。
リチウムイオン電池は危険物なので車内に放置しないよう、また定期的な点検は必要ですね。もう少し気楽に使える方法はないか、検討中です。
ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう