Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。
CM5をI/Oボードで使っています。事前にネットで知った冷却ファンの挙動がそのままだった。どうやらブートローダーが古いみたい。
挙動とは、シャットダウン後に冷却ファンが高速に回り、起動すると止まるというものです。
ブートローダーを最新に変更し、冷却ファンの設定も確認してみました。
ブートローダーの更新
前置きしておきたいのが、sudo rpi-eeprom-configで分かる内容が書き換わってしまったこと。保存しておかなかったので分からない。更新させたら変わってしまった。問題無く動作はします。ブート順序の項目が違っていた気がする。eMMCが非搭載だからなのか分からない。
ともかく購入時のバージョンを調べてみます。
vcgencmd bootloader_version
2024/09/23 14:02:56
version 2682625908f5585e5f4832bb82e74e7d757ec48f (release)
timestamp 1727096576
update-time 0
capabilities 0x0000007f
2024−09-23でした。
コマンドで更新もできるけど、手軽にsudo raspi-configから更新します。

最新のブートローダーを選びます。

どうやら、2025-05-08にしてくれるみたい。 やってみよう。
*** CREATED UPDATE /usr/lib/firmware/raspberrypi/bootloader-2712//latest/pieeprom-2025-05-08.bin ***
CURRENT: 2024年 9月 23日 月曜日 13:02:56 UTC (1727096576)
UPDATE: 2025年 5月 8日 木曜日 14:13:17 UTC (1746713597)
BOOTFS: /boot/firmware
'/tmp/tmp.CqvgrAWrdy' -> '/boot/firmware/pieeprom.upd'
UPDATING bootloader. This could take up to a minute. Please wait
*** Do not disconnect the power until the update is complete ***
If a problem occurs then the Raspberry Pi Imager may be used to create
a bootloader rescue SD card image which restores the default bootloader image.
flashrom -p linux_spi:dev=/dev/spidev10.0,spispeed=16000 -w /boot/firmware/pieeprom.upd
Verifying update
VERIFY: SUCCESS
UPDATE SUCCESSFUL
成功した。促されて再起動します。
eepromの設定
eepromの設定はこれがデフォルトだと思う。(購入時はBOOT_ORDER=0xf2146)
sudo rpi-eeprom-config
[all]
BOOT_UART=1
BOOT_ORDER=0xf461
NET_INSTALL_AT_POWER_ON=1
POWER_OFF_ON_HALT=0を追記する。
sudo rpi-eeprom-config --edit
[all]
BOOT_UART=1
BOOT_ORDER=0xf461
NET_INSTALL_AT_POWER_ON=1
POWER_OFF_ON_HALT=0 #追記
とりあえずはこれで電源がOFFで冷却ファンも止まります。
冷却ファンの設定

