Raspberry Pi 5の電源回りを確かめてみる

あっきぃです。

Raspberry Pi 5が出たら多分騒ぎになるのかな……?と思っていた電源周りが、やはり騒ぎになっているようです。

最小要件が5V/3Aなのはまだ良いのですが、推奨要件(USBとか諸々電気を使う場合)の5V/5AのUSB-C PD電源という点がなかなかのクセモノになりそうです。

5V/5Aに対応したPD電源アダプターは世の中にほぼ存在せず(オフィシャル電源アダプターもカスタムPDOというもので実装しているようです)、USB PD3.1のEPRに沿えば5V/5Aの出力が可能になるように見えます(※)。PDについては私も詳しくなく、検索などで追って徐々に理解している段階です。

※参照元はこちら。ただ、他の記述を見つけられず、本当なのかどうか……?
https://www.graniteriverlabs.com/ja-jp/technical-blog/usb-power-delivery-specification-3-1

とは言え、5V/5Aが必須なわけではなく、あくまで推奨の話だと思いたいですよね。もちろん、USB SSDを接続したり、将来的にリリースされるM.2 HATを搭載したりすれば、5V/5Aが必要なのは想像できますが、一旦置いといて、ここでは最小要件の3Aでどこまで問題なく使用できるかを確認してみたいと思います。合わせて、消費電力や、発熱、サーマルスロットリングや電圧低下の起こり具合についても見ていきます。

構成

前回の性能検証の記事を書いた時点で作ればよかったのですが、ドタバタしていましたので、ここで改めて検証の構成を解説します。

日本では技適の取得が完了していないため、検証を行うには、シールドボックスに投入して電波を十分に減衰させるか、「技適未取得機器を用いた実験等の特例制度」を用いて180日間内で検証する方法があります(※)。ユーザー会では、以前よりスイッチサイエンスさんからお借りしているシールドボックスがありますので、シールドボックスに入れて検証を行っています。

※検証後は廃止手続き(電波の発射を防止するために必要な措置を講じる、つまり電源を入れないようにする。額縁に入れて飾るとかでしょうかね?)が必要です。また、技適取得前に入手したものについては技適マークが無いため、今後技適の取得が完了したとしても利用可能にはならない点にも注意が必要です。基本的には技適の取得が完了して国内リセーラーが発売するまで購入は待ちましょう。

シールドボックス内外の接続は以下の図の通りです。

Raspberry Pi 5をシールドボックスに入れてながら使用するための電源・USB・ネットワークなどの接続図

電源は、市販のUSB-AC電源(Anker 735)と、USB PDに対応したケーブルを使用しました。ボックス外は、ワットモニターに接続して消費電力が計測できるようにします。

ネットワークは、ボックス内でUSB3.0-LAN変換アダプターを使用して接続し、ボックス外に出るためのUSB端子に接続します。ただし、ボックスのUSB端子はUSB2.0のため、性能は480Mbps内に制限されます。ボックス外で、Raspberry Pi 4で作ったネットワークブリッジにUSB接続し、LANに接続可能としています。iperf3での実測は200Mbps程度でしたが、ログインしたりテストに必要なパッケージを取得する程度ならなど十分でしょう。もしGbEのテストをするときは、ボックス内にPi4などを追加で投入してテストすれば対応可能です。

ボックスのもう一つのUSB端子には、Rspberry Pi Debug Probeを接続しています。これを用いることで、OS起動前の情報が取得できますし、OS起動後もシリアル通信でログインして操作することが可能です。

まずは小さいヒートシンクだけでSDカード起動してみる

いままでのRaspberry Piなら許された、適当な小さいヒートシンクと、MicroSDカード(Samsung EVO Plus 64GB)の組み合わせで起動してみます。シールドボックスの様子はこちら(Debug Probeが光っていますが、これは端末からの給電のためで、Raspberry Pi 5にはまだ通電していません)。

シールドボックに、MicroSDカードを挿入したRaspberry Pi 5、USB-LANアダプター、Raspberry Pi Debug Probe、USB-AC電源を入れ、接続を済ませた様子。

シリアル接続しながら通電を開始すると、以下のようなメッセージが表示されます。

RPi: BOOTSYS release VERSION:3094eda5 DATE: 2023/09/21 TIME: 17:58:43
BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1695315523 serial ******** boardrev d04170 stc *******
AON_RESET: 00000003 PM_RSTS 00001000
RP1_BOOT chip ID: 0x20001927
PM_RSTS: 0x00001000
part 00000000 reset_info 00000000
PMIC reset-event 00000000 rtc 00000004 alarm 00000000 enabled 0
uSD voltage 3.3V
Initialising SDRAM 'Micron' 32Gb x2 total-size: 64 Gbit 4267
DDR 4267 1 0 64 152
RP1_BOOT chip ID: 0x20001927

RP1_BOOT chip ID: 0x20001927
RP1_BOOT: fw size 25968
PCI2 init
PCI2 reset
PCIe scan 00001de4:00000001
RP1_CHIP_INFO 20001927

RPi: BOOTLOADER release VERSION:3094eda5 DATE: 2023/09/21 TIME: 17:58:43
BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1695315523 serial ******** boardrev d04170 stc *******
AON_RESET: 00000003 PM_RSTS 00001000
 status
USB_PD CONFIG 0 41
Boot mode: SD (01) order f4
SD HOST: 200000000 CTL0: 0x00800f02 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD HOST: 200000000 CTL0: 0x00800f02 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
OCR c0ff8000 [313]
CID: 001b534d454331533530d5186366a166
CSD: 400e00325b590001dd7f7f800a400000
SD: bus-width: 4 spec: 2 SCR: 0xeeeeeefe 0xeeeeefef
SD CMD: 0x333a0010 (51) 0x59b40000 0x1fff0206
Failed to open device: 'sdcard' (cmd 333a0010 status 1fff0206)
Retry SD 1
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
OCR c0ff8000 [2]
CID: 001b534d454331533530d5186366a166
CSD: 400e00325b590001dd7f7f800a400000
SD: bus-width: 4 spec: 2 SCR: 0x02058083 0x00000000
SD HOST: 200000000 CTL0: 0x00800f04 BUS: 50000000 Hz actual: 50000000 HZ div: 4 (2) status: 0x1fff0000 delay: 2
MBR: 0x00002000, 1048576 type: 0x0c
MBR: 0x00102000,124116992 type: 0x83
MBR: 0x00000000,       0 type: 0x00
MBR: 0x00000000,       0 type: 0x00
Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs     ' clusters 261116 (4)
rsc 32 fat-sectors 2040 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 261116
[sdcard] autoboot.txt not found
Trying partition: 0
type: 32 lba: 8192 'mkfs.fat' ' bootfs     ' clusters 261116 (4)
rsc 32 fat-sectors 2040 root dir cluster 2 sectors 0 entries 0
FAT32 clusters 261116
Read config.txt bytes     1229 hnd 0xfef7
[sdcard] pieeprom.upd not found
usb_max_current_enable default 0 max-current 3000
Read bcm2712-rpi-5-b.dtb bytes    71797 hnd 0xcb56
dt-match: compatible: raspberrypi,5-model-b match: brcm,bcm2712
dt-match: compatible: brcm,bcm2712 match: brcm,bcm2712
PM_RSTS 00001000
Selecting USB low current limit

Raspberry Pi 5内の各デバイスの初期化に関するメッセージや、ブートデバイスを探して起動しようとするメッセージが見られます。そして最後の「Selecting USB low current limit」が、5V/5A電源を検出できず、USBポートの供給は600mAまでとして起動しますよ、というメッセージですね。

起動中にワットモニターが表示した消費電力は、3〜6Wの範囲でした。

このあとのシリアルの出力はOSに変わり、少しするとOSのログインプロンプトが出力されます。

NOTICE:  BL31: v2.6(release):v2.6-239-g2a9ede0bd
NOTICE:  BL31: Built : 14:26:57, Jun 22 2023
[    0.902716] spi-bcm2835 107d004000.spi: no tx-dma configuration found - not using dma mode

Debian GNU/Linux 12 pios5 ttyAMA10

pios5 login: 

起動が完了したあとの消費電力は3.3W〜3.5Wくらいで安定しました。つまり0.66Aくらいですね。また、しばし放置してから vcgencmd measure_temp コマンドでCPU温度を取得すると56度ほどでした。空気がこもるシールドボックス内での測定のため、通常の室内などではもう少し低く推移する可能性が考えられます。

yes >/dev/null & を4つ投入して、CPUを全部100%にしてみます。消費電力を観察しつつCPU温度も確認したところ、10Wまで消費電力が上昇しますが、CPU温度が85度に達したところで、消費電力が7.5〜8Wくらいまで下がりました。サーマルスロットリングが働いたことがわかります。また、電圧低下も時々発生していました。アイドル時の56度からyesコマンドを実行してサーマルスロットリングが働くまでの時間は、40秒ほどでした。

Alasdair Allan氏(Raspberry Pi Ltdの方)が公開している、スロットルを確認するスクリプトでも、電圧低下・スロットル・周波数のキャッピングが発生したことが確認できました。

https://gist.github.com/aallan/0b03f5dcc65756dde6045c6e96c26459

$ ./throttled.sh 
Status: 0xf0008
Undervolted:
   Now: NO
   Run: YES
Throttled:
   Now: NO
   Run: YES
Frequency Capped:
   Now: NO
   Run: YES

ヒートシンクのみ、SDカードブートの環境では、アイドル時の消費電力3.3W・CPU温度56度、負荷をかけると消費電力10W・CPU温度は最大85度(以降はサーマルスロットリングで温度維持を優先した周波数以下などが発生)となりました。

