バッファロー「おもいでばこ」が気になったので調査してみた

バッファローが発売している「おもいでばこ

初代モデルのPD-100が、時々安く売ってるのでちょっと気にはなっていた。
製品ラインナップを見ると、3種類、PD-100、PD-100S、PD-100S-Lあるが、外形、消費電力などは同じで、容量の違いが大きな違いのように見受けられる。

しかし、firmwareのアップデータを見ると、「PD-100」と「PD-100S/PD-100S-L」とで異なっている。
PD-100:最新は ver 1.21
PD-100S/PD-100S-L:最新は ver 1.10

別物であるのか?

気になったのでダウンロードしてみた。

zipを展開していくと、中から現れたのはsquashfsのファイル。
PD-100もPD-100Sも、根本構造は同じで、基本Android 2.2。

そう、Android。
「連携するアプリがAndroid」ではなく、「おもいでばこ自体がAndroid BOX」なのです。

/system/build.prop なんて、どちらも同一。

# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=MASTER
ro.build.display.id=berlin-eng 2.2 MASTER eng.root.20110715.130354 test-keys
ro.build.version.incremental=eng.root.20110715.130354
ro.build.version.sdk=8
ro.build.version.codename=REL
ro.build.version.release=2.2
ro.build.date=2011年  7月 15日 金曜日 13:04:16 JST
ro.build.date.utc=1310702656
ro.build.type=eng
ro.build.user=root
ro.build.host=y-maruyam-desktop
ro.build.tags=test-keys
ro.product.model=berlin
ro.product.brand=marvell
ro.product.name=berlin
ro.product.device=berlin
ro.product.board=
ro.product.cpu.abi=armeabi
ro.product.manufacturer=unknown
ro.product.locale.language=mdpi
ro.product.locale.region=
ro.wifi.channels=
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=berlin
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=berlin-eng 2.2 MASTER eng.root.20110715.130354 test-keys
ro.build.fingerprint=marvell/berlin/berlin/:2.2/MASTER/eng.root.20110715.130354:eng/test-keys
# end build properties

#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
ro.kernel.android.checkjni=1
ro.setupwizard.mode=OPTIONAL
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
#changed by maru
dalvik.vm.heapsize=64m

/init あたりは微妙に差があるが、おそらくは、PD-100Sでは無線LAN USBアダプタが添付されている、という事情で、読み込むようにしたのだと思われる変更点である。

-#insmod /system/lib/modules/rtutil5370sta.ko
-#insmod /system/lib/modules/rt5370sta.ko
-#insmod /system/lib/modules/rtnet5370sta.ko
+insmod /system/lib/modules/rtutil5572sta.ko
+insmod /system/lib/modules/rt5572sta.ko
+insmod /system/lib/modules/rtnet5572sta.ko
+#insmod /system/lib/modules/log/rtutil5572sta.ko
+#insmod /system/lib/modules/log/rt5572sta.ko
+#insmod /system/lib/modules/log/rtnet5572sta.ko
+
+insmod /lib/ufsd.ko

PD-100にも/system/lib/modulesに上記ファイルはある。
(/system/lib/modules/log/ は無い)

Androidなら搭載アプリに差があるのか、とsystem/app以下を見てみたが、たいした差はない。