冷却ファンは、既にファームウェアで自動設定になっているため、I/Oボードに繋げばそれでOKみたい。
Pi 5の時も設定したけれど、ヒートシンクもあって冷却効果が高いため、細かな設定はあまり意味がありません。試して結果、自動設定で行くことにしました。
設定は書式が決まっていて、一人のレベルで3行必要。
これを0~3の4パターンのみ有効です。5つ以上書いても無視されます。
追記するのはConfig.txtの最下部へ。
sudo nano /boot/firmware/config.txt
[All]以下へ、先ず冷却ファンをONとし、その下から回転数などのレベル設定を書きます。
# Fan PWM
dtparam=cooling_fan=on
以下、デフォルト(標準)設定になります。
つまり、自動設定と同じなので、これで良ければ書かなくてもOKです。
dtparam=fan_temp0=50000
dtparam=fan_temp0_hyst=5000
dtparam=fan_temp0_speed=75
dtparam=fan_temp1=60000
dtparam=fan_temp1_hyst=5000
dtparam=fan_temp1_speed=125
dtparam=fan_temp2=67500
dtparam=fan_temp2_hyst=5000
dtparam=fan_temp2_speed=175
dtparam=fan_temp3=75000
dtparam=fan_temp3_hyst=5000
dtparam=fan_temp3_speed=250
設定の解説
自分なりの解釈で少し解説しておきます。
dtparam=fan_temp0=50000
設定レベルのトリガー温度ミリ℃(例:50000=50℃) 温度がこの温度に達すると冷却ファンが動作します。設定未満なら停止。
dtparam=fan_temp0_hyst=5000
温度ヒステリシス(Hysteresis、ミリ℃)で、冷却ファンはこの値±の範囲内で設定レベルが有効になる。 (例:5000=5℃)
ヒステリシスは、調節感度やしきい値という言葉が分かりやすい。
ヒステリシスの設定幅がないと、設定温度を行ったり来たりした場合にONとOFFを繰り返すことになり、安定せず故障を招きやすいからとされてます。
冷却ファンの場合はその度に回転数が変わることになる。幅があることで、ONとOFFを繰り返す間隔を長くできるというわけですね。
自動設定の例だと、50℃、60℃、67.5℃、75℃と4パターンの設定値があり、しきい値(≒ヒステリシス)はすべて5℃なので、45℃、55℃、62.5℃、65℃、72.5℃、70℃、80℃を±超えた後に次の設定レベルへ移行する理屈だと思う。
実際に手動で計測してみると、60℃では回転数が変わっても、59℃でも50℃の設定のままだった。多分ヒステリシスの5℃を±経由して且つ60℃を超えないとダメということですね。だから設定した温度で回転数が上がる。
一方で、設定値50℃に対して45℃〜55℃ではなく、49.9℃でファンは止まった。
54℃を超えて、そこから-5℃だったから次のレベル=設定がないから0になった気がする。
ヒステリシスで設定した温度分(例:5℃)を経由して、次に温度が設定したレベルの範囲内なら、レベルに応じて上下する(回転数が変わる)ということらしい。この辺はよく分からない。
ヒステリシスは一般的に5℃や10℃といった値が多い。
dtparam=fan_temp0_speed=75
設定レベルの冷却ファンのPWM値(例:0〜255、255=100%) この値を元にファンが回転する。
75の場合は最大255の約30%の値なので、回転数が30%という計算になる。
あとで調べるコマンドで、max RPM 5853等とあったので、30%なら1756回転くらいになる。
ヒートシンクと併用しているため、アイドル時は50℃以下が多く冷却ファンは滅多に回転しない。
YouTubeの再生は温度上昇として分かりやすい。 再生すると概ね50℃〜60℃まで上がるため、動画再生後にファンが回っていることが分かります。
多くのマルチタスクでなければ、常に60℃前後で済みました。
■Pi 5は8GBモデルがオススメ
ファン関連のコマンドまとめ
冷却ファンの挙動を確認したり、いくつもコマンドを使いました。忘れがちなので、まとめておきます。
vcgencmd measure_temp
pinctrl FAN_PWM op dh
pinctrl FAN_PWM op dl
pinctrl FAN_PWM a0
cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
sudo vclog -m
お馴染みの温度を調べるコマンド:
vcgencmd measure_temp
temp=41.1’Cなどと返ってきます。
CM5のI/Oボード専用ケースの冷却効果
専用ケースの冷却ファンと、専用ヒートシンクも併用しているため、冷却効果は抜群です。
起動後のアイドル時は概ね42℃前後でした。室温が22℃くらいまでの季節なので文句はありませんね。敢えて冷却ファンを止めても、25℃室温で47.2℃でした。
ある程度の負荷がかかっても58℃〜60℃で、60℃前半までといった具合です。70℃などはなかなか達しません。とても効果があって安心です。特にヒートシンクはオススメで、ケースのファンは無くても良いくらいです。
一時的なファン制御:
再起動するまで有効なので、あくまでも一時的な実行コマンドです。pinctlコマンドはRaspberry Pi OSだとsudoは要らないみたい。
ファンを止める(0%)
pinctrl FAN_PWM op dh
ファンを全開(100%)
pinctrl FAN_PWM op dl
ファンの自動設定(標準)
pinctrl FAN_PWM a0
ファンの回転数を調べる
コマンド実行で回転数が返ってきます。アスタリスクには恐らくhwmon1が入ると思いますが、複数ある場合に異なるみたいなのでアスタリスクでOKでした。
cat /sys/devices/platform/cooling_fan/hwmon/*/fan1_input
0と返ってくれば停止してい、回っていれば1660とか返ってきます。
先程の温度を調べるコマンドと繋げて実行すれば、分かりやすいかも。
起動時のGPUログ
vclogは公式のドキュメントによると、GPUのログです。
起動時にファンの回転速度(および最大値)も、Config.txで適用されているGPU絡みの設定も分かります。
vclog は、Arm 上で動作する Linux から VideoCore GPU からのログメッセージを表示します。root 権限で実行する必要があります。
sudo vclog –msg はメッセージログを出力し、sudo vclog –assert はアサーションログを出力します。
sudo vclog -m
vclogの出力例
004718.695: *** Restart logging
004733.152: Initial voltage 800000 temp 46073
004933.269: avs_2712: AVS pred 8558 855800 temp 46073
004936.872: vpred 855 mV +0
004950.533: FB framebuffer_swap 1
004970.255: Select resolution HDMI0/2 hotplug 1 max_mode 2
004986.682: HDMI0 edid block 0 offset 0
004989.065: 00ffffffffffff0006b3a9243c930000
004994.737: 131e010380351e782a0ef5a555509e26
005000.410: 105054bfef00d1c0b300950081808140
005006.083: 81c0714f0101023a801871382d40582c
005011.756: 4500132b2100001e000000ff004c354c
005017.429: 4d54463033373639320a000000fd0030
005023.102: 4b185412000a202020202020000000fc
005028.774: 004153555320565032343851470a01cf
005046.830: HDMI0 edid block 1 offset 128
005049.385: 02032bf14f0102031112130414050e0f
005055.057: 1d1e1f90230917078301000065030c00
005060.730: 1000681a00000101304be66842806a70
005066.403: 38274008209804132b2100001a011d00
005072.076: 7251d01e206e285500132b2100001e01
005077.749: 1d00bc52d01e20b8285540132b210000
005083.422: 1e8c0ad090204031200c405500132b21
005089.094: 000018000000000000000000000000d7
005094.786: HDMI0: best-mode 2 (limit 2) 1920x1080 60 Hz CEA modes 3ec01fe0000000000000000000000000 extensions 1
005106.379: Select resolution HDMI1/2 hotplug 0 max_mode 2
005113.301: FB0 disp 0 max-fb 2 1920x1080 stride 3840 base 0x3f800000
005987.293: initramfs (initramfs_2712) loaded to 0x2dec3000 (size 0x113cfcf)
006002.659: dtb_file 'bcm2712-rpi-cm5l-cm5io.dtb'
006088.563: Loaded overlay 'bcm2712d0'
006175.611: dtparam: i2c_arm=on
006191.031: dtparam: audio=on
006196.775: Unknown dtparam 'audio' - ignored
006261.068: Loaded overlay 'vc4-kms-v3d-pi5'
006381.277: Loaded overlay 'dwc2'
006383.140: dtparam: dr_mode=host
006388.042: dtparam: cooling_fan=on
006417.318: dtparam: fan_temp0=45000
006434.763: dtparam: fan_temp0_hyst=5000
006452.556: dtparam: fan_temp0_speed=75
006472.050: dtparam: fan_temp1=55000
006489.552: dtparam: fan_temp1_hyst=5000
006507.409: dtparam: fan_temp1_speed=125
006526.998: dtparam: fan_temp2=65000
006544.535: dtparam: fan_temp2_hyst=5000
006562.427: dtparam: fan_temp2_speed=175
006582.026: dtparam: fan_temp3=75000
006599.598: dtparam: fan_temp3_hyst=5000
006617.525: dtparam: fan_temp3_speed=250
006718.119: Read command line from file 'cmdline.txt':
006724.624: 'console=serial0,115200 console=tty1 root=PARTUUID=d8dc4f7a-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP'
006937.382: RPM 5685, max RPM 5685
008776.696: Device tree loaded to 0x2deaf300 (size 0x13c3f)
008850.160: Starting OS 8850 ms
008855.685: 00000040: -> 00000480
008857.536: 00000030: -> 00100080
008862.248: 00000034: -> 00100080
008866.961: 00000038: -> 00100080
008871.674: 0000003c: -> 00100080
008981.244: sdram: sdram refresh 2081->4162 (2)
068939.030: initial_turbo of 60 deactivated
ファンの回転数の最大値を知りたくて実行しました。このログはファンの設定も分かりますし、意外と重宝しますね。
RTC(リアルタイムクロック)の設定
I/OボードにあるRTCは、電池を装着した状態でコマンドを実行して確認できます。
sudo hwclock -r
2025-05-15 22:43:58.786992+09:00
これ、システムに合わせるのはどうするのか?
hwclockでよく使うオプション:r、w、s、v
sudo hwclock -r #表示(=--show)
sudo hwclock -w #RTCをシステムの時計に合わせる
sudo hwclock -s #システムをRTCに合わせる
sudo hwclock -v #詳細を表示
RTCをシステムクロックに合わせようと思い、NTPの設定をしました。
sudo nano /etc/systemd/timesyncd.conf
最初は何も設定できておらず、コメントアウトされています。
[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
#ConnectionRetrySec=30
#SaveIntervalSec=60
日本のサーバで有名なNTP2つを設定することにしました。
NTP=ntp.nict.jp ntp.jst.mfeed.ad.jp
サービスを再起動した後、ステータスを確認すると、ntp.nict.jpになっているのが確認できます。
sudo systemctl restart systemd-timesyncd.service
sudo systemctl status systemd-timesyncd.service
systemd-timesyncd[2843]: Contacted time server [2001:df0:232:eea0::fff3]:123 (ntp.nict.jp).
最後に、RTCをこのNTPで合わせたシステムクロックに同期させます。
sudo hwclock -w
確認は、sudo hwclock -vで詳細をみて、ズレがなければOKです。
Time since last adjustment is 7014576 seconds
Calculated Hardware Clock drift is 0.000000 seconds
次はCM5専用I/OボードでもSSDドライブ起動をしてみます。



