2015年04月27日

MediaTekタブレット

MediaTek のスマホが随分と気に入ったので、タブレットを買ってみることにした。いろいろじった挙句に、飽きたらカーナビにするのが目的。最低限度カーナビにしたときに困らなければ良い。
条件としては、
1) MediaTek の Android 4.4.2 であること (+ROM が入手できること)
おそらく、4.4.2 であれば、BT子機になるだろう。ROM があれば、mtkbt が /dev/tun にアクセスするかどうかで分かるはずだ。カーナビでは bluetooth で接続したいのだ。消費電力を抑えたいのも理由の一つだが、親機側の操作も簡単にしたい。
また root が取れるのは確実だ。専用機にする場合には、要root である tasker を使って起動を自動化したい。
あとは、pigu のファイルを使ってカスタム化してみたり、弄ってみたいのもある。

2) 充電が常に追い付くこと。
カーナビでは、長時間使う場合があるから、バッテリが減っていくような機種は使えない。実際のところは、良くは分からないのだが、スマホ用が元になっている MediaTek だと消費電力が小さいだろうという期待がある。また、カーネルのコードを見た限り iPad 用 2.1A の USBポートに対応しているはずだ。多分大丈夫だろう。

3) IPS 液晶であること (+ 輝度の自動調整をサポートしていること)
IPS 液晶でないと日中は良く見えないだろう。それが原因で注意が散漫になったりしては危険だ。ここは譲れないのだが、 輝度の自動調整が必要なのかは実際のところよく分からない。

4) GPSの感度が良好なこと (+ できれば電子コンパス)
これも実機でないと良くわからない。機種によってばらつきがありそうで、ここはギャンブル。電子コンパスは走行してしまえば必要ないのだが、走り出しのとき逆を指したりするのを防ぐのにあったほうが嬉しい。ただ、安タブではほぼ絶望的。

5) 専用のハードケースもしくは、TPU ケースがあること。
自分の車は 2DIN のところは、ふたがしてある。ここに TPU ケースなどを張り付けると脱着が可能になる。見栄えも良い。ただ、専用機化するときに、バッテリを例の3セルニッ水に変えて置きっぱなしにしたい。そうであれば、脱着しないから直接貼り付けても良いかという気も。

6) メモリ 1GB
今時のタブレットは、256MB というのは存在しない。普通は 1GB なんだが、専用機なら 512MB でも良いんじゃないかとは思う。

こういうことを考えて探してみると、ベストマッチするのは、『Colorfly E708 3G Pro』あたり。価格も1万円と安いのである。なのだが、実際にぽちったのは、『原道 T3 N70 3G』なのであった。これは 512M だが、もう一段安く 8000円前後。安い方が無茶をする心理的障害が小さい。だが、決め手になったのは、4.4 の ROM をダウンロードできてしまったこと。もうこれでいいや -- いくつもダウンロードするのは嫌なのであった。


Vido T3-A4.4.2-20140929-EZ

ro.product.model=Vido T3_EZ
ro.product.brand=Vido
ro.product.name=Vido T3_EZ
ro.product.device=Vido T3_EZ
ro.product.board=m706_yd_n70_wsvga_dsi
ro.build.id=KOT49H
ro.build.display.id=ALPS.KK1.MP1.V2.11
ro.custom.build.version=M706-V30YDM4GN4GCN-WG03.WSVGA.MIPI.YLD.2M.N703G_EZ

多分間違いないだろう。mtkbt もチェック済みで、多分 BT子機にできる。

ここで ... 本当のことを言うとカーナビ用タブレットは、既に持っている。Nexus7 (Wifi 2013) で、だいたい条件を満たす。TPU ケースも貼り付けてあって、まぁちゃんと使えているのだ。BT 接続も pigu を親機にできている。ただ、面倒なのだ。脱着も root 化も。これを専用機化するのは気が引けるので、新しく買おうというのが主旨なのであった。だから、たぶん常設化するために色々やってみるつもり。ただし、慌てない。弄り回すのに飽きてから。

