2015年05月30日

格安BTキーボードを買ってみた

android 用の bluetooth キーボードが気になって調べてたら、aliexpress で、送料込み $7.77 のキーボードを見つけた。随分怪しげなんだが、ものは試しと買ってみることに。


例によって2つ買ったのである。下のやつは違うショップで、カラー版。安い方は 白 or 黒のみ。

最初にかいておこう。$7.7 の方は、AB1112 採用の 新しいタイプ (BT3.0 対応)。F1 に虫眼鏡がマークされている。カラーの方は、RDA5871 採用の 古いタイプ(BT2.1 対応)。虫眼鏡は F2 。裏のアルミがペラい。いずれにしても、剛性が足りない。木板を張り付けて補強することを薦める。




こんなやつ。どうも中華には、このキー配列のものが多い。このタイプが安いが、それ以外に、同じキートップでケースになるやつだとか、いろいろある。


キートップの刻印は3通りあるようだ。Android/Windows 用と iOS用、そして古いタイプ。機能は同じようだが使ってみないことには分からない。カラー版は古いタイプで、中のチップまで違う。

Fn+Q(Android), Fn+W(Windows), Fn+E(iOS) でキーマッピングが変えられる。はやりのマルチデバイス対応ではないと思う。たぶん、一番上の Fn + の機能が変わるだけで、Windows だと ファンクションキーになるのだろう。iOS用キートップは、切り替え機能の刻印がない。固定かも知れない。

このキー配列が好みに合ってそうな気がしてきて欲しくなった。自分に合えば長らく使うことになりそう。

赤札天国でも、売っているこういうタイプのも。



後で色々調べてみたが、$7.77 だと 1000円弱だが、そう格安というわけでもないようだ。2000円までのものが国内でも結構ある。気になったのは、ポケモンキーボードで、かなり使いやすいらしい。ただ、少し大きいような気もする。また、やたら小さいスマホ用は使いにくいというレビューが多いみたいだ。

同日に申し込んだが、上のやつが先に到着した。10日に注文して 23日に到着だから、まぁ早いほう。

2015-05-20 00:00 Japan Arrive at Japan Airport-(Yanwen's Track End)
Original Country-Yanwen[SZAA008252670] To China Post Air Mail[YC66766xxxxYW]
2015-05-16 00:00 BeiJing Handled by Airline
2015-05-15 00:00 Beijing Internationg Mail Center Prepare to Dispatch
2015-05-14 00:00 BeiJing Arrived at Beijing Internationg Mail Center
2015-05-14 00:00 Beijing Internationg Mail Center Received
2015-05-12 20:00 ShenZhen Despatched from Yanwen ShenZhen Sorting Center
2015-05-12 18:00 ShenZhen Arrived at Yanwen ShenZhen Sorting Center

中国郵政 Small Packet By AIR で、記録上はこうなってる。

充電しつつ 接続しないで、キーを押したりして どんな感じか確かめ。キータッチはそんな悪くない。ただ、非常に軽いんだが、剛性が全然ない。好みではないので、補強とかしてみたいような ... 。

次に接続を試みた。... これが全然つながらない。ちゃんと "Bluetooth 3.0 Keyborad" と名前が出るのだが、PIN コードが正しくないとかなんとか。Android の方をいろいろ変えてもダメだった。

Windows でも試した。最初はランダムな数字を 接続するキーボードで入力せよと出ていたが、後で 入力BOX が出るようになった。何を入力すればよいか分からなかったのだが、ここで入力した数字を接続するキーボードでも入力すれば良いらしい。0 でも良いらしいので試したら、遂に接続できた。

接続してようやく分かった。入力できないキーがやたらにあるのである。数字は、0 と 9 のみ。あとはダメ。アルファベットは、"pgklvbnm" のみ。スペースもダメで、カーソルキーは OK 。

要するに不良品である。早く着いたので、喜んで Confirm 押しちゃったし、最初からワケアリだと思ったし。ここは一回クリーニングしてみようと思う。

さあ、分解。


中にキーボードのモジュールが入っているのではなく、ケースがキーボードの一部。裏側も金属板が入ってないから、底面のアルミ板も剛性確保に必要なパーツとなっているようだ。フィルムケーブルの厚み分を逃がす仕組みはないから、キーによって、打ち味が違うかも知れない。

基板は、ネジで止まっているが、ネジをわざわざ潰してある。あと、見慣れた QC pass のシールはない。裏板がアルミだが、基板との絶縁はされていない。底板を曲げて接触させないよう注意だ。



ラジオペンチで外して、記念撮影。メインのチップが、BT のアンテナと、キーボードにつながってる。キーボードのケーブルはちゃんとコネクタで接続されている。基板の設計は新しい。20141208 と記載されている。

さて、なにが出来るのだろう。ケーブルの抜き差しは、全く効果がなかった。基板から見えているテストパッドのような所を適当にショートさせると 入力できなかった文字が入力された。接触不良がどこかにある。

aliexpress では、Confirm した後もメッセージが書ける。ダメもとで 不良品だったと書いたら返事がきた。進展があるかも知れないので、破壊するような所業はおあづけ。

交換はするつもりはないので、(元には戻せないのを覚悟して)キーボードを止めてるプラスチックを外そうと思っている。マトリックスを記録するのだ。清掃なりして再度トライ。やはりダメとなったら、電子工作で変てこなキーボードを作るかも。その場合、底のアルミ板を(今だ来ていない)もう一つのキーボードの補強に使うつもり。
さらに、カラー版のキートップが iOS用だったら 交換するかも。機能まで iOS専用だったら 基板も交換という手があるか。意外とこのジャンクは役立つかもしれない。

すぐに返事が来た。新しいやつを 送ってくれることになった。ダメなやつは、好きにして良い!



止まっているところを全部切り取って外し、キートップも外したところ。
予想に反して、キーボードはモジュールだった。配線パターンがなにか変、黒いところが所々ある。断線してたりするのかも。

水を少しこぼして放置すれば、パターンが腐食することもあるそうだ。その人は、NICKEL CONDUCTIVE PEN で補修したそうだが ... パターンが複雑だったりしたら絶望的。



ぶっ壊して、マトリックスを記録。上の写真は、裏から撮ったものを左右反転している。右に伸びた線が下の写真の右につながっている。結構複雑な取り回しで、整理するのは大変。



キートップ裏。パンタグラフなのだが、構造が良くわからない。キートップの交換に使えると思ったが、付けたり外したりの練習して経験を積まないと壊してしまうかも知れない。

2つの部品がキートップ裏にきれいに収まっている。一回外れると、この状態にするのにも難儀する。精密な部品だから壊してしまいそう。


これは、iBuffalo のポメラキーボードで宣伝されている、パンタグラフの構造図。まさに、これと同じなんだが、支点がどこにあるかとか、良くわからないのだ。

おまけ




これは基板に載っているチップ。左がメインチップで、Bluetooth のアンテナパターンとキーボードが接続されている。



これを見ると、AB1112 は、キーボード専用のチップ。外付けの EEPROM が付けられる。おそらく右の写真のもの。これに入っているものは、単なるキーマップなのか?それとも ファームウェアなのか? 型番 24C64 から見て 64kbit (8KB) 。たぶん秋月とかで売っている 24LC64の系統なのではないかと。もしそうならば、外して読みだすなんてことも可能。電子工作的には、楽しめそうな素材。

専用チップなので、たぶん上記の性能がちゃんと出る。消費電力的にも優秀な印象。

ちょっと見たが、同じ 8pin で VCC にはコンデンサ、SCL,SDA のところにプルアップ抵抗らしきものが付いている。I2C ROM なのは間違いなさそうだ。

もし、キーマップを自由に設定できれば、さらに楽しめる。気に入ったキーボードを bluetooh 化できるかも知れない。ちなみに、コネクタは 1mm ピッチ 26pin 。信号線は 24 本で、2pin は接続されていない。往年の HPC マシンのキーボードだけ流用するとか..面白そう。

少し近い AB1120 のデータシートは、入手できた。詳細は分からないが、I2C ROM にはまず、config 情報が入る。その config の設定にプログラムを指定するものがあるらしい。汎用OS のドライバのような構造っぽい。

あと、このチップは SPP にも対応してるし、UART も積んでいる。設定方法が分かれば、全く別の使い方ができる。全然情報ないから絶望的だが。

I2C ROM だが、外さなくても読めると思う。多分電源投入時に読み込んでしまうはずだ。その後は空いているから、コマンドを送れるだろう。また、ロジアナなんかがあれば、読みだす場所と順番が分かるかも知れない。そうであれば、解析の情報になる。

キーマップ解析




写真を見て、キーマップを解析しておこう。

まず、信号名を決める。右側の線を上から A,BC,DEF,GHIJ としよう。よく見ると A と F は接続されているだけ。A=F なので注意。右下のケーブルは、数が多い。左の9本を 1-9 、右側は、上記の A-J を除いて abc .. と付けていく。信号線は、上側が BCDEGHIJ と 8本ある。下側は、1-9, a-f,F で 16 本。

ピンとのマップ (+正式信号名)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
1 2 3 4 5 6 7 8 9 a b c d e B C D E F G H I J f
C00 C02 C04 C06 C12 C10 C09 R0 R2 C15 R6 R7
C01 C03 C05 C13 C11 C14 C07 R1 R3 R4 R5 C16
キーマップ
ESC 1 2 3 4 5 6 7 8 9 0 - =
B5 C5 C6 C7 C8 B8 B9 C9 Ca Cb Cc Bc Ba

TAB Q W E R T Y U I O P DEL
E5 D5 D6 D7 D8 E8 E9 Db Da D9 Dc Ee

CAPS A S D F G H J K L ; ENTER
E6 G5 G6 G7 G8 I8 I9 G9 Ga Gb Hc Gc

LSFT Z X C V B N M , . RSFT
E3 H5 H6 H7 J8 J9 H9 Ha Hb Jc He

FN CTRL ALT WIN SPACE / \ UP
G1 B4 E2 I1 IF Ec Ea Id

LEFT DOWN RIGHT
Jd JF Jf

C00 C01 C02 C03 C04 C05 C06 C13 C12 C11 C10 C14 C09 C07 C15 C16
1 2 3 4 5 6 7 8 9 a b c d e F f
R0 B CTRL ESC 5 6 = -
R1 C 1 2 3 4 7 8 9 0
R2 D Q W E R O I U P
R3 E ALT LSFT CAPS T Y \ / DEL
R4 G FN A S D F J K L ENTER
R6 H Z X C N M , ; RSFT
R5 I WIN G H UP SPACE
R7 J V B . LEFT DOWN RIGHT
1 2 3 4 5 6 7 8 9 a b c d e F f
C00 C01 C02 C03 C04 C05 C06 C13 C12 C11 C10 C14 C09 C07 C15 C16
(目視でのみ作成:未チェック)

まとめ


格安ではあるが、不良品をつかまされた。分解したところキーボードのフィルムに断線もしくはショートがある模様。再送してくれることになったが、同じロットならこの部分の品質が悪そうだ。良品でもすぐにダメになるかも知れない。

ジャンクとして見れば、基板は使えそうだし興味深い。300円なら良かったんだが。

ただ、まとめるにはまだ早い。2つ目も到着してないし、再送品も受け取ってない。到着しだい追記予定。

2つめ



Number: FTL0045xxxxMY
Status: Transit
Destination: Japan
Origin: China
2015-05-28 16:52 MPC PMIH (KLIA), Item Arrived at Japan
2015-05-26 18:58 MPC PMIH (KLIA), Item Sent to JAPAN
2015-05-26 16:45 MPC PMIH (KLIA), Item Posted Over The Counter to Japan
2015-05-25 16:31 MPC PMIH (KLIA), Dispatch PreAlert to Japan
2015-05-20 06:08 FLYTEXPRESS-CN, Processed Through Sort Facility
2015-05-20 06:08 FLYTEXPRESS-CN, Processed Through Sort Facility
2015-05-19 15:16 FLYTEXPRESS-CN, Acceptance
2015-05-11 16:39 Customer, Shipping information recieved
======================================
Powered by www.17track.net

適当なトラッキング番号しか載ってなかったんで、メッセージを送ったら、土曜にも関わらず返事が来た。FLYT というところ。昨日日本に到着したようだ。速攻で手続きはしたようだが、送付まで時間がかかっている。

6/3 到着。普通は3週間みとかないとダメそうだ。



写真と違って、キーは黒。キートップは 上の2種類とも違う。
とりあえずは、Windows でペアリング。"bluetooth keyboad" と表示される。3.0 がないから、最初のものとは中身が違う。ちょっと古いバージョンかも知れない。

そして、重要なことは刻印どおりでないキーがいくつかある。詳細にしらべないと。

... これは、Windows の罠であった。多分英語キーボードの設定かなにかしないとダメなんだろう。Android で接続してみたところ、刻印どおり。
どう刻印どおりかというと ... Winモードでは Fn+数字は、ESC, F1 - F12。
Android モードでは刻印と同じ。KeyTest.apkで確認したところ。
ESC ホーム
F1 ESC
F2 SEARCH (84 217)
F3 ctrl A
F4 ctrl C
F5 ctrl V
F6 ctrl X
F7 MEDIA_PREVIOUS (88 165)
F8 MEDIA_PLAY_PAUSE (85 164)
F9 MEDIA_NEXT (87 163)
F10 VOLUME_DOWN (25 114)
F11 VOLUME_UP (26 115)
F12 電源OFF
(keycode scancode)

こういう結果であった。iOS モードは、Androidモードと少し違うだけのようだ。F3 で電卓が起動し、F4 で連絡帳が起動した。

その後、電源が入らなくなった。充電ランプは付くが動作しない。前のやつで経験したがバッテリーのケーブルが外れると同じ症状になる。本当に品質が悪い。

中身を空けたところ、バッテリーの電源はちゃんと来ている。壊れた?

バッテリーの電圧は、4.1v あって問題ないのだが、電源をON すると 0v になる。一度動いた基板が突然壊れるなど信じがたいが、4.1v あるバッテリーが弱っているとも思えない。どうしたものか。

しょうがないので、ダメだったキーボードとのニコイチ作戦に出た。基板そのものは、大分違うのだが、互換性がある。あと、バックパネルがペラペラなので、これも入れ替え。ペアリングして、チェックしたが全部キー認識した。OK。
FN キーの部分が刻印と違ってしまったが、気にしない。

再送分が来る!

2015-06-03 00:00 Japan Arrive at Japan Airport-(Yanwen's Track End)
Original Country-Yanwen[SZAA008359148] To China Post Air Mail[YC69146xxxxYW]
2015-05-30 00:00 BeiJing Handled by Airline
2015-05-29 00:00 Beijing Internationg Mail Center Prepare to Dispatch
2015-05-28 00:00 BeiJing Arrived at Beijing Internationg Mail Center
2015-05-28 00:00 Beijing Internationg Mail Center Received
2015-05-26 20:00 ShenZhen Despatched from Yanwen ShenZhen Sorting Center
2015-05-26 18:00 ShenZhen Arrived at Yanwen ShenZhen Sorting Center

これ、Arrive at Japan になって初めて出た。安心は出来るが意味ない。


キーボード台




黄色のキーボードを買った理由は、これ。
クラムシェルもどきのキーボード台を作ってみたかったのである。



まだ、試行錯誤中ではあるが、こうなってる。プラスチックのものは、ダイソーのスマホスタンド。これを曲げてこんな形にした。で、レールのようなアルミのアングルを付けて、3mm 厚のアルミ板に取り付けた。一応、キーボードを乗せれば後ろに倒れないようだ。

タブレットの取り付けは、ダイソーのマジックテープ。十分強力でテープの方がはがれそうになる。レールのようなものは、コの字型で、8mm x 5.5mm 。 3mm 厚のアルミ板に溝を切って差し込んでみた。

このアルミパーツをキーボードに貼り付けようかと思っている。そのためには、段差をなくす必要がある。また、これではキーボードの補強にはなってない。もう少し検討しないと。

ちなみに、このスマホスタンドは、かたさにばらつきがある。バネだかなんだかが弱いものがある。



結局補強は、木でやることにした。簡単に曲がらなきゃなんでも良いのである。とりあえず、ホムセンに行ったら、ファカルタ集成材というのがあった。120mm幅、5mm 厚のを購入。すごく柔らかいが、補強という点では、これでも十分だろう。アルミパーツの段差問題は、木に埋める方針。アルミパーツなしなら塗装などしないのだが、はがれて来そうなぐらい柔らかい。で、ウレタンニスとかいうのを塗ることに。結局高くついたのだが、趣味の品だから良いのだ。

他に、3mm厚 アガチス材 も買ってみた。これは、えんぴつなどに使われているそうだ。加工してみたが、すこし無理をすると割れそうな材質。まぁ、えんぴつと同じ。アルミパーツを付けるのは、1つだけなので、別のやつに使ってみる。

正確に加工されていて、曲がってないやつは、この2つだけだった。あ、MDF もあったか。 MDF では補強にならないと思って外した。

ちょっと重さを測定。本体 130g に対して 5mm厚 ファカルタ集成材が 37g。アルミパーツも 38g で プラスチックの スマホ台も 38g 。全部で 243g。 3mm厚 アガチス材 は 31g 。

その後:スマホ台のヒンジがゆるゆるになって、すぐ後ろに倒れるようになってしまった。交換可能なようにはしたが、思いのほか早かった。

スマホ台を破壊して中をみたところ、バネが入っていて、溝と出っ張りを押さえつけている。で、溝が摩耗してゆるゆるに。元には戻せないが、修理することは可能かも知れないのでやってみる。

黄色キーボード基板



電源が入らなくなったので、入れ替えた 黄色キーボードの基板。基板自体は、しっかりしている。I2C ROM (L24C64) の信号線がコネクタとして出ている。キーのマトリックスも信号名が載っている。さらに、TXD/RXD のテストパッドまで。
なかなか面白そうではあるが、チップは RDA5871 であった。にも関わらず、基板には AB1107 とかなんとかのシルクがある。

信号名を記録。C00 とか R0 とかになっている。

ところで、 RDA5871 だが、ググると色々と出てくる。こっちの方が改造とかしやすいかも知れない。このチップは、bluetooth 2.1 対応と少し古い。16KB までの I2C ROM に対応していて、そこに入れたコードで、機能をカスタマイズするタイプ。AB1112 と同じ仕組み。

改造するツールなども見つかった。
 ・https://code.google.com/p/rda5871-sdk/
これなど興味深い。HID にしか対応していないはずだが、SPP のファームウェアがある。リンク先には、ソースコードまである。


エレコム TK-FBI033BK


送料込み、1200円と安価なので、iPhone 4s 用のキーボードを買ってみた。pigu で使ってみたいのと、中身に興味がある。



スライドじゃなくて、パンタグラフのような構造。ケース部分を外すとこんな感じ。ダイキャストの金属部品が使われている。ケース部分を取って pigu を直付けしようかと思ったが、意外にもほとんど薄くならない。1mm ぐらいしか稼げないので、方針変更。ケースのホールドする部分を切り取って pigu のバックパネルを直接張り付ける。



分解したところ。基板の上に、タクトスイッチの接点が幅広のテープのようなもので、張り付けてある。上は micro USB の コネクタ。ちなみに、白い部分は何かちゃんと見てない。位置決め用のマスクのようにも見えるが、基板のシルクかも。

タクトスイッチの接点と言ってもわからないかも知れない。皿のような形状で押すとぺこぺこ凹む。内側にポッチがあって、そこと、皿の周囲が接点となる。これはタクトスイッチを分解しても出てくる。



基板の裏、バッテリーは 95mAH 。この基板一枚が主要部品で、見慣れたモジュールが載っている。AB1112 が載ってないかと、期待してたが違った。日付は 2011/11/17 で結構古い設計。

再度分解して、シール下の型番を確認したが、BCM20780 らしい。シリアルROM らしきチップも載っているが、型番見てもサッパリ。

一応レビュー。クリック感があるし、キーの中央は凸になってて、押しやすいかな。キー配列は慣れればなんとかなりそうな感じ。安く手に入れたとはいえ、高級感はある。ただ、常用するかどうかは分からない。


謎のセットぽちった



黄色キーボードを買ったショップを覗いたらこんなのがあった。値段は、$10.98 。

ハンドルリモコン と IRリモコン、時代遅れっぽい本体 ... という妙な組み合わせのセット。一応 MP3 プレイヤーだそうだ。

お目当ては、ハンドルリモコン。これは、bluetooth なのだそうだ。0000 でペアリングと書いてあった。これだけが欲しい。ただ、本体も bluetooth に対応しているわけで、ちょっと分解してみたい。

良くみたら、なんか違う。ハンドルリモコンは、多分 IR でしかも左ハンドル向け。本体が bluetooth でスマホと A2DP で接続できる。FM トランスミッタで、音をカーオーディオに飛ばすことが出来て、本体のマイクでハンズフリー会話も出来る。そういうものっぽい。予定が外れたが、まぁ面白そうだ。

"Headset Button ControllerTrial"とかいうアプリはあった。が、ハンドルリモコンのキーをフルカスタマイズできるようなものなのだろうか?やりたいことは、多分 Tasker に渡せるイベントを発生させること。で、Tasker で、アプリを起動したりしたい。

電子工作的には、例の余った基板を使い、IR リモコンの信号を受けたら、アナログスイッチで キーマトリックスの該当ボタンを押す .. みたいなものを作れば純粋な HIDキーボードになりそうだ。


3週間みておかないといけないから、忘れたころにレビュー予定。

ちょっとメモ



CScanCodeを確認する
 Key Testというアプリで、変更したいキーのScanCodeを確認してメモっておくScanCode: 数字の部分)
 ただし、fnキーとの同時押しがShiftとの同時押しと同じかどうかで扱いが違うので省略

DベンダーID、プロダクトIDを確認する
 要するにデバイスを区別するためのIDを確認する
 自分で確認しても良いけどBoxwave5sはVendor ID:05ac Product ID:023c
 別のデバイスとかならググってくれ

Eキーレイアウトを変更する
 E-1 .klファイルを作る
  一から作ることも可能だけどめんどいので、デフォルトのをコピーする
  多分どの機種も同じだろうけどZ1fだったら/system/usr/keylayoutにアクセスしてGeneric.klをコピーする
  ファイル名を"Vendor_○○_Product_△△.kl"に変更する
  ○○のとこはVendor IDで、△△のとこはProduct IDね
  Boxwave5sなら"Vendor_05ac_Product_023c.kl"
  OSは4.2でやったけど、この辺4.4だと処理違うかも
 E-2 .klを弄る
  ファイルの内容が"key ScanCode(数値) KeyCode(キーの名前、AとかMENUとか)"
  になってるから、Cで確認したキーScanCodeのところのKeyCodeを変更したいキーに変える
  ただし、fn同時押しが元々割り当てられてないところに新たに割り当てるとかは出来ない
  注意が必要なのはfn同時押しの操作がShift同時押しと同じもので、こっちを変更したい場合後で.kcmを弄る(今は省略)
  あと、アクサングラーブ"`"はアプリによっては全角半角に割あて出来る
 E-3 .klを設置する
  /system/usr/keylayoutにE-2で作ったファイルをコピーする

これでキーを無駄なく利用できる
自分が設定して便利だったのは
ZENKAKU_HANKAKU(日本語切り替え)
MUHENKAN(無変換、日本語入力アプリによるかも知れなけど英数カナ変換として使える
PAGE_UP,PAGE_DOWN とかかな

ここまでやれば、ハンドルリモコンの全キーをカスタマイズできるはず。

これなんだが、Mediatek の場合、言語と入力の設定で、"MTK BT HID" としか認識されない。複数のキーボードは接続できるのだが、システムには疑似キーボード1台と認識される。上の方法も使えそうだが、切り替えが相当に面倒。

 ・https://github.com/y10g/android_user-keymap_jp109keyboard
言語と入力の設定には、キーボード・レイアウトを設定する機能がある。(4.1 以上らしいが)。このレイアウトを追加するアプリのソースコードを提供してくれた人がいる。これを変更して独自のレイアウトを作るとかしても、好きな設定が出来るようだ。自動というわけには行かないが、こうすれば切り替えは出来る。

追記1 (2015/7/1)




現在のキーボード台(作成中) −2号機と3号機。
スマホ台がどうも弱いということで、ダイソーの竹製まな板とスマホ台2個を使って2号機を作った。まな板にスリットを切って、スマホ台を差し込んである。
だが、スマホ台がだんだん弱くなることが分かったので、全部木で作ったのが3号機。かたさを調節するためにEVAを差し込んでみようと思っている。
どちらも、ニスを塗ったのだが、まだベトつき感が残っているので使えない状態。

それはともかく、どちらも重いタブレットだと後ろに倒れるおそれがある。ウェイトを付ける必要があるかも知れない。
posted by すz at 10:43| Comment(0) | TrackBack(0) | android

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

2015年03月28日

Polasma 代替バッテリー

赤 Polasma は、常時 sshd を動かしてサーバー的に使ってるわけだが、心配になるのがバッテリーの劣化。で、どうしようかと悩んでたりする。

ひとつの案として、電気二重層コンデンサを使って代替とするのはどうだろう? 充電が追い付かないような機種では不可能だが、Polasma は大丈夫そう。これが使えるとバッテリー加熱による破裂なども心配しなくて良さそうだ。ただし不格好だ。当然ながらケースには収まらない。ふたも閉められない。


 ・電気二重層コンデンサー10F2.5V 270円 (Φ10mm x 30mm)
 ・電気二重層コンデンサー10F2.7V 200円 (Φ13mm x 34mm)
 ・電気二重層コンデンサー5F5.4V 600円(10.5mm x 22mm x 33mm)
 ・電気二重層コンデンサー120F2.3V 1000円(Φ18mm x 40mm)

秋月電子には、こういったものが豊富にある。600円のやつがスマートに使うには良いような気がするが、200円 x2 でも良さそう。

ついでだが、バッテリーは大体3端子だったりする。+/− 以外の3つ目は何かというと、温度測定用のサーミスタだそうだ。温度によって抵抗値が変化する。今回は、固定の抵抗で良いわけだが、あまりデタラメな温度を検出されても困る。ちょっと調べておこう。
 ・マイナスとの間に 10.08 kΩ 、温度は Android で 25℃。
なくても大丈夫なのかも知れないが、一応。あと pigu は、12.5 kΩ

さて、10F 直列でどれぐらいの時間使えるものなのか計算しておこう。

容量は 5F 。使用する電圧範囲は 4.2V から 3.4V までとしよう。

1/2 x 5 x (4.2)^2 - 1/2 x 5 x (3.4)^2 = 15.2(J:ジュール)
15.2/3.6 = 4.22 mW・H = 4.22 mA・V・H
3.7V 定格だと、1.14 mAH 相当

正規バッテリーの 1/1000 のオーダー。もう一ケタ欲しいが ...実際どうなのか?
動作時に 500mA(1.85W) 流れているとすれば、3600*1.14/500 = 8.2秒。平滑するだけの目的なら結構いけるかも。

数字の根拠について、ちょっと。3.4V ってのは、Power_Off_Voltage/Power_Off_Voltage の値。また 500mA というのは、FG_Battery_CurrentConsumption を見てて決めた。(300mA 台のこともあるが、実質何もしてない時 )

次の問題は、Android 側の管理。
まず、0V からの充電が可能かどうか。出来ないとなるとちょっと面倒そうだ。普通ならプレチャージというのがあって、通常の 1/10 ぐらいの電流で充電しようとするのだが、こいつはどうだろう?

これをクリアできても、通常充電とトリクル充電の移行サイクルが異常に短くなる。充電ロジックが異常だと認識しないかどうか?これも心配。

別の案 -- Ni-MH x 3直列 で代替



秋月のサイトを見ていたら

 ・ニッケル水素電池パック 3.6V830mAh 150円

なんとこんなものが売っていた。なんか安いぞ。専用ケースまで作って売ってる。電子工作の電源にも良さそうだし買ってみることに。

Ni-MH だが、満充電での電圧はおおむね 1.4v 超えだったと記憶している。x3 だと 4.2v 。で過放電ぎりぎりが、0.9v とかそのあたり。Ni-MH は急速充電が可能で 1C (830mA)ぐらいは大丈夫のはず。4.2v 以上に電圧を上げないのならば、一般的な リポ電池の充電回路で充電できるはずなのだ。(確か 4.2v を超えたとしても、1/50 C トリクル充電は大丈夫。)


http://www.kansai-event.com/kinomayoi/battery4/NiMH_world_selection.html より

これこれ、3.4v/3 = 1.13v なんてのは急激に電圧が落ちるところ。満充電は、1.4v 前後ではあるが、それ以上にしてはいけないという意味ではない。たぶん大丈夫だろう。

リチウム電池の代替にメモリ効果のある Ni-MH を使うのは変な話ではあるが、付いてさえいれば良いわけで 容量が(相当に)落ちたとしてもどうということはない。また常時通電の場合、Ni-MH のほうが安心できる。

これもやってみたい。ついでに書くとサーミスタを付けてやれば完璧である。それは、たしか千石電商で合うものを扱っていたと思う。

実践編 電気二重層コンデンサー



もう、手に入れてしまった。とりあえずやってみることに。
お金をけちって、200円の電気二重層コンデンサーを2個だけ買った。ピグも一台遊んでいるわけで、バッテリーを使わないならピグも常時ON にするかと思い、ピグに付けることにした。



まぁ配線だけだし、電子工作とも言えないレベル。端子の部分だけちょっと工夫。基板を削って、一列の丸ピンソケットを嵌めている。本体の端子は 3mm ピッチ? だが、左右に少し移動するので、丸ピンソケットのくぼみに収まった。サーモスタット代替の抵抗は手持ちの 10kΩと 2.2kΩを直列にした。作ったアダプタは、本体の端子のバネだけで止まっている。これでは安定しないので、今のところテープで止めている。ダイソーとかで EVA を買ってきて、もうちょっとマシにしたい。

やってみたら、動いた ... のであるが、あらかじめ充電する必要があった。0v では電源が入らず、充電もされない。調子に乗って AnTuTu ベンチを動かしたが走り切った。

バッテリーは、3.6v 59% で始まって、4.2v 70% という変なことになった。が、ほおっておいたら 100% で落ち着いた。ただ電圧は、4.0v から 4.2v を行き来している。また、バッテリー温度は 19℃と認識された。

つぎ、充電ケーブルを抜いて、どれぐらいもつか確認。Wi-Fi オン、操作を極力しない状態で 60秒だった。しばらく 100% だったが、3.9v になったと思ったら、電源が落ちた。落ちた後のバッテリー電圧は、2.8v 。すぐケーブルを挿したのだが、0% と表示される。4% になったところで、電源を入れると起動した。で、立ち上がっても 5% と表示される。
動作させていても、60秒もつのである。スリープすれば随分と持ちそうだ。ケーブルを抜いて移動させる程度なら全く問題ない。

電源ボタン短押しで、充電のモニタが表示される。中華PMP もこういうタイプが多かったが、これらの機種は、ケーブルを挿して給電すると、とにかく起動シーケンスが動く。たぶん u-boot までは来て、充電可能であれば、短押しは出来るようになる。で、充電可能な最低電圧は 2.7v かそのあたりだろう。

バッテリーが 0v だと、短押しで何も起きない。が ... 一秒 0.001v ぐらいのペースで電圧が上がっていく。数時間放置しておいたら、電圧は 4.0v まで行って、起動可能になっていた。

もうひとつ、不具合。リブートが出来ない。どうも充電OFF になってから、立ち上げるまでのパワーがない。一回電源OFF してから、パワーを溜めて 電源ON しないとダメなようだ。


実践編 Ni-MH x 3直列



150円のニッケル水素電池パック は、ポラスマの方で使ってみる。まぁ使えなるまで使ってみて、ダメになったらそのとき考える。どれぐらいの期間使えるかはさっぱり分からない。1年かも知れないが、数年かも知れない。

まず、電子工作でも使おうと思っているので、使わなくなった、1000mAH リポ電池を使用した モバイル・バッテリーを専用充電器に仕立てる。ちゃんと充電できて、充電が自動停止したら OK だ。工作は極めて簡単。もとのリポ電池を外して、専用ホルダーのケーブルを付けるだけ。元のリポ電池は生きていて 4.0v あったのだが、保護回路が基板側についていたので、単体では使えない。



充電から2−3時間で赤から黄色になった。このときの電圧は、4.19v 。OK だ。一晩放置したが、4.10v になっている。

次に、ポラスマ。まぁ配線して、10kΩの抵抗を付けただけ。専用ホルダー使わずに 電池の電極にハンダ付けすることも出来るのだが、ホルダー買ったし。



当然のように、立ち上がる。最初は 3.6v 34% であった。温度表示は想定どおり 25℃。
で、しばらく充電していたら 3.9v 99% になっていた。今は、4.15v 100% 。大丈夫そうだ。これで運用してみる。

おわりに


今回は、正規のバッテリーを温存する目的で、物理的にバッテリーを交換してみた。そうではなくて、充電電圧を下げて、寿命を延ばす方法もある。これについても探っていきたい。

追記1 (2015/07/01)




現在のポラスマ(予備機)。ダミーバッテリーの作りかたが分かってきた。やわらかい材質の木 −ファカルタか桐ー で作ればうまく行った。電極をどうするかが問題だったのだが、ピンヘッダをコの字に曲げて木に差し込む。木の方は溝をほっておく。ケーブルをハンダづけしたら、接着剤で固定。

また、ポラスマのバッテリーには、温度計のNTCの代わりに固定抵抗が入っていた。本体の方も無視するようになっていて、NTC を接続しても温度が 25℃固定だった。



現在の Pigu (予備機)。なんとこんな形に。スマホ台を木工で作った。そこにダミーバッテリーで、Pigu を付ける。エレコムの BT キーボード を付けてデスクトップぽくしてみた。BT キーボードのバッテリーを抜いて、ケーブルで本体バッテリーに接続してある。

一応、バッテリーの温度計(NTC) もバッテリーケースに付けた。バッテリーにくぼみがあってそこに嵌る。
posted by すz at 11:15| Comment(0) | TrackBack(0) | android

2015年03月18日

C4droid(2) -- perl4

気が変わってもうすこし、tcc & gcc の整備をしようと思う。せっかくなので何かビルドしたいのだ。
... いろいろ考えたのだが、perl にしようと思う。... といっても現バージョンではない。perl 4 である。

http://www.cpan.org/src/unsupported/4.036/

元にするのは、ここのやつ。なんと日付は 1994/1/31 -- 20年以上前のものである。この 4.036 は、FreeBSD-2.2.8R にも採用されたもの。4 の最終バージョンでもある。

ftp://ftp.tw.freebsd.org/pub/releases/i386/
FreeBSD は、ここにソースを含めたものが置いてあった。なんと 1.1.5.1 まである。

何故 perl かというと、システムの api を相当数使用しているため。perl が tcc でビルドできるようになれば、tcc のために用意した include の整備が進むだろう ... というのが目論見。実際に動かすのは今のところ優先度は高くない。

そもそも ... perl4 の使い方を知ってる人は少ないかも知れない。サブセットなわけで、perl に詳しい人でも、どの機能が使えるのか分からないかも。FreeBSD の オンライン manpage はある。山のような セクションがある perl5 とは違って perl.1 のみ -- そして 、日本語に翻訳されたものもある。ただし、日本語版はダウンロードするものしか見つけられなかった。

  ・英語版 perl.1
   日本語版 http://www.jp.freebsd.org/man-jp/get.html (2.2.8 あたり)
  ・日本語版 FreeBSD ハンドブック (おまけ)

日本語版 のマニュアルがあるものの、cat した変換済みのものである。文字コードが EUC で今の一般的な環境と違う。また、漢字1文字分戻るのに ^H^H になっているようだ。perl のテスト・練習を兼ねて html 変換スクリプトを作って見るのも良いかも知れない。

実は既に tcc でビルドできるところまで行った。結構苦労したのだが、細かいところは端折ってメモを残そうと思う。

移植の手順


1) セルフの gcc でビルドできるようにする。
(Configure で作ったものから修正していく。)
2) ビルドできたら、build-gcc.sh を作成し make を使わないようにする。
3) ファイルを必要なもののみになるように整理。
4) build-tcc.sh を作成し、gcc の include を借りてビルドできるようにする。
5) tcclib/include を整備して tcc で完結するようにする。

