2011年7月29日金曜日

[KERNEL] Galaxy S2 Backlight Notification (BLN) support kernel #1

なんとか実用くらいまで持ってこれたかと思っていたら、某掲示板ですでに動作させちゃった方が現れましたね。githubにもソースを公開してくださっているので、早速参考にさせていただくことに。気になるひとはsakuramilkさんのgithubをwatchするといいかも。おそらく、neldar氏(BLN App作者さん)もforkしているakent氏のBLN for i9100をforkしてベースにされたのかと思います。akent氏のコードじゃ動かないんですけどね。。自分はcypress-touchkey.cのみいじる方向でいきたいと思います。やることはほぼ同じです。

さて、USB給電なしで動作させるためには、sleepモードに入ったSGS2のtouchkeyデバイスへの電力の供給を確保するのが問題になりますが、sakuramilkさんはwakelockでそれを行っています。wakelockはsuspend状態になるのを防ぐためのもので、連続した電力供給が必要な場合等に使いますが、その分バッテリを多く消費します。ですので使いどころを間違えるとすぐにバッテリが切れてしまうことになります。Androidではアプリもこのモードを実行することができるため行儀の悪いアプリを入れるとすぐにバッテリが切れたりということがよくあります。
adb shell
#cat /proc/wakelocks
で、現在wakelockを使う可能性のあるタスクの一覧が見えます。

本質的にはtouchkeyにだけ給電して動作させることができれば、一番省電力と思うのですが、ソースを眺めてみた感じだとPowerManagement系のコードに手を入れるのは、修正ポイントが多そうです。というわけで、あっちをいじって、こっちをいじってとやっていたわけですが、もう、wakelockでいいんじゃない?、sakuramilkさん正しいよ!、というわけでw。バッサリ今までのコードは捨ててwakelock使って書くとどうなるかやってみました。なるべく必要なときだけにwakelockする方針でやってみました。

結果的にはうまく動作するようになりました、とりあえず半日程度つかってみて、そんなにおかしな動きもしないのでしばらくはこれで、バッテリ消費等に着目して改善していきたいと思います。

ちなみに、テストしたアプリは
k9 (IMAP-IDLE)
SP-mode mail
です、基本的にはNotificationオブジェクトでFLAG_SHOW_LIGHTSかDEFAULT_LIGHTSを使う実装しているアプリは全部いけるはずです。自分のビルドしたliblightsではそのあたりをDDMSで見れるようにログにだして確認しました。

コードはgithubにあげときました、以前アップしたliblightsをあわせて使うと、Neldar氏のBLN Appで動作させることができます。ちなみにPro版をおすすめしておきます。寝ている時間は動作させないとか、そういった設定ができるので正しくつかえば、バッテリ消費を抑えられるでしょう。既存のcypress-toucheky.cをまるまる入れ替えてビルドするだけです

git clone git://github.com/creams/SGS2-BLN-cypress-touchkey.git
cp cypress-touchkey.c /somewhere/android/kernel/drivers/input/keyboard/cypress/
make -j2
出来上がったzImageをheimdallで焼きます。
cd /somewhere/android/kernel/arch/arm/boot
cp zImage  どっか
heimdall-frontend.exeが便利なのでそれを使ったほうがいいですね。winの人は。なおgithubに一緒にあげといた、kernelはサンプルです、ほぼノーマルですけど自分にはこれで十分。

git clone git://github.com/creams/SGS2-SC02C-BLN-Kernel.git

1.最低動作周波数を200MhzからUV (100Mhz 850mv/900mv)
2.オリジナルbootロゴw
3.BLN
4.secure=0
5.カメラの音を抑制
だけです。つか、SGS2はいじるとこがないですねぇ。Launcherとかで遊んでみるかなぁ。

というわけで、自己責任でよろしく。

0 コメント:

コメントを投稿