皆さんはシングルボードコンピュータ(SBC)と呼ばれる基板一枚で動作する小さなコンピュータを触ったことはありますでしょうか。イチケンチャンネルでは以前動画でRaspberry Pi 4を紹介しました。

今回はRSコンポーネンツ様から最新の高性能シングルボードコンピュータ「ROCK 5」シリーズをご提供いただきましたので、現在販売されているAモデルとBモデルそれぞれについて特徴と性能について掘り下げつつ、その使用感やRaspberry Piとの違いについてレビューします。

動画
詳細なレビューの様子についてはYouTube動画も公開していますので、ぜひあわせてご覧ください。
各モデルのラインナップについて
ROCK 5シリーズには、基本的なフォームファクタがRaspberry Piシリーズと同じAシリーズと、さらに機能を増やした上位版であるBシリーズがラインナップされています。
両モデルともメモリ容量ごとに4, 8, 16GBの選択肢があり、それぞれの価格については以下のとおりです。(2024年2月時点)

RAM容量が最大24GBまで用意されているので幅広い用途に合わせて選択することができます。ただし、最近販売が開始されたRaspberry Pi 5の価格が8GBで15,000円程度ですので、競合モデルであるROCK 5Aは5000円程度割高となります。
SoCについて
ROCK 5AではCPU(他の機能も搭載しているので正しくはSoC)にRockchip RK3588S
を採用しています。これはRaspberry Pi5 でも使用されているCortex-A76
の4コアに、さらにCortex-A55
を4コア加えた合計8コアを搭載したものです。オクタコアですね。
ROCK 5BはRockchip RK3588
で、PCIe3.0に対応した以外は基本的に前述のRK3588S
と同じようです。
ROCK 5Aモデルの特徴
外観
まず基本モデルとなるROCK 5Aから見ていきましょう。外観の形状はRaspberry Piシリーズそっくりです。

こちらのROCK 5シリーズを販売しているRSコンポーネンツは数年前までRaspberry Piシリーズの製造・販売を受託していましたが、現在は撤退しています。その後、RSコンポーネンツのグループ企業であるOKdo(radxaが開発)が取り扱うROCKシリーズの販売に注力するようになったというわけです。
競合との比較

ROCK 5Aは他のRaspberry Piフォームファクタを採用したSBCと同じように、外観は非常にRaspberry Piシリーズに似ています。左から順にROCK 5A、Raspberry Pi 5、Raspberry Pi 4を並べた様子です。
USB Type-CポートやmicroHDMI、ピンヘッダなどコネクタ類の位置、基板のネジ穴の位置は完全互換であることが分かります。
なお、Raspberry Pi4は何故か歴代モデルとUSB Type-AコネクタとLANポートの配置が入れ替わっていましたが5で元に戻っています。4の設計に影響を受けていると思われるRock 5Aはコネクタの配置がPi4と同じです。
Pi5も買いました
画像にも登場したようにRaspberry Pi 5も既に入手しています。近いうちにこちらのレビュー動画も公開したいと思いますので、是非お楽しみに。
ストレージ

Raspberry Piシリーズとの一番の違いは、このM.2コネクタです。ROCKモデルAには上面に2230サイズのE-keyソケットが付いており、こちらには主にWi-Fiカードなどが後付けできます。ただし、その影響かROCK 5Aには標準でWi-FiやBluetoothなどの無線通信機能は搭載されていません。
ROCKシリーズも以前のモデルではオンボードで無線機能を搭載していたようですが、特にRaspberry Piと互換形状になったROCK 3以降はWi-Fiなどの無線機能を標準で搭載することはせず、M.2コネクタでの後付けや上位グレードで実装という形態をとっているようです。
ROCK 5Bモデルの特徴
外観
次にROCK 5Bの方を見ていきます。こちらはROCK 5Aと比べて一回りサイズが大きく、Raspberry Piというよりも謎の半導体メーカーNVIDIAのJetson Nanoに近い印象です。

ROCK 5Bの搭載機能
Raspberry Piシリーズと同じサイズという制約から解き放たれたROCK 5Bは、基板が大型化した分ペリフェラル周りの機能もだいぶ増えています。GPIOやUSBコネクタについてはROCK 5Aと変わらない印象ですが、HDMIコネクタはフルサイズが2つになっており、反対側のmicroHDMIポートは入力に対応しました。
また、最大の特徴として2.5Gbitイーサネットに対応しています。