大変だったのは、1) なのだが、基本的に エラーが起きたら削るという作業。削ったものの中には移植可能なものがあったかも知れない。

さて、ビルドの時間の比較

gcc -O2 tcc
real 1m9.300s 0m1.899s
user 1m6.610s 0m1.300s
sys 0m1.510s 0m0.280s

さすが、tcc は高速。だが、最適化なしなので、サイズは大きくなってしまっている。

gcc -O2 tcc
bytes 347483 509704

まとめ


 ・perl-4.036-android-150318.tar.gz -- perl4 ソース+バイナリ
 ・tcc-0.9.26-android-150318.tar.gz -- tcc ソース+バイナリ
 ・tcc-android-150318.tar.gz -- tcc バイナリ
 ・sqlite-bin.tar.gz -- おまけ

今日の成果物。作った perl4 は、完成度が低いと思われるので、バイナリのみは提供しない。tcc は perl4 をビルドできるよう include を足しただけ。sqlite は、拾ってきたバイナリ。perl と組み合わせて使うとなにかと便利かも。ちなみに、perl という名前で生成しているが、/system/xbin/perl4 に置くつもり。

変更元は、素の perl-4.036 でセキュリティパッチも当ててない。変更点を調べる場合は、diff を取って欲しい。あと、sys-api.txt というファイルが置いてあるが単に 外部シンボルを調べただけのもの。

おわりに


次は、vi をなんとかしたいのと、scp が欲しい。出来るかどうか分からないが。

付録 gcc 環境作成のメモ


メモだけ残しておく。とりあえず loop デバイスで /usr に mount して 使うようにした。/data/local 使うのが良いのかも知れないが、端末の初期化で消えてしまう。/usr にしても boot.img を直さない限り mountポイントを作らないとダメで面倒ではある。
今の認識では、gcc 環境は借り物で、使うときにだけあれば良い。tcc での簡易開発環境を /system に仕込むというのが目的で、公開するものは、tcc でビルド可能にすると思う。

# dd if=/dev/zero of=/sdcard/usr.img bs=1024K count=300
# losetup /dev/block/loop0 /sdcard/usr.img
losetup: /dev/block/loop0: Bad file number
# losetup /dev/block/loop7 /sdcard/usr.img
# mke2fs -T ext4 /dev/block/loop7
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
19200 inodes, 76800 blocks
3840 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=79691776
3 block groups
32768 blocks per group, 32768 fragments per group
6400 inodes per group
Superblock backups stored on blocks:
32768

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 31 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mount -o remount,rw / /
# mkdir /usr
# mount -o noatime -t ext4 /dev/block/loop7 /usr
posted by すz at 22:29| Comment(0) | TrackBack(0) | android

2015年03月16日

C4droid -- tcc と gcc

Android で動作する C コンパイラというか開発システム?に C4droid というのがある。有料なんだが、そんなアプリはこれしかないようなので、購入してみた。
add on には、「GCC for C4droid」、「SDL plugin for C4droid」あと関連アプリに「Ministro」というのがある。C4droid 自体は 5MB 程度なのだが、add on を適当にインストールしたら、SDカードに 257MB ものファイル群が出来上がった。

本当は、ちょっと tcc に興味を持っただけなのだ。/system にちょっとコンパイラを仕込んでみたいというだけなのだ。まぁ セルフの GCC も使ってみたい気はする... のだが、しょぼい IDE で使う気はしないので、どうしたものか。

とりあえず、ファイルに何があるかの調査。(以下、延々調査内容なので、読み飛ばしたほうが良いかも)

/sdcard/Android/data/com.n0n3m4.droidc/files/gcc

arm-linux-androideabi/ lib/ terminfo/
bin/ libexec/ tmpdir/
include/ plugin_version

こんな場所にそれらしきものが。

#ls bin
arm-linux-androideabi-ar arm-linux-androideabi-ranlib
arm-linux-androideabi-as arm-linux-androideabi-strip
arm-linux-androideabi-g++ m4
arm-linux-androideabi-gcc make
arm-linux-androideabi-ld pkg-config
arm-linux-androideabi-nm sdl-config
# ls arm-linux-androideabi/bin
ar as cc g++ gcc ld nm
ranlib strip

m4 と make も見つかった。ただ、objdump と objcopy がなく少々不便。

# ls -F lib/gcc/arm-linux-androideabi/4.9.1/
crtbegin.o* crtend.o* include-fixed/
crtbeginS.o* crtendS.o* libgcc.a*
crtbeginT.o* include/ libgcov.a*
# ls arm-linux-androideabi/lib/
crtbegin_dynamic.o libSDLmain.a libogg.a
crtbegin_so.o libandroid.so libpanel.a
crtbegin_static.o libc.so libpng.a
crtend_android.o libdl.so libsmpeg.a
crtend_so.o libform.a libstdc++.a
libEGL.so libfreetype.a libsupc++.a
libGLESv1_CM.so libjnigraphics.so libthread_db.so
libGLESv2.so libjpeg.a libtiff.a
libOpenSLES.so liblog.so libtiffxx.a
libSDL.a libm.so libvorbis.a
libSDL_image.a libmenu.a libvorbisfile.a
libSDL_mixer.a libnative_app_glue.a libz.so
libSDL_net.a libncurses++.a pkgconfig
libSDL_ttf.a libncurses.a

ライブラリは、.a のものと .so が混在。一体どれが使われるのだろう?
gcc は、相対パスで動作するので、ディレクトリを移動。qemu-user 環境を作って、/usr/local へ。
gcc を /usr/local/bin に置いた場合 include のパスは次になった。

"/usr/local/lib/gcc/arm-linux-androideabi/4.9.1/include" --(1)
"/usr/local/lib/gcc/arm-linux-androideabi/4.9.1/include-fixed"
"/usr/local/arm-linux-androideabi/sys-include"
"/usr/local/arm-linux-androideabi/include" --(2)

システムの include は(2) に、gcc の include は(1) に置いてみる。
次はライブラリのパス

-L/usr/local/lib/gcc/arm-linux-androideabi/4.9.1
-L/usr/local/lib/gcc

こうなっているのだが、.so がここにあっても困る。
collect2 のオプションが、

-dynamic-linker /system/bin/linker -X -m armelf_linux_eabi \
/usr/locallib/gcc/crtbegin_dynamic.o \
(xxx.o) -lgcc -lc -ldl -lgcc \
/usr/local/lib/gcc/crtend_android.o

/system/bin/linker を使うわけで、/system/lib の libc と libdl をリンクしたい。-L/system/lib 必須ということになった。

gcc hello.c -L/system/lib

これで、a.out が生成されるようにはなった。qemu-user 環境では動かないが、実機では動くというしろもの。この問題はおいておいて、次。tcc はどこにあるのか?

