tmytのらくがき

個人の日記レベルです

Nexus5に充電LEDをつける

Nexus5買いました。画面きれいだし、軽いし、あたらしいAndroidは快適だし、とてもいい端末です。

ところでなんか、これ充電中にLEDが点灯しないです。どうやら仕様っぽいですがせっかくなのでLED点いてほしいです。ということで、コード読んでみるとdevice/lge/hammerhead/liblight/light.cにバッテリ用LEDが実装されていないです。該当行はこのあたり。

if (!strcmp(LIGHT_ID_BACKLIGHT, name))
    set_light = set_light_backlight;
else if (!strcmp(LIGHT_ID_NOTIFICATIONS, name))
    set_light = set_light_notifications;
else if (!strcmp(LIGHT_ID_ATTENTION, name))
    set_light = set_light_attention;
else
    return -EINVAL;

LIGHT_ID_BATTERYをサポートすればよいので、いい感じに修正します。そんでもって、Nexus5の実装だと点滅しか出来ないようになってます。原因はなぜかドライバが点滅しか設定できないようになっていたのでついでにドライバも直します。

というわけでできあがったのがこれ。

  • device/lge/hammerhead
  • kernel/msm

にそれぞれあてて、ビルドして、/system/lib/hw/light.hammerhead.so と カーネルを入れ替えれば使えます。

カーネルを入れ替えなくてもとりあえず動きますが、点灯が使えないのでとりあえず点滅します。