ところで、弄り回す件だが、こいつは大胆なことをやってみたい。framework 入れ替えたりなんでも出来るのに、polasma や pigu は抵抗があった。SIM を入れて運用してるし、せっかくの技適が台無しになるのが嫌なのである。これは技適は取ってない。3G どころか Wifi も憚られる。bluetooth なら ( 特に屋内ならば ) まぁ良いんじゃないかという気がしている。(そして車中は勿論屋内)

現物入手



現物は、まさに写真の通りのものだった。ホワイトのフロントパネルに黄色のバックパネル。フロントはビニールという質感で実に安っぽい、その上このシートが下に少しずれていて、下辺回りが少し浮いている。でもそんなに悪くない。わざと、おもちゃっぽく作ったという印象もある。
まずは、立ち上げていろいろ確認。

バッテリーは、30% であった。どれぐらいで充電できるのだろうか? INPUT 5V 1.5A とは書いてあるが...
それはともかく端末情報

モデル番号: N70 3G_EZ
Android バージョン:4.4.2
ベースバンドバージョン:(略) 2014/06/12

ROM はビンゴのようだ。商品ページは 4.2.2 とあったが、2014/11/18 版の 4.4.2 が入っていた。次に、BT機能を確認してみる。

BTティザリング -- OK
BT子機 -- OK

とりあえず安心した。あと気が付いたこと:

App Permissions が入っている -- Pigu と同じ
バイブレータは付いているが、すごく弱い
たしかに IPS 液晶ではあるが、フロントの(保護?)シートのせいで、横からの視認性は悪い。
バックライトのオプションには、Economical backlight があった。

Automatic brightness (明るさを自動調整) または Economical backlight (経済的なバックライト) をチェックすると、状況に応じた明るさに自動調整されます。

ということらしいのだが、望む機能なのだろうか?
Antutu

14715 だった。商品ページには 13000 と書いてあったが、それ以上の値なので驚いた。

充電時間
適当なのだが、30% - 75% になるのに 1.5 時間。
リブート時間
リーブートは、36 秒。シャットダウンはそのうち 5秒ぐらい。悪くはないが、今どきの水準だと、遅い方かも。
GPS をちょっと
なんかダメだぁ。androiTS で見ると、Pigu や Polasma は、屋内でも 8/9 とか。こいつは、屋外でも7/7。屋内だと 0/5 とかで一瞬 4/4 。
... と思ったのだが、蓋になにかアンテナらしきものが付いている。そして、このアンテナと接触するような端子が本体側にある。これをごにょごにょするとあるいは ... 。


ただ、何のアンテナなのか? ... どうも違うような。

拾ってきたMediatek系の回路図によると GPS は、50Ωで 2端子でないとならない。

ただ、同じ回路図では、こういう記載もある。いずれにしても 2端子。そして、蓋のアンテナは 2接点あるが、ショートしているように見える。

SPFT と MtkDroidTools


SPFT と MtkDroidTools を使っていつもの。ROM0 のバックアップは OK。次に MtkDroidTools で ROM0 を処理。MtkDroidTools は、MT8312 はフェイクで MT6582 だと言ってくる。何だろう?とは思ったが、ちゃんと処理できて CWM も作成できた。これで作った autoCWM も動作を確認。

これで安心していじることが出来る。

殻割り




アンテナは、内部にあった。これが Wifi/BT/GPS 用なのだろうか?ならば蓋のやつは 3G か。
で、このアンテナが感度悪いのだろう。手持ちのジャンクアンテナをケースの外につけたりすると良くなるかも知れない。それとも、GPS に周波数が合うアンテナを買って付け替えるか。

親機のGPSを使う


... と思ったのだが、Pigu の GPS を bluetooth を通して T3(N70 3G) で使えないものか? ... 探してみるとあったのである。
『Bluetooth接続によるGPS連動』
ここの説明によると、送信側アプリ『GPS 2 Bluetooth』 と受信側アプリ『Bluetooth GPS』があれば良いとのこと。これが可能ならば、スマートに使える。

