2011年6月23日木曜日

ぽっくりHub

引き続き、泥A8くん。
Hubを内蔵して使ってるんだけど、おかしな現象に悩んでいる。

気がつくと、Hubがぽっくり落ちる病(´・ω・`)

で、落ちたら落ちっぱなしじゃなくて、すぐに再認識されて何事もなかったかのように動いている。
Hubが落ちると、ぶら下がってるデバイスも落ちるわけで、、、
GPSレシーバーだと、再認識されたときにデバイス番号がずれるのでソフト側から行方不明になってしまう。

コレは困った。

症状を見ていると、一瞬切れてまた認識されている。
切れるタイミングは不定期で、外部USBデバイスをはずしていると落ちない。(実際はBluetoothがぶら下がってるけど大丈夫)

うーん、バスパワーの電流量不足かな?
動作中に限界になってプッツン切れて、すぐに通電復帰って感じに見える。
省電力のデバイスなら大丈夫っぽいけど。USBメモリとか。
んでも、GPSレシーバーだってそんなに消費大きくないと思うんだけどなぁ。
まぁ、確かに、泥A8の外部USBのバスパワーは定格出てないとは思うけど。
実際はどのくらいなんだろう。レギュレーター探すか。。。。

あるいは、CPU側の制御の問題かもしれない。
何らかの閾値を超えたら、CPU内蔵のHostコントローラーを回路的にシャットダウンする仕様なのか?

もし、電流不足なら、バッテリー側から直接、給電できるように改造するか。。。
レギュレータかます手間になるけど。

またまた、悩みが増えた(´・ω・`)


ちなみに、
freerunnerなほげーるライブラリの移植はたぶんおk。
USBシリアルドライバも含めて、C8lean 0.8 ベースで動いている。
gingerbreadになって作法が変わってたけどなんとかなったっぽい。
CFWの形はできたかな。
おk。

2011年6月20日月曜日

gingerbreadほげーる人

泥A8くんのgingerbreadファームが色々できそうなのでほげって遊んでいる。
froyo との大きな違いとしては、見た目にはあまり変わらないけど、内部的には便利になった部分が結構あったりして、ほげーる人にとってはかゆかった所が直ってたりイイ感じだ。

ほげーる人

ネアンデルタール人みたい(・∀・)

さておき、

泥A8くんのオリジナルファームにはGPSのNMEAメッセージを処理するライブラリが載っている。
バラしてみた感じでは、基本的なメッセージ処理しか行ってないので、レシーバーの機種によって動作を変更することはできない。
たとえば、メッセージ間隔とか、取得する情報の設定とかは固定だ。

で、うちのCFWはfreerunnerをベースに改造しているんだけど、これに載せかえられないかと考えた。
あと、pl2303以外のUSBシリアルコンバータへの対応。

んで、
ヒマなほげーる人は、この休み中にkernelとgingerbreadをmakeできる環境を構築してゴソゴソしてた。

kernel moduleのビルドは問題なし。
USB-シリアルコンバータのモジュールもロードできるようになった。
イイ感じだゾ、ほげーる人(・ω・)

で、GPSライブラリのロードなんだけど、
gingerbreadではfroyoと違い、GPSの処理部分が libhardware_legacy.soから隔離され独立している。
厄介だった libhardware_legacy.soライブラリから開放されているのは、ほげーる人としてはポイントが高い!(・∀・)
GPSな機能を変更するにはGPSなライブラリだけ置き換えればイイ。
おぉ、これだよこれ。おいらが求めてたのは(・∀・)

具体的には、
/system/lib/hw/
の中にあるライブラリ群がそうだ。
froyoにも同じような一部のライブラリはあったけど、gingerbreadではさらに強化されている。

で、早速、テキトー移植の freerunnerなほげーるライブラリを捏造して置き換えてみた。

(・∀・)うん。
なんとなく、動いてるっぽいね。

いいねーいいねーほげーる人(・ω・)

てなわけで、泥A8くんはgingerbreadなファームをベースにGPS拡張を入れてみることにする。

