シシャモ備忘録

IT機器をいじった手順を記録。
これらの記事は自分用の備忘録です。参考にするのは自己責任で。

nexus4 recovery(CWM)モードでPC接続時のUSBドライバ

2013-06-19 20:39:49 | android

普通にUSBデバッグモードでPCに接続するときのUSBドライバのインストールは以前の記事で書いたとおりだが、ClockworkModを起動してPCに接続すると認識されなかった。

で、新たにドライバをインストールせねばならなくなったので、こちらを参考に android sdk の extras\google\usb_driver\android_winusb.inf を書き換える。

デバイスマネージャのnexus4のプロパティの「詳細」タブのデバイスインスタンスIDの「VID_****」と「PID_****」を記録。

android_winusb.inf の[Google.NTx86](うちの作業PCは XP 32bit)の中に

;Google Nexus 4
%SingleAdbInterface% = USB_Install, USB\VID_****&PID_****
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4E30
%CompositeAdbInterface% = USB_Install, USB\VID_****&PID_****&REV_0100

を書き加え、"android_winusb_mod.info"なり何なり、別名で保存。

で、デバイスマネージャの黄色ハテナのプロパティからドライバインストールで、このinfoファイルを指定すればOK。


nexus4 セルスタンバイ対策 - アンテナピクトは立った編

2013-06-18 17:18:10 | android

最初はやぎLabsを参考にさせてもらおうかと思ったが、再コンパイルの部分が記載ミス(classes.odexではなくclasses.dexかも?)なのかうまくいかず、そのもとになったLifeScape(root化不要法)も参考にさせて頂いた。

【準備】

カレントディレクトリに "7za.exe", "busybox", "dexopt-wrapper", "smali*.jar", "baksmali*.jar"を準備。最後の2つはそれぞれ"smali.jar", "baksmali.jar"に変名し、コピーしておく。まとめたものはここ

ちなみに /system/xbin には初めから "dd"コマンドも"cp"コマンドも入っており、busybox必要ないかも。また、root化時に "SU_Busybox_Package.zip" をインストールしていれば、当然busyboxも入っている。

Android SDK, Java SE JDK を使えるようにする。(root化の記事参照)
端末をデバッグモードで接続。
Android 4.2.2 のAPI level は17。

【作業】

DOS窓を立ち上げて /system/framework 以下のファイルを temp フォルダに取得。

>mkdir temp
>cd temp
>adb pull /system/framework

逆コンパイル

>java -jar ..\baksmali.jar -x telephony-common.odex

必要箇所の修正
"out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali"の以下の部分を

/////////////////
.line 702
.local v13, voice_capable:Z
if-nez v13, :cond_86
/////////////////

から

/////////////////
.line 702
.local v13, voice_capable:Z
if-eqz v13, :cond_86
/////////////////

に書き換え。

再コンパイル

>java -jar ..\smali.jar --api-level 17 -o classes.dex out
>copy /y /v telephony-common.jar telephony-common.jar.org
>..\7za a -tzip -mx0 telephony-common.jar classes.dex
>cd ..

端末内で odex を作成

>adb push temp\telephony-common.jar /data/local/tmp
>adb push dexopt-wrapper /data/local/tmp
>adb shell chmod 755 /data/local/tmp/dexopt-wrapper
>adb shell rm /data/local/tmp/telephony-common.odex
>adb shell cd /data/local/tmp; ./dexopt-wrapper telephony-common.jar telephony-common.odex
>adb shell rm /data/local/tmp/telephony-common.jar
>adb shell rm /data/local/tmp/dexopt-wrapper

PC側にあるCWMのイメージファイルから起動させる

>adb reboot bootloader
>fastboot boot recovery-clockwork-6.0.3.1-mako.img

odex の入替え

>adb shell mount /data
>adb shell mount /system
>adb push busybox /data/local/tmp
>adb shell chmod 755 /data/local/tmp/busybox
>adb shell /data/local/tmp/busybox dd if=/system/framework/telephony-common.odex of=/data/local/tmp/telephony-common.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
(adb dd if...からでもできるかも。ちなみにここは逆コンパイル‐再コンパイル後のファイルに元の「署名」をうつす処理らしいが、必要ないかも。)

