less than 1 minute read

Raspberry Pi 4の性能を引き出すために公式ドキュメントに書かれていない設定や調査に時間が掛かった部分があったのでまとめておく。

公式ドキュメントとgithub

Bootloader アップデート

Raspberry Piを購入したらまず最初にbootloaderをアップデートする。

Version確認

$ vcgencmd bootloader_version
$ sudo rpi-eeprom-update

アップデート

$ sudo rpi-eeprom-update -a
$ sudo reboot

リリースノートは以下のリンクにある。

vcgencmd

設定では無いがRaspberry Piの各種ステータスを確認するコマンド。

$ sudo vcgencmd commands

でコマンド一覧がわかる。

ソースコードはこちら。

Watchdog

Watchdogを有効にするにはconfig.txtに以下の行を追加する。

dtparam=watchdog=on

Watchdogはheartbeatとnowayoutの2つのパラメータを持っている。 heartbeatのdefault値は15秒で最大値も15秒。 この値はdevice driver bcm2835_wdt.c を解析して判明した。 nowayoutのdefault値は0。nowayoutに1を設定するとWatchdogを停止できなくなる。

パラメータは通常default値で使えばよいと思うが変更したい場合はcmdline.txtに以下の文字列を追加する。

bcm2835_wdt.heartbeat=10 bcm2835_wdt.nowayout=1

heartbeatの機能はsystemdが持っているので/etc/systemd/system.confに以下の設定を追加する。 RuntimeWatchdogSecにはbcm2835_wdt.heartbeatより小さい値を設定すればよい。

RuntimeWatchdogSec=10

WiFiとBluetooth無効化

WiFiとBluetoothを使わない場合はconfig.txtに以下を追加すれば無効にできる。

dtoverlay=disable-bt
dtoverlay=disable-wifi

GPUとメモリ最適化

Raspberry Piはheadlessで使う場合でもGPUをoffにできないようだ。 そこでGPUなどのハードウェアアクセラレータに割り当てるメモリを最小にする。 具体的にはconfig.txtに以下の行を追加する。

dtoverlay=cma,cma-64

cma-64というパラメータがハードウェアアクセラレータに割り当てるメモリサイズ。もっと小さくできるかもしれないが0にはできない。 この値はCodecやカメラモジュールにも影響する。 詳細はkernelソースツリーに含まれている overlays/README 参照。

kernelが確保したCMAサイズを確認するには以下のコマンドを実行する。

$ cat /proc/meminfo | grep CmaTotal

Overclock

製品保証と動作温度に注意

Overclockするにはconfig.txtに以下を記述する。 周波数はMHzの単位で指定する。下記設定の場合は2000MHzとなる。 最新のfirmwareではover_voltageを設定してはいけない。設定するとDVFSが無効になる。

arm_freq=2000

常に arm_freq に設定した周波数で動かしたい場合は force_turbo を設定する。

force_turbo=1

実際の動作周波数を確認するには以下のコマンドを実行する。

$ sudo vcgencmd measure_clock arm

Raspberry Pi 4BではCPUの周波数以外にGPUなどの周波数が設定できる。