Raspberry Pi 2,3,4 を使用しているのですが、Raspberry Pi 4 だけ時々リブートしたりハングアップすることがあり、昨日まで原因がわかっていませんでした。
今日、2024/03/30、原因が判明。正確には、原因の一つが判明したと思われます。
どうも熱暴走しているらしい。
Raspberry Pi シリーズは基本的には低消費電力設計なので、オンボードチップが熱くなりすぎることなんて考えていませんでした。RPI3 CPUにはヒートシンクを付けているし、RPI4に至ってはアルミ筐体、ヒートシンク一体型フレームを使っているため、最大速度で動作したとしても放熱できるだろうと軽く考えていたためです。そもそも、CPUx4 が長時間100%になることなんてあり得ないでしょう。
ところが、本日は3月なのに気温が20度を超えてRaspberry Pi 以外のPCの冷却ファン音が速く回り始めた音がしている中、RPI4 が突然勝手にリブート。
何をやっていたかというと、FreeBSD 13.3 のカーネルをソースからビルドしているところでした。
/usr/src にて、 「make buildkernel」とすれば、1 CPU でビルドを行いますが、-j4 オプションを付け「make -j4 buildkernel」としたため、4個のCPUを全部使用します。
ビルド作業はターミナルエミュレータで行い、RPI4とHDMIで直接つながっているコンソールで、「htop」コマンドを発行し、ジョブと負荷状況を表示していたら、画面右上に稲妻マークが表示され、数秒後にコンソール画面が真っ暗に。ターミナルエミュレータはフリーズ状態。
RPI4の金属フレームを触ってみると暖かい。熱いまではいかない。
同じ、htop コマンドも、RPI3 で使うと、稲妻マークではなく、温度計マークが表示された時は、ヒートシンクがかなり熱くなっています。
ひょっとして、CPUの熱が金属フレームにちゃんと逃げていないの?
RPI4 のヒートシンクを取り外し、熱伝導シートと金属フレームの間にシリコングリースを塗りたくってみました。これで密着性が少し良くなったはず。ヒートシンク兼筐体を元に戻して、再度、カーネルのビルドを実施。
make -j4 buildkernel
と4CPUを使うビルドを発行してみたところ、、、、、、稲妻マークが出てこないし、カーネルビルドが最後まで進みました。ちなみに、FreeBSD13.3 Aarch64 カーネルビルドにかかった時間は35分くらいでした。(USB ATA HDD使用)
たまたま、本日、室温が高い状態で、たまたまカーネルビルド作業を行ったので、気付けたのだと思います。真冬でもっと室温が低かったら密着が緩い状態でもビルドに成功していたかもしれない。
ただし、もっと寒い時期、カーネルビルドを行っていない時(どの程度CPUが稼働していたかは不明)でも、勝手再起動することがあったので、これですべてのリブート要因が消えたかどうかは未知。
余談ですが、Raspberry Pi 2は スマートフォン用の5V1A USB電源に接続しているので、発熱を気にすることはありません。(その間、CPUを触ったこともないけど。)最大5Wですからね。その分、-j4 オプションでカーネルビルドを行っても、ビルド終了まで1時間以上掛かります。
RPI3の場合は、RPI2よりも最大5V, 2.5A で12.5Wですが、-j4 オプションを付けてカーネルビルドを行っても、この時期では、ハングアップや再起動には至りませんでした。
RPIに限らず、発熱を検知したらCPUが勝手に速度を落とすと思うんですけどね。
RPI4推奨電源は、5V最大3.5Aだったかな~。この場合、3.5Aと言っても、USBポートから外部駆動用に使う電流も含んでいるのでボード上の半導体が消費発熱する電力は2.5Aくらいのはず。本来ならRPI3と同じくらいのはずなんですが、私の勘違いかな。いずれにせよRPIのシリーズが上がってゆく毎に発熱が大きくなるので、夏場も24時間連続稼働させたい用途の場合は、冷却ファンがあるPC筐体の方が安全かな~。
さて、本日、RPI4にシリコングリースを塗りましたけど、夏場をやり過ごせるのかな?