で、やろうとしたら、T3(N70 3G) では、『Bluetooth GPS』がインストールできない。apk を持ってきてもダメ。pigu は OK なのだ。何が違うのだ? -- pigu ばっかり。いっそのことカーネル以外 pigu のファイルに差し替えてやろうか。

 ・http://sourceforge.net/projects/bluegps4droid/

探していったら、これが見つかった。一応使えるみたいだ。しかし、良く使われている『Bluetooth GPS』を使いたいものだ。pigu との違いも気になるし。

ところで、『Smart Unlock』なんてものも、見つけた。連絡帳に行先登録してあるから、ログインして使うのだが、ロックなしで使うのも怖い - 良いものが見つかった。しかも XDA版は無料である。


GPS増幅器


いままで、いろいろやってみたが、どうも思ったようには行ってない。ソフトでの解決は、試行錯誤が多く時間がかかる。そのうち面倒になってくるのだ。感度が悪いだけなので、、再放射アンテナ(RA-46) とかGPSアンテナ中継器(コリドー)という名称の装置を取り付けるのも良いのではないだろうか?

GPS の室内再放射アンテナがあると便利ですね。普通のアクティブ・アンテナを外に出しておいて(当然、LNA への給電は必要)、出力にパッシブ・アンテナを着ければ出来上がり。これで、私はやっています。

さがしてみると、こんな記述を発見した。なんか簡単そう。アクティブ・アンテナ(とコネクタ)を aitendo で買って、自作してみようかと。再放射側アンテナは、近距離だし適当なやつで済ませる。

とりあえず波長λの計算。L1 は、1575.42 MHz だそうだ。計算すると 19.0 cm 。同じく aitendo で売ってる 銅基板で、1/4 λ のダイポールを作ってみよう。ケーブルは長すぎるから切って直接ハンダづけ、電源も USB ケーブル切ればいいか。

ついでだが、GPS アクティブ・アンテナの底面は磁石になっていて、アースプレートにくっつけるのがダッシュボードなどでの使い方だそうだ。70mm角でも良いが、100mm〜150mm角のほうが良いらしい。

GPS その2


色々調べたところ、GPS にはソフト的な問題もあるらしい。

 ・ How to fix poor GPS on Mediatek phones

こんなページがあって、EngineerMode に入ってごにょごにょするらしい。のだが、いきなりつまずく。"Location Based Service" が有効にならないのだ。さらに Pigu と Polasma では、なにか違う。やはり apk を持ってきてあれこれやらないとダメそうだ。

その前に、apk を移植するには、odex ファイルを apk に戻す deodex というのをやるらしい。

 ・ 
[TOOL] Kamome tool for Windows - deodex tool for 4.4 KitKat


ここにあるツールで、4.4(Kitkat) と 4.2(JB) の deodex が出来るという情報を見つけてやってみた。Pigu , Polasma, T3(N70 3G_EZ) のすべてを deodex してしまう。




さて、Polasma と T3 の GPS チップはおなじようなので、Polasma から関係しそうなものを移植してみる。(system/misc/GPS_CHIP.cfg)
system/xbin/libmnlp_mt6582
system/app/YGPS.apk
system/app/LocationEM.apk

GPS その3



aliexpress.com で、ほとんど基板レイアウトが同じタブレットを見つけた。RAM 2G/ROM 8G で 4 core の MTK8382 と書いてあるが、多分詐称が入ってる。バッテリー 3800mAH ってのも嘘っぽいし、厚さ 6mm ってのもありそうにない。



そんなことより、内部写真。右下のアンテナケーブルのところに GPS アンテナっぽい何かがある。アンテナを置ける場所は限られているし、間違いないような気がする。で、T3(N70_EZ) の場合はどうかというと、液晶コネクタのところに変な基板パターンがある。このパターンがアンテナのつもりなのか、あるべき部品が載ってないのか分からないが、テストパッドが怪しい。ちょっと調べてみたい。