予定としては、これまでのetcファームと同等な拡張にしたい。

各種USBシリアルドライバのサポート
GPSレシーバーチップ初期化処理の実装
シリアルポート初期化処理の実装

こんな感じか。
これ、もし上手くいったら、他のgingerbreadな板にも簡単に応用できそうだな~。
(・ω・)ほげーる人

2011年6月18日土曜日

Bluetooth な GPS

こんなのを手に入れた。
GPSロガー。Bluetooth接続おkww
某東デジにあるのと同じ。
GPSレシーバーのNMEAメッセージをBluetooth経由でSPP送信してくれる装置。
本体側からはシリアルポートに見える。

で、コメントで教えて頂いたネタを元に、Gingerbread な C8lean 0.8 で動作テストしてみた。

巷では文鎮化が流行っているようだけど、うちのは全然へーきだった。
と言うか、もう何度も腑分けしたり、基板ほじったりしてるので、多少のことでは死なない不死身の泥A8になってるかもしれん(笑)


で、ほいっと、
BT-GPSと言う名前でscanできてペアリングもできる。
が、、、接続できないよ(・∀・)エラーが出る。
と言うのも、素のAndroidは、Bluetooth接続からrfcommをデバイスとして作らないっぽい。しかし、内部的にはペアリングできているので、シェルからhcitoolとかで作業できる状態にはある。
要するに、手動でほげればデバイスレベルで好きにできる。実際、できた。
いやん(;´Д`)

とまあ、自力でごりごり作業してもいいんだけど、とても面倒くさいので先人の知恵を借りることにする。

マーケットアプリで、Bluetooth GPS を LocationProviderもどきに仕立て上げるアプリがある。

今回試したのは2本。
どちらも常駐して動作し、内蔵GPSと同じような挙動をしてくれる。
行儀のいいGPSアプリならまず問題なく動作するらしい。

まず、Bluetooth GPS Provider
色々と高機能。
レシーバーチップの選択ができて、チップ特有の初期化設定も可能になっているのでなかなか優秀。
見た目の派手さは無いけど、機能優位。



次は、Bluetooth GPS。
NMEAメッセージも読めるし、衛星状況も見られるので確認用にはいい。
Enable Mock GPS Provider をオンにすると、LocationProviderへ位置情報をパススルーするので、GPSアプリもちゃんと動く。


どちらも、ちゃんと動作した。

Google Map もこのとおり、位置を拾ってプロットしてくれる。
Androidの設定-位置情報-GPSの設定は無関係なのでOFFでおk。

少し使ってみた感想など。

レシーバーを胸ポケットに入れて、Bluetooth GPS Provider で位置情報拾いながら外をうろついてみた。
ちゃんと捕捉してくれてるし、マップの位置も大きくぶれない。
何より、レシーバーと本体がひも付きでないのがイイ(・∀・)
車なんかでもレシーバーだけ電源入れて、ぽいっとダッシュボードに置いとけばいいので手間いらず。

でもって、本体のバッテリーを食わないのもイイ。
ま、レシーバーを充電しないといけないんだけどね。でも、本体のバッテリーがぐんぐん減ることを思えば全然おk。

思ったよりこれは便利!!(・∀・)

しかも、私が改造する手間も無い!!(爆)
これが一番、楽チンww

とりあえず、Bluetoothは内蔵しちゃうとイイ感じ。
改造泥A8のBluetoothレシーバーは今日も快調だ(・∀・)

Hubあぶり焼き

で、

せっかく、こんな面白そうなネタ基板があるんだから、FE1.1sを剥がしてみようw

まず、半田ごてで表面実装のコンデンサ、抵抗、などのチップ類を外していく。
外したチップは1個ずつセロテープに貼り付けて、マークを書き込んでおくとどこに実装されていたか分かりやすい。
こんな小さな部品でも、移植に再利用できるので大切に。

地球にやさしく。資源にやさしく。(`・ω・´)

