SmartQ Z Watchのfirmware updaterをダウンロードしたので中身を見てみた。
入手元
・中国語版「Z Watch firmware ダウンロードページ」
2013/11/11現在の最新は、11/07公開のV1.82013/11/15公開のV1.9が最新。
ダウンロードの際は「电信下载」の方のリンクをクリックのこと。
ちなみにURLは「 http://d2.smartdevices.com.cn/files/SmartQ_Z1_V1.9/update.zip 」
同じくJZ4775採用のGEAK Watchのfirmwareを探してみると
・GEAK公式フォーラム「【果壳公告】GEAK Watch版本升级和信息发布主页(11月07日)」
同じく11/07に「GEAK WATCH version 1095」というバージョンが出ている模様。
こちらは、パソコンもしくはGEAK Watch本体から直接ファイルをダウンロードさせる形式である模様。
ただ、「SmartQ Z Watchの更新履歴」と「GEAK Watchの更新履歴」を比べてみると似たようなタイミングで出てるような気がする・・・
いったい、どれくらいの関係なんだろうか???
で・・・SmartQ Z Watch用のupdate.zipを開いてみる。
$ unzip -l update.zip
Archive: update.zip
signed by SignApk
Length Date Time Name
-------- ---- ---- ----
128 10-23-12 17:12 META-INF/com/android/metadata
338708 10-23-12 17:12 META-INF/com/google/android/update-binary
3356 10-23-12 17:12 META-INF/com/google/android/updater-script
3315712 10-23-12 17:12 boot.img
694784 10-23-12 17:12 mbr-xboot.bin
4937728 10-23-12 17:12 recovery.img
18069 10-23-12 17:12 system/app/ApplicationsProvider.apk
207471 10-23-12 17:12 system/app/Bluetooth.apk
<略>
5364 10-23-12 17:12 system/xbin/timeinfo
1619 10-23-12 17:12 META-INF/com/android/otacert
71058 10-23-12 17:12 META-INF/MANIFEST.MF
71111 10-23-12 17:12 META-INF/CERT.SF
1656 10-23-12 17:12 META-INF/CERT.RSA
-------- -------
172076186 837 files
$
良くあるAndroidのupdate.zipと同じ形式。
update.zipでどんなことをやっているのかを確認。
$ cat META-INF/com/google/android/updater-script
assert(getprop("ro.product.device") == "s2122b" ||
getprop("ro.build.product") == "s2122b");
show_progress(0.500000, 0);
format("ext4", "EMMC", "/dev/block/mmcblk0p1", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p1", "/system");
package_extract_dir("system", "/system");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("mksh", "/system/bin/sh");
symlink("readbattery", "/system/bin/creat_curve",
"/system/bin/update_curve");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
"/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
"/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
"/system/bin/getevent", "/system/bin/getpartionblkcount",
"/system/bin/getprop", "/system/bin/hd", "/system/bin/id",
"/system/bin/ifconfig", "/system/bin/iftop", "/system/bin/insmod",
"/system/bin/ioctl", "/system/bin/ionice", "/system/bin/kill",
"/system/bin/ln", "/system/bin/log", "/system/bin/ls",
"/system/bin/lsmod", "/system/bin/lsof", "/system/bin/md5",
"/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
"/system/bin/nandread", "/system/bin/netstat",
"/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
"/system/bin/ps", "/system/bin/r", "/system/bin/reboot",
"/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",
"/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop",
"/system/bin/sendevent", "/system/bin/setconsole",
"/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd",
"/system/bin/start", "/system/bin/stop", "/system/bin/sync",
"/system/bin/top", "/system/bin/touch", "/system/bin/umount",
"/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",
"/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0755, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 2000, 04755, "/system/bin/catkmsg");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth/bt.sh");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 0755, "/system/xbin/tcpdump");
show_progress(0.200000, 0);
show_progress(0.200000, 10);
package_extract_file("boot.img", "tmp/boot.img");
write_raw_image("tmp/boot.img", "ndboot");
package_extract_file("mbr-xboot.bin", "tmp/mbr-xboot.bin");
write_raw_image("tmp/mbr-xboot.bin", "uboot");
show_progress(0.100000, 0);
package_extract_file("recovery.img", "tmp/recovery.img");
write_raw_image("tmp/recovery.img", "recovery");
show_progress(0.100000, 0);
unmount("/system");
$
まぁ、普通。
開発名は「s2122b」というらしい。
$ cat system/build.prop
# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=JZO54K
ro.build.display.id=V1.8-2013-11-06
ro.build.version.incremental=eng.wqkong.20131106.153814
ro.build.version.sdk=16
ro.build.version.codename=REL
ro.build.version.release=4.1
ro.build.date=2013年 11月 06日 星期三 15:39:13 CST
ro.build.date.utc=1383723553
ro.build.type=eng
ro.build.user=wqkong
ro.build.host=wqkong-desktop
ro.build.tags=dev-keys
ro.product.model=Z1
ro.product.brand=Ingenic
ro.product.name=s2122b
ro.product.device=s2122b
#ro.product.board=s2122b
ro.product.board=s2122b
ro.product.cpu.abi=mips
ro.product.cpu.abi2=armeabi-v7a
ro.product.manufacturer=Karbonn
ro.product.locale.language=zh
ro.product.locale.region=CN
ro.wifi.channels=13
ro.board.platform=jz4780
# ro.build.product is obsolete; use ro.product.device
ro.build.product=s2122b
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=s2122b-eng 4.1 JZO54K eng.wqkong.20131106.153814 dev-keys
ro.build.fingerprint=Ingenic/s2122b/s2122b:4.1/JZO54K/eng.wqkong.20131106.153814:eng/dev-keys
ro.build.characteristics=tablet
# end build properties
#
# system.prop for generic sdk
#
ro.opengles.version = 131072
rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyM1
mobiled.libpath=/system/lib/libmobiled.so
#
# H/W composition disabled
#
debug.sf.hw=1
#timezone
persist.sys.timezone=Asia/Shanghai
#--for camera--s-
#ro.board.camera.picture_upscale=true
#ro.board.camera.upscale_id=0
#ro.board.camera.sensor_w=640
#ro.board.camera.sensor_h=480
#ro.board.camera.upscale_dst_w=1600
#ro.board.camera.upscale_dst_h=1200
#--camera--e-
#board config
ro.board.hdmi.support=false
ro.board.hdmi.device= HDMI LCD SYNC
ro.board.hdmi.hotplug.support=true
ro.board.tvout.support=false
ro.board.hasethernet=ethernet
ro.board.haspppoe=pppoe
testing.mediascanner.skiplist=/storage/host-udisk/,/storage/udisk/
dalvik.vm.heapsize=60m
ro.sf.lcd_density=160
ro.sf.hwrotation=180
# sync app use
watch_device=yes
#long press back key will show this global action dialog.
#value > 0 means long press time(ms)
#value <= 0, means dialog will not show by press back key.
keyback_long_press_time=1000
#for system rom lower
#cut webcore
ro.systemcut.webcore=false
# device info related
ro.partition.num=4
ro.devid.bytes=13
#ro.wifimac.offset=512
#ro.wifimac.bytes=17
ro.btmac.offset=1024
ro.btmac.bytes=17
ro.devinfo.enable=true
# for ft5216
debug.velocitytracker.strategy=int1
#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.carrier=wifi-only
ro.kernel.android.checkjni=0
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
$
Androidのバージョンは「JZO54K」なので「Android 4.1.2」
「ro.board.platform=jz4780」って、このデバイスはjz4775じゃないのかなぁ?と思ったのですが、
おそらくは「Android-JB(4.1.2) JZ4780/4775 新版本发布」で配布されているソースコードがベースになるので、共通化されてるのかな?とか感じました。
で・・・
$ ls -l system/xbin/su
-rw-rw-r-- 1 osakanataro user 137356 10月 23 2012 xbin/su
$
・・・su在中ですかw
SuperUser.apkとかはsystem/appには見当たらなかったので、必要に応じて別途ダウンロードが必要そうです。
$ ls system/app
ApplicationsProvider.apk Music.apk
Bluetooth.apk MusicFX.apk
Calendar.apk NetworkLocation.apk
CalendarProvider.apk PackageInstaller.apk
CertInstaller.apk Phone.apk
Contacts.apk Provision.apk
ContactsProvider.apk Settings.apk
DefaultContainerService.apk SettingsProvider.apk
DeskClock.apk SleepingAnalysis.apk
DownloadProvider.apk SmartLauncher.apk
DownloadProviderUi.apk SmartQWatchHealth.apk
DrmProvider.apk SoundRecorder.apk
FileManager.apk SystemUI.apk
GoogleServicesFramework.apk TelephonyProvider.apk
IndroidSyncWatch.apk UserDictionaryProvider.apk
IndroidWeather.apk WatchWidget.apk
MediaProvider.apk cn.yunzhisheng.assistant.smartdevices.apk.bak
Mms.apk com.tencent.mm.apk.bak
$
とりあえず最小限だけインストールされている、というような感じ。
「cn.yunzhisheng.assistant.smartdevices.apk.bak」「com.tencent.mm.apk.bak」はなぜ「.apk.bak」なんて形でファイルが残っているんだろうか?
消してしまえない理由でもあるんだろうか???
$ ls system/fonts
AndroidClock.ttf DroidSerif-Regular.ttf
AndroidClock_Highlight.ttf Roboto-Bold.ttf
AndroidClock_Solid.ttf Roboto-BoldItalic.ttf
AndroidEmoji.ttf Roboto-Italic.ttf
Clockopia.ttf Roboto-Light.ttf
DroidNaskh-Regular-SystemUI.ttf Roboto-LightItalic.ttf
DroidNaskh-Regular.ttf Roboto-Regular.ttf
DroidSansArmenian.ttf RobotoCondensed-Bold.ttf
DroidSansFallback.ttf RobotoCondensed-BoldItalic.ttf
DroidSerif-Bold.ttf RobotoCondensed-Italic.ttf
DroidSerif-BoldItalic.ttf RobotoCondensed-Regular.ttf
DroidSerif-Italic.ttf
$
「AndroidEmoji.ttf」と絵文字は入っているものの、日本語対策は特になく「DroidSansFallback.ttf」のみ。
なので、いわゆる中華表示になる模様。
$ ls system/etc
NOTICE.html.gz h264_cavlc_p1.bin permissions
audio_effects.conf h264_p1.bin ppp
audio_policy.conf hosts recovery.fstab
bluetooth init.goldfish.sh rv9_p1.bin
dbus.conf jzmpeg2_p1.bin security
dhcpcd launcher_flag system_fonts.xml
disk_preparing.sh media_codecs.xml vc1_p1.bin
event-log-tags media_profiles.xml vold.fstab
excluded-input-devices.xml mkshrc wifi
fallback_fonts-ja.xml modems-conf.xml x264_p1.bin
fallback_fonts.xml mpeg4_p1.bin zram.sh
firmware msmpeg4_p1.bin
$
H.264, MPEG4などの動画関連の補助があるらしい。
「zram.sh」の中で、メインメモリから256MBを圧縮機能ありのラムディスクとした上で、そこをswap領域として使用している。