2012年10月22日月曜日

Motorola RAZR i XT890のKernelをビルドしてみた


Kernel sourceが公開されたのでビルドして実機で動かしてみた。
sourceはここ
ここに書いてあるとおりにビルドすればOK…だけど面倒くさいので


https://github.com/turl/linux-razr-i
turlさんがgithubにあげてくれてるコレを使う。

作業はUbuntu 11.04 32bitで行った、64bitでは「cast from pointer to integer of different size」が沢山出てきて修正すんの面倒くさいので32bitで…

git clone git://github.com/turl/linux-razr-i.git
とりあえずsourceをローカルに
それとhardware_ti_wlan.tar.gzとvendor_authentec_vpndriver.tar.gzも必要になるのsourceforgeからダウンロードしておく。

toolchainにAndroidのソースのprebuiltに入ってるものを使用するのでそれもrepo syncするなりしておく。

んでビルド
export PATH=/home/meyskld/android/xt890_kernel/prebuilt/linux-x86/toolchain/i686-android-linux-4.4.3/bin:$PATH
export ARCH=i386
export CROSS_COMPILE=i686-android-linux-
export ARCH_BUILD_FLAGS="ANDROID_TOOLCHAIN_FLAGS=-mno-android"

make i386_mfld_moto_defconfig
time make -j4

export INSTALL_MOD_PATH=/home/meyskld/android/xt890_kernel/modules/
make modules_install
Kernelだけのビルドなので数分で終わる。
Kernelは下記ディレクトリにbzImageという名前で保存される。
/arch/x86/boot/

make modules_installを実行するとINSTALL_MOD_PATHで指定したディレクトリにドライバたちが保存される。
WlanとVPNのドライバは下記URLに書かれている手順で別途ビルドする。
http://sourceforge.net/projects/razr-i.motorola/files/razr-i/8.7.1I-110_IFW-31/
Build compat.ko & wl12xx-sdio.ko~ってところ見れば分かると思う。

"apwr3_0.ko","pax.ko","sep3_7.ko"の3つがビルドされないのだがどーすればええねん?

ビルドした.koをramdiskのlib/modulesにコピー
ramdiskのunpack、repackは以前書いたこのエントリ通りに行えばOK
あれ - Motorola RAZR i XT890: rooted

cpio.gz作るところまでやっておく。

bzImageとramdisk.cpio.gzをくっつける作業をする。
mkbootimg的なツールがあれば良いのだが無いのでバイナリエディタで結合させた…とりあえず動けばいいやなノリ

オリジナルのboot.imgをバイナリエディタで開く。
アドレス0x2000までがheaderでその後ろにbzImage(kernel)をくっつける。
bzImage(kernel)の後ろにramdisk.cpio.gzをくっつける。この際、開始位置をオリジナルと同じにしておく。
headerの0x400にramdiskの開始位置とramdiskのサイズが書かれているのでここを書き換えるのでもOK
最後にオリジナルのfooterを張り付けて保存
物凄い無理やり感ありますけど…

あとはfastbootで焼いて起動するのを確認
fastboot flash boot boot_mod.img


さて、オーバークロックして遊ぶかー

2012年10月6日土曜日

Motorola RAZR i XT890: rooted




まだ実機は手に入ってないのですが、xda-developersのmember、mattlgroffさんが実機で試してくれました。
私がやった事、どっから入手したのか分からないXT890 Stock boot.imgのUnpack、default.propのro.secure=0化とRepackです。
unsecured kernel作ったって事です。

そもそもなんでunsecured kernelが使えるのか?というところですが、RAZR i XT890はBootloader Unlockが可能なモデルです。


Unlock手順についてはこちらを



RAZR i XT890 boot.imgのUnpack/Repack方法についてざっくり書きます。

