あっきぃです。
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日間内で検証する方法があります(※)。ユーザー会では、以前よりスイッチサイエンスさんからお借りしているシールドボックスがありますので、シールドボックスに入れて検証を行っています。
※検証後は廃止手続き(電波の発射を防止するために必要な措置を講じる、つまり電源を入れないようにする。額縁に入れて飾るとかでしょうかね?)が必要です。また、技適取得前に入手したものについては技適マークが無いため、今後技適の取得が完了したとしても利用可能にはならない点にも注意が必要です。基本的には技適の取得が完了して国内リセーラーが発売するまで購入は待ちましょう。
シールドボックス内外の接続は以下の図の通りです。
電源は、市販の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にはまだ通電していません)。
シリアル接続しながら通電を開始すると、以下のようなメッセージが表示されます。
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を追加して、ヒートシンクを空冷しながら動かすとどうなるか確かめます。
まずはアイドル状態。ファンの動作が増えるため、消費電力は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での速度の違いを確かめたりするのが楽しみです。
通電すると、シリアル通信で以下のメッセージが表示されました。
*** 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マークを取得したものは存在しません。代わりに、リセーラー各社が独自の電源アダプターを用意、販売してきました。今回こそは公式のものが発売されないとまずそうに見えますが、果たして発売されるでしょうか……?個人的には、ある意味で技適の件よりもどきどきハラハラしながら見守る次第です。