Nexus Sのroot取得 その1 (デバイスドライバ導入〜oem unlockまで)


Google Nexus Sがついに来た。


さて、Nexus Sは無事起動してGingerbreadを拝むことできた。

Super AMOLEDの画面はとても美しいと思う。写真ではいまいちよくわからないが、LCDに比べてアナログぽいというか、暖かく色が濃くブラウン管ぽい画質であり、これがNexus one同様に私がAMOLEDを非常に気に入っている理由だ。

とっとと本格的な移行を済ませてしまおうとrootの取得※を行おうとしたのだが、中々すんなりとはいかなかった。以下、その顛末。

※フォントの変更とTitaniumBackupの導入のためだけにrootを取得している。

Nexus oneの時はSDKさえ導入しておけば、USBでデバッグ接続すると自動的に認識して全てのadbコマンドが使えたのだが、Nexus Sはそれが出来ない。adbコマンド自体はSDKにパスが通っていれば良いのだが、adb shellとか実行しても機器を認識しないのだ。

またNexus SのブートローダーはNexus one同様にfastbootモードを持っており、ここからfastbootコマンドでイメージをフラッシュしたりROMの操作ができるのだが、ここでもまたドライバが認識されないのである。

まとめると、Nexus S(というかAndroidデバイス全般がそうだが)は起動モードによってドライバを使い分けており、

    • 通常モード (Android Composite ADB Interface)

これらのドライバが起動モードによって切り替わりながら自動認識されるのが正しい状態なのだが、Nexus Sを初回接続するとなぜかこんなことになるのだ。

Android 1.0という名前のデバイスでは永遠にドライバをインストールできないか、または全く検討違いのドライバをインストールしてしまう
これでは正しいドライバをインストールすることができない。(ブートローダモードのドライバは一般的に使う限りは不要なのだが、これが正しく認識されないとfastbootコマンドが一切効かない)

この場合、デバイスマネージャから以下の手順で導入することでadb、fastboot共に認識させることができる。

 1. 間違った名前で認識されているドライバを削除する
 2. 「ハードウェア変更」のスキャンを実行する
 3. "Android Phone"というデバイス名が列挙される(はず)
 4. "Android Phone"の直下のデバイス(起動モードによって違う)から「ドライバーソフトウェアの更新」を選択
 
 5. 自動検索ではなく、ドライバのパスを直接選択させる。
  
 6. android sdkのusb_driverのパスを設定してドライバを参照する
  
 7.起動モードに合わせたドライバを導入する
  ブートローダーモードの場合 : "Android Bootloader Interface"
  通常モードの場合 : "Android Composite ADB Interface"
 
 8.ドライバが正しく導入できたならば、以下のコマンドで確認できる。

 ブートローダーモードの場合
 

 通常モードの場合
 

どちらともAndroid端末の個体識別番号が表示されたならばOKだ。

正しくドライバーが導入できれば簡単だ。既に起動しておりadbが使える状態であれば

> adb reboot bootloader

ブートローダーを起動してfastbootモードにした後

> fastboot oem unlock

とコマンドを実行すると端末側の応答を待つので。

端末側は以下のようにアンロックの確認画面になっているはずなので、音量ボタンでラジオボタン"Yes"側を選択し電源ボタンで決定する。

これでブートローダがアンロックされてイメージの書き換えが可能となる。

なお、次回からブートローダーの起動画面には以下のようにアンロックしている事を示すステータスが表示される。(LOCKSTATE - UNLOCK)


Nexus oneの時は先達の方々が既にノウハウを蓄積していたこともあり、殆どの作業が滞ることなくできたが、今回はそうもいかないようだ。

追記:
 理由は分からないが、Nexus SはUSB接続したままブートローダーモードで起動するとPC側で機器を認識できない場合がある。その場合は再度USB接続をし直すか、又はブートローダーのメニューから再度ブートローダーを起動すると認識することがある。