ラズパイの温度が気になります。夏だし🚀

こちらの記事のWOLサーバにCPU温度とCPU周波数を表示していますが、その詳細です

環境

  • ラズパイ 3B+
  • ubuntu 20.04.4 LTS

温度取得(sensors)

ubuntuなので、こちら↓に習って

sensors

このままだとcpu温度しか出ないのでこちらを参考↓

sudo sensors-detect

これでたくさん出る

温度取得(vcgencmd)

「ラズパイ 温度」とかでググると、vcgencmdの記事がたくさんヒットするのではないでしょうか

ubuntuなので、vcgencmdがありません

ので、まず入れます

sudo apt install libraspberrypi-bin

以下を実行すると温度が出ます

vcgencmd measure_temp

temp=56.9'C

sudo じゃないとだめ(でもなかった)

sudoをしないと、以下のエラーが出ました

vcgencmd measure_temp

VCHI initialization failed

でも、最初だけ必要なのかもしれません

2回目以降はsudoなしでもいけました

温度取得(ファイルから取得) ← 軽い!これを採用💡

これまでは前置きです(長い)

WOLサーバに合わせて記述するので、Flaskのpythonプログラム中でvcgencmdを実行しようと思っていましたが、どうやってもブラウザに表示できませんでした

Linuxコマンドはsubprocessで実行しようと試していましたが、どうやらこれが上手くいかない模様

なのでこちら↓を参考にして温度が収められているファイルから値を取ってくることにしました

四つめは動作電圧を確認するメリットをあまり見いだせなかったのと、動作電圧を記録したファイルが見当たらなかったためです。

とのことなので、電圧はいいや(分かれば、何かしらの原因切り分けには使えるが)

温度はここ↓

/sys/class/thermal/thermal_zone0
cat temp

59610

1000で割って、59.61℃


温度じゃないけど周波数はここ↓

/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

kHz表示なので、1000で割ってMHzになる

表示仕様

温度と周波数を表示

WEBブラウザをリロードすれば値は更新

プログラム修正時

.pyファイルを書き換える時はsystemdのサービスを以下のようにする

stop(止める) → status(止まったこと確認) → .py書き換える → start → status(動いたことを確認)

ちゃんとしたコマンドは以下↓(stopの例)

sudo systemctl stop wakeonlan-server.service

nginxは触らなくても、上記だけでWEBページを更新すれば挙動がわかる

もし.pyファイルのエラーが出ていたら、stopした状態でstatusを見ればエラー箇所が表示されている

ラズパイの保証温度は70℃🔥

ところで温度は確認したとして、何度までいけるのか

70℃らしいです

ただ、設定温度で周波数を絞ります

追記:ラズパイ3B+にだけtemp_soft_limitがあります。デフォルト60°C、最高70°Cまで設定可能。設定温度で1.4GHz → 1.2GHzへスロットリング。ラズパイ3B、4Bには無い。

使っているのは3B+なのでtemp_soft_limitが存在します

/boot/firmwareconfig.txtがありました

中を見ると、tempナンチャラの記載がないので、デフォルトの60℃から周波数を絞り始めそうです

これを見ると、CPUは60℃近くで周波数が下限の600MHzまで下がっているので絞ってますね

通りで最近VPNが遅いわけだ!!😇

とりあえず熱暴走の心配はなさそうです(600MHzまで絞っても温度が上がるようなら暴走しますが・・・)

今は気休めのヒートシンク(自冷)しかないので足りないですね

夏本番こわい😱

2022/08/06 追記

600MHzまで下がっていることについてですが、たしかに60℃だからもありますが、↓にあるように軽負荷では周波数を下げて消費電力を抑えるので、そのために600MHzまで下っていたのかもしれません。

https://www.raspberrypi.com/news/raspberry-pi-3-model-bplus-sale-now-35/

実際、/boot/firmware/config.txt に

  • temp_soft_limit=65
  • temp_limit=75

を追記して、周波数を絞り始める温度を65℃に設定しましたが、温度が40℃であるにも関わらず600MHzでした。(下に記載したヒートシンクを購入して40℃程度に落ち着いています)

なので、温度が低く、重負荷となれば勝手に周波数は1.4GHzまで上がるかもしれません。

ヒートシンク漁り

このくらいヒートシンクが大きければ安心だ!

Amazonだとラズパイ4用が殆どで、価格も2000円以下で買えるのに、3用は高い!

プライムで見つけられたのはこのくらい(高い)

なのでAliExpressで買いました

長納期に待てるならあり

以上😁