気の向くままに辿るIT/ICT/IoT
ハードウェア

Raspberry Pi 3B+のハードウェア設定値がデフォルト値じゃない!?

ホーム前へ次へ
Raspberry Piって?

Raspberry Pi 3B+のハードウェア設定値がデフォルト値じゃない!?

Raspberry Pi 3B+のハードウェア設定値がデフォルト値じゃない!?

2020/01/18

 /boot/config.txtなどで追加設定できるラズパイのハードウェア用の設定には、デフォルト値があるとのことなのですが、なんと、これが既定値ではなかったことに気づいた話です。

 今、2B x1、3B+ x2とRaspberry Piを計3台持っています。

 2016年4月、Amazonで買った自身初となるラズパイRaspberry Pi 2 Model Bは、日本の法人が取り扱っていたものでNAS他サーバとして運用中。

 Raspberry Pi 3 Model B+は、それぞれAliexpressの違うセラーから2018年11月に買ったもの(ちなみに全て化粧箱に技適マークが入っていた)で1つは、自作スマートスピーカーとして、もう1つは、パソコンとして使っています。

 本件に気づくに至ったきっかけは、25度設定程度でエアコンが効いていたのは確かですが、冬にも関わらず、数時間、音楽をかけ流していた自作スマートスピーカーが、途中で止まるという症状に見舞われたこと。

 一瞬、熱暴走かな?とも思ったのですが、これについては、何れもすぐそばで大声で電話中かつ、スピーカーが都度反応していたので結局のところ、これは、たまたまワードを発したか、誤認識かのいずれかだったようです。

 が、ついでなので、いろいろ調べていたら、ラズパイは、CPU温度に応じてCPU速度スロットルなるものが働き、CPUクロック周波数を自動調整しており、デフォルトでは、60度を超えてから85度までの間にラズパイ3B+の場合、1400MHz <=> 1200MHz <=> 600MHzのようにうまくとりなしてくれるとのこと。

 Overclocking options in config.txtによれば、その既定値は、上限については、全てのラズパイボードにおいて[temp_limit](デフォルト85度)でMax85度以下の値(それ以上は85度として扱われる)、3A+/3B+限定でこれが働き始める温度を[temp_soft_limit](デフォルト60から70までの任意の値)で変更できるとあります(共に[=設定値]として設定)。

 [temp_limit]の下限は、3A+/3B+以外は設定変更できない(というか、しても意味ない)模様であるため、それ以外のボードで、これが適用される場合は、おそらく60度となるのでしょう。

 それにしてもラズパイ、他にもいろいろあるようで結構奥深いことに少々驚きました。

実機確認

 さておき、内部には、かなり余裕のあるダンボール箱を筐体にファン付き樹脂製ケースに入れたスマートスピーカー用とファン付き樹脂製ケースに入れた状態で卓上に置いてあるサブマシン用のRaspberry Pi 3B+を確認してみました。

 スマートスピーカーについては、既に数時間、音楽をかけ流しており、50度を超えた状態、音楽を止めて少し放置すると40度台(もっと放置すれば30度台)になる状況で計測。

 サブマシン用のRaspberry Pi 3B+を起動、適度な負荷を意図して(と思ったら結構厳しかったようですが)任意のYouTube動画を2つ再生して計測。

 何れも、端末で[vcgencmd measure_temp]、[vcgencmd measure_clock arm]を適当なタイミングで交互に複数回実行することで温度と周波数の変化を観察してみました。

 すると、どうやら、何れの3 B +も50度を境にCPU速度スロットルが働きはじめている模様。

 既に温度が上がっていたスマートスピーカーのCPUクロック周波数は、600MHzのまま温度が下がっても変わらず。

 (改めて再起動してみるとスマートスピーカーのラズパイは、なんと温度は32.2度なのにも関わらず、最初から周波数が600MHz。)

 サブマシンのクロック周波数は、起動後、1400MHz、負荷をかけると一気に600MHzに落ち、その後、40度台になっても一向に600MHzから上がる兆しがない状況に。

 これは、明らかにおかしいので早速、[temp_limit=80]、[temp_soft_limit=60](3A+/3B+限定)をconfig.txtに追記し、ラズパイを再起動。

 サブマシンのラズパイは、起動後、同様に確認してみると60度に満たない間は、1400MHz、60度超でCPUスピードスロットルが機能し始め、CPUクロック周波数が、1200MHzに、60度を切ると即1400MHzに戻ること、この程度では600MHzに落ちることはないことを確認できました。

 スマートスピーカー用ラズパイは、起動後、なぜかちょっと高めながら39.7度、周波数は、1400MHz...、が、再生後、43.5度で、周波数600MHz...。

 なんで!?と思ったら、若干のタイムラグもありつつ、45度前後でも1400MHzと600MHzを行ったり来たり...。

 それにしてもconfig.txtの設定値も反映されず、1200MHzになることがないのもおかしくない!?それとも1200MHzにもなる方がおかしい!?どっちでも大勢に影響ない!?

 何れにせよ、今回、判明したのは、[temp_soft_limit]のみも、やはり、デフォルト値がデフォルト値でなかったと考えてよいでしょう。

で、なんで?

 2者2様な結果となってしまいましたが...。

 まぁ、2台ともパソコンやスマートスピーカーとしてちゃんと機能し、活躍してくれていて満足していますし、何れにせよ、正解はわからないわけで、深く考えるのは、やめておくことにします。

 この手法は、今日知ったばかりなので、もちろん、以前、自分で設定変更していたというオチはありません。

ちなみに

 既に4度の酷暑の夏を乗り越えたサーバとしているRaspberry Pi 2 Bは、ファンなし樹脂製ケースに入れた状態で遮熱・遮光カーテンはしてあるものの、南側の窓際の卓上にあって必要都度起動という恰好で運用しています。

 そんな2Bは、起動直後、32.6度、前述のリンク先の[arm_freq]にある通り、デフォルトのクロック周波数は、900MHz、rsyncで差分アップロードしたところ、温度39.5度、周波数600MHz、サーキュレーターを近づけ急速冷却、32度まで下がった直後は、まだ、600MHzでしたが、少し経過すると900MHzになりました。

 2Bは、そもそも3B+ほど熱をもたないことになっていますし、熱暴走したことも、突然落ちたこともなく、今のところ安定稼働しています。

ホーム前へ次へ