>adb shell cd /data/local/tmp; busybox cp telephony-common.odex /system/framework/telephony-common.odex.new
>adb shell mv /system/framework/telephony-common.odex /system/framework/telephony-common.odex.old
>adb shell mv /system/framework/telephony-common.odex.new /system/framework/telephony-common.odex

>adb shell rm /data/local/tmp/busybox
>adb shell rm -rf /data/dalvik-cache

>adb reboot

>rmdir /s /q temp

うまくいかない場合は /system/framework/telephony-common.odex.old より telephony-common.odex を復帰させればよいはず。

これでnexus4にアンテナピクトが立った。問題はこれでバッテリーの減りが遅くなるかどうかだが。


nexus4 セルスタンバイ対策 - 失敗編その2

2013-06-18 17:00:33 | android

【注】これも失敗編です【注】

次に Xposed モジュールを使う方法ってのに取り組んでみた。
javaファイルを見て修正するだけの能力がないので、かいつまんで書くと、 XposedInstaller.apk をダウンロード、インストール。
Xposed用モジュールをダウンロード、インストール。
XposedInstallerを起動するが、インストールしたモジュールがModuleタブに表示されない。
終了。両方アンインストール。

 


nexus ファクトリーイメージの焼き方

2013-06-18 16:26:38 | android

【基本的な方法】

Factory Images for Nexus Devicesよりdeviceにあったtgzファイルをダウンロードし、解凍。deviceのbootloaderを起動しておいてUSB接続。fastboot.exeのあるフォルダにpathがとおっていれば、Winだと "flash-all.bat" を実行すればよいらしい。

 

【お勧めしない方法】

どうも寝ぼけていたらしく、その下のzipファイルを解凍し、4つのimgファイルをそれぞれ焼いた気がする。

>fastboot flash boot boot.img
>fastboot flash recovery recovery.img
>fastboot flash system system.img
>fastboot flash userdata userdata.img

とやったのだろうか。よく覚えていない。eraseしていなんだよな。でもとりあえず動いている。


nexus4 セルスタンバイ対策 - 失敗編その1

2013-06-18 11:44:21 | android

【注】失敗編だからね【注】

root化もしたことだし、実際にセルスタンバイ問題にたちむかってみた。いくつか方法はあるようだが、まずこちら。ほとんど理解できないのだが、どうもパラメータの "config_voice_capable" のbool値を "true" から "false" に書き換える作戦と勝手に解釈。

あくまで Galaxy Nexus かつ 4.2.1 での方法なので、うまくいくかは不明だがあたって砕けろ。で砕けた。

"/system/vendor/overlay/framework/framework-res.apk" のパーミッションを変更して reboot したところ、エラーを知らせるメッセージが延々と出続ける。前出のサイトには
「/data/resource-cache/vendor@overlay@framework@framework-res.apk@idmap のパーミッションが 600 になっていて、読み取り失敗して色々なアプリがクラッシュしまくります。」
とあるのだが、当方には意味不明。これがそのうち終わるのか、全然だめなのか判断できない。CWM入れたのにバックアップ作成していなかったので、googleからファクトリーイメージをダウンロードして焼くことにする。
つづく。


参照
ブローヴちゃん
HOBBYHOUSE.JP

nexus4 (Android 4.2.2) のルート化

2013-06-17 17:30:13 | android
nexus root toolkit v1.6.3 はウイルスバスターでウイルス判定されてしまうので、なんとなく気持ち悪いし、NEXUS4 TOOLKITはサーバーが死んでいてダウンロードできない。仕方がないので手動でPCにnexus4のUSBデバッグモード用ドライバをインストールす ることにする。

【PCの下準備】
そろそろサポートも終了しようかというWinXP32で作業。
Java SE, JDK インストール

Android SDK インストール