USB顕微鏡で写真を撮った。6 つのパッドの上から 2 つは NC 、一番下は GND 。で 3 つは、テストパッドにつながっている。これらは、コンデンサを通して GND につながる。... コンデンサは交流を通してしまうから 高周波系ではなさそうだ。残念。デバッグ用のシリアルとか?

いや。http://cincomasapp.com/gps-chinese-mobiles-step-by-step/

ここの人の写真は、なにか似ている。コンデンサじゃないかも。3つのうち両端は GND で真ん中とつなぐみたい。

テスターで容量を測定しようとしたら、両脇はエラーになった。真ん中は測定しようとするが 0uF 。両脇はインダクタ? ならば、両脇こそがシグナルで 真ん中が GND 。回路図を見ると 両脇を接続するような気がする。


こんな写真を見つけた。これは、Colorfly G808 の内部で、配置がおなじような感じ。で、コネクタにフレキが載っている。液晶のケーブルにも見えるが、位置的に RF 関係だから GPS アンテナだと確信した。N70 3G_EZ にはあるべきものがない!


「GPS フィルムアンテナ」でググるとこんなのが沢山見つかる。3 端子で TV と GPS に対応するアンテナで、車に張るもの。ただの長い導体で、共通の端子がある。イメージから計算すると、短い方の正方形の 一辺は、31.7mm 、外周 126 mm。ショートカットは 20mm ちょっと短くなる。

とにかく、導線をつなげれば、何かアンテナになるようだ。どんなものでもないよりはマシだろう。いろいろやった人は、λ/2 ≅ 9,5 cm が良かったらしいので、それぐらいの長さで検討。
posted by すz at 23:34| Comment(0) | TrackBack(0) | android

2015年04月12日

bluetooth 子機についての調査

Polasma は、bluetooth の子機になれない。SIM がなければ、消費電力の大きい Wi-Fi で接続するしかない。Pigu をルータにするとしても、両機とも待ち受け時間が短くなってしまう。これを、なんとかしたい。

一般的には、bluetooth の子機になれるのはタブレット。スマホにはあまり例がないようだ。不思議なことに Pigu は bluetooth の子機になれる。テストには使えるのはありがたいのではあるが、ルータとして使う予定なので 子機にしたいのは、Polasma なのだ。

最初のアプローチ


子機に出来るということは、PANU プロファイルをサポートしているということ。で、Pigu は、PANU をサポートしている。同じ MTK65XX でプロトコルスタックはたぶん同じ。これがどうなっているのか調べられると、なんとかなるかも知れない。ただ、Pigu は 4.4.2 で色々変わっているかも知れない。もう少し近いものはないのかと考えたのだが、Yoga タブレットがあった。SoC は、MTK6589 で、同じ MediaTek だから、プロトコルスタックは同じだろう。これも 子機になれるらしい。幸いなことに、needrom.com に 4.2.2 の ROM があった。 ちなみに、他社の BlueTooth は、bluez を使っている場合が多いのだが、MediaTek は独自の、プロトコルスタック を使っている。で、情報が少なくどういう構造かも調べられていない。

 ・ http://www.needrom.com/download/yoga-8-b6000/

それはともかく、これである。で、ダウンロードしてみることに。

中身は、SP Flash Tool でインストールするイメージであった。system.img も含まれている。喜び勇んで Linux で mount しようとしたが出来ない。調べてみたら、ファクトリーイメージは簡単な圧縮をしている場合があるとのこと。

 ・ https://code.google.com/p/usefulshellscript/source/browse/trunk/simg2img.py

これを使ったところ、通常の ext4 のイメージに変換できた。ここまで来るのに随分と苦労したが、全部略。とにもかくにも、スタート地点に立てた。

これをどうやって調べるのであろうか? とりあえず、Polasma とファイルを比較してみよう。

