Hatena::ブログ(Diary)

Kazzzの日記 このページをアンテナに追加 RSSフィード

2011-01-08

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


f:id:Kazzz:20110107210736p:image
Google Nexus Sがついに来た。


さて、Nexus Sは無事起動してGingerbreadを拝むことできた。
f:id:Kazzz:20110108100656p:image
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デバイス全般がそうだが)は起動モードによってドライバを使い分けており、

f:id:Kazzz:20110108101012p:image

    • ブートローダーモード(Android Bootloader Interface)

f:id:Kazzz:20110108103437p:image

これらのドライバが起動モードによって切り替わりながら自動認識されるのが正しい状態なのだが、Nexus Sを初回接続するとなぜかこんなことになるのだ。
f:id:Kazzz:20110108001827p:image
Android 1.0という名前のデバイスでは永遠にドライバをインストールできないか、または全く検討違いのドライバをインストールしてしまう
これでは正しいドライバをインストールすることができない。(ブートローダモードのドライバは一般的に使う限りは不要なのだが、これが正しく認識されないとfastbootコマンドが一切効かない)

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

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

 ブートローダーモードの場合
 f:id:Kazzz:20110108112605p:image

 通常モードの場合
 f:id:Kazzz:20110108112607p:image

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

  • ブートローダーをアンロックする

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

> adb reboot bootloader

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

とコマンドを実行すると端末側の応答を待つので。
f:id:Kazzz:20110108112606p:image

端末側は以下のようにアンロックの確認画面になっているはずなので、音量ボタンラジオボタン"Yes"側を選択し電源ボタンで決定する。
f:id:Kazzz:20110108001832p:image
これでブートローダがアンロックされてイメージの書き換えが可能となる。

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


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

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

gensai256gensai256 2011/01/10 02:00 初めまして。
私もNexus Sを購入しrootを取ろうとしたところ、bootloaderモードで
PCから認識されなくなってしまい困っていたところでした。
とても参考になる記事で、大変感謝しております。

KazzzKazzz 2011/01/10 10:22 Nexus oneでは簡単だった作業がNexus Sでは全然上手くいかなかったので、この記事にしました。
お役に立ててよかったです。

shuji9852shuji9852 2011/01/16 09:35 ドライバのインストールは出来たんですが、コマンドプロンプトでドライバが確認出来ないです。

KazzzKazzz 2011/01/16 09:41 > 8.ドライバが正しく導入できたならば、以下のコマンドで確認できる。

これの事を指しているのでしたら、USB接続をし直してみてください。それで認識することがあります。

それで駄目ならば一旦adbをkillして、再度adb devicesしてみてください。

それで駄目ならば私には分かりませんので、ご自分でお調べください。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close