小さいヒートシンクにファンを加えてSDカード起動

本来はオフィシャルのケースもしくはActive Coolerがあればよかったのですが、あいにくこちらのサンプルは無いため、先述の小さいヒートシンクで対応しています。ここにPimoroniのFan Shimを追加して、ヒートシンクを空冷しながら動かすとどうなるか確かめます。

Pimoroni Fan Shimを接続したRapberry Pi

まずはアイドル状態。ファンの動作が増えるため、消費電力は3.8W前後に変化します。一方、CPU温度は40度前後で安定しました。

続けてyesコマンドで負荷をかけます。1分ほどかけて65度近くまで上昇しますが、その後は上昇が緩やかになります。2分程で電圧低下とスロットルが検知されますが時々瞬間的に起こるだけのようで、周波数のキャップは発生せずに温度上昇を緩やかに続け、最終的に70度で一旦安定しました。消費電力は10W前後を維持していたため、スロットリングによる性能低下は防げていそうです。おそらく、これ以降は続けてもシールドボックス内の温度上昇次第になりそうなので負荷かけは停止しました。

ヒートシンク+ファンと、SDカードブートの環境では、アイドル時の消費電力3.8W・CPU温度40度、負荷をかけると消費電力10W・CPU温度は70度前後となりました。

ヒートシンク+ファンでUSB SSDブート

USB SSDブートにするとどうなるか確かめます。NVMe SSDをUSBに変換するケースに入れたものをUSB3.0ポートに接続して起動します。M.2 HATが発売されたら、USB3.0ではなく直接PCI Expressで接続できるようになりますね。USBとPCIeでの速度の違いを確かめたりするのが楽しみです。

MicroSDの代わりにNVMe SSDをUSB変換したデバイスから起動しようとするRaspberry Pi 5

通電すると、シリアル通信で以下のメッセージが表示されました。

***
USB boot requires high current (5 volt 5 amp) power supply.
To disable this check set usb_max_current_enable=1 in config.txt
or press the power button to temporarily enable usb_max_current_enable
and continue booting.
See https://rptl.io/rpi5-power-supply-info for more information
***

USBブートの場合、3Aのモードでの起動はサポートされないため、以下のいずれかの対応が必要になります。

  • 5V/5Aの電源を接続する(Raspberry Pi 公式の推奨)
  • usb_max_current_enable=1 を /boot/config.txt に投入して無視する
  • 電源ボタンを1回押して、今回だけ無視する

シールドボックスを開けてボタンを押すのはよろしく無いので、一旦電源を切り、config.txtに設定を投入しました。再度起動すると、起動時のメッセージに、以下のようにメッセージが表示され、無理やりUSB SSDブートが開始します。ただ、やはり無理矢理なので、起動時にさっそく電圧低下が表示されてしまいました。

usb_max_current_enable forced to 1
(中略)
[    6.112188] hwmon hwmon2: Undervoltage detected!

Debian GNU/Linux 12 pios5 ttyAMA10

pios5 login: 

起動が終わってアイドル状態の消費電力は5.3Wほどでした。ここでやっと1Aを超えましたね。CPU温度はファン付きのため38.9度前後でした(設定変更などでボックスを開け閉めしたため下がった様子)。

yesコマンドで負荷をかけます。すると、消費電力は先程より低く9W前後、温度上昇もやや緩やかでした。先程のスクリプトを実行すると、電圧低下とスロットルがオンになりっぱなしになっていました。周波数キャップにはなっていないものの、さすがに電圧不足が出たままになってしまうようです。

./throttled.sh 
Status: 0x50005
Undervolted:
   Now: YES
   Run: YES
Throttled:
   Now: YES
   Run: YES
Frequency Capped:
   Now: NO
   Run: NO

yesコマンドを停止すると、電圧低下もスロットルもすぐにオフに変化しました。

5Aを供給していない環境で、警告を無視してUSBブートした環境では、負荷が高い処理をかけると電圧低下になりやすいことがわかりました。

動作自体が極端に不安定になるわけではないですが、aptでパッケージを入れる程度でも電圧低下が発生するため、USB SSDブートをしたい場合は公式の電源(5V/5A電源)が必須と言えそうです。

まとめ

MicroSDカードから起動する場合は、5V/3A出力の電源アダプターでもおおむね問題なく動作しました。

USB SSDから起動する場合は、3Aで無理やり起動すること自体は可能ですが、電圧低下が発生しやすいため、公式の推奨通り公式の電源アダプターが必要そうです。

消費電力は、アイドル時であれば3.3Wなど、それほど気になる消費電力ではありませんでした。また、負荷をかけてもSDカード環境であれば10W(2A)程度などで済むようでした。

また、温度に関しては、ヒートシンクのみであればおそらく60度以下で動作します。むき出しの状態かつ常に手に握りしめながら使うなどしなければおそらく問題はありません。ただ、負荷が大きくかかり続ける環境等では厳しくなる可能性があるため、安定動作させるにはファンがあると安心でしょう。

もちろん、カメラなどのデバイス、GPIOやDSI接続などのディスプレイや、センサーなどのモジュールなどを搭載した場合、また、ソフトウェアでシステムにかかる負荷などによっては、5V3Aでは電圧が不足するなどの可能性が考えられます。これらを考慮すると公式の電源アダプターが必要になる場合も考えられそうです。USBに関しては、セルフパワータイプのハブを使ったらどうなるかなどは検証してみても良いかもしれませんね。

あともうひとつ、Raspberry Pi 4と同様にブートローダーEEPROMイメージをアップデートできる仕組みがあるため、今後の改良次第では電源周りにも挙動の改善が見られる可能性はあるかもしれません。

https://github.com/raspberrypi/rpi-eeprom

公式の電源アダプターと言われても……PSEマークの取得は?

電源アダプターにも技適のように、PSEマークという認証マークが存在します。このマークが無ければ国内での販売はできません。

これまで歴代のRaspberry Piにも公式の電源アダプターが存在しましたが、残念ながらPSEマークを取得したものは存在しません。代わりに、リセーラー各社が独自の電源アダプターを用意、販売してきました。今回こそは公式のものが発売されないとまずそうに見えますが、果たして発売されるでしょうか……?個人的には、ある意味で技適の件よりもどきどきハラハラしながら見守る次第です。

Raspberry Pi 5 実機レビュー(ベンチマーク編)

あっきぃです。一つ前の記事では外観の変化についてレビューをしました。

こちらの記事では実際に動かして性能を確かめていきます。

いつものとおり、スイッチサイエンスさんからお借りしている電波暗箱におさめて検証をしています。

今回、UART機能を活用すべく、暗箱内のUSB配線は、ラップトップを通じてインターネットに出るためのUSB-LANと、コンソール作業用のDebug Probeを接続して、作業を実施しました。

UnixBench

Raspberry Pi 5のUnixBenchの結果は以下のとおりです。起動OSストレージはUSB SSDを使用してUSBからブートしています。なお、冷却についてはヒートシンクとファンを使用していますが、電波暗箱内に熱がこもってしまうため、冷却についてもう少ししっかり対応すれば結果が変化する可能性がある点についてはご了承ください。

------------------------------------------------------------------------
Benchmark Run: 木  9月 28 2023 14:21:25 - 14:49:24
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       35871623.6 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     7000.8 MWIPS (9.9 s, 7 samples)
Execl Throughput                               3747.6 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        488963.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          138385.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1100853.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                              414920.4 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  88485.3 lps   (10.0 s, 7 samples)
Process Creation                               6307.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   8814.3 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   2210.1 lpm   (60.0 s, 2 samples)
System Call Overhead                         302151.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   35871623.6   3073.8
Double-Precision Whetstone                       55.0       7000.8   1272.9
Execl Throughput                                 43.0       3747.6    871.5
File Copy 1024 bufsize 2000 maxblocks          3960.0     488963.5   1234.8
File Copy 256 bufsize 500 maxblocks            1655.0     138385.0    836.2
File Copy 4096 bufsize 8000 maxblocks          5800.0    1100853.5   1898.0
Pipe Throughput                               12440.0     414920.4    333.5
Pipe-based Context Switching                   4000.0      88485.3    221.2
Process Creation                                126.0       6307.9    500.6
Shell Scripts (1 concurrent)                     42.4       8814.3   2078.8
Shell Scripts (8 concurrent)                      6.0       2210.1   3683.5
System Call Overhead                          15000.0     302151.7    201.4
                                                                   ========
System Benchmarks Index Score                                         922.7

------------------------------------------------------------------------
Benchmark Run: 木  9月 28 2023 14:49:24 - 15:17:22
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables      142820987.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    27995.6 MWIPS (9.9 s, 7 samples)
Execl Throughput                              10236.0 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks       1387766.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          543428.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1328002.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1656919.6 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 312064.0 lps   (10.0 s, 7 samples)
Process Creation                              14014.6 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  17045.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   2217.8 lpm   (60.1 s, 2 samples)
System Call Overhead                        1208120.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  142820987.7  12238.3
Double-Precision Whetstone                       55.0      27995.6   5090.1
Execl Throughput                                 43.0      10236.0   2380.5
File Copy 1024 bufsize 2000 maxblocks          3960.0    1387766.5   3504.5
File Copy 256 bufsize 500 maxblocks            1655.0     543428.5   3283.6
File Copy 4096 bufsize 8000 maxblocks          5800.0    1328002.9   2289.7
Pipe Throughput                               12440.0    1656919.6   1331.9
Pipe-based Context Switching                   4000.0     312064.0    780.2
Process Creation                                126.0      14014.6   1112.3
Shell Scripts (1 concurrent)                     42.4      17045.5   4020.2
Shell Scripts (8 concurrent)                      6.0       2217.8   3696.4
System Call Overhead                          15000.0    1208120.9    805.4
                                                                   ========
