Raspberry Pi 5をRoon Ready対応化、M.2 HAT+とNVMe SSDで爆速Volumioを作ってみた

本ページはアフィリエイトによる収益を得ています

Raspberry Pi 5に純正オプションボード、M.2 HAT+をインストール、NVMe SSDから起動して爆速Volumioを実現したので備忘録として記します。
また、VolumioをRoonのOutputにしてみたところ良い結果が出たので、その方法も記します。
尚、本記事は既にRaspberry Pi 5でVolumioをインストール済、SSH接続可能、かつnanoが使えることが前提となっています。
※表示価格やバージョンは本記事執筆時点のものです。
※Volumioのプレーヤー名はインストール直後のデフォルト「volumio」です。

M.2:M.2はパソコンに内蔵される拡張カードにおいて接続端子となる規格のことであり、この接続端子を持つデータを読み書きできる記憶装置を「M.2 SSD」と呼びます。バッファロー
NVMe:NVMe(エヌブイエムイー)とは「Non-Volatile Memory Express」を略した呼び名です。 SSDをはじめ、不揮発性メモリを使用したフラッシュストレージのために最適化された通信プロトコル(異なるデバイスが通信する際の手順やルールのこと)を指します。ロジテックダイレクト

Raspberry Pi 5にM.2 HAT+とNVMe SSDで爆速Volumioへ

発売と同時に入手していたRaspberry Pi 5を持て余していたところ、以前からアナウンスのあったRaspberry Pi純正オプションボード、M.2 HAT+が発売されました。
これはRaspberry PiでM.2 SSDを使用可能にし、そこから起動させることも出来る代物。Raspberry Pi 5が爆速になるならやらない手はありません。
とりあえずKSYで購入してから詳細を調べることにしました。

Raspberry PiをUSB/NVMeから起動するには適合性確認と事前準備が必要

M.2 HAT+は前出のKSYスイッチサイエンスで入手可能です。
肝心のNVMe SSDは相性があるため、何でも良いというわけではありません。

NVMe SSDの適合性

NVMe SSDの適合性についてもVolumioのコミュニティにリストがあります。(最上段付近にあるのはIncompatibility List(不適合リスト) であることに注意)
以下の3点が必須チェック項目です。

  • Gen 3または4のNVMe SSD
  • 「Low Power Consumption(低消費電力)」であること
  • Phisonコントローラーではないこと

Raspberry Pi用HATなどを発売しているPineberry Piには具体的な適合リストが公開されています。こちらの方がスコアも併記されているため分かりやすいでしょう。
以下、スコア順に並び替えた表を引用します。

Name DD Write
(MB/s)
HDParam (disk)
(MB/s)
Score (pibenchmarks)
Sabrent Rocket 4.0 350 773.9 47,002
Western Digital SN530 441 845.35 45,735
Lexar NM620 444 849.2 44,542
Kingston KC3000 393 832.70 44203
KIOXIA EXCERIA 394 802.09 43030
Samsung 980 426 791.31 42,230
PNY CS1030 444 744.15 42,203
XPG GAMMIX S70 BLADE 403 829.90 41316
Lexar NM710 393 849.91 40542
Crucial P3 Plus M.2 Series 441 798.97 40,118
Pineberry Pi Pinedrive (2280) 388 817.69 38547
Samsung 970 EVO Plus 314 776.7 27,960
Crucial P3 Plus 359 777.5 26,163

筆者はNVMe SSDにデータ保管する予定はなく、ブート出来さえすれば良いので256GBで十分です。上記モデルの中で最も容量の小さいLexar NM620 256GB (LNM620X256G-RNNNG)を購入しました。価格も¥3,980なので気軽に買えます。

1. 事前準備

Raspberry PiをUSBやNVMeから起動する方法もVolumioのコミュニティにまとめられています。 その通りに進めば問題ありませんが、ブートローダーの書き換えのためRaspberry Pi OSが必要です。

2. 最新のRaspberry Pi OSをインストール、アップデート

