2017年4月23日日曜日

ZenFoneGoの再起動

ASUSのSIMフリースマホ ZenFoneGoを購入しました。
勝手に再起動するのと戦ってほぼ勝ったのでそのメモです。
【2017/4/30追記】負けました。この記事を2017/4/23に書いて、4/29帰省中(wi-fiオフ)で充電中に再起動。4/30にスリープ中に発熱してシャットダウン、その後再起動ループになりました。SIMとSDカードを抜いてなんとか再起動ループからは脱出しましたが、完敗です。

結論から書きますね。
・初期化(必須ではないけど試したほうが良いと思います)
・位置情報をオフ
・アプリの自動更新をオフ
・アカウントの同期設定(特にgoogle)を可能な限りオフ
・avastをインストールしない
・バックグラウンド通信するガジェットをホーム画面に置かない
・Google Play Musicを起動しない
上記でほぼシャットアウトできました。【追記:できていませんでした。】

ZenFoneGoが勝手に再起動します。
再起動後はSDカードが装着されましたと通知が出るのでわかります。
再起動記録というアプリを入れておくと日時が記録されて良いです。

1日に複数回~3日に1回くらいのペースで再起動していました。
webで調べたりしながら設定を色々変えましたがなかなか改善しませんでした。
この時点で効果があったのは
・通信方式を3Gにする(LTEを切る)
・マイクロSDをささない
(上記2つは消費電力を減らす施策ですね)
しかしながら通信は遅いしデータ容量が制限されるし我慢できませんでした。

かなり入念に観察した結果、
設定というよりスリープに入っている(orディスプレイが消えている)状態でバックグラウンド通信をした場合に落ちるということがわかりました。特に弱電界(電波が弱い)で顕著です。
ここからはバックグラウンド通信を徹底的に減らす対策を行いました。
特に効果が高かったのは冒頭に書いた中の下記4つでした。
・位置情報をオフ
・アプリの自動更新をオフ
・アカウントの同期設定(特にgoogle)を可能な限りオフ
・avastをインストールしない

位置情報はもともと私はバッテリー節約(WiーFiとモバイルネットワークで現在位置を特定する)を選択していましたが、これがある限り何を変更しても再起動しまくりました。

アプリの自動更新はオフにしていて、たまに手動で更新するようにしています。更新中にスリープに入れるとたまに再起動してしまいます。
使い続けるときにバックグラウンドで更新するのがよいと思います。

Googleの同期設定はGmailとカレンダーのみオン、他はオフにしています。こちらもたまに手動で一通り同期します。
各種同期をオンにして戻し忘れると再起動するので実使用に影響がない範囲、例えばカレンダーも使っていないならオフ等、極力同期項目を減らしたほうが良いと思います。

======
技術的な原因としては下記の複合要因ではないかと予想しています。
(1)どこかのICが電源電圧変動に弱いorスリープモードからの復帰時に誤動作
(2)電池の内部抵抗が高くて消費電流が急に増えたときに電圧ドロップが発生する(充電中や満充電のタイミングで発生するのでそんなに単純な話ではないかも)
(3)無線用ICの消費電力が大きすぎて電源電圧が下がるorノイズで他のICが誤動作

観察する方法がないのですが、バックグラウンド通信やフラッシュメモリへの書き込みとディスプレイの点灯が重なるタイミングで消費電力的にキャパを超えるのかもしれません。

掲示板等でメモリリーク等の話がありますが、通常の動作時(触っている場合)には一度も再起動していないので違うと思います。