Optimus bright (docomo L-07C) のルートを奪取 (1/2)

先日から Optimus bright を使っているが、どうにもバッテリーの消費が気になる。
画面サイズが大きいのと、使っていないときでもバック グランドでどうするアプリがいくつもあるために、スマートフォンのバッテリーは早くに無くなってしまうものだが、それにしても Optimus bright のバッテリーの減りは早すぎる。

ググってみると、どうやらデータ通信専用の SIM を使っていると、バッテリーの減りが顕著になるようだ。
確かに Optimus bright に挿している日本通信のデータ通信専用 SIM (b-mobile Fair) を、NTT ドコモの普通の FOMA SIM に変えてみたところ、他の機種より多少減りが早い程度にまで落ち着いてくれる。 
このデータ通信専用の SIM を使ったときにバッテリーが激減する現象は、俗に「セル スタンバイ問題」と呼ばれている。

その原因は、音声通信の電波の探索処理を無駄に繰り返し実行していことにあるらしい。
データ通信専用 SIM を挿しているので、音声通信の電波を取得できるわけがないのだが、SIM に書かれているはずのその情報を Optimus bright が認識できていないのが根本的な問題のようだ。

キャリアである NTT ドコモがこの現象を解消したファームウェアを提供するのが本来だと思うのだが、そんな様子は毛ほども見えない。
幸いなことに、有志によって対策を施したファームウェアが提供されているので、これを使って現象を解消する。

ただし、有志によるファームウェアを使うには Optimus bright のルートを奪取する必要がある。
ルートを奪取してしまうと保証が受けられなくなるという不利益があるが、背に腹は代えられないとはこのようなことを言うのであろう。

Optimus bright のルート奪取に際して、参考にしたのは Memoteki という Web サイトにある「L-07CをV10Dにアップデート」のページだ。
もっとも、その手順の前半は Pastebin.com という Web サイトのページを参照だったりする。

途中 手が滑って文鎮化するという冷や汗ものの事態もあったが、無事にルート奪取できたので、備忘録がてら記しておく。
ルート奪取は OS の脆弱性を突いた方法であるため、将来的にこの方法が使えるかどうかは保証の限りではないし、この手順の結果 文鎮化するはめになるかもしれないことを指摘しておく。

このため一番始めには Optimus bright のファームウェア バージョンの確認すべきだろう。
Optimus bright の「設定」から [端末情報] を選択 (タップ) して、表示される項目のうちの「ソフトウェア バージョン」を見て、そこが「LG-L07c-V10d-20111221」となっていることを確認する。
もしここが「LG-L07c-V10d-20111221」以外であれば、以下の手順は何の参考にもならない可能性がある。

設定で [端末情報] を選択 (タップ) する ソフトウェア バージョン欄がファームウェアのバージョン

Optimus bright のソフトウェア バージョン、すなわちファームウェアのバージョンが LG-L07c-V10d-20111211 (普通は V10d とだけ呼ぶ) であることを確認したら、ルート奪取に取りかかる。

Optimus bright でルートを奪取するには、Android SDK が必要だ。
正確に言うと、Android SDK に含まれる adb.exe が動けば十分だ。
Android SDK の入手とインストールの方法は、ググればそこら中にあるので省略する (書くのが面倒臭いだけともいう。)

最初に、Optimus bright の「設定」から [アプリケーション - 開発] とメニューを辿り、「USB デバッグ」にチェックを入れて、USB デバッグ機能を有効にする。

設定で [アプリケーション] を選択 (タップ) する 設定の [アプリケーション] で[開発] を選択 (タップ) する 設定の [アプリケーション - 開発] で「USB デバック」にチェックを入れる

USB デバッグを有効にしたら、Optimus bright を USB ケーブルで PC と接続し Optimus bright を認識されるのを待つ。
このとき Optimus bright の画面に USB 接続の画面 (ドロイド君の画面) が表示されるかもしれないが、そのまま放置しておいて構わない。

USB で接続したときに表示される画面

Optimus bright が PC に認識されたら、コマンド プロンプトを開く。
コマンド プロンプトでは adb.exe にパスが通っていなくてならないことは言うまでもない。