System Benchmarks Index Score                                        2479.7

以前Raspberry Pi 4で取得した際は1パラレルの結果が320、パラレルの結果が851でしたので、いずれも3倍近い性能向上が確認できました。

OpenSSLテスト

Raspberry Pi 5では、CPUでAES暗号化の機能が搭載され、OpenSSLのパフォーマンスが大幅に向上しています。

$ lscpu 
Architecture:            aarch64
  CPU op-mode(s):        32-bit, 64-bit
  Byte Order:            Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
Vendor ID:               ARM
  Model name:            Cortex-A76
    Model:               1
    Thread(s) per core:  1
    Core(s) per cluster: 4
    Socket(s):           -
    Cluster(s):          1
    Stepping:            r4p1
    CPU(s) scaling MHz:  42%
    CPU max MHz:         2400.0000
    CPU min MHz:         1000.0000
    BogoMIPS:            108.00
    Flags:               fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp
                          asimdhp cpuid asimdrdm lrcpc dcpop asimddp
Vulnerabilities:         
  Gather data sampling:  Not affected
  Itlb multihit:         Not affected
  L1tf:                  Not affected
  Mds:                   Not affected
  Meltdown:              Not affected
  Mmio stale data:       Not affected
  Retbleed:              Not affected
  Spec rstack overflow:  Not affected
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl
  Spectre v1:            Mitigation; __user pointer sanitization
  Spectre v2:            Mitigation; CSV2, BHB
  Srbds:                 Not affected
  Tsx async abort:       Not affected

UnixBenchと同様ヒートシンクとファンで冷却しながら取得した結果は以下のとおりです。こちらはPi 4とPi 5の両方で取得しました。

Raspberry Pi 4
version: 3.0.9
built on: Tue Jun 27 11:03:08 2023 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2 -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-3EYFh
e/openssl-3.0.9=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE
=2
CPUINFO: OPENSSL_armcap=0x81
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5              20060.20k    63573.53k   151300.61k   235601.92k   281542.66k   285196.29k
sha1             17071.09k    54337.88k   126238.55k   191955.97k   226500.61k   229244.93k
rmd160           14590.26k    44724.57k    98697.22k   142409.73k   163799.04k   165472.94k
sha256           16343.43k    47364.39k   104071.34k   147695.62k   169000.96k   170732.20k
sha512           13388.09k    53628.05k   115350.95k   191555.93k   240074.75k   243886.76k
hmac(md5)        12954.35k    44555.26k   121571.75k   215362.56k   277427.54k   283060.91k
des-ede3         13872.51k    14476.86k    14628.78k    14671.19k    14682.79k    14685.53k
aes-128-cbc      45137.76k    48874.45k    50187.86k    50521.77k    50604.71k    50621.10k
aes-192-cbc      38315.12k    40966.76k    42086.74k    42387.80k    42289.83k    42303.49k
aes-256-cbc      33279.44k    35311.38k    36007.17k    36201.13k    36255.06k    36252.33k
camellia-128-cbc    55411.08k    65619.88k    68665.69k    69651.80k    69935.10k    69905.07k
camellia-192-cbc    44774.70k    51409.24k    53273.34k    53868.54k    54031.70k    54012.59k
camellia-256-cbc    44913.11k    51417.77k    53275.73k    53867.86k    54037.16k    54018.05k
ghash            90443.33k   123293.55k   138805.08k   143634.09k   144586.07k   140683.95k
rand              2817.99k    10049.37k    30343.83k    63935.95k    95414.66k    99422.10k
Raspberry Pi 5
version: 3.0.9
built on: Tue Jun 27 11:03:08 2023 UTC
options: bn(64,64)
compiler: gcc -fPIC -pthread -Wa,--noexecstack -Wall -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2 -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-3EYFhe/openssl-3.0.9=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
CPUINFO: OPENSSL_armcap=0xbd
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md5              38876.14k   112459.26k   244872.99k   343889.92k   388713.13k   392407.72k
sha1             54259.39k   195820.84k   560858.54k  1046074.03k  1403792.04k  1439159.64k
rmd160           32580.90k    87789.51k   182199.38k   255504.10k   286324.05k   288484.01k
sha256           52860.18k   192068.07k   534115.67k  1035979.43k  1447362.56k  1489928.19k
sha512           25557.98k   107456.55k   206635.78k   323940.35k   388903.56k   393560.06k
hmac(md5)        22670.27k    75366.53k   197372.84k   316821.16k   383109.80k   389403.99k
des-ede3         23404.53k    23946.99k    24163.75k    24196.10k    24207.36k    24210.09k
aes-128-cbc     673310.63k  1340616.36k  1732335.62k  1856858.45k  1909036.37k  1913978.88k
aes-192-cbc     628817.58k  1197309.53k  1475447.38k  1547643.22k  1592404.65k  1595796.14k
aes-256-cbc     622174.58k  1062045.76k  1278014.63k  1339694.42k  1365753.86k  1368260.61k
camellia-128-cbc   101635.74k   109795.29k   112098.65k   113008.98k   113186.13k   113339.05k
camellia-192-cbc    80806.49k    85497.51k    86893.48k    87367.68k    87542.44k    87577.94k
camellia-256-cbc    79942.40k    85506.88k    86894.85k    87393.28k    87536.98k    87556.10k
ghash           444674.42k  1505138.90k  3199533.65k  4460456.96k  5020199.59k  5068035.41k
rand             11319.77k    42223.40k   161315.61k   547445.78k  1698195.69k

たとえばaes-256-cbcを抜き出して比較してみると、最大37倍も処理できるようになっていることがわかります。

type                    16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
(Pi4) aes-256-cbc      33279.44k    35311.38k    36007.17k    36201.13k    36255.06k    36252.33k
(Pi5) aes-256-cbc     622174.58k  1062045.76k  1278014.63k  1339694.42k  1365753.86k  1368260.61k
Pi5/Pi4                    18.70        30.08        35.49        37.01        37.67        37.74

AESとは関係しない項目、たとえばsha512でも、1.6〜2倍の性能向上が確認できます。

type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
(Pi4) sha512    13388.09k    53628.05k   115350.95k   191555.93k   240074.75k   243886.76k
(Pi5) sha512    25557.98k   107456.55k   206635.78k   323940.35k   388903.56k   393560.06k
Pi5/Pi4             1.91         2.00         1.79         1.69         1.62         1.61

高速化したMicroSDスロットのベンチマーク

MicroSDカードスロットはSDR104モードに対応したため、理論値では104MB/sの転送に対応します。このため、最近の一般的なMicroSDカードであれば高速に起動できるようになりました。

MicroSDカードを使用してPi4・Pi5それぞれでOSを起動し、hdparmコマンドで読み込み性能を確認した結果、Pi4は43.9MB/s、Pi5は89.4MB/sとなりました。理論値にはやや届きませんでしたが、Pi4に比べて約2倍の性能が出ていることがわかります。

ddコマンドによるシーケンシャルの書き込み性能は、Pi4が27.5MB/s、Pi5が35.1MB/sとなりました。それほど差が出ていないように見えますが、MicroSDカードは一般的に読み込みは早く、書き込みはそれほど早くないため、MicroSDカードの書き込み性能が先に限界にきている可能性が考えられます。WindowsマシンでCrystalDiskMarkを用いた書き込みテストでも38MB/sだったため、概ねこのあたりが上限のようです。

USB3.0ポートも高速化。ただし電源周りに注意(USBを使わないときも)

USB3.0ポートは、Raspberry Pi 4ではVL805 USBハブチップによって帯域を共有したものでしたが、Raspbery Pi 5では、RP1チップによって2つのUSB3.0+USB2.0ポートが提供されるようになったため、どちらのUSB3.0ポートを使用しても性能を引き出すことが可能になりました。

同時使用のテストではなく1つのSSDのみ接続してのテストですが、こちらもddとhdparmで測定した結果、ddによるシーケンシャルの書き込み性能は、Pi 4では約135MB/s、Pi 5では約328MB/sとなりました。また、hdparmによるシーケンシャルの読み込みテストは、Pi4では約200MB/s、Pi 5では約333MB/sとなりました。いずれも性能の向上が確認できました。

なお、USBの電源を十分に供給するには、オフィシャルの電源アダプターを用いて5V/5Aの電力供給をすることが推奨されています。USBストレージから起動しようとすると、以下のメッセージが表示されます。

***
USB boot requires high current (5 volt 5 amp) power supply.
To disable this check set usb_max_current_enable=1 in config.txt
or press the power button to temporarily enable usb_max_current_enable
and continue booting.
See https://rptl.io/rpi5-power-supply-info for more information
***

市販のUSB-PD電源では5V5Aを出力できるものが少ないため、オフィシャルの電源アダプターのPSE取得を待ってそれを用いるか、メッセージを無視して電源ボタンを押すことで一時的に無視して起動するか、usb_max_current_enable=1を/boot/config.txtに投入して恒久的に無視するかの選択が必要になります。

性能を活かすための電源と冷却選び

一般的なUSB PD電源は5Vの場合3Aまでの出力のため、これをRaspberry Pi 5で使用すると、USBデバイスへの供給が600mAに制限されたり、電力が不足する可能性があります。よって、オフィシャルの電源も必要な機能性があります。ただ、PSEの取得問題が起こるので、これは悩ましい問題かもしれません。幸い(?)日本はRaspberry Pi 5のいわゆる技適取得で他国より発売が遅れるため、待っている間に先に利用できる国のユーザーがどう対処するかの知見を得ることができるでしょう……。