Unpack

  1. バイナリエディタでboot.imgを開く
  2. "1F 8B 08"で検索する。
    数件ヒットするかと思いますがramdiskの部分は"Failed to allocate space for phdrs"と書かれているところの少し下になります。
    "1F 8B 08"はgzipのヘッダー
  3. "1F 8B 08"から後半の"FF"で埋められてるエリアの手前までをコピー
  4. 3.でコピーしたものをramdisk.cpio.gzという名前で保存
    gzipで圧縮されたcpioって事ですね。
  5. ramdisk.cpio.gzを展開する…Windows環境でも7-Zip等で展開出来ます。
Repack

  1. gzip圧縮されたcpioを作る。名前はramdisk_mod.cpio.gzとします
    作業はLinux環境で行う。
    cd ramdisk_mod
    find | cpio -H newc -o | gzip -9 > ramdisk_mod.cpio.gz
    
  2. バイナリエディタでramdisk_mod.cpio.gzを開く
  3. ramdisk_mod.cpio.gzをboot.imgの抜き出した部分に上書きし、保存
    ファイルサイズをオリジナルのboot.imgと同じにしてあげる必要があります。
    "00"で埋めてあげればOKです。
こんな感じです。
Motorolaさん、XT890のkernel sourceはよ!

2012年10月4日木曜日

ついうっかりMotorola RAZR i XT890を発注した

Unlockable BootloaderらしいってのとIntelの石積んでるとか楽しくないですか?って事で。
ディスプレイがPentileだとかBluetoothがv2.1だったりするのはイマイチだけどまぁいいか…な感じです。

2012年7月12日木曜日

カメラを持ち歩くようになったらカバンの中身はこうなった


最近Androidとかどーでもいいやな感じのMey(@meyskld)です。

タイトルは適当です、ブログに書くようなネタが無いのでカバンの中身でも晒してみるかーなノリです。

持ち歩きガジェットは頻繁に変わるのですが、過去ブログに載せたのはイカ


2012年夏、今現在のカバンの中身は…
  • SONY NEX-7
  • レンズ1~2本
  • NEX-7の予備バッテリー
  • Lumia800
  • iPhone4
  • iida G11
  • GP02
  • WM3600R
  • パナブー、QE-PL201
  • AKG K404
  • 財布
カバンはManhattan Portageの1605でNEX-7はBUILTのSoft Shell Camera Case Largeに入れている。
ちょっと大きめのレンズ、SEL50F18だとBUILTのケースの口が閉まらないのだが、基本的に口を閉めないで突っ込んであるだけの状態で使ってるのでまぁいいかな、と。


Android、たまーにMotorolaRAZRがカバンに入ってるのだが出番は無い。
iPhoneはEvernoteとInstagram、MusicPlayer端末として使用している。あ、あとミュートフィルタにあれこれ詰め込んだTweetbot
それ以外はLumia800が担当している。

G11はオサイフ専用…そろそろカード型に戻しても良いかなとも思っている。



カメラに手を出しちゃったのでスマートフォン買う余裕なんて無いわーつれーわー

2012年6月2日土曜日

MotorolaRAZR XT910 ICS Leak OS4.0.4のroot取り


MotorolaRAZR XT910 ICS Leak OS Ver4.0.4のroot取りメモ
先日、Brick状態から復活させたものの、rootが取れなくなってしまったXT910のrootが取れたのでご報告を。

ざっくり書くと
1.CIDパーテーションmmcblk1p18をfastboot eraseコマンドでwipeする。
2.Verizon向けXT912 OS Ver4.0.3のboot.imgをfastboot flash
3.「ln -s /data /data/local/tmp」の手法でrootを取る。
4.boot.imgをXT910 OS Ver4.0.4のものに戻す
5.CIDパーテーションを元に戻す(ICSを入れる前にバックアップを取ってあれば)

CIDパーテーションのバックアップが無い人はfastboot erase cidを行わない方が良いと思います。

root取得スクリプトはこちら
RootExplorer.apk入れちゃうのはイマイチなのでその辺は各自書き換えるなり。
boot404.img がおそらくTMDE版のものなので en.EU の人は注意
CIDパーテーション以外は半自動でやってくれる。

==CDT Secure Version==
MotorolaRAZRに限らず、最近のMotorola製AndroidはCDT Secure VersionというeFuseのSEC_AP_OSに書き込まれた値と、boot.imgやrecovery.imgのCDT Secure Versionのチェックを行っている。

