【HTC J】カーネルビルドのメモ

HTC J(ISW13HT)用のkernelソースが公開されたので、そのbuildを行った際のmemoです。

1.Kernel Sourceのダウンロード

http://htcdev.com/devcenter/downloads から Filter By で J を選択。
2012/08/01 時点では、valente_wx-ics-crc-3.0.8-5d86b4a.zip でした。

2.tool-chainの導入

Sourceのアーカイブ内にあるvalente_readme.txtに従って、tool-chain を git clone

$ git clone https://android.googlesource.com/platform/prebuilt 

※gitがインストールされていない場合は、まずgitを入れる。
各OSでyumなりapt-getなり適当に。

3.ログインシェルにPATHの設定

.bashrcに記載。bashじゃない人は適宜使ってるshellのプロファイルに
toolchainへのPATHを設定する。

$ cat .bashrc
PATH=/home/caplio/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

4.kernel Sourceを解凍したディレクトリ上で make config & make

$ cd valente_wx-ics-crc-3.0.8-5d86b4a
$ make valente_wx_defconfig
$ make -j2 2>&1 | tee `date +%Y_%m_%d_%s`_make.log

makeのログは後から見られるように保存しましょう。

最初は足りないpackageなどがあって素直にmakeが通らないと思うので、
makeが通るようになるまでは試行錯誤する感じで。

ちなみに、さくらVPS entryで make -j1するとこんな感じ。

real    27m42.127s ★リアル27分
user    21m36.171s
sys     2m45.152s

5.zImageからboot.imgの作成

zImageは、arch/arm/boot の下に作成されます。
このzImageにramdiskの中身引っ付けて完成です。

unpack/repack のツールはXDAにありますが、repackのスクリプトは、
mkbootimgの内容を変更しておく必要があります。

system ("mkbootimg --cmdline 'console=ttyHSL0,115200,n8' --kernel $ARGV[0]
 --ramdisk ramdisk-repack.cpio.gz --base 0x80400000 --ramdiskaddr 0x81800000
 -o $ARGV[2]");

編集済みのファイルを repack-htcj.zip として置いておきますね。
mkbootimg を PATHが通る場所に置いて下さい。

ramdiskは、OTAかRUUから取ってきましょう。

5-1 ドライバーのコピー

事前にOTAかRUU等からboot.imgを抜いてunpackしておきます。

$ unpack-bootimg.pl ./boot.img

 kernel written to ./boot.img-kernel.gz
 ramdisk written to ./boot.img-ramdisk.cpio.gz
 3162 blocks

 extracted ramdisk contents to directory ./boot.img-ramdisk/

ramdisk に system/lib/module のディレクトリを作成、そこに buildした
*.koファイルをコピーします。

ex) ~/initramfs/boot.img-ramdiskにramdiskを展開している場合

$ mkdir -p ~/initramfs/boot.img-ramdisk/system/lib/module
$ find -name '*.ko' -exec cp -av {} ~/initramfs/boot.img-ramdisk/system/lib/module \;
`./arch/arm/mach-msm/reset_modem.ko' -> `/home/caplio/initra・・・・
`./arch/arm/mach-msm/dma_test.ko' -> `/home/caplio/initramfs/・・・・
`./arch/arm/mach-msm/msm-buspm-dev.ko' -> `/home/caplio/in・・・・

★ 更新@2013/02/01 ★

HTC Jは、/system/lib/modulesに完成した*.koファイルを持っているため、
上の方法では、/systemが mountされた際に、buildしたモジュールが見えなくなり、
意味がない状態でした。

この為、boot.img-ramdisk/init.valentewx.rc にSYMLINKを追記して対応しています。
(homuhomu氏 の素晴らしい アイデアに感謝。)

参考:https://github.com/caplio/valente_wx-ics/commit/ab1b4864b69ec4b62537d980a772d712ed2dd3b0

5-2 boot.imgの作成

repack-bootimg.pl を使ってbootイメージを作成します。
zImageを予めramdiskと同じ場所に置いておきます。
例は、new.img として出力させる場合。

$ repack-bootimg.pl zImage boot.img-ramdisk new.img
8639 blocks

repacked boot image written at boot.img-ramdisk-repack.img

6. 起動

あとはfastbootから起動の確認して問題なければflashすればいいでしょう。