また、発熱も高性能化に伴って増加し、オフィシャルのケースにはファンが標準添付され、オフィシャルのヒートシンク+ファンも発売されます。常に負荷をかけるような使い方をする場合はファンの利用も考慮すると良いでしょう。

日本での発売について

日本での発売は、いわゆる技適の取得後、認定リセーラーとの調整を経てからとなります。詳しくはスイッチサイエンスさん、KSYさんの情報を確認ください。

https://prtimes.jp/main/html/rd/p/000000137.000064534.html

https://raspberry-pi.ksyic.com/news/page/nwp.id/130

Raspberry Pi 5 実機レビュー(外観編)

あっきぃです。

Raspberry Piの在庫が少しずつ復活する中、Raspberry Pi 5がリリースされました!今回はどこから語ってよいか迷うほどたくさんのアップデートがあるので、できる限り紹介していきたいと思います。

今回も例によってサンプルをお預かりしていますので、そちらを用いてレポートしていきます。

まずは外観編です。別途ベンチマーク編もアップしますのでお楽しみに。

全体写真

基板表面。詳細は後述していきますが、多数のポートが移動しており、今回も過去の世代との互換が失われている点は注意が要ります。

基板裏面。MicroSDスロットのみという点は変わりありませんが、GPIOポートなどの部品の”足”が製造方法の改良によって飛び出さないようになったほか、GNDに接続されたループ状の部品が2つ追加され、MicroSDスロットと3点で立つことで、平らな場所に置いたときの安定性が向上しています。

パワーアップしたCPU!

SoCには、Cortex-A76を採用したBroadComのBCM2712が搭載されました。Cortex-A76といえば2018年頃のコアですが、MacBook2015やIntelのSkylake世代に近い性能とされ、現在でも日常的な用途では不足がない性能をRaspberry Pi 5で使えるようになったことは大きな進化と言えます。

また、GPUも新しくVideoCore VIIが搭載されます。

メモリは4GBと8GB

RAMは、4267MHzのLPDDR4Xメモリを搭載します。リリース当初は4GBと8GBのみの販売となりますが、基板表面には製品のトレース用にメモリの容量を示す部品が実装されており、1GB、2GB版の製造予定を伺わせるパターンを見ることができます。残念ながら(?)一部でPi4の頃から期待されている16GBの用意はなさそうです。

新たに追加されたRP1チップは”サウスブリッジ”的IOポート

USB3.0ポートに横に目立つRP1チップは、SoCとPCI Express 2.0 x4で接続された独自設計のIOチップです。SDIO、USB2.0/3.0ポート、LAN、MIPI(4レーンのCSI/DSI)、GPIO、コンポジットビデオはこのチップから提供されます。

変化したCSI/DSIポート

Raspberry Pi 1 Model B+以降微動だにしなかったCSI・DSIポートの配置が変更されました。CSIポートがあった位置に2つ並ぶ形で配置され、デュアルのCSI・DSI共通ポートとして利用できるようになりました。つまり、これまでCompute Moduleでしかできなかったデュアルカメラ・デュアルDSIディスプレイがRaspberry Pi 5で扱えるようになったことを意味します。

なお、ポート形状はCompute Module、Raspberry Pi Zeroと同じ小さいタイプのケーブルになります。CSIケーブルはZeroと同じものが利用できますが、DSIケーブルはCSIケーブルと配線が異る点に注意が必要です。今回のリリースに合わせてオフィシャルのケーブルアクセサリが発売されたため、利用の際にはケーブルの用意も検討すると良いでしょう。

LANポートが再び移動。USB3.0はより高速に。

LANポートが3B+以前と同様、HDMIポート側に移動しました。PoE用のピンも移動したため、過去に発売されたPoE HATとの互換性が失われています。こちらも、Raspberry Pi 5のPoE HATが今後発売される予定です。

USB3.0ポートの配置はRaspberry Pi 4と変わらず真ん中に2ポート配置されています。Raspberry PiではVL805 USBハブチップによる分配でしたが、今回は2つの独立したコントローラーから提供されているため、同時にUSB3.0の帯域を使うことが可能になりました。

独立したUARTポート

UARTポートがGPIOから独立して、HDMI0とHDMI1の間に配置されました。このポートはRaspberry Pi Debug Probeを接続して、115200 baud rateで使うことができます。また、OS起動前のDiagもここから取得できるようになりました。

RTCがサポートされたPMICチップを採用。待望の電源ボタンも

電源管理チップにはdialog DA9091チップを採用しています。RTCが含まれるため、バッテリーを接続することで、時刻の維持が可能になりました。バッテリーはオフィシャルから発売されます。バッテリーは専用のポートもしくはスルーホールを使用して接続して使います。
(2023/10/4 お詫びと訂正)スルーホールはバッテリー用ではなく、電源ボタンと同等の機能でした。お詫びして訂正いたします。

また、電源ボタンが初めて実装されました。電源接続時はこれまで通りすぐに起動しますが、それ以降はPCと同じように電源を切ったり、再び電源を入れたりできるようになります。

PCIeポート

Raspberry Pi 4ではCompute Module 4でしか自由に使えなかったPCI Expressポートが、電源ボタンの横(元のDSIポートの位置)に用意されました。このポートはPCI Express 2.0 x1がサポート(非サポートながらPCI Express 3.0 x1も可能)されており、今後発売されるアクセサリボードを使って接続できるようになります。

スピードアップしたSDカードスロット

MicroSDカードスロットについては、Raspberry Pi 4では40MB/s前後の読み書き性能でしたが、Raspberry Pi 5ではUHS-I SDR104モードがサポートされたため、より高速な読み書きが可能となりました。

ファン電源ポートも搭載

ファンの電源・制御用のポートもUSB2.0ポートの後ろに用意されました。オフィシャルのケースやアクティブクーリングシートシンクのファンを接続して使用します。

なお、RTCバッテリー・UART・ファンのポートは保護用のキャップが付いており、外れやすく、なくしやすいため、あらかじめ外して口チャック袋などに入れて保管するか、思い切って廃棄してしまっても良いかもしれません。

消えたもの、変わらないもの

大きな変化が多数ある中で、変化しなかったものとしては無線チップがあげられます。これはRaspberry Pi 4と同じく、2.4GHz/5GHzの無線LANと、Bluetooth 5.0とBLEがサポートされます。

また、3.5mmの4ピンオーディオジャックが姿を消しました。このうち、コンポジットビデオ出力のみはRaspberry Pi Zeroなどのようにスルーホールで提供されます。

ベンチマーク編に続く!

ベンチマーク編では、恒例のUnixBenchや、ネットワーク、CPUのAESサポートによって高速化したOpenSSLの性能テストなどをご紹介します。

Raspberry Pi Camera Module 3を触ってみる

あっきぃです。昨日発売されたRaspberry Pi Camera Module 3のサンプルがおおたさんから送られてきましたので、レポートをしていきます。リリース情報の概要は昨日の記事を確認してください。

形状を見る

中央のケーブルがついたものがCamera Module 3です。左が初代、右が2代目、上は参考までにArduicamの16MPオートフォーカスカメラです。基板サイズは2代目と変わりありませんが、カメラセンサー自体は大きくなっているため、Raspberry Pi公式ブログのコメントでもやり取りがあるように、公式のPiZeroケースとは互換がないようです。

続いて裏面。まあ、こちらを見てもあまり面白みはないと言えばないのですが、Camera Module 3と2代目とで意外と回路デザインが変わっていないのは面白いですね。

最新のRaspberry Pi OSとlibcamera環境が必要

早速試していく前に、Camera Module 3を使用するには、最新のRaspberry Pi OS Bullseyeと、libcameraによるカメラ環境が必要な点に注意してください。

libcameraは、Raspberry Pi OS Bullseyeで利用が開始されて、旧来のraspistillやraspividコマンドなど(Legacy camera stackなどと呼ばれています)が置き換えられました。ただし、Picamera2 Pythonライブラリの提供が遅れたなどの理由により、旧来のコマンド等を使用するための方法が現在も提供されています。注意が必要なのは、この旧来のほうでは新しいカメラモジュールは利用できないということですね。

Camera Module 3リリース以前に構築されたRaspberry Pi OS Bullseye環境がある場合は、OSのアップグレードをしておきましょう。また、Picamera2 Pythonライブラリも合わせて触ってみたい場合には、以下のコマンドでインストールできます。

$ sudo apt install python3-picamera2

オートフォーカスを試す

まずはlibcamera-helloコマンドで画面に出しっぱなしにして、動きを見てみましょう。コマンドに–autofocus-modeが追加されており、これを使ってオートフォーカスを有効にできます。

$ libcamera-hello -t 0 --autofocus-mode continuous

この状態でカメラに遠くのものを映させたり、手で遮ってみたりすると、フォーカスを自動で合わせてくれます。手元のスマホなら当然の動きですが、Raspberry Piでも手軽にできるようになったのは感動ですね。

天井です。

なにもない天井をきれいに映しているカメラにRaspberry Pi Picoをかざすと、Pico……よりも手にピントが合いましたね。

指のシワが鮮明
Picoをより近づけても指のほうが鮮明

オートフォーカス中のカメラモジュールはこのようにレンズがモーターによって上下しています。

手をかざすとレンズが上下に動く

写真を撮影するときはlibcamera-stillコマンドで撮影します。こちらもオートフォーカスに関するオプションが追加されているため、それらを使用可能です。

