Raspberry Pi Compute Module 5を買ったのでレビュー

Raspberry Pi Advent Calendar 2024の14日目です。今日はこちらのブログに投稿です。

先月末に発売されたRaspberry Pi Compute Module 5を買ってみたのでレビューしていきます。

最初に言うと、CM5は技適がまだなので、今回は電波暗箱で検証しています。技適未取得機器を用いた実験等の特例制度を申請して検証するのもアリだと思いますが、180日ごとに検証内容を変えてまで、技適マークがつくのをまたずに買うものかどうかは各自で判断が必要そうです。わたしの場合は、暗箱である程度検証が済んだら、無線チップはヒートガンで炙って剥がしてしまおうかと考えています。

Seeedさんでポチポチ

今回は、先に販売ページができてたSeeedさんで購入しました。ついでにSeeed XIAO RP2350が欲しかったのもあります。さらについででUSBハブもポチり。

CM5は、4GB RAM・32GB eMMC・無線ありモデルです。Dev Kitに含まれているのと同モデルのため、これがCM5の標準的なモデルに当たりのではないかと思っています。Pimoroniでは8GB RAMモデルなど別のモデルも展開されていますが、今のところ”無線なし”が売られているところは確認していません。よって、日本では現状は技適がないなりの対応が求められます。

IOボードは、購入時点では売られていなかったので、一旦はCM4のIOボードを流用する方向にしました。

しかし、もう少し待てば、PimoroniからIOボードとかも含めて一式が発売されていたので、焦らないで待てばよかったなあと後悔しました。あと、Seeedからの配送は2週間ほどかかり、Pimoroniで購入した勢の方が先に受け取っていたようなので、それもまた悔しみ。

外観とか

表面は冒頭の画像の通り。右上には、Pi5で登場した容量の表記があります。CM5はeMMCの概念もあるので、列は2つです。16GBはCM5のリリースでも触れられていましたが、シルク印刷は今のところ略されている模様。Pi 5で増えたRP1がどうなるか気になっていましたが、ちゃんと搭載されましたね。このおかげで、CM5でもUSB3.0が標準で使えるようになったのはいい話です。

裏面。CM4と比べると、チップ部品が増えた印象です。そして、部品の斜め配置も少し増えたなと言う感じです。eMMCはこちらに移動しました。CM5ではRP1チップが増えたので、追いやられた感がありますね。認証は、FCCIDとIC、KC IDの3つが見えます。PIPで確認するとFCC、CE、イスラエルとシンガポールしか確認できませんでしたが、KC IDって韓国だったような。

実際にCM4と並べて比較。下がCM5です。上のCM4がLite版なせいもあるとは思いますが、密度が違いますね。

表面もついでに比較。

側面。Pi 5では側面の加工が改善されてバリがなくなりましたが、CM5でも同じく側面がきれいな処理になりました。以前のモデルでは、届いてたらまず紙やすりで側面を削ったりしていましたが、そんな作業とはお別れです。

GbEのトランシーバーチップは、CM4から変わらず、BCM54210PEが採用されています。

無線チップも、RPi-RM0 Cモジュールが搭載されています。じゃあ技適とか問題ないんじゃないのって思うかもしれませんが、アンテナがCM5側にあるため、アンテナと込みで技適の取り直しが必要になると推測されます。これがRM2みたいに、アンテナも込みのモジュールだったら関係なくなるんじゃないかと思うのですが、そうはなってないし、推測の話をしてもしょうがないので忘れます。

ブートローダーEEPROMも、さりげなく裏面に移動していたので、いちおう。

さわるぞ!!

というわけでやっと本編(?)。実際に触っていきます。いつもJAMの開催スペースを提供くださっているミドクラさんから借用中の電波暗箱を活用させていただきました。

箱内の構成は、スイッチサイエンスさんの5A対応電源と、D-Sub9端子経由で有線LANで接続をします。今回使用したのはIOボードはWaveShareのCM4-IO-BASE-Bと、CM4-NANO-Bの2種類。前者はNVMe SSDの接続も含めた検証用で、校舎はeMMCの書き込み管理およびeMMCからブートして試験する用にしました。

CM4-NANO-Bを使用してeMMCに書き込む準備をした状態。箱の右側にあるUSB端子を経由してMacに接続します。有線LANはいらないですが、その後起動することも考えて一応。IOボードのBOOTスイッチをオンにしたら箱を閉じます。

eMMCへのRaspberry Pi OSの書き込み