問題はゲジゲジ君。
半田ごてと低温半田山盛り&半田バキュームがあれば剥がせないことはない。
ただ、機材が大げさになるから一般的じゃないな。
私のモットーは、できるだけ安く、身の回りのもので、簡単にできるように考えること。
要するに、単なる貧乏性ってことだな(´・ω・`)

んで、私がよくやる手口は、火あぶりの刑(笑)

こんな感じで、

(・∀・)ファイヤーーー!!!


基板面の裏から、ライターで直接あぶる。
まさに、基板のあぶり焼き。

ぢゅうぢゅうと美味しそうな匂いとは程遠い、
焦げくっさーい臭い漂うチップあぶり。

やり方は簡単。
ピンセットで目的のチップを挟んで、ライターの火の上でゆっくりあぶっていく。
あまり集中してあぶると基板が燃えるので、ふりふり動かしながら。
半田が溶ける程度まで、まんべんなく温度が上がると、そのうち基板がボロッと落下する。
ピンセットには綺麗に剥がれたゲジゲジ君が(・∀・)カンターン

綺麗に剥がれるし、失敗もほとんど無いのでとてもイイ。
ただ、火事に注意することと、くっさーい臭いは我慢すること(笑)


んで、おまけで、この基板の回路図も載せとく。
間違ってるかも知れんけど(笑)

空きパターンのアレ

突然ですが、

この回路には、USB-Hubチップが載っかる。

最初にバラしたときに、なんとなく予測はしていた。
空きランドと回路パターンを解析すると、先のUSB-Hub搭載記事で書いた、USB外部I/Fへの出力ラインと、CPUボードからの入力ラインが入り込んでいるのが分かっていたからだ。
ま、おかげで、USB-Hubの引き出しポイントを探しやすかったんだけどね。


で、予測が確信に変わった決定的な写真がコレ。



SlateDroidのMOD記事の中で引用されていた、メインボードの写真。
この2枚の写真を見て分かるとおり、ちゃんとチップが載り回路が組まれている。
Haipad M7+ の基板写真らしいんだけど、基本的に泥A8と同じもの。
違いは、上記回路が実装されていると言うこと。

で、色んなUSB-Hubチップのデータシートを眺めて、基板パターンと出力ピンの対応からここに載るチップ名も判明した。
チップ名は Terminus Technology Inc. FE1.1s

いや、実はね、、、、

ここで購入した、この基板が一番のヒントだった(笑)

この基板の回路パターンが、泥A8のこの回路のパターンにそっくりww
と言うか、ほぼ同じ。
何気なく手に入れたブツがビンゴとは(笑)
偶然とは恐ろしいもんだなぁ(・∀・)


で、泥A8の実際の基板パターンを追っかけた実配線図を置いておく。
ファイルは Paint.NET 用のファイルになっている。

da8-usb-circuit.pdn

レイヤに、基板の表裏(裏はミラー)の絵、それぞれのパターン、スルーホール位置、テキストなんかを書き込んでいる。
表示させたい情報をレイヤON/OFFすれば見やすい。
解析したい人の参考までに。

ただし、あくまでも、個人的に追っかけた(実機テスターチェック程度)結果なので間違いがあるかもしれない。取り扱い注意である。
いかんせん、歳で目が悪くなってきてるからのぉ~( ・ω・)

回路が分かる人は、だいたいどこにナニが載るのかは予想できるはず、、、ま、たいした回路ではないかな。
USB-Hubチップへの電源を作るレギュレーター部分はナニが来るのかわかんなかった。

おまけに、回路図も付けとく。
間違いだらけかもしれない(笑)



回路起こして、実装チャレンジャー募集中ww




当然ながらナニが起こってもオイラは知らん(・∀・)

2011年6月9日木曜日

続・指先GPS

どうも(・∀・)
毎日少しずつSlateDroidフォーラムからのリファラーがある。
MID816の How to make が人気らしい。
確かに、あのファームをばらしたり再構成するには手間が掛かるし、方法を知らないと絶対にファームをいじれない。
どうやら、うちが先駆けて記事にしたのを引用されてるっぽい。

でもね。
翻訳かけるとめちゃ英文が変なのよ(・∀・)
日本語の不自由な日本人が書いてるからゆるせよ同志。
ふいんき(なぜか変換できない)で嫁ww←これも訳せないだろうなw

さて、今日のネタは、ヨーロッパから取り寄せた品。
ココで書いたGPSレシーバーのネタの続編と言うべきか。
指先GPS(GM235)のアレはアレで小さいのはいい。
しかし、一つだけ欠点があって、小さいけど、分厚いのだ。
最大で7mmほどの厚みがある。
たった7mmだけど、中華パッドの厚みに収めようと思うと意外と難しい。
MID816のような大雑把な作りのケースなら空き場所を確保するのも容易なんだけど、泥A8クラスの小型端末になるとこれが入らない。

で、もっと薄いのは無いのか!?

ググレカス(・∀・)

ありましたよ。

じゃーんw

GlobalTop Gms-d1

はやり指先GPS。

面積はGM235と同じくらいだけど、ウスウス!!(2.1mm)
しかもこれ、チップアンテナが搭載されている。なんだかすげー。
これなら余裕で中華パッドにも内蔵できるよね(・∀・)

日本のショップにも似たようなチップアンテナ搭載の薄型GPSボードを扱ってるところはあるけど、何せ高い!
しかも、インターフェイスがシリアルのみ。


それに引き換え、Gms-d1はシリアル以外にUSBのI/Fも内蔵しているので好都合。
最低限、USBケーブルの配線だけすればそれだけで動く。
しかもお値段、\2,500円ほど。


実際に配線してPCにつないで感度を見てみる。
Windows7上では問題なくCOMポートに割り当てられたGms-d1くん。

このとおり、ちゃんと測位しますなぁ。
窓際で放置、1分ほどで測位したから、そんなに悪くはない。


データシートを読むと、感度を稼ぐためにGNDプレートを敷くといいよ!と書いてあったので、それらしきものを捏造してみた(`・ω・´)