Volumioとは別のMicro SDカードを用意し、最新のRaspberry Pi OSをインストール、アップデートします。

Raspberry Pi Imager

まずRaspberry Pi Imagerをパソコンにインストール、同ソフトを立ち上げ、パソコンにマウントしたMicro SDカードにRaspberry Pi OSをインストールします。Raspberry Pi Imagerはコマンドラインインターフェイス(CLI)を必要としないGUIタイプのため、迷わず操作できます。

コマンドラインインターフェイス(CLI):コンピュータやソフトウェアが利用者に情報を提示したり操作を受け付けたりする方法(UI:ユーザーインターフェース)の類型の一つで、すべてのやり取りを文字によって行う方式。IT用語辞典 e-Words
GUI(Graphical User Interface):マウスなどのポインティングデバイスを用いてコンピューターへの命令を、ユーザーが視覚的に捉えてできるようにするためのインタフェースです。NTT西日本

Raspberry Pi OSのインストールが完了したら、Micro SDカードをRaspberry Pi本体に差し込んで起動します。
Raspberry PiのLXTerminalを起動して以下のコマンドを入力します。

sudo apt update
sudo apt full-upgrade
sudo reboot

3. ブートローダーのバージョン確認とアップデート

Raspberry Piのブートローダーを最新版にアップデートします。
※Volumioのコミュニティには、かなり細かなアップデート方法まで書かれていますが端折っても問題ありません。

sudo rpi-eeprom-update

アップデートが存在する場合は適用してRaspberry Piを再起動します。

sudo rpi-eeprom-update -a
sudo reboot -n

4. ブートローダーの設定を変更

Raspberry Piを再起動後、再びLXTerminalを起動して以下のコマンドを入力します。

sudo rpi-eeprom-config

下記のコマンドを入力してブート順序を変更します。

sudo -E rpi-eeprom-config --edit
BOOT_ORDER=0xf461
PCIE_PROBE=1

変更を書き込み(Ctrl-O)、終了(Ctrl-X)して再起動します。

sudo reboot

Raspberry Piを再起動後、改めて終了して電源も抜いておきます。

NVMe SSDを装着したところ

電源を抜いたRaspberry Pi 5にM.2 HAT+とNVMe SSDを装着します。

NVMe SSDにカプトンテープを巻いて固定

M.2 HAT+には筆者が購入したType2280のLexar NM620 256GB (LNM620X256G-RNNNG)を留めるビスがなく、このままだとNVMe SSDが浮いてしまいますので、発熱を考慮してカプトンテープで固定しました。

カプトンテープ:米国デュポン社のポリイミドフィルム「カプトン®」を使用した粘着テープで、耐熱性や絶縁性、難燃性に優れています。また、粘着剤が残りづらいという特徴もあります。

これでRaspberry Pi本体の下準備は完了しました。
次はVolumioの設定を変更します。

5. Volumio側の準備

VolumioをインストールしたSDカードをRaspberry Pi 5に差し込んで起動します。
設定 → システム → システム更新 → 「更新のチェック」ボタンを押下してVolumioのバージョンを最新にしておきましょう。

ディスクにインストールする「ディスクにインストールする NVMe」ボタンを押下する

システム設定 → ディスクにインストールする「ディスクにインストールする NVMe」ボタンを押下します。

警告画面

警告画面が出ますが「はい」を押下して進めます。

インストール中の表示画面

プログレスバーが表示され、インストールが進みます。
インストールが終わると再起動を促されますが、Volumioの電源をオフ → 本体のUSB Type-Cコネクタを抜く → Micro SDカードを抜く → 本体のUSB Type-Cコネクタを差し込んで再起動します。再起動後はNVMe SSDから起動されているはずです。 ただし、設定等は引き継がれずクリーンインストールの状態です。設定ウィザードが起動しますので、設定を行ってください。

内部ストレージが256GBと表示されている

インストール後、Volumioのプラグイン「System Information」でStorage infoを見てみると内部ストレージが256GBになっていることが分かりますね。