# ls -l pd100-firmware/system/app/
合計 67760
-rw-rw-rw- 1 1000 root   143193  7月 13  2012 AccountAndSyncSettings.apk
-rw-rw-rw- 1 1000 root    18781  7月 13  2012 ApplicationsProvider.apk
-rw-rw-rw- 1 1000 root    65570  7月 13  2012 CertInstaller.apk
-rw-rw-rw- 1 1000 root    11747  7月 13  2012 DefaultContainerService.apk
-rw-rw-rw- 1 1000 root   106641  7月 13  2012 Development.apk
-rw-rw-rw- 1 1000 root    74477  7月 13  2012 DownloadProvider.apk
-rw-rw-rw- 1 1000 root    97041  7月 13  2012 FileManager.apk
-rwxrw-rw- 1 1000 root    16243  7月 13  2012 GetIpAddress.apk
-rw-rw-rw- 1 1000 root    12295  7月 13  2012 HTMLViewer.apk
-rw-rw-rw- 1 1000 root   393634  7月 13  2012 MarvellScreenController.apk
-rw-rw-rw- 1 1000 root    49797  7月 13  2012 MediaProvider.apk
-rw-r--r-- 1 root root 58160522  9月 21  2012 Omoject.apk
-rwxr--r-- 1 root root  6929700  9月 21  2012 OpenWnnControlPanelJAJP.apk
-rw-rw-rw- 1 1000 root    74211  7月 13  2012 PackageInstaller.apk
-rw-rw-rw- 1 1000 root     3637  7月 13  2012 Provision.apk
-rw-rw-rw- 1 1000 root  2531112  7月 13  2012 Settings.apk
-rw-rw-rw- 1 1000 root    38162  7月 13  2012 SettingsProvider.apk
-rw-rw-rw- 1 1000 root    10149  7月 13  2012 UserDictionaryProvider.apk
-rw-rw-rw- 1 1000 root    19650  7月 13  2012 VideoPlayer.apk
-rwxr--r-- 1 1000 1000   474474  9月 19  2012 VideoTester.apk
# ls -l pd100s-firmware/system/app/
合計 121388
-rw-rw-rw- 1 1000 root    143193 12月  3 11:39 AccountAndSyncSettings.apk
-rw-rw-rw- 1 1000 root     18781 12月  3 11:39 ApplicationsProvider.apk
-rwxrw-rw- 1 1000 root   2325019 12月  3 11:39 CanonEPP220.apk
-rw-rw-rw- 1 1000 root     65570 12月  3 11:39 CertInstaller.apk
-rw-rw-rw- 1 1000 root     11747 12月  3 11:39 DefaultContainerService.apk
-rw-rw-rw- 1 1000 root    106641 12月  3 11:39 Development.apk
-rw-rw-rw- 1 1000 root     74477 12月  3 11:39 DownloadProvider.apk
-rw-rw-rw- 1 1000 root     97041 12月  3 11:39 FileManager.apk
-rwxrw-rw- 1 1000 root     16243 12月  3 11:39 GetIpAddress.apk
-rw-rw-rw- 1 1000 root     12295 12月  3 11:39 HTMLViewer.apk
-rw-rw-rw- 1 1000 root    393634 12月  3 11:39 MarvellScreenController.apk
-rw-rw-rw- 1 1000 root     49797 12月  3 11:39 MediaProvider.apk
-rw-r--r-- 1 root root 110694637  3月 14 15:11 Omoject-release.apk
-rw-r--r-- 1 root root   6923585  3月 14 15:11 OpenWnnControlPanelJAJP-release.apk
-rw-rw-rw- 1 1000 root     74211 12月  3 11:39 PackageInstaller.apk
-rw-rw-rw- 1 1000 root      3637 12月  3 11:39 Provision.apk
-rw-rw-rw- 1 1000 root   2531112 12月  3 11:39 Settings.apk
-rw-rw-rw- 1 1000 root     38162 12月  3 11:39 SettingsProvider.apk
-rw-rw-rw- 1 1000 root     10149 12月  3 11:39 UserDictionaryProvider.apk
-rw-rw-rw- 1 1000 root     19650 12月  3 11:39 VideoPlayer.apk
-rwxrw-rw- 1 1000 root    474474 12月  3 11:39 VideoTester.apk
#

どんなフォントを収録してるのかな・・・

# ls -l pd100s-firmware/system/fonts/
合計 20052
-rw-rw-rw- 1 1000 root    6880 12月  3 11:39 Clockopia.ttf
-rw-rw-rw- 1 1000 root  191032 12月  3 11:39 DroidSans-Bold.ttf
-rw-rw-rw- 1 1000 root  190044 12月  3 11:39 DroidSans.ttf
-rw-rw-rw- 1 1000 root   35908 12月  3 11:39 DroidSansArabic.ttf
-rw-rw-rw- 1 1000 root 3640264 12月  3 11:39 DroidSansFallback.ttf
-rw-rw-rw- 1 1000 root   23076 12月  3 11:39 DroidSansHebrew.ttf
-rwxrw-rw- 1 1000 root 6234084 12月  3 11:39 DroidSansJapanese.ttf
-rw-rw-rw- 1 1000 root  117072 12月  3 11:39 DroidSansMono.ttf
-rw-rw-rw- 1 1000 root   36028 12月  3 11:39 DroidSansThai.ttf
-rw-rw-rw- 1 1000 root  184836 12月  3 11:39 DroidSerif-Bold.ttf
-rw-rw-rw- 1 1000 root  189916 12月  3 11:39 DroidSerif-BoldItalic.ttf
-rw-rw-rw- 1 1000 root  177176 12月  3 11:39 DroidSerif-Italic.ttf
-rw-rw-rw- 1 1000 root  172532 12月  3 11:39 DroidSerif-Regular.ttf
-rwxrw-rw- 1 1000 root 9247356 12月  3 11:39 uzura.ttf
#

うずらフォント ver1.00が入ってますね。
(うずらフォント使いますと、ちゃんと連絡入れたのかな?)

で・・・デバイス固有っぽいファイルを探すと、「init.mv88de3010.rc」と「/system/etc/init.mv88de3010.sh」というのを発見。
PD-100とPD-100Sの差異は、ほぼ無し(init.mv88de3010.rcがPD-100Sだと「stop dhcpcd_ra0」のところがPD-100だと「stop dhcpcd」というところだけ)

cat pd100s-firmware/init.mv88de3010.rc
on early-init
    device /dev/pftimer 0666 root root
    device /dev/MV_CC_ICC 0666 root root
    device /dev/MV_CC_SHM0 0666 root root
    device /dev/MV_CC_SHM1 0666 root root
    device /dev/MV_CC_SHM2 0666 root root