# ls -F /data/data/com.n0n3m4.droidc/files/
busybox* file.stderr indent* temp.c*
c4droid_version file.stdin tcc*
file.sh file.stdout temp*
# ls /sdcard/Android/data/com.n0n3m4.droidc/files/tcclibs/lib
fix.o libcrypt.a libm.a librt.a
libc.a libdl.a libpthread.a
# ls /sdcard/Android/data/com.n0n3m4.droidc/files/tcclibs/include/
a.out.h fpu_control.h netpacket stdlib.h
alloca.h getopt.h nl_types.h string.h
ar.h glob.h obstack.h strings.h
arpa gnu-versions.h paths.h sys
asm grp.h poll.h syscall.h
asm-generic ieee754.h protocols sysexits.h
assert.h internal pthread.h syslog.h
atomic.h inttypes.h pty.h tar.h
bits langinfo.h pwd.h tcclib.h
byteswap.h lastlog.h rdma termio.h
complex.h libgen.h regex.h termios.h
conio.h limits.h regexp.h tgmath.h
cpio.h link.h resolv.h thread_db.h
crypt.h linux sched.h time.h
ctype.h locale.h scsi ttyent.h
dirent.h malloc.h search.h ucontext.h
dlfcn.h math.h semaphore.h ulimit.h
elf.h memory.h setjmp.h unistd.h
endian.h mntent.h sgtty.h utime.h
err.h mqueue.h signal.h utmp.h
errno.h net stdarg.h values.h
error.h netax25 stdbool.h varargs.h
fcntl.h netdb.h stddef.h wait.h
features.h neteconet stdint.h wchar.h
float.h netinet stdio.h
fnmatch.h netipx stdio_ext.h

どうやら、ここら辺。
で、この tcc は、

tcc version 0.9.25 - Tiny C Compiler - Copyright (C) 2001-2006 Fabrice Bellard

こういうもので、バージョンがひとつ古い。参考にするに留めたい。
strings でパスらしき文字列を grep すると

/system/bin/linker
/usr/local/include
/usr/include
/usr/local/lib/tcc
/usr/local/lib
/etc/ld.so.cache
/lib:/usr/lib
/dev/zero
/etc/TZ
/etc/localtime
/proc/stat
/proc/cpuinfo
/sys/devices/system/cpu
/dev/null

こんな風になっている。/system/bin/linker が含まれているが、自分自身が ダイナミックリンクされているのだろう。他には実情に合わないパスが色々と。

まぁ、とりあえず最新版をビルドしてみよう。「TinyCC on ANDROID (ARM)」という ブログを見つけたので、知識を拝借させてもらう。
 1) sys/ucontext.h を拾ってくる。
 2) strtold() を strtod() で代用

long double strtold(const char *s, char **p) \
{ return (long double)strtod(s, p);}

 3) config.h を以下の内容で作成

#define CONFIG_TCCDIR "/system/xbin"
#define CONFIG_TCC_CRTPREFIX "/usr/local/lib:/data/local/lib:/sdcard/tcc/lib"
#define CONFIG_TCC_SYSINCLUDEPATHS \
"/usr/local/include:/data/local/include:/sdcard/tcc/include"
#define CONFIG_TCC_LIBPATHS "/system/lib:/usr/local/lib:/data/local/lib:/sdcard/tcc/lib"
#define CONFIG_TCC_ELFINTERP "/system/bin/linker"

#define HOST_ARM 1
#define TCC_ARM_VERSION 7
#define TCC_VERSION "0.9.26"

 4) tcc.c を以下の define でコンパイル

-DONE_SOURCE -DTCC_TARGET_ARM -DTCC_ARM_EABI -DWITHOUT_LIBTCC

うそでしょうと思うほどあっさりとビルドできた。
やっぱり qemu-user 環境で動かないので、実機で。
tcclib.h stdarg.h stddef.h
だけ用意して 実験

# ./tccwk
tcc version 0.9.26 - Tiny C Compiler - Copyright (C) 2001-2006 Fabrice Bellard
Usage: tcc [options...] [-o outfile] [-c] infile(s)...
tcc [options...] -run infile [arguments...]
General options:
(略)
# ./tccwk -I. -c hello.c
./tccwk -I. hello.c
tcc: error: file 'crt1.o' not found
tcc: error: file 'crti.o' not found
tcc: error: file 'crtn.o' not found

おしい。gcc で使った、crt を用意して

./tccwk -nostdlib -I. ./crtbegin_dynamic.o hello.c crtend_android.o -L/system/lib -lc -ldl
./a.out
hello
./tccwk -nostdlib -I. crtbegin_dynamic.o hello.c crtend_android.o -L/system/lib -lc -ldl -run
hello

えー、こんなにあっさりと動くものなのカ。ブログ主に感謝。

では、tcc 自身をビルドしてみよう。
... と include ファイルをどうするのか?という問題があった。
出来るだけコンパクトにしたいので、使っているものを調べてみる。

dlfcn.h fcntl.h math.h signal.h stdio.h
string.h unistd.h
errno.h inttypes.h setjmp.h stdarg.h stdlib.h
time.h
sys/mman.h sys/time.h sys/ucontext.h


まぁこんなものか。... なんてのは甘かった。include がネストして

tcclib/include/:
alloca.h fcntl.h math.h stddef.h sys/
android/ inttypes.h memory.h stdint.h time.h
asm/ limits.h pathconf.h stdio.h unistd.h
asm-generic/ linux/ setjmp.h stdlib.h
dlfcn.h machine/ signal.h string.h
errno.h malloc.h stdarg.h strings.h

tcclib/include/android:
api-level.h

tcclib/include/asm:
errno.h page.h siginfo.h
fcntl.h posix_types.h signal.h
mman.h sigcontext.h types.h

tcclib/include/asm-generic:
errno-base.h fcntl.h mman.h signal.h
errno.h mman-common.h siginfo.h

tcclib/include/linux:
capability.h fcntl.h stddef.h
compiler.h limits.h time.h
errno.h posix_types.h types.h

tcclib/include/machine:
_types.h kernel.h setjmp.h
internal_types.h limits.h

tcclib/include/sys:
_types.h limits.h syslimits.h ucontext.h
_wchar_limits.h mman.h sysmacros.h
cdefs.h select.h time.h
cdefs_elf.h sysconf.h types.h

整理してシンプルなものにしたいんだが、regex とか追加したいような気もする。追加する場合は、整合性上さわらない方が良いだろう。今のままだと gcc から引っ張ってきているだけなので、gcc との整合性も取れている。
さて、例のブログに tcc でコンパイルする場合の変更点が載っているので、同様に修正。
やってみたところ、sys/cdefs.h に修正が必要だった。で、

tcc: error: undefined symbol '__aeabi_lasr'
tcc: error: undefined symbol '__aeabi_d2ulz'
tcc: error: undefined symbol '__aeabi_d2lz'

出た。よくは分からないが libgcc.a のようなものが必要なのだろう。

long long __aeabi_llsr(long long, int)
-- logical shift right [1]
long long __aeabi_lasr(long long, int)
-- arithmetic shift right [1]
int __aeabi_lcmp(long long, long long)
-- signed long long comparison [3]
int __aeabi_ulcmp(unsigned long long, unsigned long long)
-- unsigned long long comparison [3]

int __aeabi_d2iz(double)
-- double to integer C-style conversion [3]
unsigned __aeabi_d2uiz(double)
-- double to unsigned C-style conversion [3]
long long __aeabi_d2lz(double)
-- double to long long C-style conversion [3]
unsigned long long __aeabi_d2ulz(double)
-- double to unsigned long long C-style conversion [3]
int __aeabi_f2iz(float)
-- float (single precision) to integer C-style conversion [3]

ぐぐったら、Run-time ABI for the ARM(R) Architecture と冠する pdf があってこんなのがいっぱいある。... 困ったどうしたものか?
あれ? コンパイルだけやって undefined をチェックすると たくさんあるうちの3つがエラーになっている。他の実体はどこに?

U __aeabi_d2lz
U __aeabi_d2ulz
U __aeabi_idiv
U __aeabi_idivmod
U __aeabi_l2d
U __aeabi_lasr
U __aeabi_ldivmod
U __aeabi_llsl
U __aeabi_llsr
U __aeabi_memcpy4
U __aeabi_memcpy8
U __aeabi_memset
U __aeabi_uidivmod
U __aeabi_ul2d
U __aeabi_uldivmod

libgcc.a みたいなものと書いたが、libgcc.a に定義されていた。... というか libc とかも gcc でコンパイルされているし .. 。でも、libgcc.a そのものを指定すると別の undefined エラーが。解決するには、collect2 が必要になってしまう。とりあえず、自己完結しているものを集めて libtcc.a を作ったところ ... tcc が、ビルドできた!

あとは、ライブラリサーチパスとか crt ファイルの変更だとかをやって整理。

config.h:
#define CONFIG_TCCDIR "/system/xbin"
#define CONFIG_TCC_CRTPREFIX "/system/tcclib/lib:/data/local/tcclib/lib:/sdcard/tcclib/lib"
#define CONFIG_TCC_SYSINCLUDEPATHS \
"/system/tcclib/include:/data/local/tcclib/include:/sdcard/tcclib/include"
#define CONFIG_TCC_LIBPATHS "/system/lib:/system/tcclib/lib:/data/local/tcclib/lib:/sdcard/tcclib/lib"
#define CONFIG_TCC_ELFINTERP "/system/bin/linker"

#define HOST_ARM 1
#define TCC_ARM_VERSION 7
#define TCC_VERSION "0.9.26"

まぁ場当たり的な修正ばかりだが、一応は動く。

まとめ


 ・tcc-0.9.26-android-150316.tar.gz ソース+バイナリ版
 ・tcc-android-150316.tar.gz バイナリ版

最初の成果物。ソース+バイナリ版は、build-tcc.sh で tcc 自身がビルドできる。
バイナリ版は、/system/xbin に tcc を /system/tcclib に include と lib を置くように作成。
もうすこし詳しく書いておく。
tcclib を置けるのは、/system /data/local /sdcard のどれかの配下。tcc コマンドはパスが通っていれば良い。
ライブラリの指定は、-lc -ldl あたりだと思うが、なしでいける場合もある。long long を使うようなコードでは、-ltcc を付けないといけない場合がある。
-run オプションも動くようだ。

おまけ GCC のビルドオプション



COLLECT_GCC=/usr/local/bin/gcc
Target: arm-linux-androideabi
Configured with: ../configure --host=arm-linux-gnueabi \
--target=arm-linux-androideabi \
--enable-static --disable-shared --enable-languages=c,c++ \
--enable-initfini-array --disable-lto --with-float=soft --with-fpu=vfp \
--with-arch=armv5te --disable-libquadmath \
--disable-multilib --disable-libgomp \
--disable-libmudflap --enable-target-optspace --enable-threads \
--disable-libatomic --disable-tls --disable-nls \
--disable-sjlj-exceptions \
--disable-libstdc++-v3 --disable-libsanitizer --disable-plugins \
--disable-libgcc --disable-libssp --disable-docs --disable-libitm \
--with-gnu-as --with-gnu-ld --prefix=/prog/c4droid/OutDir \
--with-mpc=/prog/c4droid/mpc --with-mpfr=/prog/c4droid/mpfr \
--with-gmp=/prog/c4droid/gmp
Thread model: posix

おわりに


セルフで動く tcc をビルドするという目的は、達成されてしまった。アドホックなんで不具合は出るかも知れない。優先度は高くないが、手直しはしていきたい。
さて、次は gcc をセルフで動かすように整理したい。/system ではなく loop デバイスで /usr パーティションを mount して使うのが良いかと思っている。これもボチボチやりたいが、バイナリは配布しないかも。
次は、Mediatek のカーネルについて調べてみたい。
posted by すz at 01:49| Comment(0) | TrackBack(0) | android

2015年03月14日

Pigu & Polasma

久しぶりの記事。
N-04C を長らく使ってきた。ティザリング以上の改造もせずおとなしく使っていたのだが。。。
たまたま、ポラロイド Pigu という機種が (税込送料込) 4980円 で特売されていることを知り、予備も含めて2個発注した。情報取集に努めていたところ、ポラロイド Polasma という機種が、トイザらスで特売されていることを知った。出遅れたので諦めてたのだが、妹の地元に在庫があり、頼んで2個確保してもらった。

これらを喜び勇んで購入したのは、MediaTek だからである。ファームウェアを弄っても元に戻せるとふんで、改造して遊ぶのが主目的。バッテリーがへたってきた N-04C の代わりにメインスマホとして使おうというのも目的ではある。

ファースト・インプレッション


店頭購入の Polasma を先に入手できたので、まずこれから。N-04C と比べて画面が美しくかつ広い。まずそこに感銘を受けたのだが、CPU性能が高くきびきび動く、その上消費電力が小さいようだ。N-04C では充電より消費の方が多く、充電している時でもバッテリーが減っていくということが良くあったのだが、こいつは、そんなことはない。携帯して使っても、バッテリーが持つ。これだけで、スマホも随分と実用性が上がったなぁという印象を受けた。
ただ、N-04C ほどタフではない。すぐに壊してしまいそうな .. そんな印象がある。ゴリラガラスとか強化ガラスであるとは一切説明されてないし、画面が広く筐体が薄すぎる。本当に簡単に壊してしまいそうだ。
次は、Pigu 。Polasma を入手できてしまったので、どうしたものかと思っていたのだが、意外にも良い。携帯性が良いのが理由。別にタフではないのだろうが、Polasma ほど気を使わなくとも済む。その上バッテリーの持ちが Polasma よりもさらに良い。当然ながら、筐体が小さいのも携帯性に寄与している。Polasma クラスでさえ電話のサイズではない -- 小型タブレットだろう。
Pigu の 画面は 320x480 と狭い上に液晶も青っぽくあまり良くないわけだが、携帯性のほうが優先度が高い。持ち歩きたいのは Pigu の方になった。

どう使いわけるか


4台も入手してしまってどうするの?と思われる人もいるだろうが、もともと弄るために買ったのだ。多すぎではあるが、別に困らない。

Pigu (Black) : これはいつも持ち歩く。
Polasma (Yellow) :

 Windows機の傍らに置いて、サブ機として使う。動画も専らこれ。気分によって持ち歩くが、SIM の数の問題が。もし、BT子機にできるようになったら、pigu との 2台持ちにしたい。

Polasma (Red) :

 開発機 - SSHDroid を常に起動し、専ら ssh でログインして使う。セルフコンパイル環境の C4Droid も導入。ファームウェアを弄る実験も専らこれ。

Pigu (Green) :

 予備機 -- カラーの バッテリーカバーを付けたのだが、いまのところ、単なる予備になってしまっている。


MediaTek のツールについて


SP Flash Tool (SPFT)
SP Flash Tool v5.1352.01.zip (MD5: bb3cad2ceed284651e4c494b9966b605)
MT6577 USB VCOM drivers.rar(MD5: 8e9388d06ae7e3f6bd5074f8c8e4a8e8)
まずはこれ。ROM イメージを焼くためのツール。ROM イメージを持っていれば、bootloader を壊してさえ、元に戻せる。セキュリティ上どうかと思うが、吸い出すこともできるので 後述の MtkDroidTools と合わせて完全なバックアップも作れる。Windows8 でドライバを導入するのは面倒だが、freetel nico の手順書が参考になる。

MtkDroidTools
MtkDroidTools_v253.exe(MD5: c95067099942bb3dea0acf5a5a29737a)
http://adbdriver.com/downloads/
いくつかの機能があるのだが、SPFT で 吸い出した ROM イメージを 書き戻せるような形式に変換してくれる。実機に接続する必要はあるが root 化は必要なく、stock の ROM イメージを作成することが出来る。他には CWM の自動生成にお世話になった。
困ったことに、アンチウィルスソフトに、トロイの木馬だと認識されてしまう。(AVG では最近、ウィルスとは認識しなくなったみたい)

root化


Polasma は、Framaroot で root が取れるという情報があったので、なんとか入手した。確かに root は取れた。だが、Pigu では無理であった。
しかし MediaTek の場合、SPFT + MtkDroidTools でいけるのだ。
1) SPFT で ROM を吸い出す。
2) MtkDroidTools で変換すると CWM が自動で作成される。
3) recovery_cwm.img と boot_patched.img を書き込む。
4) CWM を起動して、UPDATE-SuperSU-v2.46.zip をインストール


この手順は強力で対策不可能な感すらある。逆にこれを知ってる人間に盗まれたらやばい。重要な個人情報を扱う場合は Android の暗号化機能で、ディスクを暗号化しておいた方が良い。

root化して使いたいもの


とりあえずは、ESファイルエクスプローラでの パッケージ(APK)のバックアップ 。沢山マシンがある上に初期化も頻繁にするので、いちいちダウンロードするのはやってられない。

あと CF.lumen 。液晶の色温度を設定できるフィルターソフトで、要root + 4.4.2以上。Pigu では是非とも使いたい。

あともう一つあるが、ここではコメントを控えておこう。

さて、開発目的だと、もう root化は必須だ。変更したりできなければ話にならない。
普通は、adb で入って su するわけだが、sshd を使うことを覚えた。やっぱりこっちの方が便利。busybox の vi が使えたりするし。sshd は、SSHDroid が良いようだ。

とりあえずの ToDo


1) セルフ用 tcc をビルド
大した目的ではないが、これはクリアしておきたい。実を言うと C4Droid には、tcc のバイナリが含まれていたりする。これを参考にしてビルドに挑戦。tcc 自身で tcc も作りたいが、C4Droid の gcc も使ってみたい。もちろんコマンドラインでのビルド。gcc もファイルをピックアップして通常の tree に組み込むのだ。

2) Polasma を BT子機に
全然どうしたら良いかわからないのだが、やりたい。仕組みすら見当が付けられない。
タイムリミットは、8月あたり。現在は、SIM を2枚持っている。だいぶ前に買って眠らせていた、6か月のプリペイドが使えなくなるまでになんとかしたい。

ヒントとしては、Pigu 。なぜか対応しているのだ。バージョンが違うため流用は出来ないだろうが参考にはなるだろう。あとは、同じ MediaTek の 4.2.2 のタブレット。Lenobo の YOGA がそのひとつで、BT子機になるらしいのだが... ROM イメージをなんとか入手して調べてみたい。

おまけ1


カーネルソース
 ・https://android.googlesource.com/kernel/mediatek/ (4.4.4)
 ・https://github.com/aniruddha-adhikary/mt6572_kernel (4.2.2)
ビルドするのが目的ではなく調査用。いやモジュールぐらいは...

おまけ2


今の Polasma(yello)


少しでも安心したく、DX.com で購入した強化ガラスのスクリーンプロテクターを貼っている。専用品などないので、サイズが近い LG G2 用にした...のだが四隅がはみ出してしまった。はみだしたところは Polasma を削るしかなかった。道具に撤するので問題ないのだが、少し残念。HTC one M8 用だと長方形で、画面部分だけ覆えるのだが、それで良かったかも。ちなみに、強化ガラスは加工できないそうだ。傷が入れば割れてしまう。ダイヤモンドやすりで削ろうと思ってたのだが甘かった。

裏には、バンカーリングもどきを付けた。動画とか見るし必要だと考えた。さらに、リールクリップを付けている。余計な気もするが、落としたくない。

今の Pigu(black)


これも、リールクリップを付けている。ストラップホールなどないので、ケースに穴を開けた。内部に空間があるところに穴を開ける必要があった。ストラップは以前 DX.com で買い置きしてたもの。適度な遊びになっていて具合が良いようだ。

おまけ3


http://www.needrom.com/download/polaroid-pigu-cwm/
http://www.needrom.com/download/polaroid-pigu/
http://www.needrom.com/download/polaroid-polasma-cwm-twrp/
http://www.needrom.com/download/polaroid-polasma-shrinked-rom/

stock の ROM とかが、置いてある。ぶっ壊してもまぁなんとかなる。
そうそう、Polasma はロシア?で 「QUMO Quest 506」という製品名で売られている。これ用の TWRP なども動作する。

(追記)
ココのサイトが、Polasma の 中国国内版を見つけた。NAMO NX5 または NAMO NXPLAYER だそうだ。ボード名である「htt82_wet_jb5」が見つけるキーワードになったそうだ。で、htt82_wet_jb5 でググると Elephone P7 Mini というのもある。こっちは形も違うのだが V10 だそうだ。(Polasma は V10B)
ついでに Pigu の ボード名 hexing72_cwet_kk でググっても何も出てこない。Pigu はオリジナルではないか?
posted by すz at 21:38| Comment(2) | TrackBack(0) | android

2012年01月04日

ICSメモ

Novo7basic など ICS のカスタマイズについてのメモ


    注意! 変化が速いので、情報はすぐ古くなってしまいます。ここに書いてあることを、鵜呑みにしないよう。常に元に戻す方法を確保してから試すよう心がけること。

フォント

    2.3 では、DroidSansJapanese.ttf を /system/fonts にコピーすればよかったのだが、ICS では、xml ファイルの変更も必要とのこと。(FREE WING さんとこの情報)

    /system/etc/fallback_fonts.xml に追加:

    <family>
    <fileset>
    <file>DroidSansJapanese.ttf>/file>
    </fileset>
    </family>

    (改行コードは LF なので注意)

    どうしても自分で出来ないなら、Font Changer (説明) を試してみると良いかも。(root) と書いてあるから Root化後に導入できる。

nicoWnnG

Youtube

    Youtube.apk が使えるらしい。

    マーケットからインストールできるという話も。
    お薦めは、英語版ファームウェアに入っている Youtube.apk

  • TubeMate

    というアプリも良いらしい。

    動画つながりで ... 「SoftMedia Player」なるものがあって、DLNAサーバー と接続して再生できるらしい。動画プレイヤーは自前ではなく、組み込みの MediaPlayer を使う。

Skype

