SmartQ Z Watchのfirmware探索


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

MIPS系CPU JZ4775搭載Android腕時計 SmartQ Z Watch


中華タブレットの初期製品で有名だったSmartQシリーズに、腕時計型のAndroidが出ました。
「SmartQ Z Watch」です。

これも、GEAK Watchと同じくIngenicのMIPS系CPUの「JZ4775」を搭載している。
というか、姉妹製品なんじゃないかという気も・・・

・中国語版「製品ページ
・英語版「製品ページ

SmartQ Z Watch(「Z1」という記載もちらほら)は単独でもAndroidとして使うことができるが、親機となるAndroid端末とBluetooth接続で使用するような感じで使うのが、想定されている使い方だと思われる。
いくつかのレビューを見ると、バッテリーの持ちはそんないいもんではない感じで、12時間ぐらいらしい。

英語版ページは必要なものがなかったりするので、中国語版ページにアクセスすることがほぼ必須。
例えば、重要なあたりだと下記のようなものがある。

・中国語版「Z Watch firmware ダウンロードページ
 2013/11/11現在の最新は、11/07公開のV1.8
 ダウンロードの際は「电信下载」の方のリンクをクリックのこと。
 ちなみにURLは「 http://d2.smartdevices.com.cn/files/SmartQ_Z1_V1.8/update.zip
 update.zipをZ Watchにコピーして、良くあるAndroidっぽくfirmwareアップデートを行う感じ。

・中国語版「Z Watch 助手
 Android端末にインストールしてZ Watchと連携をとるためのソフト。
 Play Storeにはなくて、上記URLからapkファイルを入手する必要がある。
 このソフトからZ Watchのfirmwareアップデートを実施することも可能。

・中国語版「開発者向けページ
 先週SDKが公開された(「智器可穿戴SDK发布 Z Watch受开发者狂热追捧」)
 SDKダウンロードには、「開発者だったら、これくらいの問題とけるよね?」的な感じの
 プログラミングクイズを突破する必要がある。
 現状、マニュアル等は全部中国語

英語圏のTABLE REPUBLICというサイトの「SmartQ Z Watch専用フォーラム」に
firmwareのバージョンアップ履歴とかバージョンアップ方法
SDKまわりの情報
とかいくつか情報が出ているので、こちらを見てもよいでしょう。

xda-forumは、まだ微妙なでだし。
Other SmartWach」というサブフォーラムの中の「SmartQ Z smart watch」というスレッドがあるぐらい。

SmartQ Z Watch 赤

SmartQ Z Watch 青

SmartQ Z Watch 黒

MIPS JZ4775搭載のGEAK WatchというAndroid搭載腕時計


GEAK Watchという名前でMIPSコアのJZ4774搭載でAndroid OSの腕時計が発売されるようです。
watch_parameter_banner

販売メーカ:GEAK/上海果壳电子有限公司
製品ページ:GEAK Watch(GEAK手表)
元ネタ: edgadget china「盛大 GEAK 推出可獨立運作的智慧型手表 GEAK Watch,使用 Android 4.1 系統及強大的硬體配備
およびMIPS公式twitter

CPUについては上記のMIPS公式twitterではIngenic Semiconductor(北京君正集成电路)のJz4774を使っている、と書いてありますが、GEAK Watch製品ページのスペックには「JZ4775 1G主频 M IPS架构 超低功耗」と記載されています。
まぁ、IngenicにはJz4775に関する情報はあってもJz4774についての情報は見当たらないので、おそらくはJz4775なんでしょうね。
・Ingenic「Jz4775に関するリリースニュース
・Ingenic「JZ4775製品情報

Jz4775は、2012年にリリースしたJz4770から、CPUコア数などは増やさず1コアのまま、3D関連の機能を削減し、そして省電力にして、組み込みしやすくしたもののようです。
なので、これに搭載されているAndroid上で日本語IMEを使いたいのであれば、うちで配布している「MIPS Android(JZ4760)用nicoWnnG version 2012.1107-1/2012.1120-1 独自ビルド版」を使えばいいんじゃないかと思います。