on early-boot
    mkdir /mnt/DMS 0777 root root
#    mkdir /mnt/samba 0777 root root
#    mkdir /data/dms 0777 root root
#    mount tmpfs tmpfs /data/dms
#    symlink /dev/block/sr0 /dev/scd0

    setprop ro.radio.noril no
    setprop battery.fake_ac true
    setprop power.fake_power true
    setprop wifi.interface ra0

on boot
    symlink /dev/block/mtdblock0 /dev/mtdblock0
    symlink /dev/block/mtdblock1 /dev/mtdblock1
    symlink /dev/block/mtdblock2 /dev/mtdblock2
    symlink /dev/block/mtdblock3 /dev/mtdblock3
    symlink /dev/block/mtdblock4 /dev/mtdblock4
    symlink /dev/block/mtdblock5 /dev/mtdblock5
    symlink /dev/block/mtdblock6 /dev/mtdblock6
    symlink /dev/block/mtdblock7 /dev/mtdblock7
    symlink /dev/block/mtdblock8 /dev/mtdblock8
    symlink /dev/block/mtdblock9 /dev/mtdblock9

    symlink /dev/mtd/mtd0 /dev/mtd0
    symlink /dev/mtd/mtd1 /dev/mtd1
    symlink /dev/mtd/mtd2 /dev/mtd2
    symlink /dev/mtd/mtd3 /dev/mtd3
    symlink /dev/mtd/mtd4 /dev/mtd4
    symlink /dev/mtd/mtd5 /dev/mtd5
    symlink /dev/mtd/mtd6 /dev/mtd6
    symlink /dev/mtd/mtd7 /dev/mtd7
    symlink /dev/mtd/mtd8 /dev/mtd8
    symlink /dev/mtd/mtd9 /dev/mtd9

    symlink /dev/mtd/mtd_mv /dev/mtd_mv


service mv88de3010_init /system/etc/init.mv88de3010.sh
    oneshot

#service mv88de3010_bdp /system/etc/init.bdp.sh
#    oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
    -Dwext -ira0 -c/data/misc/wifi/wpa_supplicant.conf
    user root
    group root system inet keystore
    disabled
    oneshot

service dhcpcd_ra0 /system/bin/dhcpcd -d ra0
    group system wifi dhcp
    disabled
    oneshot

on property:init.svc.wpa_supplicant=stopped
    stop dhcpcd_ra0

#service flash /system/etc/init.flash.sh
#    oneshot

service sm_daemon /sbin/sm_tool -d
    oneshot

service buffalo_init /system/etc/init.buffalo.sh
    oneshot

service wdt_process /sbin/process_wdt
    oneshot

#service samba /sbin/cifs.sh
#    oneshot

#service symlinker /sbin/dbread.sh
#    oneshot

service autoscript /sbin/autoscript
    oneshot

service automount /sbin/automount
    oneshot

# cat pd100s-firmware/system/etc/init.mv88de3010.sh
#!/system/bin/sh

mount -t tmpfs nodev /data/system/wpa_supplicant
busybox cp -R /etc/dms/* /data/dms/

mkdir /data/factory_setting
mount -t yaffs2 -o inband-tags,no-hack,ro /dev/mtdblock9 /data/factory_setting
busybox ethconfig -n -d /dev/mtd4 /data/factory_setting/MAC_ADDR

netcfg eth0 dhcp
setprop net.dns1 `getprop net.eth0.dns1`
setprop net.dns2 `getprop net.eth0.dns2`

#djmount -o default_permissions -o allow_other  /mnt/DMS
#

いまのところ、収集できた範囲で考えると・・・

・MARVELL社のARMADA 1000/88DE3010 HD Media Processor SoC採用のAndroid 2.2ボックス。
 CPUはARMv7-A採用のSheevaコア 1GHz * 2

・PD-100とPD-100Sは基本は同じで、ハードウェア的な違いとしては
 PD-100Sでは無線LAN USBアダプタが標準添付されている、というぐらい?

 ただ、そうだとすると、PD-100のアウトレット品がたくさんでてる理由とか
 PD-100とPD-100Sとでfirmware versionが違う、というあたりの説明がつけにくい。
 オンボードメモリサイズとか、SDカードリーダ部分のチップが置き換わっている可能性あり?

・Omoject.apk、Omoject-release.apkがメインとなるアプリの模様。
 だいぶサイズが変わってるので、機能差がそりゃあるだろうな、という感じ。
 アプリ構成からすると、このアプリがホームアプリも兼用しており、基本的にはこの世界脱出はできないような雰囲気がある。

・他のAndroid TV-BOXからfirmwareを流用できないか、というあたりでは
 initrcなどに含まれていたキーワードを元に探したところ、Meteorit MMB-322.HDTVってのが近いような雰囲気。
 ただ、MMB-322のfirmware updaterは形式が全然違うので、流用は難しそう。

↓は、バッファローダイレクトのリユース品です。