2011年4月16日土曜日

[HOWTO] Nexus S BLN (BackLight Notification) support kernel build.

最近Nexus Sいじるところがなくなってきて、なかなか記事も更新できなくなってますが、BLNあたりをやってみようかと思い書いてます。BLNって何?という人のために能書きも少し。。

最近のAndroid端末にはLEDの表示が無い物が多くなってきています。例えばDroid X等にはディスプレイの上部にLEDが仕込まれており、GMailの新規や、バッテリレベルの低下等を色や点滅で教えてくれます。Galaxy SやNexus SにはこのLEDが存在しないため、メールの通知音やバイブレーションに気がつかないと、その存在になかなか気が付きません。

このため、Galaxy S等にはカスタムカーネルとライブラリ、アプリの組み合わせでこれを実現する方法が編み出されてきました。Galaxy SやNexus Sのtouchkey部分を背面から照らしているLED?の点灯と制御して同じような効果を狙ったものです。まぁ、custom kernelいれればそれでOKなんでしょうけど、自作のkernelに取り込んでみたい人のために。

まず、ソース見たいという人は、下記のgithubを参考にしましょう。まぁ、これがすべてです。
https://github.com/neldar/backlightnotification
私がとった方法はちょっとトリッキーですが、NetarchyさんのNexus S用最新kernelからBLN部分をpatchとして取り出し、自分のkernelに適用する方法です。NetarchyさんのgithubからNexus S用kernelをダウンロードします。最新はBLN対応です。
git clone https://github.com/netarchy/nexus-s.git
cd nexus-s
git format-patch remotes/origin/android-samsung-2.6.35
format-patchでオリジナルとの差分を全部patchで出力させます。そのなかの
0121-initial-bln-support-v4.patch
を自分のkernelに適用します。gitで適用するとversionが進みますので、このkernelを使う場合にはbcm4329.ko等のモジュールも更新する必要があります。で、patch当て。一回configもcleanしてやり直してます。
git am ../bln/nexus-s/0121-initial-bln-support-v4.patch
make distclean ARCH=arm
make herring_defconfig ARCH=arm
make menuconfig ARCH=arm
(このへんでBFQとか、TUNとかenableに)
make -j2 ARCH=arm CROSS_COMPILE=/home/somewhere/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
コンパイルが問題なく終了したら、zImageをいつもの方法(過去記事読んでね)でboot.imgに仕立て上げます。試しにbootしてみます。
mkbootimg --cmdline 'console=ttyFIQ0 no_console_suspend' --kernel zImage --base 0x30000000 --pagesize 4096 --ramdisk new.ramdisk.image.gz -o boot233bln.img

adb reboot bootloader
fastboot boot boot233bln.img
問題なく起動すれば、おそらくBLN対応のkernelになってます。確認するにはAndroid MarketからBLNを有効にするアプリをダウンロードして試しましょう。BLN control-FreeというGalaxy S用のアプリですがこれでOKです。起動するとkernelはBLN対応だけどliblightsがダメよと言われますので、次にliblightsを入れ替えます。下記のgithubをcloneするとバイナリが落ちてきますのでそれを使えばOKです。
https://github.com/neldar/backlightnotification.git

liblight_binaryの中の

lights.PACKAGENAME.so

を

lights.s5pc110.so

にリネームして/system/lib/hwにpushします。bcm4329などもこのさいいれておきます。

adb remount (systemを書き込み可能でりマウント)
adb push lights.s5pc110.so /system/lib/hw/
adb push bcm4329.ko /system/modules/

最後にkernelを焼きこんで完了です。
adb reboot bootloader
fastboot flash boot boot233bln.img
fastboot reboot
起動してきたら、先ほどのBLN control-Freeを起動してActive BLNを選んでいろいろできます。Pro版(有料)じゃないと、いろいろできないんですけど、、せこいなぁw。

あとは、アプリの設定をします。LEDでの通知のできるアプリ、HandcentSMSとか、K9とかも普通にBLNで通知できます。点滅とかそのあたり自分でアプリつくってみるかなぁ。どうせsysfsだし。

以上。

0 コメント:

コメントを投稿