起動時間を比較

Micro SDカードとNVMe SSDでVolumioの起動時間がどれくらい変わるのかを計測してみました。
電源ケーブル(USB Type-C)を接続して起動音が聞こえるまでをストップウォッチで3回測ったものが以下です。

起動方法 1回目 2回目 3回目 平均
Micro SDカード 01:00.39 01:01.12 01:00.58 01:00.41
NVMe SSD 00:56.44 00:56.18 00:56.08 00:56:19

Micro SDカードよりNVMe SSDの方が4〜5秒ほど早いことが分かります。
思ったほど速くないなあというのが正直な感想ですが、プラグインのインストールや検索機能を使うと、驚くほどキビキビ動きます。

VolumioのRoon Ready対応化

プラグイン「Volroon」でRoon Ready対応化させる

Volumioプラグインの「Volroon」

Raspberry Pi 5をRoon Ready対応化させるにはVolumioプラグインのVolroonをインストールします。
ただし、このプラグインはβチャンネルとして提供されているため、そのままではVolumioのプラグイン管理画面に表示されません。
表示させるためには次のように設定を変更する必要があります。

Volumioの設定を変更するにはブラウザのアドレスバーに

http://volumio.local/dev/

と入力します。

「Plugins Test Mode」を「TRUE」へ変更

上から3段目の「Plugins Test Mode」と書かれた下の「TRUE」ボタンを押下します。

Volumioのプラグイン「Volroon」をインストール

プラグイン管理画面の「プラグインの検索」タブ下「Music Services」をクリック → 下へスクロールして「Volroon」の「インストール」ボタンを押下します。

これでVolumioのRoon Ready対応化が完了です。

Roon側でVolumioをOutputとして認識させる

ここまで来たらあと一息。
VolumioをRoon側で認識させます。

Roonの設定内にあるオーディオ

パソコンやスマホでRoonを立ち上げ、設定(歯車マークまたは) → オーディオから、先ほどRoon Ready対応化が完了した端末を探して「有効」ボタン押下します。

Roonの設定内にある拡張

次にRoonの設定 → 拡張 → Roon拡張にVolroonが表示されているので、これも有効化します。

Volumioの画面にroonで再生中のメタデータが表示されている

以上でRoon側でVolumioをOutputとして認識し、Roon Output先として選んだVolumioの画面には現在再生されているアートワークやメタデータ(曲名やアーティスト名など)が表示されるようになりました。上の画像でハートマークの左に「roon」と表示されているのが分かります。

注意

冷却ファンは必須

NVMe SSDは特性上、かなりの発熱があります。
Raspberry Pi 5でNVMe SSDを使うには発熱処理が必須、冷却ファンも事前に購入しておくことを強くおすすめします。
ただし、Raspberry Pi 5は同4とレイアウトが異なるため「5対応品」またはM.2 HAT+と干渉しないHAT型かケース一体型にするとよいでしょう。

5V 5Aの電源アダプターがないと起動失敗する

Raspberry Pi 5の電源は5V 5Aが必要です。特にNVMe SSDのように電源を必要とするオプションを付けていると、同4まで使えていた5V 3Aの電源アダプターでは起動失敗することがあります。
5Aを供給できる電源アダプターも必ず揃えておきましょう。

まとめ

VolumioをRoon Ready化したことによって、Roonでハイレゾストリーミングを楽しみながらradikoをAirPlayでVolumioに飛ばすことも出来る。まさに一石二鳥ならぬ一ラズパイ二鳥。
USBでRME ADI-2 DAC FSに接続してやれば音質を損なうこともなく転送出来るし、ボトルネックとなっていたブートロードもNVMe SSDで解消。もう言うことないんじゃないの!と一人で喜んでおります。

RoonユーザーでRaspberry Piを持っているなら、Roon Ready化だけでも試してみる価値はありますよ。
特にRoonは負荷分散を基本設計としているため、ServerとOutputは分けたほうが良い結果が出やすいと思います。