例)fastbootモードからbootテスト

$ adb reboot-bootloader
$ fastboot boot new.img
downloading 'boot.img'...
OKAY [  1.039s]
booting...
OKAY [  0.002s]
finished. total time: 1.041s

buildが問題なく通る様になったら、defconfigの設定を変えたりXDA見ながら、
他の人のソースをmergeしてみるとかチャレンジしてみると面白いですよ。

■更新@2013/02

htcdevのカーネルソースが更新されていない状況です。
新しく記事を更新していますので、こちらも参考にして下さい。

【HTC J】香港版のsourceをmergeした際のメモ

HTC J CWM経由でのOTA適用でFeliCaが使えない問題について。

自分だけかもしれないですが、CWMからOTAを適用した所、
FeliCa関連のodexファイルが正常に適用されず、
おサイフ機能が使えなくなる現象がありました。

確認すると、/system 配下に適用に失敗したファイルがcopyされて
いる状態に。

この溢れたファイルを root explorer 等から/system/app に上書きし、
端末を再起動することで回避出来ました。

やり方としては、OTA適用後の/systemの状態を確認して、
下の写真と同じ状況になっていたら、/system を R/Wでマウントで、
書き込み出来るようにしてから、/system/app へ上書きコピー
端末を再起動して完了です。

image

自分はこのやり方で直りました。

もし同じ状態になった方がいましたら、試してみて下さい。
(そして直ったらコメント下さい。

【更新】ddコマンドで直せる模様です。

例)

# dd if=/system/XXX of=/system/app/XXX
※XXXは対象のファイル名

【HTC J】アンロック済みのHTC JにOTA(firmware.zip)を適用するメモ #ISW13HT

某スレで話題になっていましたが、OTAの適用でunlockが出来なく
なるのでは?という噂が流れていたので、実際に試してみました。

■前提環境

適用前環境:初期バージョン(1.20.970.2)で、
HTC Dev経由でunlock済みな端末。且つ、CWM適用済みな環境。

【参考】fnojiさんのblog「適当に更新diary」より
au ISW13HT HTC J 公式アンロックを非公式で行う root化まで
au ISW13HT HTC J ClockWorkModの最新verが公開!(基本動作は可能に)

適用後のバージョン:1.31.970.1

■適用メモ

・OTAを、ダウンロードしておく。
(OTA_VALENTE_WX_ICS_40_KDDI_JP_1.31.970.1-1.20.970.2_release_268209_signed・・・.zip)

・relock → unlockをすると工場出荷時に戻されるので、事前に/dataをバックアップ
(CWMからか、$ adb shell su -c tar cvf /sdcard2/data-bk.tar data/ などで)

・CWMからinstall zipでsystem分だけ先に更新しておく。
→おサイフが使えない問題が出たらこちらへ

・ダウンロードしたZIPファイルから firmware.zip を取り出して、
 PK07IMG.zip に名前を変更する。

PK07IMG.zip を、/sdcard2の下にpushする。
($ adb push PK07IMG.zip /sdcard2/)

あとは淡々と。

$ adb reboot-bootloader

fastbootの画面でrelock

$ fastboot oem lock

fastboot画面に戻るので、BOOTLOADERを選んでPowerボタン

SDカードに入れたzipファイルが正しければ、
上の画面になるので、<VOL UP> を押して適用開始。

再起動がかかって、こんな画面が。
適用完了するとPOWERボタンを押すように促されます。

その後、起動に問題がなければ、
$ fastboot flash unlocktoken Unlock_code.bin
で、再度アンロック。

無事に適用が完了しました。と。
recoveryが上書きされてるので、CWMは焼き直しが必要です。

■結論

えふのじさんのサイトに記載されてる通り、一度SuperCidへ変更しておけば、
OTAの適用を行なっても、再度unlockは可能(都度バックアップ/リストアが必要ですが)

----------------------------------------

★追記:rootが解除される件★ 修正 8/20

OTAの適用時に、update-scriptを編集せずに適用すると、
/system/xbin 内のパーミッションが755に強制変換されて、
root化が解除されます。

これについては、OTA適用後、CWMリカバリーで起動して、
adb shellで以下パーミッションを変更すれば治ると思います。

$ adb shell mount /system
$ adb shell chmod 6755 /system/xbin/su