diff -ru で全部を比較し、目にとまったところをピックアップ。(+ が Yoga)

/factory_init.rc:
+ # BT
chmod 0660 /dev/stpbt
chown bluetooth radio /dev/stpbt

init.charging.rc:
+ mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
+#need to check
+# mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
mkdir /data/misc/bluetooth 0770 system system

# for ppp options file
- mkdir /data/misc/ppp
- chmod 0777 /data/misc/ppp
+ mkdir /data/misc/ppp 0770 bluetooth net_bt

- # BT relayer mode used VCOM
- chown bluetooth radio /dev/ttyGS2
- chmod 0660 /dev/ttyGS2
-
# bluetooth
mkdir /data/@btmtk 0770 bluetooth net_bt
chown bluetooth bluetooth /dev/hid-keyboard

@@ -1183,13 +1155,13 @@
socket bt.int.adp dgram 660 bluetooth net_bt
socket bt.a2dp.stream dgram 660 bluetooth net_bt
user bluetooth
- group system net_bt bluetooth net_bt_admin sdcard_rw inet net_admin nvram net_raw
+ group net_bt bluetooth net_bt_admin sdcard_rw inet net_admin nvram net_raw

/system/build.prop:
ro.build.characteristics=default
+ro.build.characteristics=tablet

# begin mediatek build properties
-ro.mediatek.version.release=ALPS.JB5.MP.V1.5
-ro.mediatek.platform=MT6582
+ro.mediatek.version.release=ALPS.JB2.MP.V1.17
+ro.mediatek.platform=MT6589

/ueventd.rc:
#MTK BTIF driver
-/dev/btif 0660 shell system

すべてを比較してこれぐらいなのであった。
Yoga は、MT6589 で同じシリーズであった。net_bt_stack というグループがあるし、BT子機は、サポートしてそうな印象。

# bluetooth power up/down interface
chown bluetooth net_bt_stack /dev/ttyHS0
chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto
chmod 0600 /dev/ttyHS0
chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto

これは、多分 bluz の bluetooth だが、コメントから見るに、やっぱり子機用の group っぽい。


yoga/init.charging.rc: mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stac
yoga/init.rc: mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
yoga/ueventd.rc:/dev/uhid 0660 system net_bt_stack
yoga/ueventd.rc:/dev/uinput 0660 system net_bt_stack

pigu/init.rc: mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
pigu/init.rc: group system net_bt bluetooth net_bt_admin sdcard_rw inet net_admin nvram net_raw vpn net_bt_stack media_rw sdcard_r
pigu/ueventd.rc:/dev/uhid 0660 system net_bt_stack
pigu/ueventd.rc:/dev/uinput 0660 system net_bt_stack

polasma/ueventd.rc:/dev/uhid 0660 system net_bt_stack
polasma/ueventd.rc:/dev/uinput 0660 system net_bt_stack

pigu と yoga には、/data/misc/bluedroid がある。


どうやら bluedroid というのがキーワードらしい。ググると、以下の url が。

 ・ https://wiki.mozilla.org/B2G/Bluetooth-bluedroid

非常に重要なことが書いてある予感。なんでも、bluz と切り替えることも可能らしい。
Switch Bluetooth stack bewteen bluez/bluedroid
For version JB 4.2, if you want to use bluez on JB, you need to modify some files. See [Bug 911038][1]


で、bluedroid を動かすには以下のファイルが重要なようだ。

Gecko bluetotoh will run bluedroid now.

### replace_bluedroid_reply.sh
adb push audio.a2dp.default.so /system/lib/hw
adb push bt_stack.conf /system/etc/bluetooth
adb push bt_did.conf /system/etc/bluetooth
adb push stack.conf /system/etc/bluetooth
adb push auto_pair_devlist.conf /system/etc/bluetooth
adb push libbt-utils.so /system/lib
adb push libbt-hci.so /system/lib
adb push bluetooth.default.so /system/lib/hw
adb push bdt /system/bin
######## vendor #########
adb push libbt-vendor.so /system/vendor/lib