fastboot flashコマンドでboot.img等をflashする際にこの値のチェックを行っており、CDT Secure Versionの低いイメージファイルをflashしようとするとFailとなる。

ICSのCDT Secure Versionは04でGingerbreadと一部のICS Leakは03
04になっているICSを入れた後にGingerbreadに戻すことが出来なくなる。

「ln -s /data /data/local/tmp」の手法が使え、CDT Secure Versionが04なVerizon向けICS Leakのboot.imgをFlashすればrootが取れる。

==CID(Customer ID)==
RAZRにはXT912(Verizon)、XT910(Global)、XT909(KDDI)といった感じに複数種存在している。
これらはそれぞれ、異なるCID No.を持っており、XT910にXT912のboot.img等をFlashしてもCIDチェックではじかれ起動させる事が出来ない。

ただ、CIDチェックには抜け道があり、CIDパーテーションmmcblk1p18をwipeする事でCIDチェックをバイパスする事が出来る。
wipeはfastboot eraseコマンドで行う事が出来る。

fastboot flash mbm allow-mbmloader-flashing-mbm.bin
fastboot reboot
fastboot erase cid

CIDパーテーションをwipeしてしまうとbp-toolsからしか起動できなくなる。

CIDパーテーションにはそれぞれの端末で異なる値が書き込まれている。
CPU serial numberなのかradio serial numberなのかIMEI numberなのか不明だが、これらユニークな値を元にCID値が決まっているので他の端末からDumpしたものを使いまわす事は出来ない。


面倒臭いからBootloader Unlockさせてくれよー

2012年5月11日金曜日

MotorolaRAZR XT910 ICS ChinaRetail leak and T-Mobile de leak


Verizon版、DroidRAZR XT912のICSアップデートが今月、5月21日に予定されています。
3月末にはVerizon向けleak版が出回っていました。

xda-developers Everyone can now get the cdma RAZR ICS leak

GSM版、MotorolaRAZR XT910は1月末にテスター向けの評価版が出回っていましたが、不安定でまともに使えるものではありませんでした。

droidrzr.com Gsm/utms Xt910 Razr Owners Get Leaked Ics

GSM版に関してはしばらく動きが無かったのですが、最近、中国市場向けの物とドイツT-Mobile向けの物がリークされました。

私用(毎晩のように飲みに出かけてただけなんですが)でちょいと忙しく、公開されてから少し間があいてしまいましたが、手持ちのXT910にFlashしてみたのでその報告と注意点等を。

ChinaRetail leak


中国市場向けはRSD Liteで焼くことの出来るイメージファイルがリークされています。
RSD Liteで焼けるなら何も面倒な事は無いと思いがちですが、簡単にいかないのが中国市場向けのROMです。

ざっくりとですが手順と注意点を書いておきます。
  1. Retail Asia (Android 2.3.6)をRSD Liteで焼く
  2. motofail exploitを用い、rootでのアクセスを行えるようにする。
  3. mmcblk1p18、CIDパーティションをバックアップ
  4. mmcblk1p18 、CIDパーティションを全て00で埋める。
  5. ICS ChinaRetail leakをRSD Liteで焼く
  6. Recoveryモードに入りFull wipeを実施
1.についてはRetail Asiaである必要はありません、どうせICS ChinaRetail leak焼くのでスキップしてしまっても問題ないと思います。

ポイントは4.のCIDパーティションを全て00で埋めるという作業
この作業を行わずにRSD Liteを用い、中国市場向けのROMを燒こうとするとCID、CustomerIDチェックで弾かれ起動しません。
CIDを00で埋めることで端末起動時のCIDチェックでエラーとなり、通常起動は出来なくなるのですが、CIDチェックをバイパス出来るようになり、中国市場向けのROMでも起動出来るようになります。

CIDを00埋めした後の起動させ方はVolumeUp + VolumeDown + Powerで表示されるメニューからBP Toolsを選択する事で起動します。