基板表面にはROCK 5Aと同様の2230サイズのカードに対応したM.2 E-Keyコネクタがあり、また、裏面には2280サイズのNVMe SSDに対応したM.2 M-Keyコネクタがあります。
ROCK 5AではeMMCかmicroSDカードからの起動しかできませんでしたが、ROCK 5BではNVMe SSDを接続し、SSD上にインストールしたOSイメージを非常に高速にブートすることも可能です。これについては後ほど比較検証しています。

また、RTC用の電池コネクタもあり、これによってネットワークに繋いでいない状態で電源を切った場合でも時刻を保持できるようになります。ROCK 5Aでもパターン自体は用意されていたようですが、コネクタが実装されているのはROCK 5Bの方だけです。
本体を見ていて気づいた点など
Raspberry Piは世代が進むごとにどんどん消費電力と発熱量が増えています。それはRockでも同様で、RockにはCPUファン用のコネクタが付いています。(Raspberry Piも5から付いたようです)

一応公式のアナウンスでは5A, 5Bともにファンレスでの動作も可能のようですが、周辺機器を繋いでGUIで使っているだけでもかなり熱くなります。ヒートシンクについてはファンマウントの穴位置などRaspberry Piシリーズと互換性はあるように見えますが、SoCの位置が異なるためPi4とヒートシンク自体の互換性はありません。

なお、ROCK 5Bでは基板裏面のM.2スロットにSSDが装着できますが、こちら両面実装の物を使うと純正ヒートシンクのプッシュリベットと干渉するようなので注意が必要です。

また、細かいことですが電源ボタンが付いているのもありがたいと思いました。シャットダウンした後に再び電源を入れる際など、ケーブルを抜き差しする手間がなくなります。
試用
ここまでスペックと外観について見てきましたが実際に電源を繋いで使用していきたいと思います。なお、今回は上位モデルであるROCK 5Bの方をメインに使用しています。
使い始めるまでの準備
OSイメージ
OSイメージにはradxa公式で配布されている、デスクトップ環境(KDE)の入ったrock-5b_debian_bullseye_kde_b39.img.xz
を使用しています。公式のビルド以外にもユーザーがビルドした 他のディストリビューションイメージ も多数あるようなので、いろいろ試してみるのもいいかもしれません。
ログイン
標準でSSHが有効になっていたので、まず最初にSSH接続を試してみました。また、標準でmDNSが有効になっているのでrock-5b
で名前解決して接続できるのは親切ですね。

また、SSH経由でapt intstall
を叩くことで、xrdpなどのリモートデスクトップ環境のインストールまでヘッドレスで行うことが出来ます。実際にWindows側から接続も試しましたが、非常に快適に使用できます。

webブラウジングテスト
基本的なネットサーフィンや、YouTubeでの動画再生などは問題なくできました。デスクトップPC等との使用感と比べてしまうと多少モッサリな感じはありますが、特に支障はありません。

サーモグラフィで基板本体の発熱を確認してみると、動画再生中で71~73℃、アイドル時で61℃程度となりました。CPUが8コア構成になっているということもありそこそこ発熱している印象ですが、それでも通常のネットブラウジング程度では周辺回路など他の部分の発熱のほうがまだ目立つ程度の発熱と言えます。

動画編集ソフト
次に、もう少し重い動作をさせてみるため、Linux上で動く動画編集ソフトのOpenShot Video Editor
を使用して動画素材のエンコードを行ってみました。後述するROCK純正ヒートシンクを取り付けての試験です。

エンコードを開始すると段々と温度が上昇していき、ヒートシンクのファンが回転した状態で概ね50℃台で安定します。GUI上でソフトを使用しながらフルHDのエンコードをかけていますが、これといって動作に問題があるわけでもなく普通のパソコンと同じように使用できています。


カメラモジュールデモ
Raspberry Piにもありましたが、ROCK純正のカメラモジュールについてもRSコンポーネンツ様より提供いただきましたので、こちらも接続して動作を確かめていきたいと思います。
今回はカメラデモンストレーションとしてOpenCVで顔検出を行うPythonスクリプトを作成しました。今回のデモンストレーションで使用したソースコードはイチケンのGitHubリポジトリ上で公開していますので、興味のある方は是非覗いてみてください。
リアルタイムで顔検出処理をして、その結果をリアルタイムでモニタに表示している様子です。
出来合いの学習済みモデルを利用している都合上、認識精度はそこまで高くありませんが、実用十分なフレームレートが出ているかと思います。