eMMCにRaspberry Pi OSを書き込むには、usbbootリポジトリのrpibootコマンドを使用します。コンパイルの手順はREADMEに従ってください。

https://github.com/raspberrypi/usbboot

rpibootコマンドのコンパイルができたら、次のコマンドを実行して、USBケーブルを接続します。箱の外から伸ばしたUSBケーブルをMacに接続します。しばらくすると、eMMCストレージが見えるようになるので、後はRaspberry Pi Imagerで書き込みを行います。

$ sudo ./rpiboot -d mass-storage-gadget64

起動!

一度MacからUSBケーブルを抜いて箱を開き、BOOTスイッチを戻したら、電源ケーブルにつなぎ替えて箱を閉じます。箱の外のコンセントを接続して、Raspberry Piを起動します。

起動後は普通にSSHして、いつも通りに使えます。

IOボードの互換性?

今回使用しているIOボードは、いずれもCM4向けのボードです。USB3.0ポートはないため、USB3.0の性能を得ることはできませんが、USB2.0ポート、HDMIポート、LANポートは使えるようでした。LANはSSHで、HDMIはUSBキャプチャボードで、USB2.0ポートは適当なCircuitPythonなPicoボードで確認できました。カメラポートとかも確認すべきですが、今日は一旦割愛ということで。まあ、一通り使えていそうです。

USBキャプチャから得られたデスクトップ多少日本語化とかの調整をした後だけどなにもない

HSMIキャプチャの接続の様子。

NVMeのことを忘れていますが、これはIOボードをチェンジする必要があるので後述します。

eMMCの読み書き速度をみてみる

CM4では、eMMCの速度はややいまいちな印象でした。実際、ベンチマークを取ってみると、100MB/s以下と、もっさりめです。ちなみにベンチマークは https://pibenchmarks.com/ のテストを使用しました。

$ sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
(略)
MMC Type: eMMC v4 (Embedded) - Manufacturer: Samsung/SanDisk/LG - Model: AJTD4R - Size: 14.3G
(略)
     Category                  Test                      Result     
HDParm                    Disk Read                 75.54 MB/sec             
HDParm                    Cached Disk Read          76.34 MB/sec             
DD                        Disk Write                32.1 MB/s                
FIO                       4k random read            7922 IOPS (31690 KB/s)   
FIO                       4k random write           7449 IOPS (29799 KB/s)   
IOZone                    4k read                   18428 KB/s               
IOZone                    4k write                  22075 KB/s               
IOZone                    4k random read            20386 KB/s               
IOZone                    4k random write           20903 KB/s               

                          Score: 4701

では、CM5ではどうかと言うと……早い!!シーケンシャルリードは300MB/s、シーケンシャルライトは100MB/sと、普通に使うぶんにはまず困らない速度になりました。ランダム性能も100MB/s前後で悪くないですね。これは意外です。

$ sudo curl https://raw.githubusercontent.com/TheRemote/PiBenchmarks/master/Storage.sh | sudo bash
(略)
MMC Type: eMMC v4 (Embedded) - Manufacturer: Samsung/SanDisk/LG - Model: BJTD4R - Size: 28.6G
(略)
     Category                  Test                      Result     
HDParm                    Disk Read                 313.89 MB/sec            
HDParm                    Cached Disk Read          227.71 MB/sec            
DD                        Disk Write                109 MB/s                 
FIO                       4k random read            23594 IOPS (94377 KB/s)  
FIO                       4k random write           25006 IOPS (100024 KB/s) 
IOZone                    4k read                   45470 KB/s               
IOZone                    4k write                  69301 KB/s               
IOZone                    4k random read            44893 KB/s               
IOZone                    4k random write           56323 KB/s               

                          Score: 13136

NVMeはどう?

IOボードをCM4-IO-BASE-Bにチェンジして、NVMeの性能をみていきます。Jeffがすでにテスト済みらしいのですが、CM4向けのIOボードでもPCIe3.0x1接続でNVMeを使えるらしく、追試ということにして私も試してみました。

ちなみに、デフォルトのブート順はeMMCが先になっているので、EEPROMの設定を開いて、eMMCの順番を後ろにしておきました。

$ sudo rpi-eeprom-config -e

# Default BOOT_ORDER for provisioning
# NVMe -> USB -> SD -> Network
BOOT_ORDER=0xf2146

これでNVMeからブートするようになりましたので、PCIeのスピードを3.0に変更します。

$ sudo vi /boot/firmware/config.txt

[cm5]
dtparam=pciex1_gen=3

