Raspberry Piの最高温度設定について

  • 18
    Like
  • 0
    Comment

2016年2月末ラズパイ3が熱かった(人気、温度)

先週末、2017年3月4日、5日、ラズパイ5才のバースデーパーティーが開かれました。
https://www.raspberrypi.org/blog/whats-on-raspberry-pi-birthday-2017/
https://www.youtube.com/watch?v=omenFAcfR8k

ちょうど1年前、Raspberry Pi 3Bが発表されました。当時、ラズパイ2から1年という早い登場、クロック向上、WiFi/Bluetooth内蔵、ということで話題になりました。人気沸騰。と、同時に、めちゃくちゃCPU温度が上がる!という記事がありました。温度も熱い。

"The Raspberry Pi 3 Does Not Halt and Catch Fire"
「ラズベリーパイ3が止まらなくて火が出る」
http://makezine.com/2016/03/02/raspberry-pi-3-not-halt-catch-fire/
hot-pi.png
Thermal image of the Raspberry Pi 3. (Credit: Gareth Halfacree)

ラズパイ財団サイドからも、記事が上がりました。
"No, your Raspberry Pi 3 won't overheat in everyday use, says its creator"
「いいえ、通常使用ではラズベリーパイ3はオーバーヒートしない、創造者曰く」
http://www.zdnet.com/article/no-your-raspberry-pi-3-wont-overheat-in-everyday-use-says-its-creator/

動作限界温度の85°Cに向けて80°Cからスロットリングが始まり、問題なく85°Cで止まることが説明されています。

ファームウェアのアップデートでスロットリングのバグが修正されたような形跡もありましたが、ラズパイもいよいよヒートシンクやファンが必要かということで、一旦落ち着きました。

ラズパイ2よりすごく速い、と言うためにちょっと無理目な設定になっている、とも言えます。たぶん。

もうちょっと低い温度で抑えられないのか?

ただ、センサーで85°Cということは、部分的にはもっと高いポイントもあるかも、とか、ケースに密閉された時に大丈夫かということで不安でした。さらに、子ども達が文字通りパーソナルに使えるコンピューターとして家庭に入ることを考えると、かなり心配でした。プラスティックなら融け始める温度だし。

最高温度の制限ができる!

ラズパイが密閉されて使用される案件に関わっていて、なんとかならないかと調べたところ、最高温度の制限が可能ということが判明。できるやん。

設定方法

/boot/config.txtにtemp_limit=75などと書く。以上。

この場合、70°Cからスロットリングが始まり、CPUクロックが標準の1.2GHzから段階的に600MHzまで低速化、75°C以下を保てるようになります。スロットル時の最低CPUクロックも同様にarm_freq_min=400などと、さらに低く設定できますが、こちらよりも最高温度設定が優先され300MHzに落ちたりするので、あえて設定する必要はない模様。

現在のCPU速度を知るコマンドの変遷

昔はこれでした。ちょっと前に使えなくなりました。
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
ちょっと前(2017年1月)はこれが使えていました。
sudo cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
参考:http://stackoverflow.com/questions/37426578/how-raspbian-can-control-temperature-by-setup-temp-limit-in-config-txt#_=_

カーネル4.9.11(現在の標準は4.4)で試したところ、これは使えます。
vcgencmd measure_clock arm

手軽にCPUをいじめる方法

設定がうまくいっているのか調べたい時、以下のようにします。

yes > /dev/null & これを8連発とか。
killall yes いじめ終了の時。

連続的にCPUクロックと温度を表示する時は、こんな感じで。
while true; do vcgencmd measure_clock arm ; vcgencmd measure_temp; sleep 1; done

どうしてもパフォーマンスが欲しい時は、ヒートシンクやファンなど放熱対策を。そういう必要がない時は、最高温度の設定をしておきましょう。

その他、関連コマンド

vcgencmd measure_clock arm  現在のCPUクロックを表示
vcgencmd measure_temp    現在の温度を表示
vcgencmd get_config int    各種設定確認

vcgencmd get_throttled  スロットル情報の表示

スロットル情報の読み方(throttled=0x60002 など):
下の3ビットは現在の状態
 0: under-voltage コア電圧低下中
 1: arm frequency capped CPUクロック制限中
 2: currently throttled スロットリング実施中
上の3ビットは履歴
 16: under-voltage コア電圧低下を記録
 17: arm frequency CPUクロック制限を記録
 18: throttling スロットリング実施を記録

参考ページ

RPI vcgencmd usage
Runcommand warning if voltage/temperature throttling