コマンド プロンプトで adb shell を実行して、Optimus bright に接続してシェルを起動する。
Optimus bright のシェルが起動すると、 $ というプロンプトが表示される。
この状態は Telnet でリモート ホストに接続したのと同様で、打ち込んだコマンドはすべて Optimus bright で実行され、その結果がここに表示される。
なお、Optimus bright (というか Android) のシェルの仕様なのか、打ち込んだコマンドがそのままエコー バックされるようだ。

コマンド プロンプトで adb shell を実行し、Optimus bright に接続したら、以下のコマンドを順次実行する。

ここまで実行したら、Optimus bright の「設定」から [無線とネットワーク - ポータブルアクセスポイント] とメニューを辿り、「ポータブル Wi-Fi アクセス ポイント」にチェックを入れて、ポータブル Wi-Fi アクセス ポイントの機能 (別の表現ではテザリング) を有効にする。
このとき、コマンド プロンプトで実行している adb shell の接続はそのままでいい。

設定で [無線とネットワーク] を選択 (タップ) する 設定の [無線とネットワーク] で [ポータブルアクセスポイント] を選択 (タップ) する 設定の [無線とネットワーク - ポータブルアクセスポイント] で「ポータブル Wi-Fi アクセスポイント」にチェックを入れる

ポータブル Wi-Fi アクセス ポイントを有効にしたら、コマンド プロンプトで実行している adb shell に戻り、確認のために ls -l /data/local.prop コマンドを実行して、以下のようにエラー無く表示できることを確認する。

もし /data/config.prof: No such file or directory というようなエラーが表示されてしまった場合は、Optimus bright で「ポータブル Wi-Fi アクセス ポイント」のチェックを一旦外した後に、もう一度チェックを入れ直す。
チェックを入れ直してもまだ /data/config.prof: No such file or directory と表示されるようなら、ここまでの手順をどこかで間違ったか、Optimus bright のファームウェアのバージョンが上がってこの方法が使えなくなったかのどちらかだと思われる。

ls -l /data/local.prop コマンドの結果を確認したら、引き続き adb shell から以下のコマンドを順次実行する。

exit コマンドの実行で adb shell も終了し、通常のコマンド プロンプトに戻ってくる。
最後にコマンド プロンプトから以下のコマンドを実行して Optimus bright を再起動させる。

adb reboot コマンドを使わず、Optimus bright の電源ボタンで電源を off → on したときの動作は試していないので分からない

Optimus bright が再起動してくれば、ルートを奪取した状態になっているはずだ。
なお、手順を間違えたなどで、万が一に文鎮化したとしても責任は取れない。

この方法でルートを奪取したときは、常にルート ユーザーで動作する状態になっている。
これは、どんなアプリもルート権限で動作するこということでもある。

確認するには、 adb shell を実行したときの Optimus bright のシェルのプロンプトが # になってるかどうかを見る(一般ユーザーのプロンプトは $。)

ルート奪取はできているので、目的であるセル スタンバイ問題の解消に至るの第一歩としては十分と言える。
しかし、常にルート ユーザーで動作しているというのは、何となく不安を感じる。
そこで次の記事の手順で、起動直後は一般ユーザーで動作し、特別なコマンドを実行すたときだけルート ユーザーに切り替わるようにする。

もし、常にルート ユーザーになっている状態でも構わないなら、次の記事の手順は不要だろう。
なお最後に Optimus bright の USB デバッグをオフに戻しておくのが無難だろう (次の記事の手順を連続して行うなら、オンのままでも構わない。)

ルート奪取を元に戻したいときは、Optimus bright の USB デバッグをオンに下状態で PC と USB で接続して、コマンド プロンプトで adb shell を実行し、更に Optimus bright のシェルで以下のコマンドを実行する。

exit コマンドの実行で adb shell も終了し、通常のコマンド プロンプトに戻ってくるので、後は再起動すれば (Optimus bright の電源ボタンで電源 off→on で良い) ルート奪取前の一般ユーザーで起動する状態に戻る。
ただし、ルート奪取中に改変した Optimus bright の状態はそのままだ。

コメントを残す