Raspberry Pi 5が日本での工事設計認証取得を完了し、本日より日本のRaspberry Pi Approved ResellerであるKSYおよびスイッチサイエンスの2社から販売が開始されました。
https://raspberry-pi.ksyic.com/main/index/pdp.id/1059,1015,1016/
両リセーラーとも、本体以外にもケースやカメラ・ディスプレイケーブルなどのアクセサリーが同時に販売開始されているため、必要に応じて購入すると良いでしょう。
Raspberry Pi 5が日本での工事設計認証取得を完了し、本日より日本のRaspberry Pi Approved ResellerであるKSYおよびスイッチサイエンスの2社から販売が開始されました。
https://raspberry-pi.ksyic.com/main/index/pdp.id/1059,1015,1016/
両リセーラーとも、本体以外にもケースやカメラ・ディスプレイケーブルなどのアクセサリーが同時に販売開始されているため、必要に応じて購入すると良いでしょう。
あっきぃです。
日本ではRaspberry Pi 5の発売はまだですが、先週末には日本の技適に関する証書PDFがRaspberry Piのポータルにアップロードされ、進捗が見えてきています。残念ながらこのPDFをもって日本で買ったり使ったりして良いことにはなっておらず、製品(またはパッケージ等)にマークと番号が印字されたものが販売開始されて初めて適法に利用できるようになるため、もう少しの辛抱です。
https://pip.raspberrypi.com/categories/894-approvals
さて、今回はRaspberry Pi 5のNVMe SSD用アクセサリーボードの話題。PCI Expressポートを使用したNVMe SSDの接続用アクセサリーボードについて、公式から販売が予告されていますが、まだ発売はされていません。しかし、すでにサードパーティベンダーからはいくつものNVMe SSDの接続用アクセサリーボードが発売されています。何種類か入手して試してみましたので、それぞれの使用感をレポートしていきます。
今回紹介するのはこちらの3種類です。
各ボードについて、それぞれ詳しく見ていきましょう。
GeekwormのX1001は、Pi 5上に搭載するタイプのボードです。GPIO接続は不要かつGPIO部分が空いているため、HATボードの接続等のGPIOポートアクセスが可能です。固定用のネジ穴は3つで、スペーサーをつけると3本足で立つ、少しふしぎな形になります。
NVMe SSDは2230、2242、2260、2280のサイズに対応しますが、SSDの固定のダボは2280で固定になっていて外せないため、写真のように2280サイズ以外のSSDを使う場合には、別のアダプター等に付属している固定ネジが必要になります。また、動作中はACTのLEDランプが点滅します。
2023年9月末に設立されたばかりという、ポーランドのPineBerry Piが販売するHAT Drive Top!は、HATサイズにまとまったコンパクトなボードです。コンパクトな分、対応するNVMe SSDのサイズは2230、2242のみとなります。通電中の電源ランプとACTランプを搭載しています。
Raspberry Piへの接続は、PCIeケーブルのみでも動作しましたが、GPIOポートに接続するための延長ピンソケットが付属しており、これを使用して他のHATボードなどとセットで搭載することができます。なお、延長ピンソケットの抜き差しは慣れるまでは少し大変な印象でした。
イギリスのPimoroniが販売するNVMe Baseは、先述の2つとは違い、Pi 5の下に搭載するタイプのボードです(ちなみに、Pineberry PiやGeekwormも同様にボトムに配置するタイプのボードがあるようです)。
SSDのサイズはX1001と同じく2230、2242、2260、2280に対応します。SSDの固定は付属のネジとナットを使用して固定します。
ボードの裏面は波紋のような模様が特徴的。また、FPCケーブルのカーブも面白い設計ですね。
組み立てたあとの様子。ボードが下にあるため、Pi 5の全ポートにアクセス可能なのが便利です。一方、SSDの交換については都度ネジを外す必要があるのが、用途によっては面倒に感じるかも知れません。また、公式ケースやPimoroniのPiBowとは組み合わせられないのも惜しいところです。NVMe Baseに対応したPiBowケースの登場に期待したいです。
Pi 5でNVMeブートをするには、事前にPi 5のEEPROM上の設定に対してブート順序の変更が必要なため、MicroSDカードでOSを起動して、rpi-eeprom-configコマンドを実行して設定作業を行います。
コマンドを実行するとエディターに設定が表示されるため、以下の2つのパラメータについて設定します。
$ sudo rpi-eeprom-config --edit
[all]
# BOOT_ORDERを変更。fより右に6を含める
BOOT_ORDER=0xf416
# 追記する
PCIE_PROBE=1
BOOT_ORDERパラメータは、6がfよりも右に含まれるように書き換えます。Raspberry Piの起動時には、数字の右側から起動が試行されます。0xf416の場合は、NVMe、MicroSD、USBの順に試して、起動メディアがなければまたNVMeから再試行していきます。各数字の意味の詳細は公式のドキュメントを参照してください。
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER
PCIE_PROBEパラメータは、次期HAT(おそらくHAT+)の仕様をサポートしないボードのためのパラメーターで、設定するとCM4と同様のPCIe x1検出方法になります。この設定はX1001とNVMe Baseの場合は不要です。HatDrive! Topの場合のみGPIO接続時にパラメータが必要ですが、GPIOに接続しない場合は不要です(今後のHatDrive!の設計変更によってはGPIO接続時でも不要になる可能性があります)。
https://github.com/raspberrypi/rpi-eeprom/releases/tag/v2023.12.06-2712
設定後はファイルを保存して終了し、一度OSを再起動します。再起動後はOSをシャットダウンしておきます。
NVMe SSDにRaspberry Pi OSをインストールするには、作業PCにNVMe SSDを接続するために、USBに変換するためのエククロージャが必要です。Amazon等で販売されているので、1つ用意しておくと良いでしょう。
USB変換を使用してPC等に接続するとUSBストレージとして認識するので、MicroSDカードのときと同様に、Raspberry Pi Imager等を使用してRaspberry Pi OSを書き込みます。
OSを書き込んだ後、再度PCに接続してブートパーティションをマウントし、/boot/config.txtをエディターで開いて、以下の設定をファイルの末尾に追記します。
[all]
dtparam=pciex1
dtparam=pciex1_gen=3
dtparam=pciex1は、PCI Expressの外部コネクターを有効にするためのオプションです(なくても動作しますが一応記述します)。有効化すると、ポートがPCI Express 2.0 x1として利用できるようになります。
しかし、公式にはサポートされていないものの、dtparam=pciex1_gen=3を追加することで、PCI Express 3.0 x1として利用できるように強制できます。ただし、起動できなかったり、不安定になる場合もあるようなので、不具合が生じた場合はこのパラメータと除いてみてください。
OSが用意できたらボードをPi 5に搭載して起動します。ユーザー会では引き続き電波暗箱を使用しているため、箱にボードを入れての試験となります。基本的にボードに因る性能差異はなかったため、HatDrive! Topで検証した内容を掲載します。PCIe 3.0×1で問題なく利用できたため、SSDの性能をより引き出すことができました。
まずはhdparmを使用したシーケンシャルリードのテスト。800MB/sという、ラズパイらしからぬ性能が出ています。
akkie@nvmepi1:~ $ sudo hdparm -t /dev/nvme0n1
/dev/nvme0n1:
Timing buffered disk reads: 2454 MB in 3.00 seconds = 817.58 MB/sec
続けてddコマンドでシーケンシャルライトのテスト。こちらも700MB/s弱の性能を叩き出していて、やはりラズパイらしからぬスピードです。
akkie@nvmepi1:~ $ dd if=/dev/zero of=a.zero bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes (10 GB, 9.8 GiB) copied, 15.0922 s, 695 MB/s
Raspberry Piのストレージをテストしてサイトに掲載するスクリプトを提供しているPi Benchmarksのスクリプトを使用したテスト結果は以下の通り。DDの書き込み方法が異なるためか、あるいは熱による性能低下によるものかは不明ですが、こちらは359MB/sにダウンしてしまいました。ランダムの読み書き性能は150〜200MB/sと、なかなかの数字となりました。
Category Test Result
HDParm Disk Read 798.84 MB/sec
HDParm Cached Disk Read 675.10 MB/sec
DD Disk Write 359 MB/s
FIO 4k random read 126419 IOPS (505679 KB/s)
FIO 4k random write 59883 IOPS (239532 KB/s)
IOZone 4k read 198011 KB/s
IOZone 4k write 144889 KB/s
IOZone 4k random read 57412 KB/s
IOZone 4k random write 167898 KB/s
Score: 37236
色々なNVMeボードについて特徴を解説し、実際にボードをRaspberry Pi 5で利用するための手順について解説しました。
公式のNVMe HATボードがまだ登場していませんが、すでにサードパーティベンダーから、今回紹介したような、使い方やNVMe SSDのサイズに応じた様々なボードを選べるようになっているため、お好みで用意してみてはいかがでしょうか。
NVMe SSDを利用することで、MicroSDカードよりも高信頼かつ高速なRaspberry Piの環境が構築できます。サーバー用にRaspberry Pi 5を検討している方は、NVMe SSDの採用も合わせて検討すると良いでしょう。
こんにちは、あっきぃです。この記事はRaspberry Pi Advent Calendar 2023の15日目の記事です。
WIZnetさんからサンプルをいただいたので、今回はそちらを使って少し遊んでみます。レビューのほうは別の方がする予定となっているため、私からはとにかくなんか遊ぶ感じの話題をお届けします。ちなみにいただいたのは以下の3種類(下のHATは2つ)。WIZnetさん、ありがとうございます!
今回遊ぶ内容的にはどれを使用しても同じですが、今回はEthernet HATの方を使用しました。こちらの場合別途Raspberry Pi Picoが必要になりますが、EVB-Picoよりも全長が少し短くなってコンパクトになります。また、EVB-Picoと比べるとボード上の通電LEDがPicoで覆い隠せるため、実運用に投入するとLEDが眩しくて邪魔という問題が緩和できます。まあ、EVB-PicoのEVBはEValuation Boardの略だと思うので、実運用に適しているのかは不明ですが……。
なお、WIZnet製品は、スイッチサイエンスで購入できます。
今回はCircuitPythonを使用して、Raspberry Pi Picoが接続されているPCのマウスカーソル操作をWeb API化して、リモート操作できるようにしてみます。
Macユーザー向けにナウな注意として、現在のmacOS Sonoma(14.2時点で問題は継続中)では、macOSの不具合によって、CircuitPythonを接続してすぐにスクリプトの読み書きをすると、I/Oエラーが発生してデータが破損するなどのおそれがあります。以下のページにあるシェルスクリプトを使用して再マウントすることで問題を回避できます。
WIZnetのデバイスを扱うには、adafruit_wiznet5kモジュールを使用します。CircuitPythonのライブラリバンドルに収録されているので、ここからadafruit_winzet5kモジュールをデバイス上のlibディレクトリにコピーして使用します。
WIZnetのデバイスを使ってDHCPでアドレスを取得するまでのコードは、以下のようになります。このコードをデバイス上の/code.pyとして保存します。
import board
import busio
import digitalio
import time
from adafruit_wiznet5k.adafruit_wiznet5k import WIZNET5K
# SPIの初期化
SPI_SCK = board.GP18
SPI_TX = board.GP19
SPI_RX = board.GP16
SPI_CSn = board.GP17
W5500_RSTn = board.GP20
cs = digitalio.DigitalInOut(SPI_CSn)
spi_bus = busio.SPI(SPI_SCK, MOSI=SPI_TX, MISO=SPI_RX)
# デバイスをリセットする
ethernetRst = digitalio.DigitalInOut(W5500_RSTn)
ethernetRst.direction = digitalio.Direction.OUTPUT
ethernetRst.value = False
time.sleep(1)
ethernetRst.value = True
# 接続する
eth = WIZNET5K(spi_bus, cs, is_dhcp=True)
print("MAC Address:", [hex(i) for i in eth.mac_address])
print("My IP address is:", eth.pretty_ip(eth.ip_address))
実行結果は以下の通り。デバイスはMACアドレスは持っていないため、”dead beef feed”になっています。MACアドレスを指定することは可能なため、複数動かすなどの場合には適宜変更すると良さそうです。
code.py output:
MAC Address: ['0xde', '0xad', '0xbe', '0xef', '0xfe', '0xed']
My IP address is: 192.168.29.127
Code done running.
CircuitPythonでWebサーバーを作成するにはadafruit_httpserverモジュールを使うのが簡単です。ただ、WIZnetのボード向けのCircuitPythonにはhashlibモジュールが内蔵されていないため、現在のモジュールのバージョンでは、インポート時にエラーが発生します。そのため、ライブラリバンドルからではなく、Githubリポジトリから最新のコードを取得して、adafruit_httpserver/response.pyにあるimport hashlibの行をコメントアウトする必要があります。この問題は報告をして、現在やり取りをしているところです。 (追記)修正されたようです。リリースもされたため最新のバージョンが使用可能です。
https://github.com/adafruit/Adafruit_CircuitPython_HTTPServer/issues/73
ライブラリの方に一手間が発生してしまいましたが、気を取り直して、上記のIPアドレスを取得するコードに、次のコードを書き加えると、Webサーバーが起動するようになります。
import adafruit_wiznet5k.adafruit_wiznet5k_socket as socket
from adafruit_httpserver import Server, Request, Response
socket.set_interface(eth)
server = Server(socket)
@server.route("/")
def root(request: Request):
print("GET /")
return Response(request, "Hello!")
server.serve_forever(str(eth.pretty_ip(eth.ip_address)))
実行時に表示されたIPアドレスにアクセスすると、Hello!の文字が表示されました。
個人的にCircuitPythonを気に入っている理由の一つに、USB HIDデバイスとして使えるという点が上げられます。MicroPythonにはないので、私がCircuitPython推しなのはこの一点が大きいです。
USB HIDとして使えるようにするには、adafruit_hidモジュールを使用します。code.pyにコードを書く……前に、以下の内容を記述したboot.pyを用意する必要があります。
import usb_hid
usb_hid.enable((usb_hid.Device.MOUSE,))
Webサーバーが動くようになったcode.pyは一旦リネームして退避しておき、あたらしいcode.pyには以下のコードを用意します。
import time
import usb_hid
from adafruit_hid.mouse import Mouse
mouse = 0
while not mouse:
try:
mouse = Mouse(usb_hid.devices)
except:
pass
time.sleep(1)
for i in range(0, 8):
mouse.move(x=20, y=20)
time.sleep(0.25)
boot.pyの反映はソフトリセットではできないため、code.pyの保存までできたら、ケーブルを抜き差ししてハードリセットします。(macOS Sonomaユーザーは上に書いた再マウントのWorkaroundを忘れずに!)。
抜き差し直後に、マウスカーソルをよく見ると、右下に少しだけカクカクと移動していきます。hidモジュールはクリックなどの操作ももちろんできるので、マクロ的な操作も作ることができます。
WIZnetのデバイス初期化、Webサーバー起動、マウス操作を組み合わせて、マウスカーソル移動をWeb APIにしてみます。
マウス操作のテストコードのうち、import timeとfor文以外をコピーして、退避したWebサーバーのコードをcode.pyにリネームし直し、コピーしたコードをcode.pyの最初の方にでも貼りつけておきます。
/にアクセスしたときは、マウスカーソルを操作するボタンを配置したHTMLを返すように変更します。また、マウスカーソルを上下左右に20px移動するAPIとして、/mouse/up・/mouse/down・/mouse/left・/mouse/rightを作成します。
Hello!を返すためのコードのかたまり(4行)を消して、以下のコードを追加します。
indexhtml = """<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta charset="utf-8"><title>Web mouse cursor API</title><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script><script>function s(p){fetch(p).then(function(r){return r.text()}).then(function(t){document.getElementById('r').innerText=t;});}</script></head><body><main class="px-3 col-6 mx-auto text-center"><h1 class="mt-2">Web mouse cursor API</h1><div class="container"><div class="row"><button class="btn btn-primary mt-3 mb-3" onclick="s('/mouse/up');">👆</button></div><div class="row d-flex justify-content-between"><button class="btn btn-primary col-5 mt-3 mb-3" onclick="s('/mouse/left');">👈</button><button class="btn btn-primary col-5 mt-3 mb-3" onclick="s('/mouse/right');">👉</button></div><div class="row"><button class="btn btn-primary col-12 mt-3 mb-3" onclick="s('/mouse/down');">👇</button></div></div><div id="r" class="m-3"></div></main></body></html>"""
@server.route("/")
def root(request: Request):
print("GET /")
return Response(request, indexhtml, content_type="text/html")
@server.route("/mouse/<direction>")
def move_mouse(request: Request, direction: str):
print("GET /mouse/%s" % direction)
if direction == "up":
mouse.move(x=0, y=-20)
elif direction == "down":
mouse.move(x=0, y=20)
elif direction == "left":
mouse.move(x=-20, y=0)
elif direction == "right":
mouse.move(x=20, y=0)
else:
return Response(request, "invalid parameter")
return Response(request, "moved mouse cursor to %s side" % direction)
マウスの操作APIについては@server.route("/mouse/<direction>")
のようにパラメータを変数に取ることができるので、これを活用しました。あとはパラメータに応じてマウスカーソルを移動させて、メッセージを返します。
Web画面を開くと、以下のような画面が表示され、ボタンをクリックするとマウスカーソルが移動します。
スマートフォンなど、デバイスを接続していない別の端末からアクセスして操作するとちょっと楽しいと思います(楽しさの感じ方は人によります!)。
なお、同じネットワーク内にいる他人にアドレスがバレると、いたずらされる可能性があるので、程々に遊んだら片付けるのが安全でしょう。ちなみに私はインターネットに公開してURLをSNSで共有し、10分くらいマウス操作を開放して遊びました。操作している人たちは私のPCのカーソルがどうなっているか見えてもいないのに、なぜかとても楽しそうだったので何よりです。
WIZnetのEthernet拡張を使用してWebサーバーを立ち上げて、マウスカーソル移動をWeb API化する例を紹介しました。
Raspberry Pi Picoでネットワーク接続と言えば、現在ではPico Wがあるため、無線LANでいいという考え方もできます。ただ、無線LANが不安定な環境だったり、そもそも無線LANがない環境で使いたい場合などには、やはり有線LANがあると嬉しいですよね。
WIZnetのEthernetモジュールは、ライブラリが揃っていて扱いやすい印象です。今回したCircuitPython以外に、MicroPythonでも使用可能です。難点は、MACアドレスを持っていないので自分で定義が必要な点と、EVB-Picoボードでは通電LEDが目障りになりがちな点でしょうか……。通電LEDは、いざとなればテープや引っ付き虫などで隠してしまっても良さそうです。
今回作成したコードは、諸々整えた状態で以下に公開してあります。
https://github.com/Akkiesoft/akkiesoft-pico/tree/main/CircuitPython/web_mouse
実は、ほぼ同じノリでマクロキーボードAPIというものを以前作っているのですが、こちらで使用していたadafruit_wsgiモジュールでは通信速度が非常に遅く、今回adafruit_httpserverモジュールで書いてみたら高速で転送できるようになったので、マクロキーボードAPIもそのうち書き直したいですね。
あっきぃです。
Pimoroniで予約していたケース””だけ””が届きました。PiBowと公式ケースで、いずれもサンプルではなく、いずれRaspberry Pi 5の技適が通った時のために個人用に購入したものです。……私はPi 5を2台買うんだろうか🤔ちなみに、写真のPi 5はサンプルですが。今回は話題的に通電しない済むので技適等は無関係ですね。
PimoroniのPiBowはすでにMaker Faire Tokyo 2023・OSC2023 Tokyo/Fall・Raspberry JAM 2023.10で展示済みですが(が、どれもレポートを書いていないですね……)、公式ケースを自分で触って組み立てたりするのは今回が始めてなので、ゆるりとレポートをしていきます。ちなみにこちらがPiBowの組み立てた様子。公式のActive Coolerを組み合わせる前提の作りで、今回もPimoroniらしい出来栄えですが、組み立て手順が少し複雑になり、下からレイヤー0〜2、Pi 5、レイヤー3、ActiveCooler、レイヤー4の順に重ねるようなりました。
それでは公式ケースについて見ていきましょう。
まずは外観。電源ポート周りの面はPi 4と比べると、3.5mmプラグを差す場所がなくなり、少しスッキリとしました。LAN・USBの配置はPi 1B+〜Pi 3B+までを彷彿させる配置ですが、他の面が全く違うので互換はありません。
先に互換の話をしておくと、これまでの公式ケースで過去のモデル間で互換性があったものは、実はありません。毎回変わっています。サードパーティの互換は諸説あるかも知れませんが、公式はそう言う感じです。iPhoneも毎回ビミョウに寸法が変わって互換がある回はあまりありませんよね。
ケースを真横から見ると、フタと本体の間に隙間が空いていることがわかります。中にはファンが標準添付されていて、このファンのエアフローとなるためです。
SDカード・LEDランプ側です。Pi 4のケースでは、SDカードを差し込んだまま本体を取り出そうとするとSDカード破損などの可能性がありましたが、Pi 5のケースではそれが改善されており、SDカードを差し込んだままの本体を出し入れ可能です。
また、電源ランプは電源ボタンも兼ねて降り、ここを押すことで電源の入り切りが可能です。便利ですね。
底面。公式ケースで初めて、HATの位置に合わせて穴が開けられました。この穴とボルト・ナットを組み合わせて活用すると、ケースを連結して使うこともできるようです。また、放熱用の穴も今回初の改善ですね。
上の白いフタを外すと、真ん中の白いカバーと、それにはまる形で取り付けられた、ファン付きの半透明のプレートが現れます。
真ん中のカバーを外すと、赤いボトムに小さい紙袋が挟まるようにして入っています。これにはゴム足と、SoCに貼り付けるヒートシンクが入っています。
ヒートシンクは、Active Coolerと比較するとだいぶささやかなサイズ感ですね。ちなみに、もうお気づきかも知れませんが、ケースを使用するときはActive Coolerは不要です。
Active CoolerをつけたPI 5をケースに入れることも可能ですが、この場合は真ん中の白いカバーとから半透明の部分取り外せば運用可能です。
真ん中の白いカバーと半透明の部分は、ツメで固定されているだけのため、簡単に取り外し可能です。
半透明の部分を取り外すと、HATボードを取り付けたまま真ん中のカバーを取り付けることもできます。以前の公式ケースではHATをつけたままケースに収めることができたりできなかったりしたため、これも嬉しいアップデートの一つといえます。
半透明の部分にはGPIOの穴が開いているため、Booster Header( https://shop.pimoroni.com/products/booster-header )などを使用すれば、ファンとHATボードを同時に取り付けることも可能です。以下は、Booster Headerを1つ使用してHATボードを搭載した様子です。上のフタはできなくなりますが、半透明のパーツのおかげで開放感はなく、ケースとしてまとまっているように見えて良いですね。
上の写真のいくつかではもう入ってしまっていますが、Pi 5本体をケースに入れてみます。と言っても、赤いボトムパーツにPi 5をポンと載せるだけ。簡単です。
ファンは、USB2.0ポートの後ろにファン用のコネクターがあるので、こちらに接続します。
あとはフタを乗せて完成です。簡単ですね。
Pi 5を入れた状態の外観はこちら。おしゃれです。
Pi 5のケースを手に持ってみると「もしかして、大きくなった……?」という気持ちがしたので、Pi 4のケースと並べてみました。たしかに、一回り大きそうですね。
側面から。高さもPi 4のケースより少し高くなったようです。ただ、SDカードをつけたまま着脱可能、HATを載せたままフタ可能、ファンのエアフロー確保など、数々の機能性向上を考えると、少し大きくなってでも必要な設計なのではないかと推察します。
Raspberry Pi 5 公式ケースのレビューでした。
今までの公式ケースはGPIOやカメラへのアクセスがイマイチで個人的にはずっとPimoroniのPiBowケースを推してきましたが、Pi 5のケースこそは(?)便利そうな印象を受けたので、両方を買ってみた次第です。
9月にイギリスに行った際には軽く触っていましたが、実際に改めて触ってみても、とても使い勝手が良さそうな印象なので、早く技適取得済みのPi 5をケースに入れて使いたいな……!!と思いましたし、Ltdの中の人がデモをしていたケースのスタックも興味があるので、公式ケースの買い増しももう検討が必要そうです。え、Pi 5を3台も……??
ちなみに、公式ケースはPi 4のときと同じく、グレー/ブラックのカラーもすでに登場していて、Pimoroniなどで予約を受け付けているようです。
あっきぃです。
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起動後もシリアル通信でログインして操作することが可能です。
いままでの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度(以降はサーマルスロットリングで温度維持を優先した周波数以下などが発生)となりました。
本来はオフィシャルのケースもしくは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ブートにするとどうなるか確かめます。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のモードでの起動はサポートされないため、以下のいずれかの対応が必要になります。
シールドボックスを開けてボタンを押すのはよろしく無いので、一旦電源を切り、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マークという認証マークが存在します。このマークが無ければ国内での販売はできません。
これまで歴代のRaspberry Piにも公式の電源アダプターが存在しましたが、残念ながらPSEマークを取得したものは存在しません。代わりに、リセーラー各社が独自の電源アダプターを用意、販売してきました。今回こそは公式のものが発売されないとまずそうに見えますが、果たして発売されるでしょうか……?個人的には、ある意味で技適の件よりもどきどきハラハラしながら見守る次第です。
あっきぃです。一つ前の記事では外観の変化についてレビューをしました。
こちらの記事では実際に動かして性能を確かめていきます。
いつものとおり、スイッチサイエンスさんからお借りしている電波暗箱におさめて検証をしています。
今回、UART機能を活用すべく、暗箱内のUSB配線は、ラップトップを通じてインターネットに出るためのUSB-LANと、コンソール作業用のDebug Probeを接続して、作業を実施しました。
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倍近い性能向上が確認できました。
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カードスロットは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ポートは、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さんの情報を確認ください。
Raspberry Piの在庫が少しずつ復活する中、Raspberry Pi 5がリリースされました!今回はどこから語ってよいか迷うほどたくさんのアップデートがあるので、できる限り紹介していきたいと思います。
今回も例によってサンプルをお預かりしていますので、そちらを用いてレポートしていきます。
まずは外観編です。別途ベンチマーク編もアップしますのでお楽しみに。
基板表面。詳細は後述していきますが、多数のポートが移動しており、今回も過去の世代との互換が失われている点は注意が要ります。
基板裏面。MicroSDスロットのみという点は変わりありませんが、GPIOポートなどの部品の”足”が製造方法の改良によって飛び出さないようになったほか、GNDに接続されたループ状の部品が2つ追加され、MicroSDスロットと3点で立つことで、平らな場所に置いたときの安定性が向上しています。
SoCには、Cortex-A76を採用したBroadComのBCM2712が搭載されました。Cortex-A76といえば2018年頃のコアですが、MacBook2015やIntelのSkylake世代に近い性能とされ、現在でも日常的な用途では不足がない性能をRaspberry Pi 5で使えるようになったことは大きな進化と言えます。
また、GPUも新しくVideoCore VIIが搭載されます。
RAMは、4267MHzのLPDDR4Xメモリを搭載します。リリース当初は4GBと8GBのみの販売となりますが、基板表面には製品のトレース用にメモリの容量を示す部品が実装されており、1GB、2GB版の製造予定を伺わせるパターンを見ることができます。残念ながら(?)一部でPi4の頃から期待されている16GBの用意はなさそうです。
USB3.0ポートに横に目立つRP1チップは、SoCとPCI Express 2.0 x4で接続された独自設計のIOチップです。SDIO、USB2.0/3.0ポート、LAN、MIPI(4レーンのCSI/DSI)、GPIO、コンポジットビデオはこのチップから提供されます。
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ポートが3B+以前と同様、HDMIポート側に移動しました。PoE用のピンも移動したため、過去に発売されたPoE HATとの互換性が失われています。こちらも、Raspberry Pi 5のPoE HATが今後発売される予定です。
USB3.0ポートの配置はRaspberry Pi 4と変わらず真ん中に2ポート配置されています。Raspberry PiではVL805 USBハブチップによる分配でしたが、今回は2つの独立したコントローラーから提供されているため、同時にUSB3.0の帯域を使うことが可能になりました。
UARTポートがGPIOから独立して、HDMI0とHDMI1の間に配置されました。このポートはRaspberry Pi Debug Probeを接続して、115200 baud rateで使うことができます。また、OS起動前のDiagもここから取得できるようになりました。
電源管理チップにはdialog DA9091チップを採用しています。RTCが含まれるため、バッテリーを接続することで、時刻の維持が可能になりました。バッテリーはオフィシャルから発売されます。バッテリーは専用のポートもしくはスルーホールを使用して接続して使います。
(2023/10/4 お詫びと訂正)スルーホールはバッテリー用ではなく、電源ボタンと同等の機能でした。お詫びして訂正いたします。
また、電源ボタンが初めて実装されました。電源接続時はこれまで通りすぐに起動しますが、それ以降はPCと同じように電源を切ったり、再び電源を入れたりできるようになります。
Raspberry Pi 4ではCompute Module 4でしか自由に使えなかったPCI Expressポートが、電源ボタンの横(元のDSIポートの位置)に用意されました。このポートはPCI Express 2.0 x1がサポート(非サポートながらPCI Express 3.0 x1も可能)されており、今後発売されるアクセサリボードを使って接続できるようになります。
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の性能テストなどをご紹介します。
出荷は10月23日より行われます。また、日本では出荷時点では技術基準適合証明・技術基準適合認定が取得されていませんが、今後取得が予定されています。
Raspberry Pi 5の主な機能は以下のとおりです。
発売開始時には、4GBと8GBのモデルが販売される予定です。価格は4GBモデルが60ドル、8GBモデルが80ドルです(日本での価格は認定リセーラーからの発表を確認してください)。
また、Raspberry Pi 5の発売に合わせて、アクセサリ各種も発売されます。
「27W USB-C PD Power Supply」は、Power Deliveryに対応したRaspberry Pi 5向けの電源アダプターです。Raspberry Pi 5のUSBポートで電源供給できる合計容量はデフォルトでは600mAですが、USB PD電源を使用することで自動で1.6Aに増強されます。また、電源アダプターは9V3A、12V2.25A、15V1.8Aの出力にも対応します。
「Raspberry Pi 5 Case」は、新しい専用ケースです。可変速ファンを搭載しており、Raspberry Pi 5のファン専用コネクターに接続することで使用できます。カラーは赤・白の他に、グレーの販売も予定されています。
「Active Cooler」は、ケースを使用せずに高負荷でRaspberry Piを動作させる場合の冷却ソリューションです。金属製のヒート新規とか変速のファンを組み合わせたもので、ファン専用コネクターに接続して使用できます。ヒートシンクは、取り付け穴にバネ付きピンを差し込んで取り付けられます。
「RTC battery」は、電源管理ICに搭載されたリアルタイムクロックの電力供給に使用可能な、バッテリーコネクターに接続するための2ピンプラグ付きのPanasonic製ML2020コイン形リチウム二次電池のパッケージです。
カメラ・ディスプレイ用アダプターケーブルは、Raspberry Pi 5(および Compute Module 開発ボード)で使用可能なケーブルです。カメラとディスプレイとでケーブルのピン配置が異なるため、使用するモジュールに応じてケーブルを正しく選択する必要があります。ケーブルは、20cm、30cm、50cmの3種類が販売されます。
「Raspberry Pi 5 PoE+ HAT」は、Raspberry Pi 5向けに設計されたPoE+ HATです。ケースとファンと同時利用可能なように小型に設計されています。このHATボードは年末頃の発売の見込みです。
「Raspberry Pi 5 M.2 HAT」は、Raspberry Pi 5 の PCIe FPC コネクタに接続して利用可能な、M.2形式のPCI ExpressデバイスもしくはNVMeデバイスをサポートしたHATボードです。こちらのHATボードも年末頃の発売の見込みです。
Japanese Raspberry Pi Users Groupでは、サンプルを用いたレビューを行いましたので、以下の記事も合わせてご覧ください。
2022年に発売されたRaspberry Pi Pico Wについて、工事設計認証の取得および表示手順の完了を受けて、日本国内の認定リセーラーが2023年3月27日より販売を開始しています。
KSYは税込1,100円+送料で販売中です。
リリース https://raspberry-pi.ksyic.com/news/page/nwp.id/121
販売ページ https://raspberry-pi.ksyic.com/main/index/pdp.id/863/pdp.open/863
スイッチサイエンスは1,210円+送料で販売中です。なお、需要と供給が安定するまで、購入台数の制限(3台)を設けるとのことです。
リリース https://prtimes.jp/main/html/rd/p/000000122.000064534.html
販売ページ https://www.switch-science.com/products/8171
Raspberry Pi (tradong) Ltd.は3月9日、Raspberry Pi Global Shutter Cameraを発表しました。
Raspberry Pi Global Shutter Cameraは、Sony IMX296センサーを使用した1600万画素のグローバルシャッターカメラで、通常のローリングシャッターカメラと比較して、高速で動作する物体を歪みなく撮影するのに向いています。レンズはRaspberry Pi HQ Cameraと同じくCマウントおよびCSマウント(付属のC-CSアダプタで対応)の各レンズが利用可能です。
Raspberry Pi Global Shutter Cameraの価格は50ドルで、各認定リセーラーを通じて販売されます。日本ではKSY、スイッチサイエンスでそれぞれ販売が開始しています。
KSY(税込8,470円)
スイッチサイエンス(税込8,525円)