【IoTシリーズ】(第1回)「ラズベリーパイのデフォルト設定がヤバい」という話

ラズベリーパイのデフォルト設定がヤバい、と言う話、聞いたことがあるだろうか。

実際にヤバいのだ。先日、身を持ってこの話の信憑性を検証することになった。
その顛末について書いてみよう。

それは、筆者がラズパイとNode-Redで一寸した圧力測定器を作り、知り合いに試験してもらった時のことだった。試作機をポケットルーターとタブレット込みで渡し、使い勝手を試してもらっていたのだ。

わくわくしながら、使い勝手はどうだったか聞いて見ると、使い勝手以前にクレームの嵐。

「装置、何も反応しなくなって画面も表示されないんだけど壊れたのかな。特に変わったことはしてないけど、中国製?」
「Wifiがブチブチ切れるんだけど、このルーター、安もんなんちゃうの」

ほんの数人にテストしてもらっただけでこの始末。
家で試していた時は、そんな異常に見舞われたことはなかったのに・・・。

で、調べて見た。何とラズベリーパイのデフォルト設定には、これらのトラブルは織り込み済みで、それを回避するには特殊な設定が必須だったのだ。

(A)終了処理中に電源を抜くと、20~30回に一回、OSが壊れて立ち上がらなくなる。
(B)Wifiにしばらくつながないと、省電力モードが働いてWifiが切れ、しばらくつながらなくなる。

「何じゃそりゃー」 それを知った筆者が頭を抱えたのは、言うまでもないだろう。

それと同時に、家では何の問題もなく使えていた理由もわかった。技術者なら習慣的に「終了処理中に電源を抜く」などという無謀なことはしないし、ネットも習慣的に信頼性の高い有線を使う。勿論無線でのテストもやったのだが、その際は連続的にWifiを使っていたから、省電力機能の動作するひまがなかったのだろう。

でも一般の人が、あの一寸長めの終了処理に付き合う道理はないので、筆者の要望に従って、何度も装置を試験すればそのうちOSが壊れるのもうなずける。ポケットルーターを渡しているのに有線でつなぐなどという奇特な人がいるとも思えないので、無線がブチブチ切れるという苦情には、「さもありなん」と同意するしかない。

「こんなのデフォルトにしないで欲しい。こういうことをするから、ラズパイの信頼感が損なわれる(ここを参照)。ソフト的な解決手段があるのに、その情報にアクセスするのが極めて困難、というのも問題だ。」天を仰いだ私のぼやきに同意する人は多いのではないだろうか・・・。

ネット上でも、この問題には不満を持つ人は多い。

(A)に関しては、ソフト的な解決手段は導入する上での制約が大きく、かといってPCのようにバカチョンでやろうとするとハード的なコストがかさむので、目を瞑ることもできなくはない。でも(B)は非道いと思う。この問題は省電力モードというお節介機能をOFFするだけで解決するのだ。

ところがこの機能をOFFするのはそう簡単ではないのだ。まず、通常のメニューには省電力モードを無効化する手段はない。ターミナルにiwconfig wlan0 power off というコマンドを打ち込めば、無効化することはできる。でもこのコマンド、中途半端にラズパイに詳しい人が見ると、無線LAN自体をOFFにするとしか思えないネーミングなのだ(筆者も最初は使用をためらってしまった)。さらに、一旦無効化しても、再起動すると勝手に有効化されるというおまけ付きなのだ。正に鬼仕様といっていい。そればかりではない。筆者は省電力機能の話を初心者向けの解説で読んだ記憶がない。通常は、Wifiの省電力機能がデフォルトになっていることにすら気づかないだろう。

その後の調査で、このWifiの省電力モードがONになっていると、モード動作時にセンサーと干渉し、データが読み込めなくなる場合があることもわかった。筆者には再現できていなかった、筆者のセミナー受講生が遭遇したセンサー不安定問題が、Wifi接続することで再現したのだ。再現できなかった訳もわかった。ほぼ有線で試験してきた筆者に再現出来るわけがない。当然省電力モードをOFFにすることでこの問題は解決した。

この問題が解決したとき、筆者は天に向かって呟いていた「数円のランニングコストを下げてあげたいっていうお節介も、度を過ぎると嫌われますよ?」と。 

wifiに必要な電力は、5V-25mAぐらいだそうだ。省電力機能でその中の80%が節約出来るとすると 20mA、0.1W ほど節約できることになる。これを元に一年間ラズパイをつけっぱなしにした場合に、節約できる金額を計算してみた。まず節約できる電力量は0.88kWh。お値段に換算すると20~30円/年。筆者がこのトラブルで使った時間は2日(16時間)以上。時給900円で換算すると、回収するのに必要な年数は480年。ひ孫の代になっても回収出来そうにない・・・。ラズパイを100台使えば、5年足らずで償却できる? 電池駆動がやりたい人向け? はいはい、そういう人もいるとは思いますよ? でもそういうニッチなニーズをデフォルトにするのは、やっぱりやめて欲しいと思うのだ。

これらのトラブルに対する対策は、設定領域のリードオンリー化と、立上げ時の自動起動ファイル(rc.local)に省電力モード無効化のコマンドを書き込むこと。リードオンリー化は設定も複雑だし、かなり使い勝手を犠牲にするので万人向けではないが、省電力モードの無効化については、設定しておいて損はあるまい(具体的な設定方法は第三回に掲載予定)。

次回は、IoTを構築する上で便利な、ラズベリーパイの様々な設定について書いてみたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です