これで再起動して、ベンチマークを取ってみましょう。結果は……あれ、なんかリードが妙に遅いですね。ライトは早いんですけど。あと、ランダムリードも早いので、シーケンシャルリードだけなんかおかしいですね。SSSTC CL1-3D256-Q11 256GBを使いましたが、こいつが悪いのかしら。

     Category                  Test                      Result     
HDParm                    Disk Read                 156.65 MB/sec            
HDParm                    Cached Disk Read          125.58 MB/sec            
DD                        Disk Write                594 MB/s                 
FIO                       4k random read            155151 IOPS (620606 KB/s)
FIO                       4k random write           88658 IOPS (354632 KB/s) 
IOZone                    4k read                   243558 KB/s              
IOZone                    4k write                  198683 KB/s              
IOZone                    4k random read            62502 KB/s               
IOZone                    4k random write           232042 KB/s              

                          Score: 51281

というわけで、Samsung PM991a 256GBに変更して再テスト。結果は以下の通り、PCIe3.0x1っぽいスピード感を得られていました。ふぅ〜よかった。

     Category                  Test                      Result     
HDParm                    Disk Read                 748.64 MB/sec            
HDParm                    Cached Disk Read          664.08 MB/sec            
DD                        Disk Write                493 MB/s                 
FIO                       4k random read            208979 IOPS (835918 KB/s)
FIO                       4k random write           93090 IOPS (372363 KB/s) 
IOZone                    4k read                   208154 KB/s              
IOZone                    4k write                  173558 KB/s              
IOZone                    4k random read            57892 KB/s               
IOZone                    4k random write           193770 KB/s              

                          Score: 48226

既存環境でCM5をブートするときはそのままではUSB2.0が使えないので注意

既存環境でブートしてUSBデバイスを試そうとしたら、デバイスが認識しなくて「おや?」となりました。IOボードの五感の問題かと思ったらそうではなく、CM4ではotg_modeの設定を投入する必要があったのと同じように、CM5ではdwc2の設定が必要になるようでした。eMMCに導入した環境のconfig.txtには含まれていたので、古いバージョンからのアップデートでは自動挿入されないようです。それもそうか。

というわけで、既存環境にも設定を投入したところ、無事にUSB2.0ポートが認識するようになりました

[cm4]
otg_mode=1

# [cm4]と[all]の間あたりに差し込んでおく
[cm5]
dtoverlay=dwc2,dr_mode=host

[all]

まとめ!

届いたCM5を早速舐め回してみました。一晩でざっと触っただけなので、まだ全然見きれていないですが、CM5は逃げるわけではないので、ゆっくり触っていけたらと思っています。

そう、冬コミの執筆が終わったら、ゆっくり触りたいンゴね……(死)

Raspberry Pi Compute Module 5リリース

Raspberry Pi Ltd.は11月27日に、Raspberry Pi Compute Module 5(CM5)をリリースしました。

https://www.raspberrypi.com/news/compute-module-5-on-sale-now

Raspberry Pi Compute Moduleは、おもに産業向けに開発された、モジュール用のRaspberry Piシリーズです。CM5は、CM4のフォームファクターを維持しながら、Raspberry Pi 5に搭載されたRP1を搭載しており、CM4にはなかったUSB3.0x2ポートを新たにサポートします。CM4とは多くの後方互換性がありますが、USB3.0ポートを搭載する代わりに2-lane MIPIインターフェイスが削除されるなど、いくつかの変更もあります。

CM4と同様、RAMの容量、eMMCストレージ、無線の有無に応じた多数のバリアントが存在します。RAMは2/4/8/16GBの4種類(16GBが追加。2025年に発売予定)、eMMCは0/16/32/64GBの4種類(64GBが追加)が選択可能です。これらの組み合わせに応じて、45ドルから135ドルで販売されます。

CM5に合わせて、CM5用パッシブクーラー(ヒートシンク)が5ドル、CM5用の新たなIOボードが20ドル、IOケースが15ドル発売されます。

さらに、CM5本体(無線あり・4GB RAM・32GB eMMC)といくつかのアクセサリをセットにしたDevelopment Kitも130ドルで発売されます。

CM5と関連アイテムは認定リセーラーを通じて販売されます。また、無線付きモデルは、日本では技術基準適合証明の取得が完了していないため、取得が確認されて、日本のリセーラーによる販売が開始するのを待つ必要があります。

※CM5は産業向けのため、希望のモデルが個人向けショップで購入できるとは限らない点にご注意ください。