前回、ラズパイ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が点滅しない
異常。 ※リストアが必要。
で確認可能です。