ラズパイ4の熱問題を考える(2 / 2)

前回、ラズパイ4の熱問題を紐解きました。

時系列的に熱問題を見ていくと、どうも 2019年10月頃に一旦落ち着いているようです。

このページは、時系列的にファームウェアの対策状況を解説している記事になります。

目次

現状確認

所有するラズパイ4のファームウェアバージョンが分かると、どこまで対策済みかを知ることができるので、まずは確認することにします。

ファームウェアのバージョン確認

私の所有するラズパイ4のファームウェアは 2020年4月16日 バージョンでした。

$ vcgencmd bootloader_version
Apr 16 2020 18:11:26
version a5e1b95f320810c69441557c5f5f0a7f2460dfb8 (release)
timestamp 1587057086

2019年10月版は適用済みなので、もしかして熱問題対応済み???

発熱状況

使用状況別に発熱状況を観察してみました。

【46℃】Amazon Prime Video 再生中

フルHD で映画鑑賞すると 1時間で 46度まで温度上昇しました。

$ cat /sys/class/thermal/thermal_zone0/temp
46738

ちなみに、そこまで CPU 使用率は高くなかったです。
※以下、Chromium 再生中の状態です(見ていた時は一番高くて 48%)。

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1642 pi        20   0  276672  49508  29812 S  35.3   1.2  29:10.90 chromium-+
 1328 pi        20   0 1052468 488600 142632 S  29.4  12.2  18:34.52 chromium-+
 1151 pi        20   0  348396  88792  64016 S  17.6   2.2  10:48.85 chromium-+
 1107 pi        20   0  705964 217992 111896 S   5.9   5.5   3:05.95 chromium-+
 1155 pi        20   0  261952  53356  40548 S   5.9   1.3   1:26.61 chromium-+
 1330 pi        20   0  379024 102592  58256 S   5.9   2.6   0:36.71 chromium-+

【52℃】CPU 負荷

(ケースの効果か、はたまたファームウェアのおかげか)思ったより温度が低かったので、負荷を掛けて計測してみることにしました。

負荷の掛け方は、下記ページを参考にさせて頂きました。

負荷テスト 標準コマンドだけでCPU・メモリへ負荷をかける|ギブ&テイクSE|note
目次
CPU 負荷を発生させる方法
メモリ 負荷を発生させる方法

コマンドを叩く度に表示される数字は、pid(プロセス ID)です。
Raspberry Pi 4 Model B に搭載される SoC(BCM2711)は Quad-Core(4コア)のため、4回実行しています。

$ yes > /dev/null &
[1] 1326
$ yes > /dev/null &
[2] 1327
$ yes > /dev/null &
[3] 1328
$ yes > /dev/null &
[4] 1329

上記コマンドを実行すると、CPU が消費されている模様を確認できます(99.0 - 100.0 % で遷移していました)。

$ top -d 1

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND    
 1326 pi        20   0    3004    364    308 R 100.0   0.0  22:44.92 yes        
 1327 pi        20   0    3004    356    300 R 100.0   0.0  22:41.17 yes        
 1329 pi        20   0    3004    344    288 R 100.0   0.0  22:39.15 yes        
 1328 pi        20   0    3004    336    280 R  99.0   0.0  22:23.85 yes

この状態で 1時間経過すると、52度まで温度が上がりました。

$ cat /sys/class/thermal/thermal_zone0/temp
52095

【54℃】メモリ負荷

CPU 負荷と同じく、上記 URL を参考にして実施しました。
こちらはスクリプトをコピペします。

$ cat /tmp/test-memory.sh 
#! /bin/bash
echo PID=$$
echo -n "[ Enter : powerup! ] , [ Ctrl+d : stop ]"
c=0
while read byte; do
   eval a$c'=$(head --bytes 50000000 /dev/zero |cat -v)'
   c=$(($c+1))
   echo -n ">"
done
echo

コピペしたスクリプトを実行します。

$ sh /tmp/test-memory.sh 
PID=1628
[ Enter : powerup! ] , [ Ctrl+d : stop ]

Enter キー押下毎にメモリ使用量がかさ増しされていくので、適当なところで止めて経過を観察します。

この状態で 1時間放置すると、54度まで上がっていました。

$ cat /sys/class/thermal/thermal_zone0/temp
54530

他にもビデオ周り(GPU)やネットワークに負荷を掛けることで、もっと温度を上げられると思いますが、今回はやっていません。

ファームウェアの適用

ファームウェアの復元

今回、成功したので問題ありませんでした(この操作は不要でした)が、ファームウェアは本体起動に不可欠のため、失敗すると起動不能に陥ります。
※ファームウェアが無いと(microSD に制御が移らないので)起動しない。

しかし、この場合でもファームウェアを復元する(Raspberry Pi 4 の EEPROM をリカバリーする)手段が提供されているので、解決可能です。

base on Raspberry Pi Downloads - Software for the Raspberry Pi

Recovery
If your Raspberry Pi 4 will not boot, it is possible that the SPI EEPROM has become corrupted. To check, remove the SD card, disconnect the device from power, then reconnect it. If the green LED does not flash, this indicates that the EEPROM has become corrupted.

あなたの場合はラズベリーパイ4ないでしょうブート、SPI EEPROMが破損している可能性があります。確認するには、SDカードを取り外し、デバイスの電源を切ってから再接続します。緑色のLEDが点滅しない場合は、EEPROMが破損していることを示しています。

ファームウェアが正常かどうかは、上記公式サイトに書いてあります。
分かりづらいので、補足すると

  • microSDメモリカードを差さないでラズパイの電源を入れる
  • 緑のLEDが点滅する
    正常。
  • 緑のLEDが点滅しない
    異常。 ※リストアが必要。

で確認可能です。