$ libcamera-still -o af1.jpg --autofocus-mode continuous

マスコットを撮影してみました。

「有隣堂しか知らない世界」からブッコローのキーチェーンと回転寿司皿。どちらもSTORY STORY YOKOHAMAで買えます

ここで、ぬいぐるみを避けてもう一枚撮影すると、背景に使っていたダンボールにピントが合って、「こわれもの」の文字が鮮明になりましたね。

皿とダンボールだけ

HDRモードもすごい

もうひとつ、HDRモードも注目すべき機能です。異なる露光時間で複数同時に露光をして、センサーがいい感じに合成をしてくれるものです。これもスマホでは普通に使える機能ではありますが、Raspberry Piで手軽に扱えるようになりました。

まずはHDRが無効の状態です。室内で飼育中のメダカですが、日当たりが良いので室内で撮影すると逆光に近い感じになります。

奥の水槽と別に、手前の鉢にも生まれた時期が違うメダカがいます。

HDRモードを有効にするには、–hdrオプションを付け足すだけです。

$ libcamera-hello -t 0 --autofocus-mode continuous --hdr 1

$ libcamera-still -o hdr.jpg --autofocus-mode continuous --hdr 1

HDRを有効にして撮影すると以下のようになります。水槽のメダカが明るくなり、手前の鉢も明るく写って見えるようになりました。

全体的に明るくなりました

なお、HDRモードを有効にした場合は、解像度が1/4になる点には注意です。上記画像も、4608 × 2592ピクセルから2304 × 1296ピクセルになっており、1/4ピクセルになっていることが確認できました。上の画像を新しいタブで開いて比較してみてください。

ちなみに撮影風景はこちら。比較で使用したArducamのカメラモジュールから奪い取ったカメラメースと、100円ショップの三脚を組み合わせています。

購入するには

国内ではすでに認定リセーラーのKSYさんが発売を開始している他、スイッチサイエンスさんも販売に向けて準備中のようです。

KSYさん

個人的に広角版が気になったのでイギリスのPimoroniで注文をしましたが、KSYさんが販売開始していたのを見落としていました……。私が広角版を触れるのは再来週くらいになりそうです。しくしく。

また、NOIR版についてはPimoroniを含めてまだどこも入荷していないようなので、こちらは少し待つ必要がありそうです。
(1/16追記)KSYさんでNOIR版の取り扱いが開始したようです。 https://raspberry-pi.ksyic.com/main/index/pdp.id/908,909,910,911/

まとめ

Raspberry Piの新しいCamera Moduleの簡単なテストレポートでした。近年のスマホならどれも当たり前になって久しい機能ですが、当たり前になって久しいことで、枯れたカメラセンサーもRaspberry Piのカメラモジュールとして採用できる価格にまでなったと言えます(これまでのRaspberry Pi製品に組み込まれた各モジュールにも言えることではありますが)。

ちなみに、Sony IMX708センサーは、ググってみるとOPPO Find X2、OPPO Reno4 Proなど2年半〜3年前のスマートフォンに採用されていたようです。こうして見ると枯れたと言うにはまだ早い気もしますが、こうしてRaspberry Piで触って遊べるようになったことは大歓迎ですね。

Raspberry Pi Pico Wを電池で動かすとどのくらい動くか試す

Pico Wの感想ツイートとかを眺めていたら、電池で動かしたらどのくらい持つのかという内容のツイートを見つけて、面白そうだったので試してみることにしました。

たしかに、PimoroniのPico関連製品は乾電池で動かすことを意識してバッテリーボックスセットが売られていたりします。Pico Wに合わせて発売されたPico W Aboardシリーズも単4電池x2のケース付きで販売されていますね。

実験内容

今回は、電池で駆動するPico W上にWebサーバーを立てて、RP2040のCPU温度と現在時刻をJSONで返すURLを作り、それを別の機材から毎秒GETでアクセスをして、アクセスができなくなるまでの時間を測りました。スクリプトは、前回のレポート記事で紹介したものからBME280を取り除いたようなイメージです。

Pico Wが起動したときの時刻が2021/01/01 00:00:00なので、GETできなくなった直前のJSONに含まれている時刻=電池で動かせた時間として見ることができそうです。

電池は、IKEAのニッケル水素充電池「LADDA」1.2V・2450mAhを2本使用しました。前回のレポートでは、ネットワーク通信時は5Vで0.06A==60mAくらいと計測できていたため、2.4Vでは60mA * 5V / 2.4V == 125mAとして、2450mAh/125mA==19.6時間くらい動くのではないかと思います(なんとなくあってますかね……?このあたりせっかくSNSで助言をいただいたものの、ニガテで理解できているかどうか自信がなく……)。

ネットワーク構成とPico Wの監視方法

今回もPico Wは電波暗箱に入れるため、毎秒GETする端末は暗箱の外に設置しますが、暗箱内で無線ブリッジ役をしているRaspberry Piから出る有線LANはUSBに変換されているため、暗箱外で別のRaspberry Piにつないで有線LANブリッジを組み、自宅ネットワークと接続できるようにしつつ、ここからPico Wに対して毎秒GETして、OLEDディスプレイモジュールでJSON内の時刻と温度を表示することとしました。

暗箱の外との通信はUSB(LAN)になる

OLEDディスプレイでは毎回JSONの内容を表示しますが、JSONが取得できなくなったら時刻の表示内容は更新せずに、結果記録用としてそのままにします。

暗箱内のUSB(LAN)と自宅のネットワークをブリッジする役とPico WにGETしてOLEDに結果を表示する役をこなす暗箱外のRaspberry Pi

実験開始

今回はスイッチ付き電池ボックスを使用しましたが、スイッチのレバーを倒すのは暗箱を閉じた状態ではできないので、仕方なく暗箱を開いた状態でレバーを倒して、すぐに箱を閉じることとしました(本当はリレーとかを使えばよかったのでしょうが、機材の都合でできませんでした……)。

あとは電池が切れるまで放置します。が、この時点では時間の予測ができていなかったので、夜に開始して、寝る前にも終わる気配がないことである程度察し、OLEDディスプレイを適当に隠して就寝しました。

寝たらわからないと思うけれど、寝付くまでは目立つので一応隠します

実験結果

翌日、出先からたまにcurlで確認をしていたら、夕方頃に応答がなくなっていました。帰宅してOLEDの表示を確認した結果、22時間43分40秒で更新が止まっていました。

更新されなくなった時刻を記録

予想よりも3時間ほど長い結果になりましたが、常に通信し続けるわけではなく、毎秒小さなJSONファイルをGETする程度だったため、実際にはアイドル時間もそれなりにあったと思われます。

感想

毎秒無線でアクセスされるような環境下でも、充電池2本でほぼ1日動くことがわかりました。

実際になにかしっかりと運用する時には、センサーやLEDやサーボモーターなどを付けたり、ディープスリープ・ウェイクアップを実装したり、無線アクセスも毎秒ではなく毎分だったりと、実装によって変動はするでしょうが、電池駆動でもわりとなにか遊べそうな感じがしますね。電池駆動の可能性を感じた実験でした。

追記: スクリプト

使用したスクリプトをこちらに置きました。

https://github.com/Akkiesoft/akkiesoft-pico/tree/main/MicroPython/rp2040-temp-webserver

無線LANが搭載された Raspberry Pi Pico W で遊ぶ

本日発表されたRaspberry Pi Pico W(以下、Pico W)は、これまでのRaspberry Pi Pico(以下、Pico)に無線LANが追加されたバージョンです。Raspberry Pi Zeroに無線LANが搭載された時と似た流れを感じますね。

Picoで遊んでいると、ネットワーク接続が欲しくなることがよくあったため、Pico Wはある意味で待望のリリースと言えそうです。

今回もサンプルをお預かりしましたので、さっそく遊んで、もとい、色々試していきます。

外観

外観をPicoと比べてみます。左がPico W、右がPicoです。

まずは表面。Picoと比べると、四角い銀色のパーツとアンテナが増えたのが分かりやすい変化です。アンテナの配置の都合で、DEBUGのスルーホールが移動してしまったため、これがあることを前提とした基板を作成している人は要注意かも知れません。

Picoで他に惜しいポイントだった、MicroUSBと、RESETボタンがない点は変わりませんでした。(※右のPicoにはPimoroni Captain Resettiが増設されています)

Raspberry Pi Pico W(左)とRaspberry Pi Pico(右)

つづいて裏面。Picoよりも各種認証や権利関係のロゴと文字でいっぱいになりました。EUを離脱したイギリスの適合性評価マークであるUKCAロゴが加わった点は、イギリスの製品らしい新たな特徴です。基板の余白が少ないため、今後日本で技適が取得されても、基板への直接の印字は難しそうです(他の国などもそうですが……)。

基板裏面(並びは表面と同じ)

MicroPythonファームウェアの用意と書き込み

今回はかんたんな例として、HTTPサーバーを動かして、BME280のセンサーデータJSONで提供するAPIと、それを毎秒取得してデータを表示するようなHTMLを提供する、MicroPython向けのスクリプトを作成しました。スクリプトはGitHubに配置しました。

今回はPimoroniのBME280ライブラリを使用するために、ライブラリを組み込んだPico W向けMicroPythonファームウェアを自前でビルドして使用しました。ビルドの詳細は割愛しますが、MicroPythonのビルドは初めてで、少し苦労しました……。Pico Wリリース前だったため自前ビルドをしましたが、リリース後はきっとPimoroniからPico W向けのファームウェアが提供されると思われるので、今後はそちらを使えば良いでしょう。

