Covia FleaPhone CP-F03aのハードウェア周りについて

Covia FleaPhone CP-F03aのハードウェア周りについて書いてなかったので、つらつらっと書いてみる。

CPU Broadcom 23550 Quad-core 1.2GHz Cortex-A7 CPU
GPU Broadcom VideoCore IV HW
RAM 512MB
/data 1GB
内蔵SD扱いのストレージ 1.68GB
外カメラ 最大2560x1920px
内カメラ 最大640×480
LCD解像度 960×540
センサー系:加速度、照度計、近接センサーあり
(重力センサー、ジャイロセンサー、地磁気計、回転ベクトルセンサー、気圧計、温度センサー、歩数計無し)
NFC対応 ISO-DEP, NDEF, NFC-A, NFC-B, NFC-F, NFC-V, TYPE_KOVIO, Android Beam対応
Bluetooth BLEは非サポート
Wifi Direct対応
USBホスト機能対応
USBアクセサリ機能対応

GPSについては、みちびきは取ってくれないっぽい?

とりあえずは、そんな感じです。

Covia FleaPhone CP-F03aのNFC機能を試す

Covia FleaPhone CP-F03aにNFC機能が搭載されている、とスペックにはある。
そのサポート状況について確認してみた。

試験に使ったアプリと動作状況は以下のとおりです。

IC運転免許証リーダー
 運転免許証に埋め込まれているICカードの情報を読み出すことができます。
 → 動作しました。

Suica Reader
 Suica/PASMOなどの交通系ICカードの残高情報などを読み出すことができます。
 → 動作しました。ただし、ICカード側の問題で読み出せないことがあります。
  詳しくは後述。

Edy Reader
 楽天Edyの残高情報を読み出すことが出来ます。
 → 動作しました。ただし、ICカード側の問題で読み出せないことがあります。

NFC Reader
 ICカードに埋め込まれている「Tag ID」と呼ばれる、ICカード固有の値を読み出すことができます。
 → 動作しました。ただし、ICカード側の問題で読み出しにくい場合があります。

NFC Passport Reader
 パスポートの真ん中にあるICチップを読み出せるらしく
 旅券番号と生年月日、有効期限を設定してからパスポートを重ねて読み出す・・・ということなんですが
 → 動きませんでした

・・・さて、上記で「ICカード側の問題」と書いている項目があります。
それについて説明します。

まず、Suica Readerの説明書きには「交通系ICカードはNFCタグとはデータ構造が違うため読み取りにくくなっています。」というふうなことが書かれています。

しかし、いま私の手元には以下のFelicaでテストした結果だとちょっと違う感じがします。

・2013年入手のView Suica
・2013年入手の子供Suica
・2011年ぐらいに入手のSuica
・2006年入手のTOICA
・2005年入手のICOCA
・2009年入手のKARUWAZA CLUB CARD(Edy)
・2007年ぐらいに入手のEdy

2009年以前のFelicaについて、NFC Readerでは「Technologies:NfcF」のカードとしてTag IDの読み出しは可能だけれども、Suica Reader/Edy Readerで残高が読み出せない、という状態になっています。
また、NFC Readerでも読み取れるポイントが非常に狭く、カードの位置を微調整する必要がありました。

2011年以降の3枚については、簡単に残高情報が読み出せます。
なので、それくらいで何かハードウェア的な変更があったのではないか?と予想しています。

さて・・・実際はどうでしょうかねぇ・・・

Covia CP-F03aに使える液晶保護フィルムを探す

Covia FleaPhone CP-F03aに使えそうな液晶保護フィルムを100円ショップで探してみた。

まず、CP-F03aの液晶サイズを実測。
幅 56mm x 縦 99mm でした。

とりあえず、近所にあるダイソーとローソンストア100に行ってみたところ、使えそうな3製品を発見。
IMG_2582s

左から
・ダイソー 4.8インチ用液晶保護フィルム(D-139 起床保護フィルム No.73)
 幅 64mm x 縦 110mm
・ローソンストア100 4.7インチ 液晶保護フィルム 気泡低減光沢タイプクリア(SP-F025)
 幅 63mm x 縦 108mm
・ローソンストア100 4.5インチ 液晶保護フィルム 気泡低減光沢タイプクリア(SP-F023)
 幅 61mm x 縦 102mm
です。

それでは、本体の上に重ねてみます。
・ダイソー 4.8インチ用液晶保護フィルム(D-139 起床保護フィルム No.73)
IMG_2588s
横幅がぎりぎりです。
縦も一番下の操作バーのあたりの段差がちょっと気になる感じです。