今回のデモでは、検知した人の顔部分に緑の枠を描画し、さらにその範囲内から目を検出して赤色の枠を描画する処理を行っています。
放熱について
発熱について。撮影以外でも色々と検証を重ねていましたが、多少重たい処理が走った際などはサーマルスロットリングが起きているのかCPUのクロックが如実に下がってパフォーマンスが低下するような場面がありました。
約80℃程度でサーマルスロットリングが発生するようでしたので、やはりヒートシンクはあった方が良いかと思います。
ヒートシンクの取り付け
今回はradxa純正ヒートシンクを使用しました。ヒートシンク自体はアルミむき出しの状態で届きましたので、必要に応じてCPUグリスなどを用意してください。


今回は付属のカット済み熱伝導シートを貼り付け、CPUグリスを塗って取り付けます。なお、ヒートシンクは2枚あるRAMのうち1枚に熱伝導シート越しに触れる構造なのですが、基板外側の方のRAMには接触しない構造になっています。これで正しいようです。
なお、(恐らくPi 5にも使える)ROCK純正ヒートシンクは上記リンクから700円程度で購入できます。
ファンコントロールについて
標準のOSのイメージにはファンをコントロールするようなプログラムは特に含まれていませんでした。一応ファンの制御自体はできるようで、有志が制御ソフトウェアを開発してGitHubで公開しているものを見つけましたので、以下にリンクを付しておきます。
ベンチマーク比較
次に、ROCK 5Aと5Bの性能評価を行っていきます。
CPU
unixBenchによってSoC(CPU)の性能を比較した結果、以下のようになりました。

ROCK 5Aと5Bで計算能力に差は無いという結果になりました。50程度あるスコア差もボードを動かしている環境による誤差かと思います。
参考までに、Raspberry Pi 5(8GBモデル)でも同じunixBenchをビルドして走らせています。こちらはROCK 5シリーズの5200に比べて3500程度とかなり差がついた印象です。ですので、特にCPU処理を重要視する場合にはROCKシリーズは良い選択肢となるのではないでしょうか。
グラフィック
GPUの処理性能比較についてはmixBenchを使用しました。ROCKのスコアを以下に示しますので、他の製品と比較する際の参考にしてください。

ネットワークI/Fのベンチマーク
ROCK 5Bでは2.5Gbitイーサネットを搭載しています。M.2スロットに搭載したWi-Fiモジュールと有線でネットワーク速度テストも実施しました。ここでは結果のみで、実際のセッティングなどは動画の方で詳しく取り上げていますので、そちらも是非ご覧下さい。

計測結果は以下のとおりです。

同じLAN内にあるiperf3のサーバに対してクライアントモードで速度テストを行いました。
有線LANでは2350Mbpsと、ほぼ2.5Gbitイーサネットの帯域を使い切れている結果でした。Wi-Fiでは620Mbpsという結果に落ち着きましたが、こちらも思ったよりは良い数字かと思います。
NVMe SSDで何が変わる?
ROCK 5Bでは基板裏面のM.2 M-Keyスロットに搭載した2280サイズの普通のNVMe SSDから起動することができることは先程紹介したとおりです。今回はストレージの速度テストと、OSの起動時間の比較を行いました。
起動速度比較
起動速度計測と指標としてSDカードを使用した場合との起動速度の計測を行いました。同じOSをインストールし、電源ボタンを押してからログイン画面が表示されるまでを起動時間と定義しています。

結果として、microSDでは22秒だった起動時間を、13秒まで縮めることができました。
また、NVMe SSDが使用できるということで、速度だけでなく書き換えに対する耐久性などの面でも他のmicroSDを起動ドライブとしているシングルボードコンピュータに対して大幅なアドバンテージが得られます。
SSDの速度ベンチマーク
次に、純粋なストレージ速度のベンチマークも行いました。結果は以下のとおりです。

