Android Zaurusの日記

ザウルスをアンドロイドにしてあげる
本館 Android Zaurus

2010-09-10

dynabook AZ起き上がり問題

17:35 |  dynabook AZ起き上がり問題を含むブックマーク

ディスプレイを閉じたり電源ボタンをちょい押ししたりするとサスペンドに入って、電源LEDが点滅する。しかし、そのまま放置していると、いつの間にか電源LED点灯&WiFi接続したままになる。起き上がりである。当然電池がなくなっていき、朝起きたら残量ゼロ。


今朝Android SDK r7がリリースされ、adbにデバイス接続するまで待つコマンドwait-for-deviceが追加されていた。sleepを入れて無理やりループさせなくても、起き上がりの瞬間をログできる。次のコマンドを実行してから、AZのディスプレイを閉じてサスペンドさせる。

$ adb shell logcat -c && adb wait-for-device && adb shell logcat

早速ログをとってみた。

http://pastebin.com/uqXt8vTF


  • 1行目がまさに起き上がりの最初に吐いたログ。電池の状態が変わったらしく、WiFiServiceが反応している。
  • しかし、3行目でWindowManagerが電源ボタンを押されたとして再び寝ようと試みている。
  • 4行目がナゾのdaviddaviddavid。通常のAndroid端末にはこんなプロセスは存在しない。
  • 7行目でサスペンドに入ろうとしている。
  • 34-36行目でKeyguardViewMediatorが82のキーコードを使って何かしようとしている。
  • その直後に起き上がりになってしまう。
  • 以下通常営業。
  • 157行目はおそらくアイドル時のバックライトオフをしようとしているのだろう。現在の設定は2分。
  • 以下、なんの状態変化もないため、そのまま電池をモリモリ食べていく。

このログを眺めながら、仮説を考えてみたのだが

  • 18行目、お前誰だ

Travis Alarmというのは聞いたことがない。しかし、AndAppStoreクライアントとtCalendarWidgetが使っている。実験して見たところ、AndAppStoreが設定しているTravis Alarmの時間きっかりに起き上がり、そのまま眠ることはなかった。なので、次のコマンドでTravis Alarmを使っているアプリを特定する。

$ adb shell logcat | grep "Travis Alarm"

AndAppStoreはバックグラウンド更新を停止したらTravis Alarmメッセージがでなくなった。tCalendarWidgetは日付更新時に自身の表示を変えるためのタイマーだと思われるが、ウィジェットをデスクトップから消しただけではAlarmをつかんだままになるため、やむなくアンインストールした。


この状態でしばらくサスペンドさせてみている。*1


というか、この2つのアプリを推奨したりしてごめんなさい。*2


ついでにCPUクロック。sysfsを読めばCPUクロック設定がわかる。

$ adb shell
$ cd /sys/devices/system/cpu/cpu0/cpufreq/
$ cat cpuinfo_cur_freq
200812

通常は200MHz程度で動いていて、重い処理をさせると1GHzに跳ね上がる。

$ cat cpuinfo_cur_freq
1000000

最低周波数は40MHz。いつそんな低周波数になるんだろう。サスペンド?

$ cat cpuinfo_min_freq
40000

*1:一晩放置したがほとんで電池が減っていない 9/11 11:36

*2:でもタイマーで起きたら普通寝るよね

AOAO 2010/09/11 21:28 dynabook AZを一昨日購入した者です。新品を梱包からといて電源をいれようとしたところ、バッテリがゼロで電源が入らなかったためアダプタを繋いでフル充電しました。その晩、フル充電したAZをACアダプタから外し、サスペンド状態にして寝たところ、朝になって見ると再びバッテリがゼロの状態になっておりました。
その後、このサイトの記述を拝見し、確認してみたところ私のAZもサスペンド状態にしてから数分以内に起き上った状態になることが分かりました。
昨日色々とフリーソフトをインストールしてしまったりしたので、それらの何かが影響しているのか最初から問題があるのか(購入当日の晩はソフトのインストールはしていないため)分からず困っております。
記載されておられましたAndroid SDK r7というソフトを自宅のDTPCにインストールしてみたのですが、小生Androidについては全くの素人のためどのようにしてログがとれるのか分からず途方に暮れております。
通常のWindows PCについては一定の知識(素人ですが)はありますので、あまり高度な知識や特別な機材が必要でなければ自分でログを取ってみたいと思います。
もし宜しければAndroid SDKでのログの取り方をご教示いただければ助かります。(メールでも結構です。)

androidzaurusandroidzaurus 2010/09/12 18:44 SDKインストール方法は公式PDFがあるので、ご参照ください。
http://dynabook.com/assistpc/mid/sdk/develop_jp.pdf

ログの取り方は日記中にあるように、sdk/tools/adbコマンドを使います。OSが分からないので、Windowsと仮定すると、コマンドプロンプトを開いて、
c:\> cd <Android SDK ディレクトリ>\tools
c:\tools> adb shell logcat -c
c:\tools> adb wait-for-device
c:\tools> adb shell logcat
と入力してから、AZをサスペンドします。

AOAO 2010/09/12 23:05 ご丁寧にありがとうございました。AZをPC (Win Vista)にUSB接続してadb shell logcat -cを入力したところ、error: device not foundになってしまいました。何か基本的な準備が不足しているのでしょうね....AZ側で「マウント」を指定し、AZのファイルがPC側から見えるようにしてからadb shell...のコマンドを入れたのですが、それがいけない?

androidzaurusandroidzaurus 2010/09/14 18:20 Ubuntuの場合はAZをマウントした状態でもadb shellに入れましたが、Windowsはわかりません。

トラックバック - http://d.hatena.ne.jp/androidzaurus/20100910/1284107744