・ローソンストア100 4.7インチ 液晶保護フィルム 気泡低減光沢タイプクリア(SP-F025)
IMG_2585s
これも横幅が結構ぎりぎりです。1mm程度の差はあまり目立たない感じですね。
縦の違いもダイソー4.8インチとあまり変わらないような雰囲気ですね。

・ローソンストア100 4.5インチ 液晶保護フィルム 気泡低減光沢タイプクリア(SP-F023)
IMG_2583s
画面表示部分にちょうどマッチする感じです。

というわけで、ローソンストア100の4.5インチ液晶保護フィルム 気泡低減光沢タイプクリア(SP-F023) 幅 61mm x 縦 102mmを使うことにしました。

とりあえず使えそうなのをAmazonで探してみました。

Covia FleaPhone CP-F03aのsystem.propとかいろいろ

Covia FleaPhone CP-F03aが来たので、早速いろいろと、いろいろしちゃうことに・・・

まずは、adb接続が出来たので、内部システム探索。

Coviaのtwitterアカウントが、最新ファームウェアの案内を出しているので、それを適用し、「20140313版」にしてから実施しています。

それでは、早速「/system/build.prop」を開いてみましょう。

# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=JDQ39
ro.build.display.id=CP-B450_B03-S01_V01_20140313
ro.build.version.incremental=eng.qinxinmei.20140313.110549
ro.build.version.sdk=17
ro.build.version.codename=REL
ro.build.version.release=4.2.2
ro.build.date=Thu Mar 13 11:14:14 CST 2014
ro.build.date.utc=1394680454
ro.build.type=user
ro.build.user=qinxinmei
ro.build.host=mtk-ui1
ro.build.tags=release-keys
ro.product.model=CP-F03a
ro.product.brand=BRCM
ro.product.name=java_c_edn000_4Gb
ro.product.device=java_c_edn000_4Gb
ro.product.board=java
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=BROADCOM
ro.product.locale.language=en
ro.product.locale.region=US
ro.wifi.channels=
ro.board.platform=java
# ro.build.product is obsolete; use ro.product.device
ro.build.product=java_c_edn000_4Gb
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=java_c_edn000_4Gb-user 4.2.2 JDQ39 eng.qinxinmei.20140313.110549 release-keys
ro.build.fingerprint=BRCM/java_c_edn000_4Gb/java_c_edn000_4Gb:4.2.2/JDQ39/:user/release-keys
ro.build.characteristics=default
# end build properties
#
# system.prop for java_garnet
#

#Awesome player slow video decoder hack enable
awesome.sw_videodec=1

# When AP panic or CP assertion:
# 0: Only reboot without dump in final product
# 1: Dump + reboot in development(default)
persist.sys.panic.dump.debug=0

#Wi-Fi display composition in HWComposer
hwc.wifi.display=1

#Wi-Fi display optimization
brcm.wfd.opt=1

#wi-fi display bitrate
media.wfd.video-bitrate=3000000
media.wfd.audio-bitrate=48000
media.wfd.video-bitrate-mode=1

# vibration strength
persist.sys.vibration.strength=100


#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.storage.switch_primary=true
ro.phone.ip_call=true
ro.config.builtin_cdrom=true
persist.sys.timezone=Asia/Tokyo
ro.tether.denied=false
persist.sys.app_security=0
ro.config.ringtone_standby=Ring_Digital_02.ogg
ro.config.ringtone_2=Ring_Synth_04.ogg
ro.config.ringtone=Ring_Synth_04.ogg
ro.config.notification_sound=pixiedust.ogg
persist.sys.language=ja
ro.storage.internal.reserved.mb=50
ro.config.fontscale=1
ro.sys.ime=jp.co.omronsoft.openwnn/.OpenWnnJAJP
persist.sys.country=JP
ro.config.alarm_alert=Alarm_Classic.ogg
ro.setupwizard.mode=OPTIONAL
ro.com.google.gmsversion=4.1_r1
ro.addon.type=gapps
ro.addon.platform=jb42
ro.addon.version=gapps-jb-20130812
ro.addon.minimumversion=4.2.2
dalvik.vm.jniopts=warnonly
ro.max_fb_resolution=1280x720
rild.libpath=/system/lib/libbrcm_ril.so
ro.sf.lcd_density=240
ro.product.multi_touch_enabled=true
ro.product.max_num_touch=2
awesome.lateness=200
nuplayer.eos.timeout=3
drm.service.enabled=1
sf.metadata_use_plat_sw_codecs=1
sf.metadata_retrv_hw_codecs=1
persist.audio.pcmout1.sweq=ON
persist.audio.pcmout2.sweq=ON
af.resampler.quality=3
debug.nativeofinterest=1
bayer.frame.drop=12
ro.com.android.mobiledata=false
persist.sys.cmas.enable=1
ro.opengles.version=131072
wifi.interface=wlan0
wifi.supplicant_scan_interval=15
ro.com.android.dataroaming=false
dalvik.vm.heapstartsize=8m
dalvik.vm.heapgrowthlimit=96m
dalvik.vm.heapsize=256m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.heapminfree=512k
dalvik.vm.heapmaxfree=8m
ro.bt.bdaddr_path=/data/misc/bluetooth/btmac.txt
keyguard.no_require_sim=true
ro.com.android.dateformat=MM-dd-yyyy
ro.carrier=unknown
dalvik.vm.dexopt-flags=m=y
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt

ro.adups.fota.flag=yes
# begin adupsfota properties
ro.fota.platform=BRCM23550
ro.adups.fota.type=phone
ro.adups.fota.oem=ginwave23550
ro.adups.fota.device=CP-F03a
ro.adups.fota.version=CP-B450_B03-S01_V01_20140313
# begin adupsfota properties

「ro.build.date=Thu Mar 13 11:14:14 CST 2014」って、日本時間だと2014/03/13 12:14:14じゃないですかw
超最新版ですね。

前の機種で使っていた16GBのmicroSDを持ってきて、さらに設定も移したあとのシステムの状態。

shell@android:/system $ df
Filesystem             Size   Used   Free   Blksize
/dev                   223M    68K   223M   4096
/storage               256K     0K   256K   4096
/mnt/secure            223M     0K   223M   4096
/mnt/asec              223M     0K   223M   4096
/mnt/obb               223M     0K   223M   4096
/system                688M   516M   172M   4096
/cache                 147M     4M   143M   4096
/data                 1003M   552M   450M   4096
/storage/sdcard1         1G    34K     1G   2048
/storage/sdcard0        14G     8G     6G   32768
/mnt/secure/asec: Permission denied
shell@android:/system $

「/storage/sdcard0」がmicroSD
「/storage/sdcard1」がオンボードになっています。

アプリ上では「/storage/sdcard0」を「Internal Storage(内蔵ストレージ)」と表現したりしますので、実際のデータがどっちにおいてあるのかややこしくなるので注意が必要です。
(注意:これは、microSDスロットを持つ最近のAndroidで良くある話です)

/system/appにあるアプリはどんなものがあるのか?