こういったファイルがあるのは、どうやら pigu のみ。ただし、全く同じというわけではない。

pigu/system/vendor/lib/hw/audio.a2dp.blueangel.so
pigu/system/vendor/lib/hw/bluetooth.blueangel.so
pigu/system/etc/bluetooth/bt_stack.conf
pigu/system/etc/bluetooth/bt_did.conf
pigu/system/etc/bluetooth/auto_pair_devlist.conf
pigu/system/lib/libbt-hci.so
pigu/system/lib/libbt-utils.so
pigu/system/lib/hw/bluetooth.default.so

bdt ってのは全くない。何かわからないが mtkbt だろうか?

strings pigu/system/bin/mtkbt |grep /dev
/data/@btmtk/devdb
/dev/uinput
/dev/uhid
/dev/socket/bt.int.adp
/dev/tun
/dev/ampc0
/dev/socket/bt.int.adp
/dev/socket/palhal
/dev/socket/paltimersock
/dev/socket/palinjectsock
/dev/socket/halpal

なにかそれっぽい。では、polasma や yoga にないかというとあるのである。

strings polasma/system/bin/mtkbt |grep /dev
/data/@btmtk/devdb
/dev/uinput
/dev/hid-keyboard
/dev/socket/bt.int.adp
/dev/btn
/dev/ampc0
/dev/socket/bt.int.adp
/dev/socket/palhal
/dev/socket/paltimersock
/dev/socket/palinjectsock
/dev/socket/halpal

strings yoga/system/bin/mtkbt |grep /dev
/data/@btmtk/devdb
/dev/uinput
/dev/hid-keyboard
/dev/socket/bt.int.adp
/dev/btn
/dev/ampc0
/dev/socket/bt.int.adp
/dev/socket/palhal
/dev/socket/paltimersock
/dev/socket/palinjectsock
/dev/socket/halpal

ただ、/dev/tun がない。/dev/uhid も。代わりに /dev/hid-keyboard , /dev/btn がある。入れ替えて動くかどうかは、非常に怪しい。また、yoga には、/dev/tun がない。やはりこれなのか?

ちなみに、ソースコードは、
 ・ mediatek/protect/external/bluetooth/blueangel/btcore/
こういうパスになっている。もし手に入るのであれば、ビルドするというのも手かも知れない。

だんだん分かってきた。blueangel とは、MediaTek 独自のプロトコルスタックでクローズソース。ファイル構造の類似性から bluedroid をベースにしているのだろう。

 ・ https://github.com/mozilla-b2g/platform_external_bluetooth_bluedroid

さて、Yoga の 4.2.2 は多分 BT子機にはなれないのではないか?
で、なんでも良いから 4.2.2 の MediaTek タブレットと思って探してみたら、Ainol があった。
ちょっと新しそうな Novo7 AX3 のファームウェアをダウンロードしてみることに。

... ダメだった。全部同じで /dev/tun を使っていない。おそらく 4.2.2 は全部ダメなのかも。 Yoga は、4.4.2 の update が出ているし、4.4.2 なら BT子機 になれるのだろう。

こうなると、Pigu の mtkbt を動かせないか? 先の B2G/Bluetooth-bluedroid ではいくつかのファイルをインストールするだけで使えるようだし、意外と依存性はないかも知れない。今のところ uhid がないだけみたいだし。uhid のカーネルモジュールを作れれば終わる話かも。

で、uhid を見てみたが、HID さえ Config されていれば良いらしい。カーネルビルド環境ないのだが、どうしよう。

gcc があるんだから、セルフで build すれば良いじゃないか ... なんてのは相当に甘かった。
いきなり grep -P なんてのでエラーになって、念のために いろいろ grep したら perl5 や python を使っている。これは無理。
posted by すz at 04:34| Comment(0) | TrackBack(0) | android