さて、Pico Wのテストには、スイッチサイエンスさんからお借りしているいつもの電波暗箱を使用しました。ファームウェアを書き込むには、BOOTSELボタンを押しながら通電する必要があるため、洗濯バサミでボタンを挟んだ状態で暗箱に設置して、電波暗箱の外から書き込みを実行しました。書き込み後はケーブルを抜いてから電波暗箱を開き、洗濯ばさみを外しました。これで準備は完了です。

ファームウェアの書き込み

電波暗箱の無線LAN環境の構築

電波暗箱の中では当然ながら外の電波は遮断されて、部屋の無線LANが使用できません。そこで、Raspberry Piとhostapdを使用した無線LANのブリッジを作成して、それを電波暗箱の中に入れて、Pico WはRaspberry Piの無線LANブリッジに接続するようにします。

電波暗箱内でのテスト環境のようす

Thonnyからスクリプトを実行して、起動後にPico WのIPアドレスにアクセスします。すると、HTMLファイルが読み込まれて、毎秒センサーのデータが更新されました。

電波暗箱内のRaspberry Pi Pico Wをテストするようす

なお、電力チェッカーを使用して消費電力を確認したところ、無線LANに接続したあと何もしていない状態では0.02A、データを転送している最中では0.08A前後となりました。

転送速度の調査

Pico Wの転送速度を調べるために、/longにアクセスされたら500KBくらいの文字列を送るようにスクリプトを少し改造しました。これを無線LANブリッジのRaspberry Piからcurlでダウンロードして、平均ダウンロード速度を確認しました。

akkie@raspberrypi:~ $ curl http://192.168.2.21/long -o /dev/null
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  500k    0  500k    0     0  43708      0 --:--:--  0:00:11 --:--:-- 44116

結果は約42.7KB/秒となりました。軽量なHTMLやJSONデータを読み込むには問題ない速度で、実用的そうです。

vs Pimoroni Pico Wireless Pack

Pimoroni Pico Wireless Packは、Pico向けの無線LAN機能拡張ボードで、ESP32を使用して無線LAN接続を使用するため実現します。Pico Wが出る以前のPicoではこのような拡張ボードが必要でした。

まず物理的な比較をすると、Picoのピンがボードで覆われるため、他のボードと同時に使うにはPimoroni Pico Omnibusのような拡張ボードが別途必要になり、作品も大きくなってしまいます。Pico Wであれば、無線のためにピンを使うことはなくなるため、見た目をスッキリさせられます。

Pico Wと、PicoとPico Wireless Packの組み合わせを並べたようす

続けて転送速度です。Pimoroniのサンプルスクリプトをベースに、先ほどと同じく文字列をたくさん転送するスクリプトを作成して、curlでダウンロードして調べます。

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10240  100 10239    0     0   1424      0  0:00:07  0:00:07 --:--:--  1467

結果は1.4KB/sで、Pico Wの1/40になってしまいました……。実際に別の用途で使用したときもHTMLの転送にとても時間がかかっていたため、改めて数字にしてみるとなかなか遅いです。

最消費電力です。BME280のセンサーを読み出してネットワーク通信するようなスクリプトを動かして調べたところ、何もしていない状態では0.06A、通信時は0.12A程度となりました。Pico Wと比較するといずれも消費電力は大きめですね。

Raspberry Pi Pico + Pico Wireless Pack + BME280の消費電力を計測したようす

まとめ

Raspberry Pi Pico Wの登場によって、拡張ボードがなくてもネットワークが扱えるようになり、IoT用途として非常に使い勝手の良いボードに進化しました。

もし、通常のRaspberry Piでセンサーを読み出してネットワークで転送するような作品を動かしているなら、Pico Wに移植することで消費電力を大きく減らせそうです。ラジコンカーやロボットなどもPico Wを使って作れそうですね。

一方で、従来のPicoもネットワークを必要としない作品では引き続き需要があると考えられるので、用途に応じて無線あり・なしどちらかのPicoを使い分けると良いでしょう。

そして、毎度残念ながら、Pico Wがいつごろ日本で使用できるようになるのかは不明ですが、日本で発売されるのが待ち遠しいアイテムがまた増えました。

(2023/3/27追記)日本での販売が開始しました。

Raspberry Pi Pico実機レポート!

あっきぃです。本日リリースされたRaspberry Pi Picoのサンプルを太田さんからお借りしているので、レポートしていきます。

外観

外観の紹介。サンプルのため、製品版とは一部異なる場合があります。また、製品はピンヘッダーが未実装の状態で販売されます。

表面
裏面

Raspberry Pi PicoにMicroPythonを入れて使う

Raspberry Pi Pico上でMicroPythonを使うことができます。何かを簡単に動かしてみるならこれが一番手軽でしょう。

セットアップの方法はRaspberry Pi Picoのサイトで解説されているため、そちらを参照してください。

https://pico.raspberrypi.org/getting-started

また、プログラミングにはRaspberry Pi OSにバンドルされているThonnyを使うことができます。こちらも上記サイトのMicroPython documentation(PDF)の4章で説明されているので、これを参照してセットアップすると良いでしょう。MicroPythonの場合ファイルの送受信にはampyなどを利用しますが、Thonnyでもファイル保存ダイアログを通じてファイルの送り込みや取得ができるようになるため、用意しておくと便利です。

……本当はドキュメント見ろではなくてステップごとの解説ができると良いのですが、今回はひとまず簡易レポートということで端折らせてください……!

PCD8544 LCDを動かしてみる

手持ちのそれっぽいデバイスでMicroPythonで動かせそうなものを漁ってみたところ、大昔に買ったNokia 5110ことPCD8544 LCDが出てきたので、これを動かしてみることにしました。

まずは配線。Raspberry Pi PicoのSPI0ポートを使用しつつ、これ以外は適当なGPIOピンに差し込みました。

[pcd8544:pico(physical pin)]
Gnd: Pico GND (38)
BL : Pico GP28(34)
Vcc: Pico 3V3 (36)
Clk: Pico GP6 ( 9)
Din: Pico GP7 (10)
DC : Pico GP4 ( 6)
CE : Pico GP5 ( 7)
RST: Pico GP8 (11)

PCD8544用のMicroPython向けライブラリはGithubにあり、そのまま使う事ができました。

https://github.com/mcauser/micropython-pcd8544

pcd8544とpcd8544_fbの2つライブラリがあり、後者のほうが文字を書いたり図を描いたりしやすいので、これをインストールしますが、ThonnyのManage Packagesではインストールできません。pcd8544_fb.pyをRaspberry Pi上に用意して一旦Thonnyで開き、Raspberry Pico上に/lib/pcd8544_fb.pyとして保存することでファイルを転送して、インストールします。

テストプログラムは、リポジトリのexample/framebuf.pyを元にピン番号を書き換えるだけで動きます。ピン番号の書き換えは以下の通り。SPI0番を使うのでSPI(0)で初期化します。Pinの番号はGPの方の数字を指定します。

spi = SPI(0)
spi.init(baudrate=2000000, polarity=0, phase=0)
print(spi)
cs = Pin(5)
dc = Pin(4)
rst = Pin(8)

# if your pcd8544 has BL pin, uncomment this line.
bl = Pin(28, Pin.OUT, value=1)

lcd = pcd8544_fb.PCD8544_FB(spi, cs, dc, rst)

その後の描画テストは、処理の度にframebuf.fill(0)が挟まれており、ほとんどのテストが見えずに終わってしまうため、framebuf.fill(0)を削りつつ、順に描画している様子がわかるようにちょっと書き換えたものを用意しました。

実行結果はこの通りです。

動画で!

ソースコードは以下のURLで公開しています。

https://gist.github.com/Akkiesoft/c72034f89b9aa6a3bedd4994bd51676a

まとめ

新しいRaspberry Pi Picoをさわってみる記事でした。

4ドル(日本では500円前後になるようです。スイッチサイエンスさんでは550円とのアナウンスがありました)と安価なので、気軽に買って遊んでよし、積みボードにしても罪悪感薄しな感じで良いですね(こら)。

また、MicroPythonの豊富なライブラリが利用できるのはわりと強いのかなと思いました。ESPと比べると無線周りがない点が弱みのような気もしますが、無線はいらない場合も多々なので、これはこれでありなのではないかと思います。

HQ Cameraで遊ぶ

あっきぃです。

おおたさんからHQ Cameraのサンプルを預かったので、少し見たり触ったりするレポート記事です。なお、実際の製品とは若干異なる場合があります。予めご了承ください。

Raspberry Pi High Quality Camera リリース

購入するには

はじめに、現時点で一番わかりやすい購入先としてPimoroniのリンクを貼っておきます。

カメラモジュール本体と16mmレンズの組み合わせでは送料を含めて92.5ポンド、約1.3万円になるようです(購入しました)。

本体とレンズの様子

新しいカメラモジュールはレンズ別売りです。Cマウントレンズは別途認定リセラーから数種類販売されているので、どれか一つは必ず買う必要があります。

ちなみに、他のマウントからCマウントに変換できるアダプターが焦点工房というお店で販売されているそうなので、何かしらのレンズを持っている人は変換アダプターを用意すると可能性が広がるようです。EFレンズアダプターをAmazon経由で購入してみました。

http://www.stkb.jp/shopbrand/ct363/

カメラモジュールの裏面とレンズ。サンプルとして提供されているレンズは、Pimoroniの製品ページとは見た目がことなるものの10M Pixel 16mmという性能は同じレンズと、Pimoroniの製品ページと同じ6mmの2種類でした。

今回は10M Pixel 16mmのレンズで撮影します。レンズを取り付けるとこのような感じになります。