ダウンロードしたZIPファイルを解凍。フォルダの名前を改変し、C:\に移動(今回はC:\adtとした)。フォルダ内のSDK managerを起動。詳細は不明だがとりあえず "Extras" の下の "Google USB Driver" にチェックを入れて "Install 1package" ボタンをクリック。licenseをacceptすると、"C:\adt\sdk\extras\google\usb_driver"にドライバが出現する。
なお、公式サイトには"tools" フォルダと "platform-tools" フォルダにpathを通しておくとアクセスが簡単になるよって書いてある。以下はpathを通してある前提で記載。

【NEXUS4の下準備】
  • まず普通モードでPCに接続、普通モードのドライバは自動的にインストールされる。
  • USBデバッグモードに切り替え。設定を立ち上げ、「端末情報」 -> 「ビルド番号」をすばやく何度かタップすると、「これでディベロッパーになりました!」のコメント出現。上のメニューに戻ると、「開発者向けオプション」が出現しているので、「USBデバッグ」をONにする。するとUSBデバッグモード用ドライバを要求されるので、先のusb_driverフォルダを指定してやる。ちなみにUSBデバッグモードでのMTPドライバはインストールしなくても先に進めた。
【bootloaderのunlock】
これをやると今までのデータが消え、出荷状態(たぶん)になるので注意。
コマンドプロンプトを立ち上げ、bootloaderを起動。

 >adb reboot bootloader

bootloader画面になったらunlockする

>fastboot oem unlock

本体のボリュームボタンで"yes"を選択、電源ボタンで決定。で、再起動。
wifiやらgoogleアカウントやらの入れなおし。

【ClockworkMod Recovery導入】
ClockworkMod ROM Manager からNEXUS4のリカバリーをダウンロードする。
ただのrecoveryは本体のボタンでの操作のみ、touch recoveryは画面のタッチでも操作できるもののよう。お好みでどちらかのイメージファイルをダウンロードし、以下のコマンドで書き込む。

>adb reboot bootloader
>fastboot flash recovery (ダウンロードしたイメージ名).img
例)fastboot flash recovery recovery-clockwork-touch-6.0.3.1-mako.img

【root化】
SuperSUのパッケージ "SU_Busybox_Package.zip" をダウンロード。
普通モードでPCに接続、NEXUS4の「内部ストレージ」にコピー。(どこでもいいが、ここが簡単。)
USBデバッグモードで接続。
下記コマンド実行。
adb reboot bootloader
recovery modeを選択し、ClockworkModを起動。
ボリュームボタン(touch recoveryならタッチでも)で "install zip from sdcard" を選択、電源ボタンで決定。
"choose zip from sdcard" 選択、決定。
SU_Busybox_Package.zip 選択、決定。
インストールが終わったら、reboot system now を選択・決定。
アプリに SuperSUがあればrooting OK。実際には"/system/xbin/"に"su"と"busybox"が入っているはず。
 
【CWMをインストールしないでroot化】
ちなみに、PC側においてあるイメージファイルを以下のコマンドで直接起動できるようなので、CWMをインストールせずにroot化も可能。
 
>fastboot boot recovery-clockwork-バージョン-mako.img


参照

nexus4 購入 と セルスタンバイ問題

2013-06-17 16:57:03 | android

自宅でも職場でもWi-Fi環境の上自転車通勤の私に、スマフォのランニングコストとして月々何千円も支払う余裕はない。ガラケーで月々1200円支払っている、そんな貧困人に優しいのが今話題の(?)MVNO。

そこで、最新のOSが供給され、邪魔なDOCOMOのソフトが入っていないnexus4 がgoogleから販売されるのを待っていたが、ついにしびれを切らし、amazon経由で白ロム販売業者から購入。amazonのギフト券が30,000円分ほどたまってたしね。

IIJmioのミニマムスタートプランを契約し、200kbpsでも私には不満なく使えていたが、どこかのサイトで「セルスタンバイ問題」なるものを見つけてしまった。

使用しないときは電源offなので、知らなければ知らないで別に困らなかったのだが、知ってしまうとなんとなく気になる年頃。ググると対策を講じているサイトが出てくるので、ちょっとやってみようかなという気になる。

で、とりあえずroot化してみる。つづく。