xdaでの解説はこちら
http://forum.xda-developers.com/showpost.php?p=25408642&postcount=9


次にroot取りです。
http://forum.xda-developers.com/showpost.php?p=25533575&postcount=144
FrAsErTaGさんのスクリプトを用いる事で取れます。

何をやっているのかざっと解説すると、BP Toolsでbootした際にln -s /data /data/local/tmp出来てしまう脆弱性のある4.0.3のboot.imgをfastboot flashした後、ln -s /data /data/local/tmpして/data/local.propにro.kernel.qemu=1と書いてあげる感じです。
adb remount後に/systemにあれこれ書き込んでからboot.imgを元の4.0.4の物に戻すのですね。

rootアクセスが出来るようになりましたのでRecovery bootstrapを導入し、中国市場向けでGoogle謹製アプリが無いのでCyanogenMod9のGappsを入れ、お好みで日本語フォントを入れるなりしましょう。

最後にGingerbreadへの戻し方ですが、
  1. GB Android 2.3.6をRSD Liteで焼く
  2. motofail exploitを用い、rootでのアクセスを行えるようにする。
  3. バックアップを取っておいたmmcblk1p18、CIDパーティションを元に戻す。
  4. 再度 GB Android 2.3.6をRSD Liteで焼く
これでGingerbreadに戻せます。
1.でGB Android 2.3.6を焼いた後、OSは起動するものの、数十秒で勝手にリブートしてしまうという現象が起こりました。
これはRSD Liteで焼き終わった後に行われるradioの適用が行われない為、radioがICSのもののままになってしまっているからと思われる。(BP Toolsから無理やり起動させる為、正しく適用されないものと思われる。)
再度RSD LiteでGB Android 2.3.6を焼くことでradioの適用が正しく行われ、勝手にリブートするといった不安定な動作も無くなった。

T-Mobile de

Gingerbreadにダウングレード出来ません、fastbootからboot.img、recovery.imgのFlashが出来ません。
本日、5月12日に私のMotorolaRAZR XT910はSoftbrickの状態から戻せなくなったのでしばらくの間RAZRネタはやれません…


2012/05/14追記
とりあえずBrick状態から復活させる事は出来ました。ただしrootは取れません。
方法は下記のリンク先を参照


Saved my bricked Device after playing with T-Mobile GSM - Leak


--

xda-developers [GSM] GSM ICS Leak [OTA]

ドイツT-Mobile向けはUpdater形式でファイルが出回っています。
T-Mo de 2.3.6を焼いてからVoodoo OTA Root Keeperでrootを維持しつつRecoveryからupdate.zipを適用するだけです、ラクチン


ChinaRetail leakからGingerbreadに戻すところでハマりました…

2012年3月1日木曜日

EMOBILE PocketWiFi GP02 FW Downgrade


EMOBILE PocketWiFi GP02をVer2.0へアップデートしたが古いバージョンに戻したい人も中には居るだろう。

そもそも古いバージョンのFirmwareなんて公開されてないだろう?って話なのだが実は手に入ったりする。

これがV2.0のFWなのだが
http://emobile.jp/products/hw/gp02/download/updatetool/GP02_Firm_Update_win_V2_00.zip

http://emobile.jp/products/hw/gp02/download/updatetool/GP02_Firm_Update_win_V1_00.zip
こーやってやると何故かV1.0のFWが落ちてくる、不思議


GP02を繋ぎ、GP02_Firm_Update_win_V1_00.exeを実行してみる…怒られる、そりゃそーか



ごにょごにょしてみる


こーなって


こうなる…


ごにょごにょするのはUpdaterのバージョンチェック部分のみでFWそのものには手を入れません。


ごにょごにょするの楽すぎで笑えるわ…
GP02_Firm_Update_win_V1_00.exeをバイナリエディタで開き、IDS_DASHBOARD_WINVERSION、IDS_DASHBOARD_MACVERSION、IDS_FIRMWARE_VERSIONを大きな値にしてやるだけ、簡単。

初期化しなくても動いてるが一応しておくのが無難かなとは思います。