なお、GEEK Watchの全体スペックとしては以下となっています。

CPU Jz4775 1.0GHz
RAM 512MB
ROM 4GB
1.55インチ 240×240液晶、マルチタッチ対応
Android 4.1
WiFi 802.11 b/g/n
Bluetooth 4.0
NFCあり
FMラジオあり
GPS/重力センサー/ジャイロ(陀螺仪)/地磁気センサーあり
電池 500mAh
生活防水あり

・・・一言でいえば、スペックアップしたMOTOACTVですよね。これ

MIPS系CPUのIngenic Jz4780がようやく正式発表に


2012年9月に発表されるという噂、がありながらも、6月頃を最後にずっと音沙汰が無かったIngenic Jz4780ですが、ようやくCES2013において発表される、という公式情報がありました。

MIPS社プレスリリース:Highly-Integrated MIPS-Based™ SoC from Ingenic Sets New Performance Point for Power-Efficient and Affordable Devices
Ingenicの製品ページ:Jz4780

スペックは、噂にあったとおりの

Jz4780 40nmプロセス
Dual core 1.5GHz
GPU: SGX540

というところですね。
MIPSのリリースには「1.3GHz+ SoC」とありますが、Ingenic側は「1.5GHz」としているので、それに従っています。

JZ4780 Diagram(1)

・・・ここまで遅れといて、そのスペックで大丈夫か?と心配になるレベル。

MIPSのリリースには、Alter-semiconductorのLTEチップFOURGEEと組み合わせたMIPSベースのタブレットも出展するそうなんですが、果たしてどうなることやら・・・

ActionSemiconductor ACT-AMT7029?


AinolからNOVOタブレットの新製品群が出るという話があるようです(juggly.cn:「中国 Ainol、NOVOタブレット新作 Dragon、Venus、Fame II、Legend、Dream、Hero、Hero II、Captainの製品情報を公開」)

その中で

CPU: ACT-ATM7029 Cortex-A9クアッドコア
GPU: GC1000

というスペックが掲載されているようです。

ACT-AMT7029とは、おそらく、ActionSemiconductor(炬力集成)のAMTプロセッサシリーズの製品のことだと想定されます。

しかしながら、ActionSemiconductorのページは全然製品について更新されないページなのです。

トップページのニュースを見ると英語版の最終更新は2011年4月、中国語版は2011年12月ぐらいな模様ですが、その時点でリリースされていたはずの、AMT-7001という製品について、記載がありません。

1つ前の製品である「AMT-7001」というのは、どういう製品であったのかと言えば、MIPS32 74Kfコア採用のプロセッサです。

CPU: MIPS32 74Kf(浮動小数点演算機能つき)ベース 1.3GHz
GPU: GC800 / OpenGL ES2.0対応
メモリ: DDR3
HDMI 1.3対応
(参考1:2011/11/15作成「AMT-7001とJz4770/Jz4760の違い?」)
(参考2:2011/11/05プレスリリース「ミップス・テクノロジーズとActionsc Semiconductor社、Android「Honeycomb」をタブレット向けの新しい1.3GHzチップに搭載するために協力」)

AMT-7029は、GPUについては引き続きVivante社のGCシリーズのGC1000というのは、非常に順当な進化と言えます。

しかしながら、CPUコアがARM系Cortex-A9ベースに変わる、というのは、非常に驚いた選択です。

とはいえ、MIPSコアのAMT-7001搭載の製品は少なく、同業でMIPS系CPUを出しているIngenic(北京君正)も、夏に出す予定だった次世代製品Jz4780が、音信不通になってる現状からすると、MIPS系CPUに見切りをつけてしまった可能性が高いような気もします。

特にMIPS系で独占販売をしていたAinolがすでにARM系でばりばり売ってしまっている現状から考えても、MIPS系Androidの将来は結構つらいのかもしれません・・・

MIPS版Jelly Bean(Android 4.1.1)も出ているのに