ronzi A3のfirmwareをカスタマイズできるかどうかをやってみた


ronzi A3のfirmwareをカスタマイズできるかどうかをやってみた。

まず、配布rar内のシステムイメージを確認

# file *
boot_rz.img data
cache.img Linux rev 1.0 ext4 filesystem data (extents)
mbr-xboot-60_rz43_1104280101.bin x86 boot sector; partition 1: ID=0x83, starthead 0, startsector 262144, 524288 sectors; partition 2: ID=0x83, starthead 0, startsector 819200, 1048576 sectors; partition 3: ID=0x83, starthead 0, startsector 1908736, 65536 sectors; partition 4: ID=0xb, starthead 0, startsector 2097152, 13918208 sectors
recovery.cpio.img data
system.img Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents)
userdata.img Linux rev 0.0 ext2 filesystem data
vfat.img data
#

ext2, ext4のものは、普通にLinuxのファイルシステムとしてマウントできるのを確認。

cache.img → /cache パーテーションとなるものだが、中身は空
system.img → /system パーテーションとなるもの
userdata.img → /data パーテーションとなるもの

そして、system.img の中に userdata.imgとrecovery.cpio.img が中に含まれている。
system.img内のuserdata.imgとrecovery.cpio.imgは削除しても正常に動作した。なぜ入っているのかは不明。両方併せて70MBなのでとりあえず削除しておいた。

さらに、中身の詳細を確認していくと、通常 /system/app に入っている Google Android Market関連のapkが/data/app に入っている。
移動させるのと同時にxdaのフォーラム:[APPS] GApps package [not continuing, last update Jan 13,2011] からMarket関連のapkを持ってきて置き換えた。
ついでに、Google MapとGmailも組み込んでみたが、元々少ないメインメモリを使い、もっさり感が増したので、こちらは取りやめ。

この他、中華なアプリとか中華IMEとかをざっくり消していって system.imgとuserdata.img をダイエット。
また、/system/build.propに「ro.sf.lcd_density=130」というエントリも追加。

そうやって作成したイメージを適用。

手法はUSB boot toolを起動して行う。
ただ、今回、カスタマイズしたのはsystem.imgとuserdata.imgだから、それだけでいいやー、と思って適用してみたら、ちゃんと終わらない。
更新しなかったファイルも含めて全部適用しなければならない感じです。

また、firmware書き換えると、WifiのMACアドレスも変わります。
いまのうちのronzi A3は・・・たぶん、7個目ぐらいのアドレスです。

で・・・・問題点がありまして・・・
カスタマイズしても、やっぱりもっさり^^;;;;;;;;;;;;;;

JZ4760(MIPS)用nicoWnnG 独自ビルド版


