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領域として使用している。