【HTC J】絵文字の表示とFallback Fontの変更について


@神戸メリケンパーク Photo by HTC J/ISW13HT

ATOKで絵文字を表示させる方法 と fallback fontの追加についてのメモです

■注意事項■

root権限が必要な内容となります。
ファイルの操作間違いなど、失敗するとロゴループとなり起動しなくなるので注意下さい。
CWM導入などsystemがリカバリ可能な状態を確保してからの作業を推奨します。

※無許可の転載はご遠慮願います。

【ATOKで絵文字を表示させる】

HTC JでATOKを使っていると、絵文字のFONTがないせいか、
空白で表示されます。これを改善する方法をメモです。
(各ファイルは、検索して探して下さい・・・。)

1. libemoji_docomo.so を どこかからGetしてくる
2. /system を 書き込み可能でマウント(root explorereなどで)
3. libemoji_docomo.so/system/lib へコピー。Permissionは、644に変更

4./data/local.propを作成

作成したファイルに以下の1行を追記

ro.config.libemoji=libemoji_docomo.so

/data/local.propファイルのPermissionを644に変更

5. 再起動

これで、ATOKの入力パネルで絵文字が出るようになります。

libemoji_docomo.so を libemoji_kddi.so に変えると
AUの絵文字が出るようになります。

左がdocomo、右がkddiを指定した場合。
 

HTC Jの場合は、libemoji_kddi.soにしてもメールアプリ上では、
ドコモの絵文字に変換されて表示されるみたいです。残念。

元に戻したい場合は、libemoji_docomo.soと/data/local.propの削除でOK


【unicode 入りのDroidSans.ttf】

iPhoneユーザーがよく使う絵文字が表示出来るように、
言語を少し追加したDroidSansFallback.ttf を 作成しました。

Link ⇒ DroidSansFallback.ttf

元のDroidSansFallback.ttfをバックアップした上で、上書きして、
Permissionを644に変更すれば、再起動後有効になります。

 

HTC J (ISW13HT) 小ネタ諸々

HTC Jの小ネタを少々。

1.microSDXC 64GBが非公式ながら認識・動作する。

ちなみに買ったのはこれ⇒Sandisk microSDXC Ultra 64GB SDSDQUA-064G-U46A
最初正常に認識しないですが、ストレージの項目からSDカードの削除・初期化を、
したら使えるようになりました。

★ドコモから破損の警告/お知らせがありました。ご注意下さい★

microSDXCカードご利用時のご注意について
http://www.nttdocomo.co.jp/info/notice/page/120606_00.html

2.CPUのSTEP数がかなり多い。

周波数STEPが多いと省電力に効果があったりなかったり。

あと2個目のCPUは、殆どOFFLINE だったりします。
HTC Jがバッテリーの持ちがいいと言われるのはここなのかも。

ただ、Galaxy S2 ⇒ Photon と使ってきたけど使ってる時の消費と、
Deep sleep時の消費は大差無い感じでした。(使い方?

3.ベンチの結果は優秀

これは各所で話題になってますね。メモリーの値が高いのが特徴的

 

4.凍結したアプリは、adb経由でも確認が出来る(pmコマンド)

$ adb shell pm list packages -d
package:com.google.android.apps.genie.geniewidget
package:com.htc.photowidget3d
package:com.htc.socialnetwork.gree
package:com.kddi.ux.location
package:com.kddi.ux.station
package:jp.gree.android.pf.greeapp1753

例えば凍結し過ぎて再起動ループになった場合は、wait-for-deviceと
組み合わせて、起動時にenable出来れば復活が可能かもしれない
ダメでした。root化した後にやらないとダメぽい。

例)
$ adb wait-for-device && adb shell pm enable <package name >

それ以外で見つけたのは、PRLでLTEの項目がある(選択できない)事や、
自動省電力機能隠しメニューがある(有効にする方法がわからない)位かな。

カメラの性能は、HTC J (ISW13HT)とPHOTON撮り比べ でイマイチって書いたけど、
使ってるとそんな事もなくて、中々優秀なのかなと。前言撤回。camera

あと、一つ前にrootの記事書いてますが、temp rootからもEVO 3Dと同じやり方で、
xml書き換えてカメラ無音化出来ます。連射時音でないと寂しいですがsweat01