シーケンシャルライトで1155MB/sと、かなりの速度が出せることがわかります。これらの結果から、ファイルサーバ等の用途で大容量のデータの読み書きが発生する場合はNVMe SSDを使用したほうがよいでしょう。
SSD計測時のdiskspd
コマンドのログはこちら
今回、SSDにはLexar NM620の256GBモデルを使用しました。lsblk
コマンドでNVMeのSSDがマウントされていることが確認できます。
rock@rock-5b:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
zram0 254:0 0 3.8G 0 disk [SWAP]
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 16M 0 part /config
├─nvme0n1p2 259:2 0 300M 0 part /boot/efi
└─nvme0n1p3 259:3 0 238.2G 0 part /
シーケンシャルリードの結果(SSD)
rock@rock-5b:~$ diskspd -c1G -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w0 -L ./SEQ1M_Q8T1
Command Line: diskspd -c1G -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w0 -L ./SEQ1M_Q8T1
System info:
processor count: 8
caching options: fua=0
Input parameters:
job: 1
________
duration: 5s
warm up time: 0s
measuring latency
random seed: 0
total threads: 1
path: './SEQ1M_Q8T1'
size: 1073741824B
using O_DIRECT
performing mix test (read/write ratio: 100/0)
block size: 1048576
using sequential I/O (stride: 1048576)
number of outstanding I/O operations: 8)
thread stride size: 0
filling I/O buffers with random data
threads per file: 1
block device: nvme0n1
device scheduler: none
Results for job 1:
test time: 5s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 99.80% | 7.41% | 92.38% | 0.00% | 0.20%
1 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
2 | 0.40% | 0.20% | 0.20% | 0.00% | 99.60%
3 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
4 | 0.20% | 0.20% | 0.00% | 0.00% | 99.80%
5 | 0.80% | 0.00% | 0.80% | 0.00% | 99.20%
6 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
7 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
-------------------------------------------------------
avg: 12.65% | 0.98% | 11.67% | 0.00% | 87.35%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 15956180992 | 15217 | 3043.40 | 3043.40 | 1252.712 | 58271.292 | ./SEQ1M_Q8T1 (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 15956180992 | 15217 | 3043.40 | 3043.40 | 1252.712 | 58271.292
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 15956180992 | 15217 | 3043.40 | 3043.40 | 1252.712 | 58271.292 | ./SEQ1M_Q8T1 (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 15956180992 | 15217 | 3043.40 | 3043.40 | 1252.712 | 58271.292
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 0 | 0 | 0.00 | 0.00 | 0.000 | N/A | ./SEQ1M_Q8T1 (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 0 | 0 | 0.00 | 0.00 | 0.000 | N/A
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | 1.669 | N/A | 1.669
25th | 2.605 | N/A | 2.605
50th | 2.621 | N/A | 2.621
75th | 2.642 | N/A | 2.642
90th | 2.674 | N/A | 2.674
95th | 2.706 | N/A | 2.706
99th | 2.759 | N/A | 2.759
3-nines | 3.705 | N/A | 3.705
4-nines | 2717506.49 | N/A | 2717506.496
5-nines | 2717506.82 | N/A | 2717506.823
6-nines | 2717506.82 | N/A | 2717506.823
7-nines | 2717506.82 | N/A | 2717506.823
8-nines | 2717506.82 | N/A | 2717506.823
9-nines | 2717506.82 | N/A | 2717506.823
max | 2717506.82 | N/A | 2717506.823
シーケンシャルライトの結果(SSD)
rock@rock-5b:~$ diskspd -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w100 -L ./SEQ1M_Q8T1
Command Line: diskspd -Zr -b1M -d5 -o8 -t1 -W0 -Sd -w100 -L ./SEQ1M_Q8T1
System info:
processor count: 8
caching options: fua=0
Input parameters:
job: 1
________
duration: 5s
warm up time: 0s
measuring latency
random seed: 0
total threads: 1
path: './SEQ1M_Q8T1'
size: 1073741824B
using O_DIRECT
performing mix test (read/write ratio: 0/100)
block size: 1048576
using sequential I/O (stride: 1048576)
number of outstanding I/O operations: 8)
thread stride size: 0
filling I/O buffers with random data
threads per file: 1
block device: nvme0n1
device scheduler: none
Results for job 1:
test time: 5s
*****************************************************
CPU | Usage | User | Kernel | IO Wait | Idle
-------------------------------------------------------
0 | 37.31% | 1.95% | 35.36% | 62.69% | 0.00%
1 | 0.60% | 0.40% | 0.20% | 0.00% | 99.40%
2 | 0.20% | 0.00% | 0.20% | 0.00% | 99.80%
3 | 0.20% | 0.00% | 0.20% | 0.00% | 99.80%
4 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
5 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
6 | 0.00% | 0.00% | 0.00% | 0.00% | 100.00%
7 | 0.20% | 0.00% | 0.20% | 0.00% | 99.80%
-------------------------------------------------------
avg: 4.81% | 0.29% | 4.52% | 7.84% | 87.35%
Total IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 6055526400 | 5775 | 1155.00 | 1155.00 | 2274.719 | 65097.881 | ./SEQ1M_Q8T1.dat (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 6055526400 | 5775 | 1155.00 | 1155.00 | 2274.719 | 65097.881
Read IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 0 | 0 | 0.00 | 0.00 | 0.000 | N/A | ./SEQ1M_Q8T1.dat (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 0 | 0 | 0.00 | 0.00 | 0.000 | N/A
Write IO
thread | bytes | I/Os | MB/s | I/O per s | AvgLat(ms) | LatStdDev | file
-------------------------------------------------------------------------------------------------------
0 | 6055526400 | 5775 | 1155.00 | 1155.00 | 2274.719 | 65097.881 | ./SEQ1M_Q8T1.dat (1073741824B)
-------------------------------------------------------------------------------------------------------
total: 6055526400 | 5775 | 1155.00 | 1155.00 | 2274.719 | 65097.881
%-ile | Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
min | N/A | 5.854 | 5.854
25th | N/A | 6.283 | 6.283
50th | N/A | 6.394 | 6.394
75th | N/A | 6.493 | 6.493
90th | N/A | 6.585 | 6.585
95th | N/A | 6.693 | 6.693
99th | N/A | 19.315 | 19.315
3-nines | N/A | 1870934.03 | 1870934.030
4-nines | N/A | 1870937.57 | 1870937.571
5-nines | N/A | 1870937.57 | 1870937.571
6-nines | N/A | 1870937.57 | 1870937.571
7-nines | N/A | 1870937.57 | 1870937.571
8-nines | N/A | 1870937.57 | 1870937.571
9-nines | N/A | 1870937.57 | 1870937.571
max | N/A | 1870937.57 | 1870937.571
まとめ
ここまでRSコンポーネンツの販売するradxaのROCK 5AとROCK 5Bについて色々とレビューしてきました。
イチケンとしては、個人用ファイルサーバや、防犯カメラ用の録画サーバなどの用途に最適なのではないかと思いました。
皆さんでしたらROCK 5シリーズの使い方としてどのような用途が思いつくでしょうか。
Raspberry Pi同様、本機はIoT機器としても非常に魅力的です。その可能性と市場への影響について考察します。
ROCKの特徴とそれらを活かせる場
ここまでレビューしてきて見えたROCK 5シリーズとRaspberry Piとの決定的な違いは
・microSDと比べて大容量かつ高速なストレージが使えること
・Wi-Fiを非搭載であること
の2点でした。
今回ご依頼を頂いたRSコンポーネンツの方に聞いた話では、大容量のSSDを積んで、アニメの制作スタジオでデータ保存用のファイルサーバとして使われている事例などもあるようです。
また、産業用途で使用するメーカーの視点に立って考えてみると、Wi-Fi非搭載であるが故に各国の電波に関する法規の影響を受けずに素早く流通させることができ、製品の開発期間を短縮できる点はメリットと言えます。
実際ROCK 5はRaspberry Pi 5よりもだいぶ早く2023年1月ごろには日本国内で入手できる状態になっていたようです。
また、Raspberry Piにはない機能としてA/Dコンバータを搭載しています。アナログセンサを接続してIoT機器のような使い方もできるかと思います。CPUの処理性能もRaspberry Piシリーズより優れていますので、計算能力を活かしたエッジコンピューティング的な用途にも向いているかもしれません。
通信機能を最低限とし、ストレージや処理能力などを強化することでユーザ側での選択肢を増やし、Raspberry Piクローンの枠を越えた独自の方向性が築かれているという印象を受けました。
もしROCKシリーズが気になった方は、ぜひRSコンポーネンツのホームページをご確認ください。
このように、尖った性能を持ったSBCが登場することに期待しつつ、業界の今後の動向に注目していきたいと思います。
コメント