APK 集とか

    ainol から APK 集(503 MB) がダウンロードできる。paladin 用となっているが basic でも問題ないだろう。

    http://www.ainol.com/plugin.php?identifier=ainol&module=download

    basic での正式ファームウェアは、Android 3.2 2011/12/17 版 で上記 URL でダウンロードできる。1.44 GB のほうは、4GB 用/8GB 用 それぞれが入っているとのこと。

    では 302MB の方は 、8GB 用なんだろうか?

    4.0 は、正式には update として出ていない。赤札天国の firmware 置き場からダウンロードできるこれは 初期ファームウェア(2011/12/21 版)らしい。

      注意! paladin は、未だダウンロードできるファームウェアがない。(2012/1/7 時点)
      ファームウェアを手に入れるまでは、Root化など システムを変更するようなカスタマイズは控えた方が良いだろう。

      4GB 版 basic も 未だ公式ICS はないようだ。8GB用と思われるのが インストールできてしまったが、具合が悪いのは当然なのかも。

        これの原因は良く分からない。8GB 用でも問題なさそうな ... 。そうなると 1.2GHz に無理があるのかも知れない。昔の mbr-xboot.bin を使えば 1GHz になるかも知れないわけだが ... update.zip を作りなおす方法を知らない ... ううm.

      追記: paladin のファームウェアが出た。初期ファームウェア? (osakanataro 氏 コメント 参照) なぜか 788 MB もある。

      これで どうなっても元に戻せる。

        ただし、mbr-xboot.bin の領域が壊れると、update.zip は使えない。その場合でも USBbootTool を使って元に戻せる 方法はあるのだが ... それ用の ファームウェアは出ていない。

        出なくとも なんとか出来るはずではあるが、たぶん出るんじゃないかと思えるし、説明が面倒なので ここでは説明しない。

        追記2: paladin のファームウェアは USBbootTool 専用だった。basic も 3.2 (1.44G) は USBboot 用。update.zip 形式より不便ではあるが確実に インストールできる。

        詳しくは、この記事の下の方を参照。

    https://github.com/i-rinat/mips-apk/downloads

      Opera Mini 4.3 などがある。slatedroid 『[REQ] MIPS Ports of APK's (Updated 30 Dec 2011) 』の記事より。

      http://bbs.imp3.net/thread-10503353-1-1.html

      APK 集(ライセンス許諾済みらしい)。個別にダウンロード可能。
      結局使ってみたのは ES taskmanager ぐらい。

      http://bbs.imp3.net/thread-10503421-1-1.html

      ゲーム集。中国語版ばかりなのでパスしたが、興味があるかたはどうぞ。

    Dalvik Turbo

    MagicCode

      ARM NDK の アプリを動かせるようにするもの。

      MagicCode_ics_v1.1-n7b-n7p.apk

      ICS対応版が出た。(FREE WING さんとこの情報)

      動かせるようになる アプリがかなりある模様。

      4.0.3 までに対応する v1.3 が出ている。

      MagicCode_hc_ics_v1.3.apk

    フォーラム

    ClockworkMod Recovery 5

    • http://androtab.info/mips/ingenic/clockworkmod/

      まずこれをインストールして、

      Superuser-3.0.7-bb-mips32r2-ics.zip

      を clockworkmod で インストールするのがお手軽。

       ※ basic 用と paladin 用は違うので注意。

      バックアップも簡単にできるようになるのでお勧めとのこと。

      ClockworkMod について疎いのだが、Recovery ツールだけが先に出来たということ?
       ※ ClockworkMod は、Recovery ツールで 他のものの一部ではないとのこと。(fun さんのコメント)

      ところで、Root化(Superuser.apk の導入)は、必要なのか?

        Root 権限が必要になるアプリを持っていないし 不要かも。
        もともと 画面のスナップショットを取るのに必要かと思っていたのだが、ICS は標準でその機能を持っている。(音量(-) + 電源ボタン 2秒)
        ただし、busybox 入れ替えはした方が良く セットになっているので、一応入れることを推奨。

    マーケット

      HD安卓市場とか GO Market とかが入っているが、アンインストールして、Ronzi A3 から com.android.vening-2.apk (いつだったか マーケットでダウンロードできた) をインストール。

      ... システムアプリもインスートール出来るのか 。

        -rw-r--r-- 1 root root 3488144 Dec 21 19:08 system/app/com.android.vending-2.apk
        -rw-r--r-- 1 1000 1000 3708455 Jan 10 15:39 data/app/com.android.vending-1.apk

        あとで確認したらこうなっていた。


      ちなみに、GMail com.google.android.gm-1.apk もインストールしようとしてみたが、こちらはエラー .. もともと不要だし問題はない。

    Basic のファームウェア

    • 赤札天国の firmware 置き場

      NOVO7 Basic4.0.rar/NOVO7 Basic3.2.rar が置いてある。これは 8GB の basic の初期ファームウェア (4.0 2011/12/21 版 , 3.2 2011/12/xx 版)

    • aniol ダウンロードセンター(公式)

      公式なのは良いが、レジストとしないとダウンロード出来ない?
      ちなみに paladin のファームウェアも公式に出ている。(2012/1/11)

    • ainovo

      2012/1/05 版 (ICS_MR0 eng.mdliu.20111227.112122) がある。これは上記とは違うもの。英語版?

      中国語アプリが削除されていて Facebook, Kindle, MSN_Windows_Live_Messenger, Pandora, YouTube が入っている。あと AngryBirds とかいくつかのゲームも。

      system.img はもとより boot.img や mbr-xboot.bin も違う。

        system.img の違い (ファイル構成)

        中国語版のみ
         app/Baidu_Input_v2.1.1.47_mips.apk
         app/GoogleServicesFramework.apk
         app/MyGmail.apk
         app/NetworkLocation.apk
         app/com.android.vending-2.apk
         app/com.google.android.apps.maps-1.apk
         etc/permissions/com.google.android.maps.xml
         etc/permissions/features.xml
         framework/com.google.android.maps.jar
         lib/libinputcoreoem-2.so
         lib/libkpencoreoem.so

        ainovo版のみ
         bin/ に *.sh test_* など多数

         bin/write_bootimg
         bin/xplayer
         customize/default_workspace.xml

      Market/GMail は入っていないようだ。信用できないなら自分で入れろ? みたいな感じ。
      だが、カスタマイズのベースとしては良さそうな印象。paladin 用のも いずれ出そう。

      4GB の basic に入れて試してみよう。

    ainovo版ファームウェアを試す

      問題なくインストールでいた。1.2 GHz だが問題ないようだ。

      AnTuTu bench

        basic ICS paladin basic 2.3(+turbo)
        RAM: 229 192 195
        CPU integer: 615 517 517
        CPU float-point: 240 201 203
        2D graphics: 318 319 299
        3D graphics: 431 440 440
        Database IO: 165 145 245
        SD card write: 61 90 79
        SD card read: 117 107 134
        Total score: 2176 2011 2112

      ちょっと試してみた。basic ICS/paladin は SD カードに内蔵 Flash を指定。

      CPU のみが 1.2 GHz で GPU などは変更ないようだ。あと 8GB モデルは少し Write が速い。
      また、以前 basic で Dalvik Turbo VMを試したときの値も併記しておく。

      AnTuTu では、Android Version が変わっても 値があまり変わらない。Dalvik Turbo ですらあまり変わらない。(速くなるのは、何故か DB I/O)

        Qualdant の方は、随分値が下がるようだが、あまり実際の性能を反映していないかも。

      さて、GMail/Market がないわけだが、用意したものを 通常の APK と同じようにインストールできてしまった。ただし、GoogleServiceFramework.apk がないので全然動かない。これも後でインストール。

      だが、ちゃんと動かないような...

      さて、これは後でちゃんとするとして ... ファームウェア自体は問題なさそう。

        How to install Market, Gmail and Maps on the official 4.0.1 firmware 』という記事も出ている。

        抜粋すると

        - # adb push GoogleServicesFramework.apk /system/app/
        - # adb push com.android.vending-2.apk /system/app/
        - # adb push MyGmail.apk /system/app/
        - # adb push com.google.android.apps.maps-1.apk /system/app/
        - # adb push com.google.android.maps.jar /system/framework/
        - # adb reboot

        こう。足りないファイルは以上。中国語版から取ってきても良さそうではある。CWM 用の zip ファイル(N7B-ICS-Gapps.zip)も出ている。こういう風に便利に使われているなら 日本語フォント用も誰か出してくれると良いのに。

      次に CWM を入れてみる。問題ないようだ。

      あとはフォント。これも無事追加完了。

    paladin のファームウェア

      fun さんにダウンロードさせてもらった ファームウェア を見てみた。
      バージョンは ICS_MR0 eng.dmzhang.20111230.155247 。

      788 MB もある が、ほとんどは VFAT に収められた APK集。あと update.zip がなく USBbootTool 専用。

      USBbootTool 専用ではあるが、userdata.img , cache.bin , recovery.cpio.img がない。あるのは、update.zip と同じで mbr-xboot.bin , boot.img , system.img 。あと vfat のイメージファイル。

      paladin 用初期ファームウェアは、vfat のイメージファイルもない。あと、pretest.img というのがあって、recovery.cpio.img の領域に書きこむようになっている。

      おそらく、通常立ち上げでのインストールで system.img の中にある userdata.img , recovery.cpio.img を書き込むようになったのだろう。cache.bin はもともと空だから mkefs で作るようになった?

        paladin では boot.img まで含まれるようになった。recovery.cpio.img で立ち上げたときしか書き込めるはずはないが、CWM 使うのなら関係ないので使う機会がない。

        あと、pretest.img は、最初の通常立ち上げ前しか使えないのだろう。無視して良いはず。

      (ainovo 版) system.img との違い

      paladin ⇔ basic の違いによるもの
       app/Camera.apk (paladin にはない )
       app/Contacts.apk (paladin にはない )
       lib/libjni_mosaic.so (paladin にはない )
       lib/libvariablespeed.so (paladin にはない )
       lib/hw/audio.primary.npm701.so (paladin は npm702 )
       lib/hw/camera.npm701.so (paladin は npm702 )
       lib/hw/lights.npm701.so (paladin は npm702 )
       lib/hw/sensors.npm701.so (paladin は npm702 )

      中国語版 ⇔ 英語版の違いに関係するもの (paladin のみ )
       app/Baidu_Input_v2.1.1.47_mips.apk
       app/GoogleServicesFramework.apk
       app/MyGmail.apk
       app/NetworkLocation.apk
       app/com.android.vending-2.apk
       app/com.google.android.apps.maps-1.apk
       etc/permissions/com.google.android.maps.xml
       etc/permissions/features.xml
       framework/com.google.android.maps.jar
       lib/libinputcoreoem-2.so
       lib/libkpencoreoem.so

      Version の違いによるもの (paladin のみ)
       boot.img
       sndtest.pcm
       testsd.data
       bin/getpartionblkcount

      設定関係 (テキスト)
       build.prop
       customize/default_workspace.xml
       etc/media_profiles.xml
       etc/permissions/tablet_core_hardware.xml
       etc/disk_preparing.sh (ラベル名が違う)

      バイナリファイルは結構違うが、本質的な違いは わずかなようだ。

      ついでに書くと ... USBbootTool で書き込む際に basic 用の mbr-xboot.bin を書くと どうなるのか? 1.2 GHz でちゃんと動いたりするのかも。

      あと、basic 用も update.zip の中にある mbr-xboot.bin , boot.img , system.img を USBbootTool で書き込むことで インストールできそうだ。逆については update.zip の作り方を知らないので 無理。 USBbootTool は、2.3 CFW 用に用意した n7b_burn_tool.zip も使えそう。

    USBbootTool

      n7b_burn_tool.zip も使える。ただし、右のチェックボックスのチェックを外すこと。

      1.2 GHz 化

      basic の mbr-xboot.bin だけを書き込むことで、初期化なしに 1.2 GHz にできる。
      paladin の mbr-xboot.bin だけを書き込めば 1.0 GHz にできる。

        1.2 GHz にしてみたが、スリープさせていると 知らない間に暴走しているようになった。短期間のスリープではちゃんと復帰するのだが...

        1.2 GHz 化のせいかも知れないので、1.0 GHz に戻して様子をみることに。

        追記: 1 GHz に戻しても状況が変わらない。バッテリーが減ってるから、スリープ中になにか起きている?。

      追記: Novo 7 Paladin overclocking to 1.22GHz (and Basic 1.3GHZ)

      なんて記事が出ている。1.2 GHz よりもっとオーバクロックが可能なようだ。paladin の周波数が低いのは何故なんだろう? 手持ちの個体でギリギリの周波数ということ?

    カスタム system.img 案 (paladin)

       fonts/DroidSansJapanese.ttf (追加)
       etc/fallback_fonts.xml (編集 : 上記参照)

       bin/su (追加 Superuser-3.0.7-bb-mips32r2-ics.zip)
       xbin/su (../bin/su を symリンク)
       bin/busybox (追加 Superuser-3.0.7-bb-mips32r2-ics.zip)
       app/Superuser.apk (追加 Superuser-3.0.7-bb-mips32r2-ics.zip)

       app/Baidu_Input_v2.1.1.47_mips.apk (削除 )
       app/PinyinIME.apk (削除 )
       lib/libinputcoreoem-2.so (削除 )
       lib/libkpencoreoem.so (削除 )

       app/MyGmail.apk (削除 )
       app/com.android.vending-2.apk (削除 )
       app/Vending.apk (追加 or vending-2 をそのまま使う?)
       app/GMail.apk (追加 or MyGmail をそのまま使う?)
       app/com.google.android.apps.maps-1.apk (ない場合追加)
       framework/com.google.android.maps.jar (ない場合追加)

       app/NetworkLocation.apk (ない場合追加)
       etc/permissions/com.google.android.maps.xml (ない場合追加)
       etc/permissions/features.xml (ない場合追加)

       recovery.cpio.img (置き換え NOVO7P-recovery-signed.zip)

       build.prop (編集)
         ro.product.locale.language=ja
         ro.product.locale.region=JP
         persist.sys.timezone=Asia/Tokyo
       userdata.img :
         app/apkInstaller.apk (削除)
         app/ES_file_explorer_V2.4.9.8_mips.apk (追加 ainovo版)
         app/MoreLocale2.apk (追加)

      これで作った system.img を USBbootTool でインストールしてみる。
      プレインストールアプリは ES_file_explorer と MoreLocale2.apk のみ。

      userdata.img が小さいためだが、出来たら入れたいものは
       nicoWnnG-2011.1207.1-mips.apk
       MagicCode_ics_v1.1-n7b-n7p.apk
       ES_Task_Manager_V1.2.apk
       TubeMate_1.05.23.150.apk
       com.joeykrim.rootcheck.apk (Tasselhof-RootScript)
       com.speedsoftware.rootexplorer.apk (Tasselhof-RootScript)
       Documents_To_Go_V3.004.apk(ainovo版)
       YouTube.apk(ainovo版)

      基本は、マーケットにないものか ainovo版。system.img も空きは少ないから入れられるのはせいぜいこれぐらい。

        fun さんのコメントで update.zip を作るのは 可能だそうなので、ainol_update_temp_dir を作ってそこにアプリを入れるのが正しく userdata.img に詰め込まない方が良さそう。


      注意: これを作ってリリースするつもりは、ほとんどない。システムアプリはだいたい CWM のパッケージがあるようだし。あとは中国語システムアプリを削除するやつと 日本語フォントを入れてくれる CWM用パッケージがあれば事足りる。


      追記: この構成の動作確認

    • CWM OK
    • GMail/Maarket OK (置き換えたが動作 OK)
    • Font OK
    • 初期言語 , 初期タイムゾーン OK

      どうも大丈夫そうだ。

    パーティション関係

      Disk /dev/loop1: 0 MB, 921088 bytes
      1 heads, 63 sectors/track, 28 cylinders, total 1799 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00000000

      (basic 4.0)
      Device Boot Start End Blocks Id System
      /dev/loop1p1 131072 655359 262144 83 Linux
      /dev/loop1p2 657408 2754559 1048576 83 Linux
      /dev/loop1p3 57344 118783 30720 83 Linux
      /dev/loop1p4 2768896 15220735 6225920 b W95 FAT32

      (旧 basic 2.3)
      Device Boot Start End Blocks Id System
      /dev/loop1p1 131072 655359 262144 83 Linux
      /dev/loop1p2 657408 2754559 1048576 83 Linux
      /dev/loop1p3 57344 118783 30720 83 Linux
      /dev/loop1p4 2768896 16777215 7004160 b W95 FAT32

    基本は同じだが、FAT32 のサイズが小さくなっている。8GB のモデルにきっちり合わせた?

    以前の記事から抜粋。

    0x00000000 +------------------------+
    | mbr |
    0x00000200 +------------------------+
    | xboot | max 3MB - 512
    0x00300000 +------------------------+
    | boot.img | max 9MB
    0x00C00000 +------------------------+
    | recovery.img | max 14 MB
    0x01A00000 +------------------------+
    : :
    (partiton 3)| cache.bin | 32 MB
    : : (6 MB)
    : :
    0x04000000 +------------------------+
    : :
    (partiton 1)| system.img | 256 MB
    : : (1 MB)
    0x14100000 +------------------------+
    : :
    (partiton 2)| userdata.img | 512 MB
    : : (7 MB)
    0x34800000 +------------------------+
    : :
    : :
    (partiton 4)| vfat.bin | xxxx MB
    : :
    : :
    0x???00000 +------------------------+

    mbr に含まれるパーティション情報と USBBootTool を元に マップを作ると このようになっている。

    system.img のサイズは、ばらばらなのだが、最大は paladin の 240MB+α。一応 256 MB までは大きくすることができる。() の値はパーティション間の隙間。パーティションの情報を変更すれば この部分も使用は可能になる。

    あと、4.0 とかの system.img は、vfat.bin を書きこまなくとも 初期化するようだから user 領域を 広げるのは mbx-xboot.bin の パーティション情報 を変更するだけで良さそう。

    ICS ファームウェアまとめ (2011/1/13)

      上から読んでいっても分からないかも知れないので、まとめておく。

    • basic 中国語版 (4.0.1 ICS_MR0 eng.szhao.20111221.000803)
    • paladin 中国語版 (4.0.1 ICS_MR0 eng.dmzhang.20111230.155247)
    • basic 英語版   (4.0.1 ICS_MR0 eng.mdliu.20111227.112122)

      ICS に限定すると、いまのところ、この 3 種類。

      ファイル構成は、中国語版の paladin/basic であまり違いはない。basic 英語版は、中国語版から 中国語アプリと いくつかのファイルを取り除き、Youtube とかのアプリを加えたもの。

      『ES ファイルエクスプローラを除いて アンインストール可能なアプリを全部削除して basic 英語版 に 含まれるアプリをインストールしたもの』は、『basic 英語版に Market/GMail を追加したもの』に近い。

        basic 英語版にMarket/GMail を追加する N7B-ICS-Gapps.zip( CWM 用) がある。

      これをベースとして次のカスタマイズを行うことを推奨

    • ClockworkMod Recovery (CWM) の導入 (NOVO7B-recovery-signed.zip for basic, NOVO7P-recovery-signed.zip for paladin)
    • Superuser + busybox の導入 (Superuser-3.0.7-bb-mips32r2-ics.zip)
    • 日本語フォントの追加
    • nicoWnnG の導入 (nicoWnnG-2011.1207.1-mips.apk)
    • MoreLocale2 の導入
    • MagicCode の導入 (MagicCode_ics_v1.1-n7b-n7p.apk)
       MagicCode_hc_ics_v1.3.apk (3.2/4.0.1/4.0.3 に対応)

      次は好みで

    • TubeMate の導入
    • Dalvik Turbo の導入 (4.0.1/4.0.3) (Dalvik Turbo CWM Install Files by Pyth0n.rar, ミラー: dalvikturbo-mips32r2-fp.zip)

      あと paladin を 1.2 GHz にする方法がある。(たぶん大丈夫)
       ファームウェアを書き込むときに basic の mbr-xboot.bin に変えるだけ。

      ファームウェアの 書き込み方

        ファームウェアの 書き込む方法には 2 種類ある。

      • ひとつは、update.zip を microSD に置いてアップデートする標準のやりかた。

      • もうひとつは、update.zip に含まれている mbr-xboot.bin ,boot.img , system.img の 3 つのファイルを USBbootTool を使って書きこむやりかた。

        今の paladin のファームウェアは、update.zip の形式になっていないので、後者のやりかたしかできない。前者ができないぐらい壊れた状態でも、後者のやりかたで書きこむことができる。

          注意: VFAT 領域は、勝手には初期化されないようだ。初期化したい場合は、ダミーのファイルを指定して壊す。

        以前 2.3 CFW 用に用意した n7b_burn_tool.zip の USBbootTool も使えるが、右のチェックボックスを外す必要がある。
         わからない場合は ここ参照のこと。
        mbr-xboot.bin ,boot.img , system.img を元に update.zip を作成する方法もあるが、私はまだ勉強中。

      Tips

    • 自力でフォント変更できない人は、font changer を使うと良い。

      これ使うと adb の操作 なしで 全部できることになる。

    • スクリーンショットは ICS の標準機能

      音量(-) + 電源 長押し。

    • 中国語キーボードのアンインストール

      以下のファイルを削除して reboot
       /system/app/Baidu_Input_v2.1.1.47_mips.apk
       /system/app/PinyinIME.apk
       /system/lib/libinputcoreoem-2.so
       /system/lib/libkpencoreoem.so


    ICS 4.0.3


      http://bbs.imp3.net/thread-10548598-1-1.html

      Basic : update_Basic_4.0.3.zip 約 300 MB
      Paladin: update_knight_4.0.3.zip 約 300 MB (4.0.3 IML74K 651)

      公式版 http://bbs.imp3.net/thread-10550694-1-1.html
      Basic : 蜂巣版4.0.3公測固件.zip 約 300 MB (4.0.3 IML74K 715)
      Paladin: 騎士版4.0.3公測固件.zip 約 300 MB (4.0.3 IML74K 715)
      VFAT イメージ:(中国語版アプリばかり?)
       Basic 4GB 用 約 700 MB
       Basic 8GB 用
       Paladin 8GB 用
       

      MagicCode は、v1.3 が必要、DalvikTurboVMは、最初から 4.0.3 に対応
       MagicCode_hc_ics_v1.3.apk (3.2/4.0.1/4.0.3 に対応)
       DalvikTurboVM: CWM用パッケージ
       (ミラー: dalvikturbo-mips32r2-fp.zip)
      カレンダー同期の問題は、GoogleCalendarSyncAdapter.apk の更新が必要らしい。

      その他 CWM 導入済みの場合 2 回同じ update をするのが安全?
       失敗すると Wifi が使えないという問題あり? 2 回目の update で OK となる?

        1回目は、単に recovery.cpio.img を書き込むために行うらしい。
        起動すると /system/ にあるのを flash の所定の領域に格納する。

        2 回目で、それが動くのでアップデートできる。ということ。

        時間がかかるので、adb 使って /system/ にある recovery.cpio.img のバックアップを元に戻して アップデートをすると 1 回で済む。

      Host PC から Disk が mount できないという話も。
       PCのドライバの更新で直る?

      マーケットは、MoreLocale2 で 日本語導入後に接続するのが良い。

      4.0.3 のメリット:
       HTML5 対応?
       FXCameraとDolphinBrowserとPulseがちゃんと動く
       高速化 (Quadrant の結果)

      いずれも未確認、情報を集めただけ。

    Paladin に 4.0.3 (IML74K 651)をインストールしてみる。

      どうも良く分からないのだが、スリープでおかしくなるようになったので、4.0.3 に変えてみることに。

        ちなみに問題が起きたのは、スリープのみ。しかも短時間のスリープでは起きていない。
        現象は、電源ボタンを押しても復帰してこない。バッテリーはかなり減っている。本来ならば、数日間は持つはずで、スリープ中に暴走しているのではないかと思う。

      カスタマイズは、4.0.1 と同じく、上記のようにしたうえで再度 1.2 GHz に。

      何回か、タッチパネルが効かなくなった。が、一旦 sleep してすぐ復帰させると元に戻った。
      タッチしたところを表示させるようにしたところ、タッチパネルは反応しているのにアプリが一時止まっているような現象だった。
      正常ではあるみたいだし、1.2 GHz の影響ではなさそうに思える。

      しばらく使ってみたが、1.2 GHz にしたための不具合はないようだ。ちなみに使っているのは、4.0.3 IML74K 651 。最新版は、715 にまで番号が上がっている。

      4.0.3 から PC 接続で CDROM が マウントされるようになった。

      えんどう豆アイコンがでるが、どうせ使わないし、他のものと置き換えたいところ。/system/etc/cd_rom.iso がそれだから、adb と ドライバ(+ 編集したinf ファイル)の ISO 作っておいて、入れ替えると便利かも。

    Basic に 4.0.3 (IML74K 715) をインストールしてみる。

      CWM の問題があるので、USBbootTool を使った。これだとアプリが全然入らないから却って楽。

      CWM で、Root 化して、DalvikTurboVM を入れてみたのだが、なんかおかしい。

      busybox が エラーになるようになったし、DalvikTurboVM が入っていない。

      Root 化しない方が良いかも。

      それはともかく、715 になると 少し速くなるようだ。

    追記: Custom ROM by pinkflozd

      Paladin Custom ROM by pinkflozd

      とんと疎くなってるのだが ... こんなものが出ている。

        Kernel Features:
        Kernel 3.0.23
        Zram (256mb of compressed swap in ram)
        File scheduler set to BFQ
        VR, SIO, Deadline, CFQ, noop scheduler support
        Cleancache + KTZMEM
        Lot more improvements + Patches
        EXT4, XFS, JFS Support
        TUN + CIFS Support

      気になるのは、これ。XFS, JFS Support なんてカーネルソースがないと作れないだろう。... それはどこにあるのだろう? 

      その他についても徹底的にいじっている感じで Android の範疇を逸脱している感じまでする。なかなか素晴らしい。

    paladin の消費電流

      http://bbs.imp3.net/thread-10628979-1-1.html

      に Jz4770 , A10(Cortex-A8), RK2818(Cortex-A9) の消費電流の比較がある。機種は 7inch 800x480 で似た様なものを選んでいるようだ。(osakanataro 氏の twitterで知った)

      項目が多いので、どこを見るべきか ...

      まずは、憤怒的小鳥 ... Angrey Birds 。Angry Birds は、常に CPU 100 % で動作している。この状況でどれぐらいかというのは、分かりやすい基準かも。測定条件は、輝度 50 % , 音量 50 % とのこと。

      Jz4770  405 - 488
      A10 720 - 871
      RK2818 899 - 1110

      単位は mA だが、どこのポイント? バッテリー?

      動画、H.264 720p, 1080p

      720p 1080p
      Jz4770   276 - 349 372 - 442
      A10 474 - 638 564 - 654
      RK2818 659 - 976 850 - 1143

      720p だとどれも余裕があるから Angry Birds より消費電流が少ない。A10 は 1080p でもあまり増えてない。

      A10 はハードウェアアクセラレータの条件だと思う。RK2818は、NEON を使ったソフトウェアアクセラレータのはず。Jz4770 は、VPU を使っていると思うが、CPU と同じものなので、あまり関係なさそう。

      次に 待机 -- スリープ

      Jz4770   12.2
      A10 10.5
      RK2818 30

      スリープの状態には 2 つある。多分 アイドル状態でサスペンド状態ではない。といっても サスペンド状態は桁が変わるほど低消費電力ではない。DRAM のリフレッシュがかなり電流を消費するので、多分良くてこの 1/2 程ではないかと思う。

      ついでなので、Jz4770 の性能について

      http://www.zdor.cn/news/html/pc/230373.html

      PD10 という低価格 Android (TCC8923: A5 Single 1.2 GHz) の AnTuTu ベンチマークの結果が出ている。これと Paladin 1.22 GHz と結果を比べてみた。

        Paladin 1.22 G PD10
        RAM: 231 249
        CPU integer: 615 526
        CPU float-point: 242 364
        2D graphics: 240 331
        3D graphics: 392 1028
        Database IO: 155 230
        SD card write: 107 24
        SD card read: 102 67
        Total score: 2084 2819

      Total では大差だが、主に 3D の差みたい。2D も大分負けてるけど。
      唯一の救いは、CPU integer で勝ってるところか。これだと 1.0 GHz でも良い勝負。

      Allwinner A10 も PD10 と似た様な感じだったかも。Jz4770 は Mail-400 との差で 2D,3D が負ける。ただ、通常アプリのもっさり具合は CPU integer だと思うので ベンチで負けても体感上は 結構よい勝負のはず。
    posted by すz at 18:08| Comment(19) | TrackBack(0) | android

    2011年12月28日

    JZ47XXの動画デコード

    動画デコードがGPUの機能だと誤解している人が多そうなので、整理してみようかと思う。

    Jz47xx は、PMP用に使われた JZ4755 の世代から 同じ能力の CPU を 2個積んでいる。1 つは 動画専用プロセッサとして使われていて、SMP ではない。

    この CPU は、SIMD 命令を持っていて DCT/IDCT などの動画の処理が高速に出来るようになっている。ARM だと Cortex-A8 以降で NEON という命令群をサポートしているが、それと同じような機能だと考えて良い。

      細かいことを言うと SIMD命令 には、SIMD と SIMD2(JZ475X以降で追加) がある。これらをまとめて XMU(Xburst Multimedia Extension)命令 ということもある。これらの命令の詳細は公開されていないが、それを使った mplayer のソースコードは以下で公開されている。

      ftp://ftp.ingenic.cn/3sw/JZ4770/05mplayer/

      あと、Xburst の SIMD命令は、32bit を対象にする。NEON が 128bit を一気に処理できるのと比べると しょぼいのではあるが、命令が最適化されているのか 実用的なレベルになっている。

    要するにほとんど CPU とそれが持つ SIMD命令 が 動画の処理をしているのだ。

    ほとんどと書いたのは、他にも 動画用の機能があるため。ひとつは、IPU (Image Process Unit) と呼ばれるもの。これは、リサイズと 色空間の変換 をして フレームバッファに 画像を送り込む機能。回転はできない。

      GPU は、回転するときに使われるかも知れないのだが、メインの機能では関与しない(はず)

    JZ4760 からは、CPU の中に bitstream をハンドリングする 機能が加わっている。詳細はよく分からないが、CABAC と呼ばれているようだ。

    さて、VPU だが、上に書いた DCT/IDCT を含めていつかの機能しか持たない。

    • Motion compensation
    • Motion estimation
    • De-block
    • DCT/IDCT
    • Parser (JZ4760以降)

    これで全部。Parser というのがよく分からないが、CABAC を使った 機能に思える。

    JZ4770 は、CPU を 1GHz で動かすが、VPU は 500 MHz にクロックダウンしている。1080p のデコードではもはや フルスピードで動かす必要はないのだろう。


    ファイル → Parser MC IDCT De-block 色空間変換  → LCD
       (bitstream処理) (YUV → RGB)

    CPU/VPU CPU/VPU CPU/VPU CPU/VPU IPU     LCD-IF

    図で書くとこんな感じ。VPU で出来ることは CPU でも出来る。どう分担するかは コード次第。

    さて、JZ4770 の次の CPU として、Xburst1 の 40nm のプロセッサがある。(Roadmap) これには SMP の機能が追加されていることだけが 分かっている。VPU を汎用に使えるようにしたものだと思う。たぶん SMP として使う場合は、VPU は使えない。

      2012年1月発売予定の Aurora/Wizard は、Xburst1 の 40nm のプロセッサを使っているのではないかと思われるのだが、最初から SMP かどうかは分からない。

      対応するのは、結構大変だと思うのだ。最初は、VPU として使うようにして、あとで SMP 対応ファームウェアを出して来るような気がしている。

      あと、40 nm が 1.3 - 1.5 GHz となっているが、ちょっと 低いような。65nm の JZ4770 が 1.2 GHz までいけるなら 1.8 GHz 以上でも不思議はない。これも後で クロックアップするのかも。

    追記: GPU の 解説 URL
    posted by すz at 20:09| Comment(0) | TrackBack(0) | android

    2011年12月20日

    novo7新機種

    novo7 の新機種の情報が出ている。

    ここを見ると

    • novo7 paladin (800x480) カメラ/HDMI出力なし Flash 8GB 499元
    • novo7 basic (800x480) Flash 8GB 599元
    • novo7 advanced II (800x480) RAM 1GB / 899元?
    • novo7 wizard (1024x600) RAM 1GB / 999元?
    • novo7 aurora (1024x600 IPS液晶) RAM 1GB / 1199元?

    CPU は、全部 MIPS で android 4.0(ICS) , 静電タッチパネルなのも全部同じ。

      全部 MIPS というのは間違い。以下は、全部 MIPS の場合の考察

    筐体は全部同じに見える。( 画面外のボタンが消えた? )

    驚いたことに、日本では評判が良かった Allwinner A10 の機種が 消えて、全部 MIPS になっている。何故こういうことになったのか興味がある。あと、advanced II は 一体何が特徴なのか?

    機種として興味があるのは、aurora かなぁ。値段次第だが... 100元刻みだと考えると 899元。これより安いことはないはず。 999元かも知れないが どっちかという気がする。

    そうそう paladin は赤札天国で予約中で 7980円とのこと。カメラがむしろ邪魔な人には良いかも。

      追記 2011/12/27: 予約期間終了で、通常価格(9280円)になったようだ。499元だから 予約中は、16円/元 換算 で終了後は 18.6円/元 換算。まぁこんなものじゃないかな。

      ちなみに pandawill は、送料込み $ 109.99 (8776円)。

    さて疑問と予想

    Advance II とは?

      IPS液晶とは書いてないから CPU か メモリ が違うとしか思えない。4.0 になるとメモリを使うのかも知れないし 1GB のような気がするが、ひょっとすると 1.3 GHz とかクロックアップした 新CPU かも知れない。 従来の JZ4770 だったら 全機種同時発売でも良いぐらいだが、年内に発売されそうなのは、basic と paladin のみ。理由は CPU 待ちに思えてくる。

      1.3 GHz 新CPU + DDR3 1GB

      とりあえずこんな風に予想しておこう。ちなみに 1.3 G Hz の根拠は、年末に 1.3G Hz という噂を見たことがあるから。CPU名は予想できない。案外 JZ4770B だったりするかも。

    なぜこんなことになったのか?

      JZ4770 のマシンは他社からも出ると思っていたのに ainol からしか出なかった。いま考えると、安かろう悪かろうになるのを避けるためにメーカーを絞ったような気がしている。

      alnol 側も CPU だけ違う 2 機種を 出すという変な 製品ラインナップだった。こちらも 今となっては、JZ4770 の販売テストみたいな感じがしてくる。で、テストに合格したのか? ... 日本では散々だったと思うが、中国本国では 売れたのだろうか?

      結果は知らないが、ainol は、MIPS にかけるようだ。そして新CPU も ainol が独占するのだろう。

      そんな関係なら、開発も ainol + Ingenic社 共同で行なっているはず。MIPS 社もからんでいるかも知れない。

      さて、MIPS にかけるという判断ができるための要素。

      MIPS では動かないアプリの問題が解決される見込みがなければ、MIPS only はリスクがありすぎる。よくわかっていないのだが、google がなんらかの手を売って x86/MIPS も 対応されるようになるのだろうか? そうであれば、MIPS だから不利ということにはならなくなってくる。結構 期待してしまう。

    novo7 basic 1機種が出ただけで消える不安があったのだが、 JZ47xx の将来は 思っていたよりは明るいようだ。どう転ぶか分からないが、ここ一年で アプリの問題がなくなり、ある程度のシェアを獲得できれば 当面は安泰かも知れない。

      ... ここまで書いたところで、最初の リンク先 を見直すと、Allwinner A10 の機種があるかも知れないとのこと。

      もしそうならば、残念なことに、上の考察はハズレる可能性が高くなってくる。Aurora が A10 ならば、新CPU の可能性もない。もともと 予想に反して all MIPS らしい というのを前提にしている。前提が崩れるならハズレるのもやむなし。

      あと、Aurora は もうすぐ発表だそうだ。

    何故 ainol は JZ4770 / Allwinner A10 の 2種類を 出すのか?

      2 種類出すとしても、このラインナップだと どれが A10 なのだろう?

      Advance2 が A10 なのは良いとして、1024x600 が IPS液晶 と IPS液晶でないの 2種類なのが引っかかる。
      それに IPS液晶 の 方が JZ4770 で 千元(999元?) という話もある。

      そうなると、IPS液晶 でない方もへたをすると JZ4770 の可能性が。

      普通に考えれば、paladin/basic のみ JZ4770 で あと A10 にした方が 短期的には有利だろう。でもそんな売り方すると JZ4770 の独占(or 優先)権は得られないような気も。

      IPS液晶でないほうが、A10 だとすると また微妙なことになる。いっそのこと両方 IPS液晶 なら すっきりするのだが ... 。

      本当に paladin/basic のみ JZ4770 という可能性もある。そうなれば Ingenic の立場はよほど弱いと 思わざるを得ず MIPS の将来は暗い。どうなるのか、かなり気になる。

      で、本題の疑問なのだが、ラインナップが FIX しないと良くはわからない。とりあえずは、Jz47xx の優先権をキープした上で リスク回避だと思っておこう。そうであれば、いずれリスク回避の必要がなくなれば MIPS only にするはず。そうなれば安泰だが、まったく逆の結果も可能性としてはあり得る。

    新CPUはあり得るのか?

      あくまで希望的推測なのだが、あってもおかしくないと思っている。

      JZ4770 は 65nm プロセスなのだ。もう自分のところでは作っていないはずで、そうであれば ライバルの RockChip の 45nm プロセス(RK2918) と同じでないのが むしろ不自然。

      いずれは、45nm プロセスを採用するのは、ほぼ自明で 問題は時期。それが、新製品が出る今であっても不思議ではないだろう。

      年内 1.3 GHz という噂もあったので、大いに期待してみることにした。

      ところで、JZ4770 の独占(or 優先)権を得るための条件というものがあるはず。リスク回避のための A10 採用を許すにしても JZ4770より上位の機種を出すのを許すとは思えない。そう考えると IPS液晶でない方が A10 というのは納得できる。ただ、JZ4770 が最上位というのは、ラインナップとしてバランスが悪い。paladin のような 普及版以下の機種と同じCPU というのは やっぱり変。新CPU が(存在して)最上位に来ないと収まりが悪い。

    1024x600 の 2機種が両方 MIPS かも

      この記事 には、

        Ainolは上記2機種のほか、Basicをベースに解像度1,024×600ピクセル(WSVGA)のIPS液晶にディスプレイをアップグレードした「NOVO 7 Wizard」、「NOVO 7 Aurora」の発売も予定しています。

      なんて書いてある。A10 を 期待していた人には、がっかりするような内容だが ... 1024x600タイプの基板が共通なら普通にあり得そう。

      まぁ MIPSは、ainol からしか出ないが、A10 は、他社から出るだろうし。

      それはともかく、2 機種ということは価格差が大きそう。200元差では済まないかも。一応 799元 , 999元が予想なんだが、どうなるのかな。

      さて、上位 2 機種とも MIPS なら 本当に ainol は、JZ47XX に社運をかけることになる。それが可能になる条件が成立したと考えられるから、将来は明るそうでなによりだ。

      ... 予想はこれぐらいにしておこう。年末か年明けぐらいに実際に発表されるだろうし。

    Ingenic 社の Roadmap

      fun さんのコメントで、Roadmap が出ていることを知った。

      ここには、Xburst1 (2011年), Xburst2(2012年), Xburst3(2013年?) のロードマップが載っている。

      コメントには、適当なことを書いてしまったが、Xburst1 でも 65nm と 40nm があるような記載になっている。... となると Xburst2 は、2012年のいつかに出るもので、今回でる製品とは関係ない。

      Xburst1 40nm は、クロックが高くなるだけでなく、SMP が 新たに採用されるようだ。一時キャッシュも 2倍。たぶんこれが、Aurora/Wizard に採用されるのだろう。ただ、History で 2012年と書いてあるのがちょっと気にかかる。

        SMP は、今までVPU としてのみ使ってきた コアを 汎用に使えるようにしたものに思える。そうであれば、従来どおりの使い方もできるものかも知れない。Android としての製品は、SMP として使えるものになっていないかも。

        カーネルをはじめ対応するのは結構たいへんかもしれないし、あまり期待はしない方が無難かも知れない。

        追記: Ingenic 社は、CES (1/10 - 1/13) に参加するようだから そのときに NOVO新機種と合わせて 発表かな。それまでは、情報がなさそう。

      それとは、別に Xburst2 があるわけだが、結構すごいスペック。2命令同時実行+ 2スレッド +SMP 。64bit まで対応している。こんなのをいきなり設計できるとも思えないから、MIPS社のコアに切り替わるんじゃないかと思える。Ingenic 社というのは、低価格帯のみターゲットにしているイメージだったが、あまりに意欲的で驚いた。それとも 2012年は、これが低価格帯のコアなんだろうか?

      ところで、チップ(Soc)名 は、どうなるのだろう? Xburst1 が JZ47XX だとすると 40nm は、JZ4780 ? あと 65nm の方も JZ4770B になるような気がすこししている。

      さらに、Xburst2 は? JZ48XX のような ...

      予想をやめようと書いたのに、また書いてしまった。まぁ予想するのは、楽しいのだから仕方がない。

    Novo7 Paladin の 仕様

      Novo7 Paladin がいろいろなところで売られていて、スペックとか がちゃんと出るようになった。
      例えば pandawill のスペックから 抜粋すると...

        Model Ainol Novo 7 Paladin

        Flash Don't support it right now, support HTML 5
        Android Market Yes
        Youtube Yes
        Skype Yes
        Language Czech, Danish, Dutch, English, Spanish, French, German, Greek, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Swedish, Turkish, Chinese

      こんな風に書いてある。

      一応マルチランゲージで Market もちゃんと入っているようだ。

      ちなみに、Flash は No と書いてあるが、他のレビューだと

        Flash: Support Flash 10.3

      となっているものもある。どちらが正解かはよく分からない。

      それはともかく、旧 basic 用の 正式 4.0 ファームウェアが出てくれば、私の CFW も晴れてお役御免だ。

      追記: ... と思ったのだが甘かったようだ。

      赤札天国から basic用のファームウェアが出ているのでインストールしてみたのだが ...

    • 4.0.1 ICS_MR0 eng.szhao.20111221.000803
    • Kernel Version 3.0.8
    • 多言語対応になっている。 .. のだが日本語がない。
    • 1.2 GHz クロックアップ版
    • microSD , 内蔵FLASH ともに、ファイルを転送するとハングアップ。

      1.0 GHz の paladin では、ハングアップしないなら、1.2 GHz の問題? 3.2 も出ているがこれはどうなんだろう?

    ainol のすすめ

      最初の novo7 basic/advanced が出た時 basic を勧める理由は希薄だった。MIPS というハンデがある上に Allwinner A10 の方が 性能が若干上だったりしたからだ。だが、事情は変わりつつある。

      変わった事情というと

    • ICS 一番乗りなど MIPS の ファームウェアの開発に力を入れていることが明らかになった。
    • Ingenic JZ4770 を採用した機種が 他のメーカから出てこず、どうやら独占契約を結んでいるらしいことが分かった。
    • novo7 Wizard/Aurora という最上位機種が MIPS で、どうやら MIPS に社運をかけるらしいことがわかった。
    • Ingenic の Roadmap が出て、40 nm の 新 CPU のみならず、Xburst2 が予定されていることが分かった。

      相変わらず MIPS のアプリ事情は悪いのだが、ここまで力を入れるからには、良くなる見込みがあるのだろう。ひょっとするとそうはならないかも知れないのだが、『MIPS の アプリ対応が進む』と仮定しよう。

      MIPS と ARM の垣根が取っ払われてしまえば、ainol の MIPS 機を 勧める理由が出てくる。

    • コストパフォーマンス

      Paladin をはじめとして、現行はコストパフォーマンスはかなり良い。 Wizard/Aurora も 良いと期待できる。

      現時点のアプリ事情は悪いのだから、コストパフォーマンスが良くないと 相手にされないだろう。魅力はそれだけかというとそうではない。

    • (ファームウェアの)開発力

      ICS 一番乗りしたことからも分かるように、ainol +Ingenic の開発力は充実している。開発が終わったはずの JZ4770 についても 10bit の動画対応だとか、basic の 1.2 GHz 化とかいろいろやっている。
      開発力に差があれば、他の中華タブレットと比べて、ファームウェアの完成度で優位にたてるという期待ができる。

      中華タブレットの欠点は、開発力のなさだと感じている。だいたい、SoC メーカが出す ベースをカスタマイズして 終わりみたいな ... 。SoC メーカ自体がどれぐらい開発力があるかについてもちょっと怪しい。

      『MIPS の アプリ対応が進む』までは、コスパとこれぐらいしか、優位に立てる要素がないのだ。『MIPS の アプリ対応が進んだ』後は、これが優位として残る。... といいなぁ。

      2012年は、xburst1 の 新CPU 以外に xburst2 が予定されている。開発力が分散されてしまうと、思惑通りにならないかも知れない。これが、不安材料。

    2012年の CPU

      ARM について言えば、Rockchip RK2918 と AllWinner A10 の 2つが、優勢だった。特に A10 は人気だった。これらは、両方共最新ではない Cortex-A8 コア。A10 が人気だったのは、動画再生能力や消費電力で優位だったから。

      2012 年になると Cortex-A9 Dual Core に切り替わるだろう。これらに対抗するのが xburst1 40nm ということになりそうだ。

      xburst1 だと Cortex-A8 コアに若干劣るぐらいの性能。SMP がちゃんと使えれば、周波数の差でなんとか対抗出来る感じ。問題は製品が出荷される時期だが、Rockchip / AllWinner には先んじるはずだ。

      xburst2 が 2012年中に出るかどうかは、怪しい。とりあえず、2013年早々だとだと思っておこう。 とい言ってもどうなるか予想できない。Allwinner なんて A10 が出るまで無名だったし。

      Ingenic にしても、JZ4770 が出るまで 低価格タブレットの一角を占めるなど予想できなかった。むしろ JZ4760 しか出せなかった時点で 終わったと思ったものだった。

    追記: FREE WING さんとこの情報が更新

      かなり詳しく情報が載っている。

      ICS での日本語フォント インストール方法とか、要チェック。

      中でも気になったのは、不具合とファームウェアに関するもの。

        ●Novo7 Basic 問題発生

         P1) 画面が固まってハングアップ(死机)
         P2) 画面が乱れてハングアップ(花屏)
         P3) 画面の表面パネルの端が浮き上がる(翹屏)
         P4) タッチパネルの端を押すとギシギシ音がする(P3と関連)(響屏)

         NOVO7にはこの問題が多く発生しています。私の買った物も同様の問題が発生しました。
         P3と P4は「中華品質」と言う事で許容と言うか「納得」できますが、P1と P2は許容できないので新品交換をしようとしましたが、ファームの更新で改善出来る様なので様子見をします。とりあえず、現時点では安定した「製品」とは言えない感じです。

         その他にも掲示板などの情報では下記問題も多く出ているようです。
         P5) 液晶ドット抜け・常時点灯

         ※ この製品を扱う販売店はサポートが大変な感じがします。
         ※ その他、処理の負荷状況?で「キューキュー」鳴きます

        ●Novo7 Basic用の各種ファームウェア
        Froyo
         Android 2.2.1 2011/11/08版(最終版) ハングアップ多発

        HoneyComb
         Android 3.2 2011/11/25版 ハングアップ多発
         Android 3.2 2011/12/15版 ハングアップ改善?

        Ice Cream Sandwich ICS
         Android 4.0.1 2011/12/21版(初期提供版) ハングアップ改善?

      なんだか、まだまだな感じ。継続的に開発してくれるなら、まぁ許容できないことはないが...

    新機種の価格

      android-sale.com でリストが出ている。

      http://android-sale.com/ainol-novo7-aurora-android-tablet.html
      http://android-sale.com/ainol-novo7-advanced-ii-7-inch-android-ics-tablet.html

      などを見るとCPU は、1.5GHz powerful processor なんてぼかして書いてある。

      とりあえず価格をチェック。

        paladin $90
        basic $100
        advanced II $150
        wizard $170
        aurora $200

      basic が、600元 だとすると aurora は 1200 元ということに。-- 赤札天国だと通常価格は 2万円超えそう。予約特価で 2万円を切る感じか。

      クラムシェルなら 決まった体勢で見るから IPS でなくとも良いのだが 、タブレットは IPS が欲しくなる。高くとも aurora か。

        もうちょっと安いような気もするが、大差はないだろう。たぶん、赤札天国の予約特価に釣られることになりそうだ。

      advanced II が 900 元? なんか高い。

      メモリが DDR3 1GB だそうだから多少高くなるのは良いとしても ... それでも Allwinner A10 では高すぎ。これにまで、1.5GHz powerful processor なんて書いてあるし、最初の予想通り MIPS ?

      ... といっても 液晶がグレードアップしてたりしないと、買うメリットなさそうだ。

      もし、MIPS なら、基板が共通とかの理由があるのだろう。そうなると従来機とは違う液晶を採用してもおかしくはない。

      もし MIPS でないなら、MIPS が失敗したときの押さえの機種? そうであれば、液晶を換装して aurora/wizard クラスをすぐ出せるようにしているに違いない。

      発売日(うわさ, FREE WING さんとこから)

      極光:1月15日 (aurora)
      精靈:1月15日 (wizard)
      巫師:1月15日 (なにこれ?)
      領先2:2月1日 (advanced II)

      3 機種が 1/15 ってことは、CES 発表待ちの機種ということだろう。
      そういえば 新型筐体の basic があったはず。それが、上記で Advanced II と書かれたやつで 巫師 では?

      そして 真の advanced II (Allwinner) は別にある ... とか。

      ところで、意味的には 巫師 == Wizard 。精靈 は Elf , Spirit あたり。

      まぁ 騎士が paladin になったから、どうなるか分からないが。

    Ainovo の新機種 とか

      Ainovo ブランドから Swordman , Legend が出る。

      Swordmanは、Paradin タイプの筐体で、1024x600 の LCD 。さらに、フロントカメラと HDMI 出力がついたもの。

        よく見たら Paladin とは違う。Paladin は枠があるが、これはない。

      Legendは、Basic タイプの筐体で、1024x600 の IPS LCD 。あとスタンドがついている。

      この2つは、JZ4770 で CPU には変更ない。価格も あまり高くならないらしい。(Paladin/Basic に対してそれぞれ + 10-15 ドルとのこと)

      さらに FREE WING さんとこの情報では、Aurora 799元, Wizard 699 元, Advanced II , 599元で、いずれも Allwinner A10(?) とのこと。そして MIPS 機は、2月。

      いったいどういうこと? そして、同じ 7 インチでどれだけの機種が出ることになるのか?

      http://android-sale.com/?android_product_manufacturer=137

      の内容が変わっている。aurora/wizard が消えて swordman/legend になっている。advanced II はそのまま。basic は値上げ。

        paladin $90
        basic $100
        basic $110
        advanced II $150
        swardman $150
        legend $170
        wizard $170
        aurora $200


      ガセネタを元に 予約取っていたわけではないだろう。急遽予定が変わった?

      価格差から考察してみる。legend - basic が $60 。液晶しか違わないとすると IPS 液晶で +$60 。swardman - paladin も $60 だが、カメラ + HDMI コネクタ等が違う。IPS でなくとも 1024x600 の液晶は高い? .. そんなはずはないと思うんだが?

      swardman - basic としても $40 。swardman は割高なのか?

      aurora - legend が $30 。メモリ 1GB (+ 512MB) 分のみなら高すぎ。+ CPU のグレードアップ分でこんなものか?

    2011 CES

      CES が始まったのだが ... Ingenic の情報が少ない。新CPU の発表はなし?

      Ingenic Semiconductor、MIPSベースXBurst搭載$120のAndroid 4.0タブレットを用意

      この記事ぐらい?

      $120 って何? swordman ぐらいしか該当しそうなものはないのだが ... basic のことだと萎える。

      ところで、Xburst の CPU (タブレット?) を 中国市場で100万ユニット/四半期 を目標にしているとのこと。

      ちょっと調べたのだが、タブレットは iPad を含め 150 万台/四半期 の市場規模だそうだ。実際は この倍ぐらいな気がするが ... それでも 100万ユニット/四半期 とは無謀な目標に見える。スマートフォンは 1000万台/四半期 以上だったと思うので これも含めれば 無謀とまでは言えなくなる。

      とは言えかなり大胆な計画のようだ。

    Ainol から 公式記事が出ている

      http://www.ainol.com/plugin.php?identifier=ainol&module=article&action=info&articleid=414

      Ainol が公式の記事を出した。Advanced II / Wizard / Aurora とも Allwinner A10 (?)。

      全部 ボタンがなくなったタイプで swordman のような筐体。

      これで確定。

      Aurora 799元 も合っているかも知れない。これだけ安いと Advance 以上に評判が良くなりそう。といっても ICS だそうだから、ファームウェアの完成度が少々不安。

      Ingenic はどうした? 40 nm の CPU は? ひょっとして出せなかった?
      CPU 自体は作れても、カーネルが間に合わなかったという可能性もある。

      いずれにしても、チャンスを逃したのでは? これでどうやって 100万ユニット/四半期 を狙えるんだろう?

    筐体のタイプ


      basic paladin swordman legend

      W 112 110 120 111
      H 187.5 176 189 187
      D 12 13.2 11.5 13

      ainovo でスペックは出ているのでサイズをチェックしてみた。

      basic をベースにして見ると paladin は幅が若干短く 縦は 10mm 以上小さい。
      legend は basic に近いが スタンドのためのスペースの分 暑みがある。
      あと paladin のみ枠がある。

      swordman が新タイプで、aurora とかと同じっぽい。幅が 結構増えている。
      あと このタイプはメクラ蓋が側面にない。裏面にもネジ穴らしきものが見えない。
      -- どうやって分解するのだろう?

      あと、swordman/legend は共にフロントカメラが 2.0MP 。たぶん aurora なども 同じだろう。

    pandawill でも予約開始


             FreeShipping
      aurora $200
      elf $180 (旧 wizard ?)
      advanced II $140
      paladin $104 (参考)

      pandwill の場合 FreeShipping で送料が含まれている。android-sale.com とは違う。
      スペックは Allwinner A10 1.2 GHz 、aurora/elf は RAM 1GB 。

      paladin が 通常 $89 だとすれば、送料分は $25 ぐらいと見積もれる。

      とりあえずそう考えると 本体価格は aurora で $175 , elf が $155 , advanced II が $115 。思ったより高いものの aurora が 15600 円 ほどで入手できるのは確か。

    新機種 FIX

      赤札天国でも 予約が始まり 新機種は 次のものに定まった。

      Allwinner A10:
    • novo7 advanced II (800x480) RAM ? 699 元?
    • novo7 wizard (1024x600) RAM 1GB 799 元?
    • novo7 aurora (1024x600 IPS液晶) RAM 1GB 999 元?

      Ingenic JZ4770(MIPS):
    • novo7 paradin (800x480) RAM 512MB 499元
    • novo7 swaordman (1024x600) RAM ? 
    • novo7 legend (1024x600 IPS液晶) RAM ? 

      生き残っている basic も含めると 7inch のみで 計 7 機種。そして 新 CPU は出なかった。

        Ingenic の計画では 2 世代分の CPU が 2012年になっているし、数ヶ月後にはさらに新機種が出るだろう。だが、しばらくは考えないでおこう。

      しかし、これほどの機種を出すのは、一体どういうことなのだろう?

      A10 の場合、筐体もメインボードも共通だから作るだけなら 設計コストはあまり増えない。色違いのモデルを出すのと同じ感覚だったりするのだろうか? swordman を追加するとしても メインボード分のみで済む。ファームウェアも既にベースがあるから、あまりコストが嵩まないと見ておこう。

      つまり、この 4 機種は、従来の basic/advance のような兄弟機。だが、paladin と legend はちょっと違う。それぞれ専用の筐体だ。paladin は、普及を狙った低価格機で数が出るんだろう。専用のデザインでも不思議ではない。

      不思議なのは、legend 。なんでこれだけ違うのだ?

      一見すると basic/advance と同じように見えるが、USB コネクタが付いていたり、スタンドが付いていたりして、メインボードも筐体も違う。

      どうも卓上に置いて キーボードやコントローラをつなぐような使い方を想定しているようだ。そういえば、basic/advance は持つところがなくて困ったのだが、もともと 卓上に置くのがメインだと想定していたのかも知れない。で、評判が悪かったので 一般的な形状の aurora タイプにした。一方で卓上での使い勝手を良くした legend も作った。 ... というところか。

      paladin は、持って使うのを追求した感じがする。枠は持ちやすくしている要素だし、幅が一番狭く 片手で掴むのにも向いている。

      一応、特徴を出そうとしているのは いずれも MIPS 機であり、未だ ainol は MIPS の方を向いている ... と思っておこう。

      ところで、aurora タイプ は、スマートになった代わりに メクラ蓋がなくなっている。はめ合わせ式?
      IPS液晶 や 1024x600 の液晶のほうに気をとられるが、デザインは昔に戻ったような。分解できないし、いじる要素が減った。

      paladin は、実は面白いかも知れない。ハンドル付きのケースとかクラムシェル用のケースがサードパーティから出たりして... という展開は無理なんだろうか? 数が出て 長期間売られればあるいは ... という気がする。もっとも内部に隠れた USB HOST コネクタがないと厳しいかもしれないが。

        追記:

        http://bbs.imp3.net/thread-10540339-1-1.html

        ここに paladin の分解写真がある。



        内部には、USB 引き出し用らしき 4pin コネクタのパターンがある。これは改造の楽しみがありそう。Bluetooth を内蔵するようなことも出来そう。ただし 12Mbps で HI-Speed ではないはずだから、Wifi などはむり。

        ただ、位置関係から、抵抗式 タッチパネルのコネクタという気もする(これも 4pin)。その場合 JZ4770 の タッチパネルインターフェイスに接続されていることに。

      そうそう、800x480 で良いから IPS 液晶が改造パーツで出ないものかとも思う。

    Aurora の詳細

      ここに出ている。

      殻割写真とかもある。

      ところで、筐体の リアケース? (プラスチックの部分) は、Aurora / それ以外で違う。
      コネクタ位置も違うから Aurora のメインボードは 専用設計のようだ。

      あと、basic / legend の フロントの部分 (液晶側のケース) は 同じように見える。
      ここだけは共通化しているのか。

    追記: 2012/1/18

      Aurora の価格は、Pandawill が $167.99 (13500円ぐらい)になった。赤札天国も 14,780 円 での予約特価。ここから考えると 899元 ? さて、2 月になると思われる Swordman/Legend だが、これより安いのだろうか? 書いてあるとおり JZ4770 なら安くなくては おかしい。
      Elf が Pandawill $147.99/赤札天国 12900円だから Sowrdman なら 1000円-2000円ぐらい安くならないと。 Legend は 筐体が違うしわからないが、せいぜい Aurora と同じでないと。

      ただ、すぐにでも出せそうなのに 2月になってしまうのはどういうことだろう? これだと xburst1 40nm の機種 発売までの間隔が短くなってしまう。発売を遅らせて 新CPU に切り替えだと嬉しいのだが ... 。

      /proc/cmdline を見なおしたのだが、cpu_version=jz4770v1 という指定がある。ひょっとして 40nm 版は v2 なのだろうか?

    追記: 2012/3/7

      Swordman , Legend が出ない。これはもう 出ないんじゃないかと思えてきた。もうタイミングを逸しているだろうから仕切り直すに違いない。

      aurora は評判良いようで、そちらに注力? ただ、入手難みたいだし 実際に数が出ているのかどうかは、よくわからない。

      ところで、なにやら妙に安いタブレットが出てきている。

      ひとつは、LingYunXianFeng の LY-F2S

      Allwinner A10 512MB で $62(388元) 。写真を見るとコネクタが多い。USB Host もあるような感じ。

      いったいどうやったらこの価格で出せるのか? と思っていたら、インドネシアのメーカから $33 のタブレットが ... 情報元は MIPS の ニュース・リリース 。$33 というのは、販売促進のための特別価格 ということだそうだ。

      問題の CPU については、『SpeedUpレジスタードマーク Pad Iceは、1GHz周波数のMIPS-Based XBurstトレードマーク(TM) CPUを利用するIngenic社のJZ4770モバイル・アプリケーション・プロセッサを採用しています。』... ということで (壊れなければ)まともに使えるものになるかも。ちなみに、7inch マルチタッチ・スクリーン 。RAM 容量は 512 MB らしい  → 『SpeedUp Ice Pad : Specification and Price

      なんだか Paladin っぽい ... というかそのもの?

        スペックの方の写真は、カメラ付きだし、たぶん違うもの。そして、バッテリー容量 4100mAH やサイズ 176x110x13 は Paladin と同じような ...

        SpeedUp Pad Ice : Cheap Android PC Tablet こっちは最初の記事だが、写真は Paladin のように見える。

        製品ページ を見ると SpeedUp Pad と SpeedUp Pad Ice の 2 製品がある。Ice の方が Paladin 似で $33 。

      あと Ingenic 関係では、別のニュース・リリース も。

      Altair社の FourGee LTEチップ と接続するインターフェイスを追加した CPU を出すという意味らしい。たぶん 40nm のやつに採用されるのだろう。

        追記:
        LY-F2S は、pandawill で既に扱っていた。$96.99 (送料込み)。Paladin が $99.99 だから確かに Paladin より安い。Paladin にはない HDMI , USB HOST , (0.3mpixel だが)カメラが付いている。バッテリーは 3000mAH 。$62 というのは、セールかなにかの価格のような気がする。正規品だと $70 台という感じ。

    2012/4/12

      novo7 の新機種がまたまた出るそうだ。

      今度は Amlogic で Tornado (8726-M3L), Mars(8726-M3), Elf2 (8726-MX DualCore)。

      Aurora は人気があったものの製造上の問題を抱えていた。仕切りなおすのはおかしくはないが .... それにしても ... これだけチップを取り替えてちゃんとメンテナンスできるものなのだろうか?

      あるいは、ソフトウェアはチップメーカまかせだからこういうことになるのだろうか?

      さて、今年は、中華タブレットも Cortex-A9 Dual Core になってくるようだ。Allwinner は、Dual core が出せなかった?

      あと、今年は、ローコストのチップも出てくる。Allwinner A13 , RK2906 , TCC9823(Cortex-A5) 。共通点は Mali-400 。特に Rockchip は、GC800 からの乗り換え。

      これ以上 800x480 7inch を出してもしかたがないように思えるし、ローコストといっても 1 ドル2ドル安いだけのような ...

      ところで、Ingenic はどうなるのだろう? 以前のニュース・リリースによると、今年の第2四半期に、LTEを搭載したバージョンのサンプル出荷、2012年下半期に量産出荷だそうだ。新チップだから 40nm の SMP ?

      2012年下半期というと 6 月〜 もうすぐではないか。もっとも 40nm にして もともとの Dual Core を SMP として使えるようにするだけだから、作るのは可能だろう。

      ただ、単なる Dual Core なら Cortex-A9 dual に性能で負けるし、GC-860 も Mali-400 に水を空けられている。消費電力あたりの性能なら結構良さそうだが ...

      mips が 正規NDKに入ったようだし、Ingenic には持ちこたえて欲しい。

    追記: 2012/4/24

      Philips から Jz4770 を使った端末が出ているそうだ。

      Philips、MIPSベースのCPUを搭載したAndroid 4.0タブレットを発売

      1024x600 TFT(not IPS) の PI3800B2 が 1399元と Aurora より 高価 だが、有名メーカ製としては 格安?

      Wi-Fi b/g/n、Bluetooth 2.1+EDR というのは、嬉しい機能かも。

        追記: 2012/5/14 現在 taobao で 売られている。価格は 横ならびで 1299元。メモリは 512MB , Flash 8GB , バッテリー 4000mAH だそうだ。

      1.8 Million MIPS-powered Tablets Shipped to Date

      あとこんな記事が ... そうか ほぼ Paladin だけで 180万 台も出たのか ... これなら次はちゃんと出そうで安心した。

    Ingenic その他の話題 (2012/05/14)

      ぼちぼち JZ4780 という名前が聞かれるようになった。2012/9月に 出るとのこと。上記 LTE 関係では、Q2 サンプル Q3 リリースとなっていたが、少し遅れる?

      JZ4780 の CPU は Xburst1 で JZ4770 から想像できる範囲の性能になりそう。あと、GPU は、GC1000 あたり? これも Mali 400 に差を付けられそうな気がする。総合的には、そこそこの性能に低消費電力 ということになりそう。ただ、メモリコントローラは、JZ4770 はいまいちだったから なんとかして欲しいところ。DDR3 には対応するだろうが、バンクを活用できるようなものになるのかどうか?

      心配なのは、どこがタブレットを出してくれるのか? という点。ainol でも悪くはないが、ainol は、ラインナップがすごいことになっている。他に喜んで出してくれるところがあるのだろうか? あったとしても ファームウェアとかソースコードとか ちゃんと更新してくれるのだろうか? 結構不安だったりする。
    posted by すz at 12:35| Comment(6) | TrackBack(0) | android

    2011年11月15日

    CFW作成スクリプトについてのメモ

    novo7 basic 用 CFW を出したわけだが、これはもともとスクリプトで組んでいる。
    手動でやっていると、新しい ファームウェア が出た時に面倒になったり、なにか入れ忘れたりするから、スクリプトに覚えさせて 何度でも再現できるようにしているわけだ。

    このスクリプトを 新たに作りなおして公開することにした。

    • http://nmj.sumomo.ne.jp/my_cfw/mkcfw-n7b-2.1.zip (最新)

        主な変更点:

      • Dalvik Turbo VM -- Fruit Slice などが動かないため、デフォルトから外した。
      • YouTube.apk , Vending.apk -- osakanataro 氏 CFW 10/18 日版を ベースに。(sys_app に置いた)
      • mips 版 su(3.0.1) + Tasselhof-RootScript版 Superuser.apk (一応動く模様)
      • nicoWnnG の更新方法を変更。
      • osakanataro 氏版 busybox を とりあえず xbin/unzip として置いた。
      • VpnService.apk など不要そう システムアプリをアンインストール (/system/app-removed に移動)

    • http://nmj.sumomo.ne.jp/my_cfw/mkcfw-n7b-2.0.zip
    • 下記の mount の問題に対応したスクリプト : mkcfw-2.0a.sh

      ものはこれ。Linux マシンを誰もが持っているわけではないので、今回 実機でも動かせるように作りなおした。そのかわり Linux でやる場合には busybox のインストールが必要になる。

      実機での動作確認はまだなのだが、近い環境ではテストした。たぶん動くはず。

      これを使って、10/29 版の ファームウェアから CFW を作ると osakanataro 氏の nicoWnnG と RootKit が入り、入れ忘れた TurboFly3D も入る。あと heapsize も 40m になる。また、想定外の変更は入らないことも確認した。

      11/08 版に対しても、同じ変更内容の CFW は生成できた。(動作確認はまだ)

      使い方は、(動くのならば) CFW を入れた 実機の方が簡単。

        SDカードに解凍して、そこに オリジナルの system.img を置く
        adb で 解凍したディレクトリ にある スクリプトを実行する。

      これだけで、system-out.img/userdata-out.img というファイルが出来あがる。新しい ファームウェアだと 添付されている boot.img と合わせて ファームウェアを書き込めば OK 。( recovery.cpio.img を取り出し忘れたのだが、古いので代用できる )

      たとえ(CFW の生成が)動かないとしても、所詮はスクリプトなので、多少の知識がある人ならば自分で直せるだろう。

      env というファイルに いくつかの設定があるので、いくつかのパターンで CFW が作れる。これでより多くの人に試してもらって、次の CFW を仕上げたいと思う。興味がある人は是非試して欲しい。

      README も入れておいたので、読んでおいて欲しい。

      追記: ようやく実機で試せたのだが、

      mount: cannot setup loop device: No such file or directory
      cannot mount

      というエラーが出た。これは、/dev/loop0 とかがないため。しかも umount しても自動では 開放してくれないので、次々と loop デバイスを使ってくれる。

      mknod /dev/loop0 b 7 0
      mknod /dev/loop1 b 7 1
      mknod /dev/loop2 b 7 2
      mknod /dev/loop3 b 7 3
      mknod /dev/loop4 b 7 4
      mknod /dev/loop5 b 7 5
      mknod /dev/loop6 b 7 6

      こうやって作らないとダメだった。

      losetup -d /dev/loop0
      losetup -d /dev/loop1
      losetup -d /dev/loop2
      losetup -d /dev/loop3
      losetup -d /dev/loop4
      losetup -d /dev/loop5
      losetup -d /dev/loop6

      終わったら、とりあえずこれやって開放しないとダメ。(busy でエラーになるのが出るかも、でも他のアプリなので気にしない。)

      あと REDME.txt にも書いたが、busybox sh で起動する。

      以上の対策で作れることは確認。で、次 ...

      11/08 版で試したが、一応立ち上がって来た。言語の設定を直したので、端から日本語になっている。(とは言え多言語対応ではなかった。一回 英語にしたら MoreLocale2 のお世話になることに。)
      とりあえず、動かないらしい TurboFly3D を試したが、やっぱりダメ。ただ 強制終了ではなく、突然終了している。メモリは関係なさそう。heap 40m にしても レポートと変わらない感じ。

      カメラの collor effect というのを試したが問題なさそうな気が。

      Superuser はよく分からない。使えるアプリもいまのところ持ってないし。

      とりあえず、対策は必要なものの、実機だけで動くものは作れることは確認できた。

    スクリプトについてのメモ

      実行環境

      このスクリプトは、実機 / Linux マシン / qemu-user 環境 の 3 つで動かすことができる。

      ただし、環境の差異は env という設定ファイルで行っている。これについて

      REPLACE_DIR=/system # for self environment
      REPLACE_DIR=`pwd`/../system #
      #BASE_DAT_FILE=$REPLACE_DIR/userdata.img
      BASE_DAT_FILE=`pwd`/userdata-v65-20111111.img

      IN_NIB_FILE=`pwd`/RK43A_60BWFRT_RAMOSV65_20110817_1.bin
      IN_SYS_FILE=`pwd`/system.img
      IN_DAT_FILE= # extract automatically from system.img
      OUT_SYS_FILE=`pwd`/system-out.img
      OUT_DAT_FILE=`pwd`/userdata-out.img

      これは、一番最後に作った V65Pro 用の設定の例

      • REPLACE_DIR

        CFW 11/11 版の system.img を mount または展開したディレクトリ。実機なら /system だが、Linux マシンの場合 は、mkcfw-xx を展開したディレクトリの横に system を 展開していることを想定している。

        CFW では、フォントやら システムアプリやらいろいろコピーしているので、ここからまずコピーする。

      • BASE_DAT_FILE

        CFW の userdata.img の指定。novo7basic 用なら userdata.img をコピーしているので、$REPLACE_DIR/userdata.img で良いのだが、v65pro 用だとコピーしてなかったので、別途指定が必要。

        これ自体がベースで、ベースファームウェアからいくつかのファイルをコピーするような動作になっている。、

      • IN_NIB_FILE

        ベースファームウェアの指定で、A3 / V65Pro 用のみにある。ここから専用のコマンド split_nib を使って system.img を取り出している。

        $IN_NIB_FILE が存在しないと system.img を使おうとする。

      • IN_SYS_FILE

        ベースファームウェアの指定(2) 。

      • IN_DAT_FILE

        これはベースファームウェアの userdata.img の指定なのだが、system.img から取り出すようにしているので、無指定にする。

      • OUT_SYS_FILE, OUT_DAT_FILE

        生成する CFW のファイル名の指定。変更してもかまわない

      • PATH=/system/bin:/system/xbin:$PATH

        上の例に出さないが PATH を変更しているところもある。これは、後述の qemu-user 環境用。他の環境でも効いてしまうが、影響がないことを期待している。

      qemu-user 環境

        これは何かというと ... 実機と同じ ファイル・ツリーを Linux マシンに構築して、それを chroot して動かすという エミュレーションの環境。

      • ファイル・ツリー の構築。

        たぶん CFW の system.img を TOP/system にマウントするだけで良いと思うのだが、boot.img から 取り出した ramdisk を TOP に展開している。

        ramdisk のイメージは、 src に置いた split_bootimg.c を使って 取り出し、

        # zcat boot.img-ramdisk.gz | cpio -id

        で展開。

        その上で、qemu-user-for-x86_64.tgz を展開する

      • chroot

        # chroot /system/bin/busybox sh

        こんな感じで、その環境に入る。

      設定について

      APPLY_TURBO_VM=yes
      APPLY_LARGE_HEAP=no
      APPLY_EXTERNAL_BROWSER=yes
      APPLY_ROOTKIT=yes
      CLEANUP=yes

      これは、最後に作った V65Pro 用の設定。

      • APPLY_TURBO_VM
      • APPLY_LARGE_HEAP
      • APPLY_EXTERNAL_BROWSER
      • APPLY_ROOTKIT
      • CLEANUP


    mkcfw-a3-2.1.zip のテスト (Ronzi A3)

    • 2011/11/11 版 の CFW をインストール
    • SDCARD に mkcfw を展開
    • そこに、zImage_rz_60_a3_20110511.bin と userdata-a3-20111111.img をコピー
    • system-init.img.gz を 11/11 版 を作ったときのものに差し替え

      別途作った CFW が動かなかったので、入れ替えてみた。が、どうも関係なさそう。

    • env の REPLACE_DIR 書き換え
    • mkcfw に cd して busybox sh mkcfw.sh で実行
      実行結果:

        # busybox sh mkcfw.sh
        busybox sh mkcfw.sh
        ========= modes
        SELF=yes (ARCH=mips)
        APPLY_TURBO_VM=yes
        APPLY_LARGE_HEAP=no
        APPLY_EXTERNAL_BROWSER=yes
        APPLY_ROOTKIT=yes
        ========= files testing and mounting
        REPLACE_DIR=/systemis OK
        BASE_DAT_FILE=/mnt/sdcard1/mkcfw-a3-2.1/userdata-a3-20111111.img-- existant
        Original Firmware : /mnt/sdcard1/mkcfw-a3-2.1/zImage_rz_60_a3_20110511.bin-- extracting
        writing mbr-xboot.bin 842 KBytes
        writing boot.img 2678 KBytes
        writing recovery.img 2984 KBytes
        writing system.img 210905 KBytes
        writing userdata.img 67312 KBytes
        writing cache.bin 30724 KBytes
        writing vfat.bin 8 KBytes
        ro.build.version.incremental=eng.android.20110503.162254
        using large system.img -- mount OK -- copying -- done
        ===== building /mnt/sdcard1/mkcfw-a3-2.1/userdata-out.img
        replacing out/lib/mips/*.so
        removing nicoWnnG
        appending nicoWnnG-2011.1115.1-mips.apk
        == appling rootkit (apps)
        copying rootcheck
        copying rootexplorer
        == done rootkit
        filling zero
        == done userdata
        ===== building /mnt/sdcard1/mkcfw-a3-2.1/system-out.img
        changing build.prop
        #ro.sf.lcd_density=240
        dalvik.vm.heapsize=24m
        copying framework and some libs
        removing PinyinIME
        removing Provision
        removing Phone
        removing VpnServices
        replacing AppWidgetPicker
        replacing Gmail
        replacing GoogleBackupTransport
        replacing GoogleCalendarSyncAdapter
        replacing GoogleContactsSyncAdapter
        replacing GoogleFeedback
        replacing GooglePartnerSetup
        replacing Maps
        replacing MarketUpdater
        replacing NetworkLocation
        replacing OneTimeInitializer
        replacing QuickSearchBox
        replacing Talk
        replacing YouTube
        replacing kickback
        replacing soundback
        replacing GoogleServicesFramework
        replacing Vending
        replacing IngenicScreenCalibration
        replacing Launcher2
        replacing SeeJoPlayer
        replacing Browser
        replacing HTMLViewer
        replacing LatinIME
        replacing SpareParts
        replacing DroidSansJapanese.ttf
        == appling turbo vm
        copying libdvm.so-turbo
        replacing libdvm.so
        == done turbo vm
        copying new userdata.img
        == appling rootkit
        copying su
        copying Superuser.apk
        == done rootkit
        filling zero
        done
        #

      動作確認:

      • Superuser.apk

         Root Check
         - Superuser 2.3.6.3 -- OK
         - /system/bin/su がない が OK
         - user/group 0.0 の確認 OK
         - busybox v1.15.2 -- OK

         Root Explorer
         - /system の remount できず。(n7b は何故か最初から rw)

         Screen Shot It
         - rootの権限は許可したが 、動かない。
          rootの権限がないと言われる。


    mkcfw-v65-2.1.zip のテスト (Ramos V65pro)

    • V65Pro は、adb が動かないみたいなので、Ronzi A3 で代用

    • SDCARD に mkcfw を展開
    • そこに、RK43A_60BWFRT_RAMOSV65_20110817_1.bin と system-v65-20111111.img,userdata-v65-20111111.img をコピー
    • SDCARD に system ディレクトリを作成し system-v65-20111111.img を mount 。

      mknod /dev/loop0 b 7 0
      mknod /dev/loop1 b 7 1
      mknod /dev/loop2 b 7 2
      mknod /dev/loop3 b 7 3
      mknod /dev/loop4 b 7 4
      mknod /dev/loop5 b 7 5
      mknod /dev/loop6 b 7 6
      mount -t ext4 -o loop mkcfw-v65-2.1/system-v65-20111111.img system

    • env の REPLACE_DIR は無変更
    • mkcfw に cd して busybox sh mkcfw.sh で実行
    • 終わったら umount /mnt/sdcard1/system を必ずする。
      動作確認:

      • Superuser.apk

         Root Check
         - Superuser 2.3.6.3
         - /system/bin/su がない -- NG?
         - busybox v1.15.2 -- OK
         -

        -rwsr-sr-x root root 25976 2011-11-23 23:45 su
        -rwsr-sr-x root root 113920 2011-08-09 13:29 su-bak

        Ronzi A3 と同じにしているのに、何故動作が違うのだろう?
        あと adb が動かないのも不便。なんとかしたいものだが ...

         Root Explorer
         -

         Screen Shot It
         -

      • Media Player

        実は、ライブラリとか 2組み入っている。jz4760b と jz4760 の 2 つのディレクトリがあるものは、jz4760 を削除。system/lib の libomx*.so と libopencore* は、jz4760b にもあるので削除。
        こうやって inode 数を稼いでいる。

        で、動作確認してみたら 予想どおり動いた。


    以下設計メモ(初期)

    スクリプトを書くにしても、どういうコマンドがどういうオプションで使えるかについては、Android 実機 の環境はけっこうクセがある。busybox 自体、標準的とは言えないし、Android の toolbox はさらに簡略化されている。

    ls など 両方にあるものもあり、busybox ls としなければ困る場合もある。

    さらに、この CFW ではスクリプトを書きやすいように busybox からのリンクを作っている。

    というわけで コマンドなどについて整理が必要。

    あと、もともと この CFW は Linux 上のスクリプトで作っているが、busybox にもないものがある。また、付け足しなどしていて、けっこうひどくなっている。再設計しないと まずいことになりそうだ。

    まずは、どうやって作っているかについて整理しよう。

    • system.img

      もともとは、

      # dd if=/dev/zero of=system-out.img bs=1024k count=256
      # losetup /dev/loop6 system-out.img
      # mkfs.ext4 -N 1024 -b 1024 /dev/loop6
      # losetup -d /dev/loop6


      こんな感じで手動で作ったのだった。

      で、出来たものを

      custom_files/system-init.img.gz 

      gzip で圧縮しておいて、

      # gzip -d < custom_files/system-init.img.gz > system-out.img
      # mount system-out.img out_sys -o loop
      # tar -C n7b_sys -cf - . | \
      # tar -C out_sys -xpf -

      こんな風にしていたのだった。

      ここで最初の問題

      • busybox tar を使わないといけないにしても -p オプションがない。
      • cpio に変えるか。-- cpio はリンクしているからそのまま使える。にしても -p 相当をちゃんとやってくれるのか? 要確認
      • mount も 2 つある。これは、使われているという点で、toolbox の方が良いかも。

        # mount -o loop -t ext4 system-out.img out_sys

        mount もこんな風にしなければならないし、カレントディレクトリ で問題ないか要チェック。

    • userdata.img
      実をいうと、userdata.img は、V65Pro の userdata.img を持ってきて、中味を全部 delete して使っている。

      やはり、とりあえず全コピー。これで 準備しておいて、次の段階に移る。

        今回はどうするか ... というと サイズが大きくなった userdata.img が /system にあるので、それを使う。とにかく mkfs できないのだ。... となると、どこからか取ってこないといけない。

      こうやって、元の system.img / userdata.img と system-out.img / userdata-out.img の 4 つを mount する。

    • userdata-out.img の作成

      まずは、app 以下を全部削除。AngryBirds をシステムからコピーして、

        custom_files/lib/local.prop

      を -p オプション付きで コピー。cp は busybox の cp がリンクされている。

      次に osakanataro 氏の /data.data を tar ファイルで 持っていたものを解凍

      さて、今回はどうするか。userdata.img をコピーし、削除しないなら ファイルは残っている。新たに外から持ち込むこともできるし、動いているマシンのデータを取り出すこともできる。... いったいどれが良いのか?

      次、コピーすべきアプリは、custom_files/app に置いておいたものをコピーしている。
      これも もともと あるものだ。

      ... 結局 コピーした userdata.img をまず使い、それをモディファイしていく やりかたの方が良さそう。

      あと、turbofly3d は、オリジナルの userdata.img にあるはずだから 忘れずにコピーしないと。

    • system-out.img

      ちょっと端折る。

      • 基本は、custom_files/sys_app にあるものを app にコピー。
      • その上で tar ファイルで持っている 10/24 版の システム アプリを解凍
      • あと、いくつかの app の ファイルを削除
      • custom_files/lib/libdvm.so を -p 付きでコピー
      • custom_files/fonts にあるファイルを fonts にコピー
      • custom_files/sys_patch/*.patch を patch コマンドで当てる。
      • xbin/ に busybox へのリンクを作成

        BUSYBOX_LINKS="awk basename bunzip2 bzcat bzip2 chroot cp cpio diff \
        dirname du echo ed egrep expr getopt gunzip head hexdump hostname \
        less losetup mknod od patch printf pwd script sed sort swapoff \
        swapon tail tar touch uname unzip vi wc"

      今回はすでに /system/app などに入っている。そのかわり何をコピーするのかの リストを作らないといけない。

      パッチは、元ファイルがない。これは外から持ち込まないと。

    • 最後に dd コマンドを使って、/dev/zero から フルになるまで書き、削除。

      これは、圧縮が効くようにするため。

    以下ただのメモ

      環境変数

      /init.rc で設定されているもの

      init.rc: export PATH /sbin:/system/sbin:/system/bin:/system/xbin
      init.rc: export ANDROID_ROOT /system
      init.rc: export ANDROID_ASSETS /system/app
      init.rc: export ANDROID_DATA /data
      init.rc: export EXTERNAL_STORAGE /mnt/flash
      init.rc: export EXTERNAL_FLASH_STORAGE /mnt/sdcard
      init.rc: export EXTERNAL_UDISK_STORAGE /mnt/udisk

      mount の仕方
      init.rc: mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
      init.rc: mount rootfs rootfs / ro remount
      init.rc: mount tmpfs none /mnt/tmpfs nosuid nodev size=1m
      init.rc: mount ext4 /dev/block/mmcblk0p1 /system
      init.rc: mount ext4 /dev/block/mmcblk0p1 /system ro remount
      init.rc: mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev
      init.rc: mount ext4 /dev/block/mmcblk0p3 /cache nosuid nodev

      mount の仕方2
      disk_preparing.sh:/system/bin/mount -t ext4 /dev/block/mmcblk0p2 /data
      disk_preparing.sh:/system/bin/mount -o loop -t ext4 /system/userdata.img /sdcard
      disk_preparing.sh:/system/bin/umount /data
      disk_preparing.sh:/system/bin/umount /sdcard

      Options:
      -a Same as -dpR
      -d,-P Preserve links
      -H,-L Dereference all symlinks (default)
      -p Preserve file attributes if possible
      -f Force overwrite
      -i Prompt before overwrite
      -R,-r Recurse directories
      -l,-s Create (sym)links

      # tar
      BusyBox v1.15.2 (2009-10-22 17:27:43 CST) multi-call binary

      Usage: tar -[czjaZxtvO] [-X FILE] [-f TARFILE] [-C DIR] [FILE(s)]...

      Create, extract, or list files from a tar file

      Options:
      c Create
      x Extract
      t List
      Archive format selection:
      z Filter the archive through gzip
      j Filter the archive through bzip2
      a Filter the archive through lzma
      Z Filter the archive through compress
      File selection:
      f Name of TARFILE or "-" for stdin
      O Extract to stdout
      exclude File to exclude
      X File with names to exclude
      C Change to directory DIR before operation
      v Verbose

      dirname `pwd`
      basename `pwd`
      # chown root.root boot.img
      # chown 1000.1000 boot.img

      # rm
      rm [-rR]
      # type rm
      rm is a tracked alias for /system/bin/rm
      # busybox rm
      BusyBox v1.15.2 (2009-10-22 17:27:43 CST) multi-call binary

      Usage: rm [OPTIONS] FILE...

      Remove (unlink) the FILE(s). Use '--' to
      indicate that all following arguments are non-options.

      Options:
      -i Always prompt before removing
      -f Never prompt
      -r,-R Remove directories recursively

      #
      # cpio
      BusyBox v1.15.2 (2009-10-22 17:27:43 CST) multi-call binary

      Usage: cpio -[tiopdmvu] [-F FILE] [-H newc]

      Extract or list files from a cpio archive, or create a cpio archive
      Main operation mode:
      -t List
      -i Extract
      -o Create
      -p Passthrough
      Options:
      -d Make leading directories
      -m Preserve mtime
      -v Verbose
      -u Overwrite
      -F Input file
      -H Define format

      mount -r -o loop -t ext4 /system/userdata.img /mnt/out_dat
    posted by すz at 20:54| Comment(16) | TrackBack(0) | android

    2011年11月12日

    Novo7 basic 用カスタムファームウェア

    Novo7 basic を買ってしまったが使えなくて困っている人は結構いるようだ。私は MIPS CPU (の Jz4770) に 頑張ってもらいたいと思っているので、あんまり『使えないというイメージ』が定着するのも困る。そこで、そういう人向けに、カスタムファームウェア(CFW) を作って提供しようかと思う。ただし、お約束ではあるが、無保証だ。ショップの保証も効かないおそれもあるし、実際に適用するなら自己責任で。

    といっても、とりあえずのもの 。最低限度 できないと困るような 機能だけはなんとかしたつもりのもので、まともなファームウェアが出てくるまでのつなぎと考えてほしい。

    あと、困るということは、初心者ということになるが、ほんとうの初心者向けの説明をするのはしんどい。 最低でも 自分で Android 3.2 をインストールできる人を対象にするので悪しからず。

    注意! この記事は、最初に発売された 4GB の novo7 basic のための記事です。Android のバージョンも 2.2 と古いです。


      2012/1/1 追記:

      赤札天国の 『ファームウェア提供場所 』に Novo7 basic 用の 4.0 公式ファームウェアが来ている。古い CFW はもはやお薦めしない。

      さらに追記: 上記は、2011/12/21 版なのだが、実際に入れてみたら、USB経由でファイルをコピーするとハングアップする。残念なことに、日本語対応もしていない。2.2 の CFW で困っていなければ、アップデートは待ったほうが良いだろう。ちなみに、paladin でこの CFW は使えない(はず)。インストールしないこと。

    さて、作った CFW はどういうものかというと ..

    • Android 2.2 2011/11/08 版がベース
    • 日本語関係やら Gmail,Market などのカスタマイズは、osakanataro 氏『ronzi A3カスタムfirmware 20111024版』をベースにする。(一部 10/18 版に戻した)
    • 自分の好みの アプリケーションをプリインストール

    ぶっちゃけ、osakanataro 氏の成果を つっこんだもの。一応 Gmail や マーケットが使えることは確認した。ただ、こまかい調整はしていないので、少々具合が悪いところが出てくるかも知れない。

    前置きはこれぐらいにして、ものは、ここに置いた。

    同じようなファイルが 3 種類あるが、a3 は Ronzi A3 用 , v65 は V65Pro用 。Novo7 basic 用は n7b 。 実は Ronzi A3/V65Pro用 も合わせて作ったのだが、この記事は Novo7 basic をメインに説明する。

    • n7bcfw-20111120.zip は、Android 2.2 2011/11/08 版ベース ( 208MB )
    • n7bcfw-20111111.zip は、Android 2.2 2011/10/29 版ベース

    ファームウェアの書き込みツールも 合わせておいておいた。xx_burn_tool.zip がそれ。a3 と n7b の 2 種類があるが、実はほぼ同じもの。デフォルトの設定だけが違う。よく分からなければ、n7b_burn_tool.zip を使った方が無難。(a3 は、Ronzi A3/V65Pro 用設定)

    ファームウェアを解凍するとファイルが7つ出てくるので、書き込みツールで これらのファイルを指定する。

      このツールは、USBboot という CPU に組み込まれた機能を使って ファームウェアを書き込む。だから Flash 上のすべてのデータが壊れても書き換えられるのだ。無保証ではあるが、何度でもやりなおせるので、文鎮になるリスクは小さい。(というより、ハード的に壊れない限り文鎮にはならない) ... とは言え、元に戻すべきファームウェアがあってこそ安心してインストールできるわけだ。ちゃんとしたファームウェアの入手を薦める。

      Novo7 basic だと 音量− ボタンを押しながらリセットすると このモードになる。

      USB をつなぐと ドライバを要求されるので、ツールの ディレクトリ drivers/4770 を指定してドライバをインストールする。

      次に一旦 USB を外し、USBbootTool.exe を起動して、ファイルの指定を行う。7 つのファイルがあるので、全部指定してチェックマークを付ける。

      再度、USBboot モードにして USB をつなぐと ... 画面が進行して、ファームウェアが書き換わる。終了すると "ウケノヲ" という文字化けした文字列が出て、再度オペレーションできる状態になる。

      ここで、USB はいったんはずして、あと立ち上がってくるのを待つ。(10分以内で立ち上がる)

    初期設定

    あまり詳しく書くつもりはないが、面食らうかも知れないので、ポイントだけは説明しておく。

    • MENU を押すと、いきなりランチャーの選択が表示される。ひとつは、Zeam Launcher 、もうひとつは、中国語。

      中国語のやつは、オリジナルの Home 。別にこれを選んでもよいが、Zeam Launcher を選びたくなるだろう。

    • Zeam Launcher を選ぶ場合、黒い帯のところの 田のマークを押すと アプリケーション一覧が出る。

      最初にやるべきことは、MoreLocale2 での 日本語 設定。(11/20 版では不要)

    • 探すと "区域" というアイコンがあるので、これを押して 日本を選ぶ。

      このまま作業を続けても良いが、一部中国語のままなので、一回リブートした方が良い。

    • 日本語入力は nicoWnnG を使う (MIPSなので、いまのところこれしかない)

      about nicoWnnG のアイコンを選んで、実行すると 簡易な設定ができる。

    • 設定したら、最後に Setting → Languages & Keyboards で nicoWnnG を有効にする。

      あと、入力するところで、長押しすれば nicoWnnG が選べるようになる。

    • 画面の回転を行う場合、Zeam Launcher の設定が必要。

      General から Sensor rotation にチェックする。

      Ronzi A3 / V65Pro は Gセンサが ないが、RotatingScreen で縦画面にできるようになる。
      Novo 7 では、RotatingScreen を使うことはないだろう。アンインストールしても問題ない。

    • 設定 : HDMI 出力

      デフォルトで HDMI 出力が ON になっている。使わないなら Off にしておいた方が良さそう。

    • 設定 : タッチフィードバック

      Spare Parts (歯車のアイコン)で、タッチフィードバックを Off にできる。

      あと全体的なフォントサイズも。これは、特に Ronzi A3 / V65Pro で有用。

    • ファイラー

      いれているファイラーは、ASTRO というもの。ファイラーの機能以外に、アプリの管理ができる。不要なアプリがあれば、これでアンインストールすれば良い。

      インストールは、ファイラー の機能で可能。インストール前のファイルでも アプリのアイコンを表示してくれるので便利かも。

      トップ (横画面ではサイド) に出てくる アイコンは スライドできる。見えているもの以外の機能があるので、要チェック。

    • Turbo Fly 3D

      もともと Novo7 basic に入っていたものだが、入れ忘れた。どうしても使いたい場合は、バックアップをとっておくか、Android 2.2 2011/10/29 版ファームウェアから取り出してほしい。
      (念を押しておくが Flash の vfat 領域にバックアップしても意味がない。インストールするときに初期化される)

      update.zip を解凍すると、system.img が入っている。これを Linux-Reader で開くと userdata.img が取り出せる。取り出した userdata,img を開くと app ディレクトリに入っている(はず)。

    カスタマイズの詳細

      スクリプトを使って組んでいるので、どのように変更したかは正確に説明できる。ただとても面倒なので、後で。(後記)

      とりあえず入れたアプリの一覧

      • ファイラー ASTRO_3.0_218.apk (n7b から)
      • 動画 MediaPlayer.apk (n7b のみ) / SeeJoPlayer (v65 から v65/a3 へ)
      • pdf DocumentsToGo_V3.004.apk (n7b から)
      • ランチャー Zeam_Launcher_v315.apk (マーケットから)
      • ゲーム AngryBirds_2011-03-14_1.5.3_MIPS.apk(全部同じ)
      • ゲーム Fruit_Slice_V1.3.3.apk (n7b から)
      • ゲーム turbofly3d_4_V1.21.apk (n7b のみ: 入れ忘れた)

      • 日本語入力 nicoWnnG-2011.0823.2-mips.apk
      • ツール Advanced_Task_Killer.apk (IQQ M1 から)
      • 小物ツール RotatingScreen.apk , myVolume.apk , QuickRotationChange.apk

      • MoreLocale2 (n7b のみ)
      • ベンチマーク AnTuTu bench (マーケットから: 入れ忘れ)
      • マーケットなどのシステムアプリ (osakana 氏 20111024 版 と 10/18 版から)
      • Flash Player 10.1 (n7b から)
      • Dalvik Turbo VM (osakana 氏 20111024 版から)

      A3/V65Pro , Novo7 basic でだいたい同じになるようにした。Zeam Launcher を使っているのは、使いやすいのもあるが、A3/V65Pro で RotatingScreen と併用して縦画面にするため。統一する都合で Novo7 basic にも入れている。不要なら アンインストールすればよい。

      AnTuTu bench は完全に趣味。アンインストールして構わない。 入れ忘れた

      アプリはだいたいこんな感じだが、ほかにも少々手を入れた。

      system/app の変更詳細:

      最も重要な点だろう。これ と Dalvik Turbo VM 以外は、便宜を図るような変更だし。

      だが、困ったことに良く分かっていないので、osakanataro 氏の Ronzi A3 と同じにする方針にした。ファイル名が変わっているものがいくつかあるので、削除した上で 上書きコピー。

        削除:
        GoMarket_Ingenic_N802_VER_2_1_2.apk

        ronzi A3カスタムfirmware 20111024版 からコピー:

        AppWidgetPicker.apk
        Browser.apk (置き換え)
        Gmail.apk (MyGmail.apk 置き換え)
        GoogleBackupTransport.apk
        GoogleCalendarSyncAdapter.apk
        GoogleContactsSyncAdapter.apk
        GoogleFeedback.apk
        GooglePartnerSetup.apk
        GoogleServicesFramework.apk (置き換え)
        HTMLViewer.apk (置き換え)
        LatinIME.apk (置き換え)
        Maps.apk (MyMaps.apk 置き換え)
        MarketUpdater.apk
        NetworkLocation.apk (置き換え)
        OneTimeInitializer.apk
        QuickSearchBox.apk
        SpareParts.apk (置き換え)
        Talk.apk (MyTalk.apk 置き換え)
        Vending.apk (置き換え)
        YouTube.apk
        kickback.apk
        soundback.apk

        ronzi A3カスタムfirmware 20111024版 からコピー:

        Vending.apk (置き換え)
        YouTube.apk

        osakanataro 氏 の変更内容と合わせたので、こうなっている。余計なものまで置き換えてしまった可能性あり。

        このうち Vending.apk, YouTube.apk は、osakanataro 氏 CFW 10/18 版 と 10/24 版 でも違う。
        確かわざわざ古いものにしたとか ...

        追記: 11/20 版は、10/18 版にしてみた。

          - Android Market 3.1.3
          - Google Maps 5.9.0
          - Google Books 1.1.4
          - Google Talk 1.3
          - OI File Manager 1.16
          - Spare Parts 2.3.5
          - YouTube 2.0.26

        置き換えたもののバージョンは以上のようになっているとのこと。

        これら apk の大本は、『[GUIDE] Cruz T10x / T301: Rooting, Dalvik Turbo, Removing Bloatware, Gapps & Market & More』とのこと。

        注意: Youtube など Web 上の動画が見れないというレポートあり。

        • Browser.apk を置き換えたのが失敗?
        • あるいは YouTube.apk を新しいものにしたほうが良いのかも?

        オリジナルでも Youtube は見れないとのこと。この CFW は、オリジナルの機能を改善するわけではないので、見れないのもやむなしか?

        追記: 11/20 版はどうだろう?

        注意2: カメラで写真を撮ろうとしてカラー設定の選択で強制終了

        ただの強制終了ならまだ良いが その後 起動不可能になったとのこと。
        再インストールで初期状態にはできるが、データは失われる。要注意だし、重要なデータのバックアップは、忘れないように。

        追記: 11/20 版は直ったような?

        注意3 : Fruit Slice などが、すぐ終了してしまう。

        追記: Dalvik Turbo VM を使っていたのが原因らしい。11/20 版は直った。


      system.img ファイルシステム作成とか

        system.img は inode 数がギリギリなので、新規ファイルはあまり作れない。そのため、system.img を作り直している。サイズも 256MB まで拡大した。

        ファイルが多数作れるようになったので、busybox へのリンクを作っている。

          awk basename bunzip2 bzcat bzip2 chroot cp cpio diff
          dirname du echo ed egrep expr getopt gunzip head hexdump hostname
          less losetup mknod od patch printf pwd script sed sort swapoff
          swapon tail tar touch uname unzip vi wc

        これらのコマンドは adb で busybox xx と入力しなくても動作するようになったはず(ただし 未確認)。

        あと userdata.img もギリギリのサイズなので、大きくしている。大きくできたことで、 system.img に入っている AngryBirds を userdata.img に移動している。

        usr/flash/flash_player10_1.apk も userdata.img に移動したかったが、エラーになると面倒なのでパス。ちなみに flash_player は、ここからインストールされるが、普通のアプリと同じ扱いでアンインストールも可能。

        system.img の中に userdata.img を入れたので サイズが大きくなっている。空きスペースが 必要なら 削除しても問題ない。

    xx_burn_tool.zip について

      もともと Android 3.2 用の書き込みツールとして入手したもの。変更などなにもしていない。
      ただ、一回書き込むと、選択したファイルや設定がデフォルトになるので、xx 用として 置いている。

      これを調べたのだが、Ronzi A3/V65Pro 用の設定も入っていた。(動作確認済み)

      Novo7 basic は、CPU Jz4770 / ボード設定 4770_default.ini を選択するのだが、CPU Jz4760(B) / ボード設定 4760(B)_default.ini にすると Ronzi A3/V65Pro に書き込める。(もちろん選択するファイルは別)

      ただ、CPU を間違えるとまずいので、別のバイナリとしておくことにした。

    Tasselhof-RootScript

    実を言うと Root化って何?状態なのだが、有名らしい Tasselhof-RootScrip を見てみた。

      1. Check Tablet Connection
      2. Verify Tablet is ROOT Capable (with this script)
      3. Run ROOT Script

      ***** ADDITIONAL OPTIONS - (ROOT REQUIRED) *****
      4. Upgrade Android Market App
      5. Disable Services to Increase Battery Life
      - Phone, 3G, Bluetooth, Provision, VPN
      6. Re-Enable All Services
      7. Enable Only 3G Services
      8. Enable Only Bluetooth Service
      9. Enable Only VPN Services
      10. Quit

      以上がメニューに出るのだが、3 は、このマシンで実行してはいけない。ARMのバイナリ の su で 元の su を置き換えてしまう。

      busybox も インストールしようとする。(これも ARM のバイナリ)

      4 は、この CFW を使うなら 不要。5 -9 は省電力に役に立ちそうな気もするが、デバイスがないなら関係ないのかも。

      とはいえ、有用そうな ものは入っているし、これを元に CFW にパッチするようなものを作ることはできそうだ。

      5-9 について

        これは、system/app の apk を rename して使わないようにしたり 元に戻したりするもの。
        rename のルールは、!OLD%s.old 。%s は apk を含む元のファイル名。

        3g:
        Mms.apk
        Provision.apk
        TelephonyProvider.apk
        NetworkMonitor.apk
        Network3gMonitor.apk
        shortcut3g.apk
        Phone.apk
        bluetooth:
        Bluetooth.apk
        vpn:
        VpnServices.apk

      Root 化とは何?

        com.joeykrim.rootcheck.apk
        com.speedsoftware.rootexplorer.apk
        stericson.busybox.apk

        Superuser.apk (system/app)

        ARM バイナリの su を置き換えると書いたが、それ以外に以上の apk が含まれている。

        busybox は、不要だが、他のものは どういう機能なのだろう?

        osakanataro 氏のコメントより

        • com.speedsoftware.rootexplorer.apk
          通常read onlyでmountされている/systemパーテーションをread/writeでマウントしなおしてファイル操作を行うremount機能付きのファイラー

        • Superuser.apk + Superuser.apk専用suバイナリ
          Superuser.apk + Superuser.apk専用suバイナリ、というのは単純に「su」だけだと、ログも残さず、ユーザへの通知もされないので、suバイナリを実行するとsuperuser.apkに通知が送られ
          superuser.apkがユーザ向けのGUIを出して、そのsu実行に対してroot権限を与えるかどうかを選択させることができるといったもの。

        なるほど、そういうものですか。通信の方法が分からないと、互換性のある MIPS 版 su は作るのは難しそう。

        あと次のコメントも

        • 開発向けじゃない一般的なARM Android端末というのは基本的にadb接続すると、一般ユーザとしてログインする現状のjz47x0 Androidは、rootユーザでログインされている。

          この違いは ro.secureの値。
          /default.prop内のro.secure=0だとadbdがrootユーザで起動する。このため、adbで接続するとrootユーザになる。

        ... というわけで adb を使うオペレーションでは root 化は不要。ただ、root の権限で動作する rootexplorer のようなアプリは一体どうするのだろう?

        これにもコメントで回答が...

          これは、本来はユーザがGUI操作でroot権限を必要とする状況、というのはありえない、ということになってるからです。
          なので、標準で入っているsuはGUIからだとroot権限が取れない感じです。

          で、rootcheckもrootexplorerも、superuser.apk+専用suバイナリを想定しているようです。
          具体的にはcom.noshufou.android.suのパッケージがあるか、とか/system/bin/suか/system/xbin/suが存在しているか、とかをチェックしているようです。

          Superuser.apk+suバイナリは以下にソースあり
          https://github.com/ChainsDD

          MIPS用suバイナリを以下においてあります。
          http://blog.osakana.net/sw/superuser/su.zip
          /system/bin/su に置いて「chmod 6755 /system/bin/su」で権限をつければokです。
          (/system/xbin/su は別のファイル名にしました)

        あ、ソースがあったのですか。バイナリまで作っていただきました。やはり osakanataro 氏が参加されると心づよい。

        さて、これは標準に入れるべきか? root 取った状態で 売られている Android タブレット もありますが ... 入れたい人も入れたくない人もいそう。

        まぁスクリプトでリリースするなら、どちらも選べるようにできるか。

      (メモ: 元の su の動作)

        # ls -l /system/bin/su

        lrwxrwxrwx root shell 2011-10-29 05:08 su -> ../xbin/su
        # ls -l /system/xbin/su

        -rwsr-sr-x root root 109856 2011-10-29 05:08 su

        # su 1000.1000

        $ id

        uid=1000(system) gid=1000(system)
        $

      NOVO-7-Advanced-ROOT-Guide ... これは何だろう?

    追記: レポートについてのお願い

      問題についてのレポートは歓迎です。なにも情報を出さないより レポートを出してもらった方が 役に立つと思います。

      ですが、次のステップとして、できましたら次のことについて気にかけてください。

      再現性:

        システムのメモリ不足という可能性や、他に動かしていたものが関係して問題を起こしている場合があります。

        再立ち上げを行い、Advanced Task Killer で ほぼ全部のアプリを kill してから動かしても同じ問題になるかどうか?

        再現性があれば、他の人と 問題を共有できるので、問題が解決しやすくなります。

        再現性アリと書いたら上記の状態で試したことを意味することにしましょう。試さなかったとしても問題はないですが、そのことを 情報として是非載せてください。

        あと、再現性がなくとも、問題がなかったということにはなりません。なにか気をつけることで問題を回避できるなら、それは有用な情報です。

      CFW の問題かそうでないか:

        オリジナルの ファームウェア で出来ていたのに 出来なくなった となれば、どういう問題か絞りやすくなります。以前は動かしていないので分からないという場合でも、それ自体が情報になります。聞き直すことになったりするので、是非。

      heap 不足:

        メモリ不足 にも 2 種類あります。/system/build.prop に
         dalvik.vm.heapsize=24m
        という記述が あるのですが、24m では足りないのでは? という気もしています。
        3.2 では、40m になっているそうなので、もし出来るなら 40m に変更してみて欲しいです。変更して起きた問題なら、40m にしたことを併記しておいてください。

        adb を使った 編集の例は ひとつ前の記事に載せています。無理ならやむを得ませんが、出来る人が 追試してくれるかも知れません。

      他にもあると思います。追記していきますので、気がついたことがあればコメントに書いてください。

    今後について

      CFW を 1 つは出しましたが、既に 11/8 版というのがあるそうです。で、2.2系 公式がその後に控えています。公式が出た後は、3.2 系列 4.0 系列 となっていくそうです。

      これの面倒を見るというのは正直きついです。それだけでなく、巨大なファイルをアップロード/ダウンロード するのも 私も皆さんもきついんではないかと思います。

      それで、考えたのですが、 この CFW が動いているマシンで、ベースとなるファームウェアを元に CFW を作るスクリプト を 提供するのが良いのではないか?

      そうすると、ベースとなるファームウェアを元に(いろんな人が)いろいろ試すことが出来ますし、追加すべきアプリも このファームウェアに入っているわけで、ファイルの量を 相当小さくできます。

      adb を実行する環境が必須になりますが、必要なのはこれだけです。上記の Tasselhof-RootScript のなかに adb.exe と 必要な DLL は入っています。あと ドライバを入手すれば、sdk をダウンロードしなくとも adb は使えるようになるはず。まぁ これでOK というものが出来上がれば、私か他の誰かがアップロードするのは良いと思いますが ... それは出来ての話。

      この方向で検討しようと思っています。気になるのは loopback デバイスがいくつ使えるか。できたら 4 つ 使いたいですが ... loopback で mount したりするアプリケーションがあったりするみたいなので、不安だったりします。

      あとは、いろいろな問題についての 管理。問題があるということを この記事のコメントとして書いてくれれば良いですが、いずれ ちゃんと整理しないと 分からなくなるような ...

      それも 状況次第だと思います。他に CFW 出してくれる人が出るかも知れないし、その結果 必要なくなるかも知れない。 ... もし コメントが 100 超えるような事態になったら 考えましょう。
    posted by すz at 00:49| Comment(29) | TrackBack(0) | android