(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


———————————
OpenWnnもATOKも、どちらもAndroid NDKを使用して処理の高速化を図っています。
が、このNDKを使うとその配布パッケージはCPUアーキテクチャが限定される、という制約もかかります。

いまのところ主流のAndroid端末はARMアーキテクチャですが、ronzi A3はJZ4760というMIPSアーキテクチャのCPUを使用しています。
このため、OpenWnnもATOKも、ronzi A3では使用できない、という問題が発生します。

解決方法は、MIPSアーキテクチャ用のファイルも作成することです。

そんなわけで、単体でソースが公開されているnicoWnnGを使用しまして、MIPSに対応させた独自ビルド版nicoWnnGを作成しました。

apkファイル: nicoWnnG-mips.apk
・nicownng_2011_0503_1_src.zipをベースとしています

最新版はこちら
・MIPS用のバイナリを入れた以外はプログラム的な変更はありません。
・ronzi A3で使うと、レイアウトが結構おかしな感じで表示されますが、まだ、調整していません。
・apkに対する署名は配布元のものとは別になっています。今後、正規対応版が出たら、うちのをアンインストールしてから、正規対応版をインストールしてください。(じゃないとインストールに失敗します)

ちなみに、作り方のメモをおいておきます

Android NDK公式においてあるものはARMアーキテクチャ用のキットです。
MIPS用のものはMIPS社の開発ページから入手できます。

nicoWnnGのソースを展開して、jni/Application.mk内の「APP_ABI」行を「APP_ABI := mips」に変更します。
その後、mipsのAndroid NDKを使用してndk-buildを実行すると、libs/mips/ ディレクトリ内にMIPS用のバイナリが出力されます。
これを使用して、あとの手順は標準と同じように行っていきます。

ronzi A3 firmware update guide


ronzi A3(溶智 A3) ,firmware (ROM) update guide.
(2013/01/15 fixed download link)

(0) you got firmware and util(include USBBootTool.exe for separated firmware)
(1) ronzi A3 is booting “USB boot mode”

Press Home button and Power on.
Then, ronzi A3 into USB boot mode.
Warning: In this time, ronzi A3 screen is black. no-display.

(2) Connect to MS-Windows and install “Ingenic USB Boot Device Driver”.

ronzi A3 is displayed “JZ4760 USB Boot deivice”

(3) Disconnect ronzi A3
Warning: Don’t connect ronzi A3, before Step6.

(4) execute USBbootTool

(5) Select the update files.

Red square: “打井…” meaning “Select file…”
Greed square: “清除” , this value is ignore.

(6) USBboot mode ronzi A3 conneted to MS-Windows ,
USBboot Tools will be update start.

(7) Automaticaly update

While update progress, Block the interface.

(8) waiting….

If un-blocked, then update finished

(9) Power on and booting new firmware.
It takes about 120sec.

中国のebookフォーマット umd


ronzi A3にプレインストールされているiReaderではどういうフォーマットがサポートされているか調べてみた。

iReader公式にはちょっとバージョンが古いものに関しての情報はある。
それによると・・・
textと、HTML集合体であるCHM、そして中国製フォーマットUMDに対応しているとのこと。

じゃあ、UMDってのは、どうやって作るのか?
umd-builder
ebookPK
手机Umd文件格式浅析 (たぶん、書式についての解説)

なお、UMDは、どうやら、中国携帯で結構サポートしているらしいフォーマットの模様。
おそらくはxmdf的な感じの位置づけっぽい

ronzi A3 その5 CPUアーキテクチャの違いでIMEが動かない


マーケットで「ATOK」とか「OpenWnn」とかで検索しても、本体は出てこない。
build.propとか書き換えても出てこない。

じゃぁ、別途持ってきてと思って、OpenWnn plusをダウンロードしてきてインストールしてみが、「インストールされていません」とエラーになる。

logcatしてみる・・・

D/PackageParser(  104): Scanning package: /data/app/vmdl57440.tmp
I/dalvikvm-heap(  104): Grow heap (frag case) to 5.740MB for 27488-byte allocation
D/dalvikvm(  104): GC_FOR_MALLOC freed 9482 objects / 540680 bytes in 160ms
D/PackageManager(  104): Scanning package com.owplus.ime.openwnnplus
I/PackageManager(  104): /data/app/com.owplus.ime.openwnnplus-1.apk changed; unpacking
E/PackageManager(  104): Package com.owplus.ime.openwnnplus has mismatched uid: 10055 on disk, 10051 in settings
I/dalvikvm(  104): Total arena pages for JIT: 11
W/PackageManager(  104): Native ABI mismatch from package file
W/PackageManager(  104): Package couldn't be installed in /data/app/com.owplus.ime.openwnnplus-1.apk
D/dalvikvm(  104): GC_EXPLICIT freed 10748 objects / 480504 bytes in 187ms

「Native ABI mismatch from package file」
そう、CPUアーキテクチャが違うことにより、問題が生じているらしい。
ronzi A3は「ro.product.cpu.abi=mips」
一般的には「ro.product.cpu.abi=arm」系というわけで、NDKを使って開発されたアプリは動かないらしい・・・

NicoWnnGも同じエラー発生。
docomo端末から引っ張ってきたATOKも同じく

いやぁ・・・困った。
NDK問題を回避できるIMEはあるんだろうか??

— 追記 その1 —
とりあえず、単独でソース公開されていたnicoWnnGを使って簡易対応してみた。
しかし・・・画面レイアウトの問題が・・・

— 追記 その2 —
JZ4760(MIPS)用nicoWnnG 独自ビルド版を配布してます。