カメラマウント用のネジ穴がついているので、一般的な三脚への固定が簡単です。今までのカメラモジュールは固定に難儀していたことを考えると、ネジ穴付きは結構ありがたいですね。

簡単な撮影テスト。

ひとまずは部屋の中でPimoroniのMicroDot pHatとRaspberry Pi Zeroを写してみました(画像をクリックするとオリジナルのサイズで表示されます。)ピントが固定だった以前のカメラモジュールと違って、写したいものにピント調節や絞り調節ができるので、なかなか良い感じです。

以下の写真ではピントを手前の小物にずらしてみました。

家の中では撮れるものがなかなかなく、こんな例でアレなのですが、外で花とかを撮影してみるのも良いかもしれませんね(昨今の情勢を考えると外出はもう少し控えたほうが良さそうではありますが……)。

まとめ

Raspberry Piにもレンズ沼が到来?なのかどうかはわかりませんが、レンズを交換してたのしめる新たなおもちゃという感じがしました。一式&変換アダプターをポチってしまったので、届いたらまた遊んでブログに書いていこうと思います。

Raspberry Pi 4 Model Bを見る!

Raspberry Pi 4 Model Bのサンプルを見たり、ベンチマークした結果を紹介していきます。なお、日本での認証(技適)が未取得であるため、以前Raspberry Pi 3 Model B+をベンチマークする際にも利用させていただいた、スイッチサイエンス様のシールドボックスをお借りしました。

Raspberry Pi 3 B+をシールドボックスでベンチマーク

おことわり: サンプルボードの検証結果は製品版と一部結果が異なる場合があります。

■外観のチェック

表面。

SoC型番はBCM2711となっています。Raspberry Pi 3B+と同じく表面は金属となりました。

電源ポートとmicroHDMIポート。

USB/LANポート。LANポートの位置が右に移動している点が今までのRaspberry Piとの違いです。真ん中はUSB3.0ポートです。

裏面

USBポートはVIA VL805チップから提供されます。また、GbEポート用のBCM54213PEチップが搭載されています。

■スペックの確認

CPUの情報

pi@four:~ $ cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 3 (v7l)
BogoMIPS : 108.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xd08
CPU revision : 3

(processor1〜3略)

Hardware : BCM2835
Revision : c03111
Serial : (略)

メモリーの情報。サンプルは4GB RAMモデルのため、MemTotalの数値もそのとおりになっています。

pi@four:~ $ cat /proc/meminfo
MemTotal: 4003816 kB
MemFree: 3566036 kB
MemAvailable: 3714744 kB

USBポートはPCI Express接続のVIA VL805 USB3.0コントローラーによる提供のため、lspciコマンドで確認できます。

pi@four:~ $ lspci
00:00.0 PCI bridge: Broadcom Limited Device 2711 (rev 10)
01:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)

■ギガビットは本当?iperfでテスト

Raspberry Pi 4 Model BとNanoPi Neo 2を使用してiPerf3を実行しました。NanoPi Neo 2はギガビットの速度が出る別のシングルボードコンピュータです。

それぞれのボードとギガビットイーサネットのハブをシールドボックスに入れて、同じくハブに接続したUSB Ethernetアダプターでボックスの外の端末からアクセスして計測します。

Nano Pi Neo 2をiperf3サーバーとして実行した様子です。940Mbpsの速度が出ていることがわかりました。

pi@four:~ $ iperf3 -c 192.168.2.4
Connecting to host 192.168.2.4, port 5201
[ 5] local 192.168.2.5 port 54272 connected to 192.168.2.4 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 112 MBytes 940 Mbits/sec 0 317 KBytes
[ 5] 1.00-2.00 sec 112 MBytes 943 Mbits/sec 0 376 KBytes
[ 5] 2.00-3.00 sec 112 MBytes 938 Mbits/sec 0 376 KBytes
[ 5] 3.00-4.00 sec 112 MBytes 940 Mbits/sec 0 434 KBytes
[ 5] 4.00-5.00 sec 112 MBytes 942 Mbits/sec 0 434 KBytes
[ 5] 5.00-6.00 sec 112 MBytes 938 Mbits/sec 0 434 KBytes
[ 5] 6.00-7.00 sec 112 MBytes 939 Mbits/sec 0 434 KBytes
[ 5] 7.00-8.00 sec 112 MBytes 944 Mbits/sec 0 452 KBytes
[ 5] 8.00-9.00 sec 112 MBytes 940 Mbits/sec 0 452 KBytes
[ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 598 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec receiver

iperf Done.

Raspberry Pi 4をiperf3サーバーとして実行した様子です。やや速度が遅くなりますが837Mbpsという高速な結果になりました。

pi@four:~ $ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.2.4, port 42350
[ 5] local 192.168.2.5 port 5201 connected to 192.168.2.4 port 42352
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 96.0 MBytes 805 Mbits/sec
[ 5] 1.00-2.00 sec 100 MBytes 841 Mbits/sec
[ 5] 2.00-3.00 sec 100 MBytes 842 Mbits/sec
[ 5] 3.00-4.00 sec 100 MBytes 841 Mbits/sec
[ 5] 4.00-5.00 sec 100 MBytes 841 Mbits/sec
[ 5] 5.00-6.00 sec 100 MBytes 842 Mbits/sec
[ 5] 6.00-7.00 sec 100 MBytes 842 Mbits/sec
[ 5] 7.00-8.00 sec 100 MBytes 841 Mbits/sec
[ 5] 8.00-9.00 sec 100 MBytes 841 Mbits/sec
[ 5] 9.00-10.00 sec 99.1 MBytes 832 Mbits/sec
[ 5] 10.00-10.03 sec 3.00 MBytes 843 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.03 sec 1001 MBytes 837 Mbits/sec receiver

■USB3.0のベンチマーク

USB3.0のベンチマークを、高速なUSB3.0メモリを使ってhdparmコマンドで取得しました。
取得時に電力が不足したためか、エラー出力が見られましたが、結果は87MB/sと高速な値を見ることができました。

pi@four:~ $ sudo hdparm -t /dev/sda

/dev/sda:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Timing buffered disk reads: 262 MB in 3.01 seconds = 87.12 MB/sec

■Unixbench

最後に恒例のUnixbenchです。


========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: raspberrypi: GNU/Linux
OS: GNU/Linux -- 4.19.50-v7l+ -- #895 SMP Thu Jun 20 16:03:42 BST 2019
Machine: armv7l (unknown)
Language: en_US.utf8 (charmap="ANSI_X3.4-1968", collate="ANSI_X3.4-1968")
CPU 0: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

CPU 1: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

CPU 2: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

CPU 3: ARMv7 Processor rev 3 (v7l) (0.0 bogomips)

23:47:23 up 4:57, 2 users, load average: 0.00, 0.66, 2.72; runlevel Jun

------------------------------------------------------------------------
Benchmark Run: Sun Jun 23 2019 23:47:23 - 00:15:36
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 10010557.0 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2381.7 MWIPS (9.6 s, 7 samples)
Execl Throughput 911.8 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 111140.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 30981.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 301680.2 KBps (30.0 s, 2 samples)
Pipe Throughput 160911.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 48233.4 lps (10.0 s, 7 samples)
Process Creation 1856.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2466.3 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 736.8 lpm (60.1 s, 2 samples)
System Call Overhead 493135.1 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 10010557.0 857.8
Double-Precision Whetstone 55.0 2381.7 433.0
Execl Throughput 43.0 911.8 212.1
File Copy 1024 bufsize 2000 maxblocks 3960.0 111140.1 280.7
File Copy 256 bufsize 500 maxblocks 1655.0 30981.9 187.2
File Copy 4096 bufsize 8000 maxblocks 5800.0 301680.2 520.1
Pipe Throughput 12440.0 160911.4 129.3
Pipe-based Context Switching 4000.0 48233.4 120.6
Process Creation 126.0 1856.0 147.3
Shell Scripts (1 concurrent) 42.4 2466.3 581.7
Shell Scripts (8 concurrent) 6.0 736.8 1227.9
System Call Overhead 15000.0 493135.1 328.8
========
System Benchmarks Index Score 320.2

------------------------------------------------------------------------
Benchmark Run: Mon Jun 24 2019 00:15:36 - 00:43:47
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables 40088657.2 lps (10.0 s, 7 samples)
Double-Precision Whetstone 9528.0 MWIPS (9.6 s, 7 samples)
Execl Throughput 2702.4 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 213778.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 59398.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 569815.6 KBps (30.0 s, 2 samples)
Pipe Throughput 607729.5 lps (10.0 s, 7 samples)
Pipe-based Context Switching 193837.7 lps (10.0 s, 7 samples)
Process Creation 4612.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5911.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 804.6 lpm (60.2 s, 2 samples)
System Call Overhead 1875987.0 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 40088657.2 3435.2
Double-Precision Whetstone 55.0 9528.0 1732.4
Execl Throughput 43.0 2702.4 628.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 213778.4 539.8
File Copy 256 bufsize 500 maxblocks 1655.0 59398.3 358.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 569815.6 982.4
Pipe Throughput 12440.0 607729.5 488.5
Pipe-based Context Switching 4000.0 193837.7 484.6
Process Creation 126.0 4612.8 366.1
Shell Scripts (1 concurrent) 42.4 5911.6 1394.2
Shell Scripts (8 concurrent) 6.0 804.6 1340.9
System Call Overhead 15000.0 1875987.0 1250.7
========
System Benchmarks Index Score 851.0

以下は同じバージョンのRaspbianを使用してRaspberry Pi 3B+上で実行した結果です。


------------------------------------------------------------------------
Benchmark Run: Mon Jun 24 2019 05:08:05 - 05:36:16
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 5296678.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1431.2 MWIPS (9.8 s, 7 samples)
Execl Throughput 960.5 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 138696.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 42914.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 357533.0 KBps (30.0 s, 2 samples)
Pipe Throughput 298836.5 lps (10.0 s, 7 samples)
Pipe-based Context Switching 53689.7 lps (10.0 s, 7 samples)
Process Creation 2345.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1913.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 584.4 lpm (60.1 s, 2 samples)
System Call Overhead 687496.7 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 5296678.9 453.9
Double-Precision Whetstone 55.0 1431.2 260.2
Execl Throughput 43.0 960.5 223.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 138696.1 350.2
File Copy 256 bufsize 500 maxblocks 1655.0 42914.1 259.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 357533.0 616.4
Pipe Throughput 12440.0 298836.5 240.2
Pipe-based Context Switching 4000.0 53689.7 134.2
Process Creation 126.0 2345.4 186.1
Shell Scripts (1 concurrent) 42.4 1913.1 451.2
Shell Scripts (8 concurrent) 6.0 584.4 974.0
System Call Overhead 15000.0 687496.7 458.3
========
System Benchmarks Index Score 331.9

------------------------------------------------------------------------
Benchmark Run: Mon Jun 24 2019 05:36:16 - 06:04:42
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables 18740948.4 lps (10.0 s, 7 samples)
Double-Precision Whetstone 5363.6 MWIPS (10.6 s, 7 samples)
Execl Throughput 2069.3 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 220388.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 62487.0 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 589552.1 KBps (30.0 s, 2 samples)
Pipe Throughput 1075015.8 lps (10.0 s, 7 samples)
Pipe-based Context Switching 189588.0 lps (10.0 s, 7 samples)
Process Creation 4393.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 4339.6 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 590.4 lpm (60.3 s, 2 samples)
System Call Overhead 2489812.0 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 18740948.4 1605.9
Double-Precision Whetstone 55.0 5363.6 975.2
Execl Throughput 43.0 2069.3 481.2
File Copy 1024 bufsize 2000 maxblocks 3960.0 220388.7 556.5
File Copy 256 bufsize 500 maxblocks 1655.0 62487.0 377.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 589552.1 1016.5
Pipe Throughput 12440.0 1075015.8 864.2
Pipe-based Context Switching 4000.0 189588.0 474.0
Process Creation 126.0 4393.8 348.7
Shell Scripts (1 concurrent) 42.4 4339.6 1023.5
Shell Scripts (8 concurrent) 6.0 590.4 983.9
System Call Overhead 15000.0 2489812.0 1659.9
========
System Benchmarks Index Score 762.2

1 parallel copy of testsでは若干Raspberry Pi 4Bが低い値となりましたが、4 parallel copy of testsの結果はRaspberry Pi 4BがRaspberry Pi 3B+よりも約100ほどスコアが高くなっていました。

Raspberry Pi 3 B+をシールドボックスでベンチマーク

3.14159265..なπの日の夜、スイッチサイエンスさんにいきなり電話をしまして、電波法に抵触しない適法上でのテストを行うためにシールドボックスをお借りしてベンチマークを実施しました。外に対してはUSBのポートがでていて、このポートと内部にあるUSBがブリッジのような形になっており、このUSBからRaspberry Pi 3B+と接続ができるようになっております。

で実際のテストはといえば中に閉じ込めて行わねばいけなくて、外部のインターネットと直接接続できる何かがでているわけでもないため、テストはおなじみのUnixbenchぐらいがやっとなのが事実です。なので、いつもながらおなじみで申し訳ないのですが、Unixbenchをとってみました。



   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

------------------------------------------------------------------------------
   Use directories for:
      * File I/O tests (named fs***) = /home/pi/byte-unixbench/UnixBench/tmp
      * Results                      = /home/pi/byte-unixbench/UnixBench/results
------------------------------------------------------------------------------


1 x Dhrystone 2 using register variables  1

1 x Double-Precision Whetstone  1

1 x Execl Throughput  1

1 x File Copy 1024 bufsize 2000 maxblocks  1

1 x File Copy 256 bufsize 500 maxblocks  1

1 x File Copy 4096 bufsize 8000 maxblocks  1

1 x Pipe Throughput  1

1 x Pipe-based Context Switching  1

1 x Process Creation  1

1 x System Call Overhead  1

1 x Shell Scripts (1 concurrent)  1

1 x Shell Scripts (8 concurrent)  1

4 x Dhrystone 2 using register variables  1

4 x Double-Precision Whetstone  1

4 x Execl Throughput  1

4 x File Copy 1024 bufsize 2000 maxblocks  1

4 x File Copy 256 bufsize 500 maxblocks  1

4 x File Copy 4096 bufsize 8000 maxblocks  1

4 x Pipe Throughput  1

4 x Pipe-based Context Switching  1

4 x Process Creation  1

4 x System Call Overhead  1

4 x Shell Scripts (1 concurrent)  1

4 x Shell Scripts (8 concurrent)  1

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: raspberrypi: GNU/Linux
   OS: GNU/Linux -- 4.9.80-v7+ -- #1098 SMP Fri Mar 9 19:11:42 GMT 2018
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips)
          
   12:20:45 up 2 min,  3 users,  load average: 0.09, 0.08, 0.03; runlevel 2018-03-14