shell@android:/system/app $ ls
AdupsFota.apk
AdupsFotaReboot.apk
ApplicationsProvider.apk
ApplicationsProvider.odex
AutoUpdate.apk
AutoUpdate.odex
BackupRestoreConfirmation.apk
BackupRestoreConfirmation.odex
BasicDreams.apk
BasicDreams.odex
BcmDiagService.apk
BcmDiagService.odex
Bluetooth.apk
Bluetooth.odex
BrcmDbg.apk
BrcmDbg.odex
Browser.apk
Browser.odex
BtWifiTester.apk
BtWifiTester.odex
Calculator.apk
Calculator.odex
Calendar.apk
Calendar.odex
CalendarProvider.apk
CalendarProvider.odex
CellBroadcastReceiver.apk
CellBroadcastReceiver.odex
CertInstaller.apk
CertInstaller.odex
ChromeBookmarksSyncAdapter.apk
Contacts.apk
Contacts.odex
ContactsProvider.apk
ContactsProvider.odex
DefaultContainerService.apk
DefaultContainerService.odex
DeskClock.apk
DeskClock.odex
DeviceInfoViewer.apk
DeviceInfoViewer.odex
DownloadProvider.apk
DownloadProvider.odex
DownloadProviderUi.apk
DownloadProviderUi.odex
DrmProvider.apk
DrmProvider.odex
Email.apk
Email.odex
Exchange2.apk
Exchange2.odex
FaceLock.apk
FileManager.apk
FusedLocation.apk
FusedLocation.odex
Galaxy4.apk
Galaxy4.odex
Gallery2.apk
Gallery2.odex
GinwaveWaveUnlock.apk
GinwaveWaveUnlock.odex
GoogleBackupTransport.apk
GoogleCalendarSyncAdapter.apk
GoogleContactsSyncAdapter.apk
GoogleFeedback.apk
GoogleLoginService.apk
GooglePartnerSetup.apk
GoogleServicesFramework.apk
GoogleTTS.apk
HTMLViewer.apk
HTMLViewer.odex
HoloSpiralWallpaper.apk
HoloSpiralWallpaper.odex
InputDevices.apk
InputDevices.odex
KeyChain.apk
KeyChain.odex
LatinIME.apk
LatinIME.odex
LatinImeDictionaryPack.apk
Launcher2.apk
Launcher2.odex
LiveWallpapers.apk
LiveWallpapers.odex
LiveWallpapersPicker.apk
LiveWallpapersPicker.odex
LocalContactAccount.apk
LocalContactAccount.odex
MagicSmokeWallpapers.apk
MagicSmokeWallpapers.odex
MediaProvider.apk
MediaProvider.odex
Mms.apk
Mms.odex
Music.apk
Music.odex
MusicFX.apk
MusicFX.odex
NetworkLocation.apk
NfcNci.apk
NfcNci.odex
NoiseField.apk
NoiseField.odex
NumberAttribution.apk
NumberAttribution.odex
OneTimeInitializer.apk
OpenWnn.apk
OpenWnn.odex
PackageInstaller.apk
PackageInstaller.odex
PhaseBeam.apk
PhaseBeam.odex
Phone.apk
Phone.odex
Phonesky.apk
PhotoTable.apk
PhotoTable.odex
ProductRegister.apk
ProductRegister.odex
Provision.apk
Provision.odex
SensorCalibration.apk
SensorCalibration.odex
ServiceMenu.apk
ServiceMenu.odex
ServiceMenuHelper.apk
ServiceMenuHelper.odex
Settings.apk
Settings.odex
SettingsProvider.apk
SettingsProvider.odex
SharedStorageBackup.apk
SharedStorageBackup.odex
SmartcardService.apk
SmartcardService.odex
SoundRecorder.apk
SoundRecorder.odex
Stk.apk
Stk.odex
Stk2.apk
Stk2.odex
SystemUI.apk
SystemUI.odex
Tag.apk
Tag.odex
TelephonyProvider.apk
TelephonyProvider.odex
UpdateInstaller.apk
UpdateInstaller.odex
UserDictionaryProvider.apk
UserDictionaryProvider.odex
VisualizationWallpapers.apk
VisualizationWallpapers.odex
VoiceSearchStub.apk
VpnDialogs.apk
VpnDialogs.odex
WAPPushManager.apk
WAPPushManager.odex
WifiDirectBeam.apk
a9b.CoviaPadOTA_CP-B450.apk
a9b.FleaCall.apk
a9b.FleaCallRegistration.apk
a9b.FleacallSetting.apk
shell@android:/system/app $

「BcmDiagService.apk」・・・どんなものが拾えるのだろうか?
とりあえず、普通の操作では、起動できない模様です。

Covia FleaPhone CP-F03aをadb接続

Covia CP-F03aに対して、adb接続設定を行った。

CP-F03aに限らず最近のAndroidでは設定画面の「開発者向けオプション」が隠されてしまっているので、adb接続するには、ちょっと面倒です。

まずはUSBデバッグの有効化
1) CP-F03aの設定画面の「端末情報」を開く
2) 「ビルド番号」というあたりを何回かしつこくクリックする
f03a-001a
3) 「これでデベロッパーになりました」と表示される
4) メニューを1つ戻ると「開発者向けオプション」が追加されている
5) 「USBデバッグ」にチェックを入れる

次にドライバの適用
1) Android SDKなどからADBドライバを用意する
2) USBデバッグを有効にしてパソコンにつなげる
3) 「VID_0A5C&PID_E688&MI_01」として認識されるデバイスにADBドライバを手動で適用する
具体的には↓のような感じ
4) 以下の「! CP-F03a」となっているデバイスを選択
devicemanager
5) ドライバの更新で、「Android ADB Interface」を指定
devicemanager2
6) 警告が出るけど強行
devicemanager3
7) ドライバの発行者が確認されるので、問題がなければ続行
devicemanager4
8) ドライバインストール完了
devicemanager5
9) 以下のように認識されます
devicemanager6

最後に、ADBで認識させるための設定
1) adbを実行するユーザのホームディレクトリにある.androidというディレクトリ(C:\Users\ユーザ名\.android)内に「adb_usb.ini」というファイルを作成し、「0x0A5C」と書く
なお、adb_usb.iniは標準状態では存在しない。
ちなみに、うちでは以下の4行が記載されている

0x4BB0 
0x1949
0x1782
0x0A5C

2) ADBを再起動するために「adb kill-server」を実行する
3) 使える様になる