テレホンカードにアルミ箔を貼って、アルミ箔が裏面になるようにGms-d1を載せ、チップアンテナ部分をくり抜いてクリップで挟んだだけ(笑)
たったこれだけでも、アンテナ感度は上昇。
いいねーいいねー(・∀・)

最初はチップアンテナに懐疑的だったけど、これだけ拾えればなんとかなるかも。

で、Linuxではどう認識されるかやってみると、

usb 2-1: new full speed USB device using uhci_hcd and address 3
usb 2-1: configuration #1 chosen from 1 choice
cdc_acm 2-1:1.1: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

と言うことで、cdc_acmドラバでドライヴできる\(^o^)/

さ、内蔵、内蔵(`・ω・´)

2011年6月7日火曜日

Dropad A8 と USB Hub

てなわけで、新品の泥A8くんを無慈悲に改造する(・∀・)

今日の妄想図はこんな感じ。

通常は、CPUに内蔵されているUSB HostコントローラからUSB外部I/FへDataラインが引き出されている。
それを、バイパスする形で間にUSB Hubを入れてしまおうって按配。

埋め込むUSB Hubの1ポートを既存のUSB外部I/Fに割り当てれば、問題なく外部コネクタも使える。
今回内蔵するUSB DeviceはBluetoothドングルを入れてみる。


ちなみに今回の改造は、初期型のA8が対象。
M7+とか、新型とかは対象外。


では、早速。

**!!注意!!**
この記事を元に改造して何かが壊れてもオイラは一切の責任を負わない。
全てにおいて自己責任であることを了解した上で実行するように。
表面実装のパーツを半田したり細かいワイヤリングをするので、それなりの器用さと経験が無いとできない。
死んでも知らん!!(;´Д`)

さてまず、完全にメインボードを取り出す。
バラシは慎重かつ大胆に行うべし。
まず最初に行うべきは、バッテリーを取り外すこと。

で、メインボードが剥き身になったら次の作業。
USB HostコントローラとUSB外部I/FのDataラインを切り離し、作業しやすい環境にする。
写真のとおり、メインボードの裏面の赤丸箇所。