------------------------------------------------------------------------
Benchmark Run: Wed Mar 14 2018 12:20:45 - 12:27:30
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        5064713.2 lps   (10.0 s, 1 samples)
Double-Precision Whetstone                     1224.3 MWIPS (9.9 s, 1 samples)
Execl Throughput                                507.1 lps   (29.9 s, 1 samples)
File Copy 1024 bufsize 2000 maxblocks        159405.0 KBps  (30.0 s, 1 samples)
File Copy 256 bufsize 500 maxblocks           47023.0 KBps  (30.0 s, 1 samples)
File Copy 4096 bufsize 8000 maxblocks        403956.0 KBps  (30.0 s, 1 samples)
Pipe Throughput                              353550.8 lps   (10.0 s, 1 samples)
Pipe-based Context Switching                  63697.5 lps   (10.0 s, 1 samples)
Process Creation                               2420.9 lps   (30.0 s, 1 samples)
Shell Scripts (1 concurrent)                   2202.1 lpm   (60.0 s, 1 samples)
Shell Scripts (8 concurrent)                    668.7 lpm   (60.0 s, 1 samples)
System Call Overhead                         687831.7 lps   (10.0 s, 1 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    5064713.2    434.0
Double-Precision Whetstone                       55.0       1224.3    222.6
Execl Throughput                                 43.0        507.1    117.9
File Copy 1024 bufsize 2000 maxblocks          3960.0     159405.0    402.5
File Copy 256 bufsize 500 maxblocks            1655.0      47023.0    284.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     403956.0    696.5
Pipe Throughput                               12440.0     353550.8    284.2
Pipe-based Context Switching                   4000.0      63697.5    159.2
Process Creation                                126.0       2420.9    192.1
Shell Scripts (1 concurrent)                     42.4       2202.1    519.4
Shell Scripts (8 concurrent)                      6.0        668.7   1114.5
System Call Overhead                          15000.0     687831.7    458.6
                                                                   ========
System Benchmarks Index Score                                         336.3

------------------------------------------------------------------------
Benchmark Run: Wed Mar 14 2018 12:27:30 - 12:34:21
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       20174506.0 lps   (10.0 s, 1 samples)
Double-Precision Whetstone                     4936.7 MWIPS (9.9 s, 1 samples)
Execl Throughput                               2474.9 lps   (29.9 s, 1 samples)
File Copy 1024 bufsize 2000 maxblocks        263690.0 KBps  (30.0 s, 1 samples)
File Copy 256 bufsize 500 maxblocks           70797.0 KBps  (30.0 s, 1 samples)
File Copy 4096 bufsize 8000 maxblocks        647637.0 KBps  (30.0 s, 1 samples)
Pipe Throughput                             1431414.8 lps   (10.0 s, 1 samples)
Pipe-based Context Switching                 221854.5 lps   (10.0 s, 1 samples)
Process Creation                               5696.9 lps   (30.0 s, 1 samples)
Shell Scripts (1 concurrent)                   4949.5 lpm   (60.0 s, 1 samples)
Shell Scripts (8 concurrent)                    644.5 lpm   (60.2 s, 1 samples)
System Call Overhead                        2640381.9 lps   (10.0 s, 1 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   20174506.0   1728.7
Double-Precision Whetstone                       55.0       4936.7    897.6
Execl Throughput                                 43.0       2474.9    575.6
File Copy 1024 bufsize 2000 maxblocks          3960.0     263690.0    665.9
File Copy 256 bufsize 500 maxblocks            1655.0      70797.0    427.8
File Copy 4096 bufsize 8000 maxblocks          5800.0     647637.0   1116.6
Pipe Throughput                               12440.0    1431414.8   1150.7
Pipe-based Context Switching                   4000.0     221854.5    554.6
Process Creation                                126.0       5696.9    452.1
Shell Scripts (1 concurrent)                     42.4       4949.5   1167.3
Shell Scripts (8 concurrent)                      6.0        644.5   1074.2
System Call Overhead                          15000.0    2640381.9   1760.3
                                                                   ========
System Benchmarks Index Score                                         867.2

ほんと、技適の問題でおおっぴらに電源をいれられないのは口惜しい限りですが、ご参考ください。また深夜だというのに押しかけでシールドボックスをお貸しいただきましたスイッチサイエンス様に御礼申し上げます。