拡大するとこんな感じ。
0Ω(0表記)と22Ω(220表記)のチップ抵抗が並んでいる部分がある。
ここが、Dataラインの分岐点になっている。
分岐点と言うのはまた今度説明するとして、とりあえず、この22Ω(220表記)チップ抵抗をすぐ隣の空きランドへ移植する。
剥がすのは半田を盛ってコテですくえば簡単に剥がれる。載せるのはピンセット必須。

ちょっと汚いけど(笑)こんな感じで移植。
で、写真のランドポイントからDataラインを引き出す。
ワイヤはふつーのUEW線。
この各線は基板表面で作業しやすいように、基板表の空きパターンのランドを利用して配線をする。


基板を表裏ぐるっとひっくり返して表面。
空きパターンの4箇所に、それぞれのラインを載せたところ。
それぞれの D- 同士、D+ 同士をショートさせれば、回路的には元通りになる。
配線ができたら、ショートしてないかテスターなどでちゃんと確認しておくこと!!

ここまで作業ができたところで、基板を本体に戻す。
裏面はとりあえずもう触らないから(・∀・)


ところで、USBに必要な+5Vは右の写真の箇所から引っ張り出す。
近くにGNDもあるので、ついでに引き出すことにした。

今回、埋め込むのは個人的に好きなUSB Hub コレ。
ふつーに買ったら1600円くらいするので、安売りを狙うか、違うHubでもおk。
小さくて埋め込みやすいので、違う意味で愛用してる(・∀・)

もちろん、こちらの安っすいのでもおk(笑)


で、サクッと埋め込んだ図(笑)
内蔵カメラ周辺の空きエリアにばっちり収納。



USB HubボードとBluetoothドングル。


Bluetoothドングルに1ポート、USB外部I/Fラインに1ポート。
今のところ、2ポート余り。
ナニを入れようかなぁ~♪(・∀・)

格納ができたら、バッテリー他の配線をして祈りながら電源ON!!

(・∀・)いいねーいいねー

仕切りなおしのA8

大陸から届いた荷物。
今回は、予算をケチってChina Post便で送ってもらった。
送料込みで$164也。
注文から10日ほどで到着だから、まぁまぁそんなものかな。

で、到着後、動作の確認をして、1時間後すぐに腑分け(笑)
まともに使われることが無いって言うのもなんだか可哀想だが

前の泥A8よりバッテリーが小さくなっている。容量は不明だけど、減ってたらショック。
んでも、周囲に空きスペースができたので、ゴニョゴニョするには都合がよい(`・ω・´)

おそらくメインボードのリビジョンは変わってない感じ。
実装チップの箇所も空きランドもまったく同じ。
けど、ところどころ改良が見られる。
たとえば、wifiアンテナの形状と場所。
裏蓋に貼り付けで、金属フレームの切り欠きの部分に来るように調整してある。
しかし、残念なことに感度は相変わらず悪い。
ていうか、このアンテナ本当に役立ってるのか疑問。。。。

ほかには内蔵SDカードのキャッチが動かないようにホットボンドで固定してあったり、側面の3つボタンのタクトスイッチも補強してあった。
液晶とカメラのフレキコネクタまでホットボンドで固めてあったので、問答無用で剥がした。
ばらすのに邪魔だし(笑)

で、前回予告したとおり、
USB Hubを内蔵してアレとかコレとかを載せてしまおう!
と言う流れになる\(^o^)/

載せるHubは、M001での実績がある
http://www2.elecom.co.jp/cable/usb-hub/u2h-tm400b/index.asp
このシリーズ。
安売り品をいくつか確保してある。

最近見つけた安価なモノとしては、
http://www.donya.jp/item/9964.html
コレ。安い!(笑)
ので、いくつか買ってみた。

バラすと、こんな基板が入ってる。
円形なのでちょっと埋め込みにくいかもしれない。
けど、小さいことは小さい。100円玉くらいの大きさかな?

乗っている石は、FE 1.1s USB 2.0 High Speed 4-Port Hub Controller

気になることがあるので、後でちょっと調べてみよう(・∀・)

とりあえず、手術の準備、準備♪