Qt/Embedded 4.5とゆう選択

Android on SL-C860もすっかりお休み中なところ。
ちょっと初心に返って、SL-C860をネット端末として再生する、ということだけ考えてみる。Androidもいいんだけど、欲しいのはWebブラウザだけなんだよね、って。
でも、w3mとかlynxじゃ物足りない、ってことで、WebKitだよね〜、Androidだよね〜、とゆう流れになってきたけど、いや、WebKitならもっと手軽なのがあるじゃん。Qtですよ、組み込み向けならQt/Embeddedですよ、と。
Qtは4.4からWebKitを内包しておられます。さらに、Qt 4.5ではWebKitが新しくなって、Androidと変わらないじゃんよ、と。
とりあえず、CodeSourceryのARM用ツールチェーンを入手して、configureしてみて、ビルドを開始してみたけれど、まあ、時間がかかりそうだなあ、とゆうか、ちゃんとできるのかね?
あ、bitbake環境でも「bitbake qtopia-core-gui-image」でビルドできるみたいね。Qt/E 4.4みたいだけど。こっちの方がインストールは楽かな?

masterブランチ復旧

約10日ぶりに、masterブランチがビルド可能になった様子。
OpenCoreがらみ
さっそく、ビルドしてSL-C860で試してみると、あら、起動ロゴが変わってる!Googyはどこへ?
でも、ロゴから先に進まないぃ〜[E:crying]

Android 1.0 for c7x0 を公開します

欲しい人がどのぐらいいるのかわからんですが、SL-C700/750/760/860でAndroidが体験できるであろうイメージを公開します。動作確認はSL-C860だけ。SL-C700はメモリが少ないから、swapすればもしかしたら?というぐらい。
とりあえず、暫定でAndroid 1.0 for c7x0 に置きました。68.8MBぐらい。
256MB以上のSDカードが必要で、zipファイルの中身をSDカードのルートディレクトリに展開し、ザウルスをアップデート。再起動したら、「root」でログイン(パスワードなし)して、

# cd /media/card
# ./android-sd.sh

として、1〜2分ぐらい待ってればGoodyが現れて、Androidが起動するはず。
KernelはAngstromのstableブランチから2.6.24ベース。
キーレイアウトとかはできるだけキーボードに書いてあるとおりにしてみてます。
CANCELキーは「BACK」に当ててます。「ENDCALL」がAndroidの電源ドライバを導入してないためなのか、動作しないので。
本当は、WebKitが新しいとか日本語メニューが出るから、とかゆうことで、Android 1.5を公開したかったのだけれど、Androidのmasterブランチがビルド障害になったままなので、release-1.0ブランチから作らざるを得なかったんですな。早いところ直らないかねえ?

cupcakeはビルドできたけど

masterブランチはcupcakeからのマージ中なのかいな?
ともあれ、masterブランチはどうやらビルドできる気配がないので、cupcakeブランチを落としてきてビルド。Goodie君は表示されるものの、その後、シャットダウン。何度やっても駄目。
SEGVでも起こってるのかしらん?と、起動中にもlogcatでログを吐かせておいて、再起動後に見てみたら、
D/ShutdownThread( 1590): Shutting down power.
と、勝手にシャットダウンしてるんですけども?
うーん。わからん。
release-1.0ブランチなら動くかな?

D01NX + Kernel 2.6.24も駄目

久しぶりに時間がとれたので、VMB5000ドライバをKernel 2.6.24でビルド。Kernel 2.6.26へのポートよりも変更点は少なく、usb_hcd_giveback_urb の引数を変更したのみ。
だけれども、動作結果はKernel 2.6.26と一緒。
「Unable to handle kernel NULL pinter deference at virtual addres 00000040」というエラーがvmb_en_queue_eventで起こってお亡くなり。addr2lineで発生位置を探そうとしても、デバッグ情報がなく。CONFIG_DEBUG_INFO=yにすればいいらしいが。さて。

Turn Off Radioが動作する!

SL-C860 + Kernel 2.6.23 + Android SDK m5-rc15 + D01NX の環境で、電波強度がなんで表示されないのかなあ、BERを取得するATコマンドは正しく動いているようなのに?
Kernel 2.6.26にドライバを移植して、Android 1.5を動かさないとだめかあ、と思うところ。
ふと、Cancelボタンを押していたら、「Power Options」が表示されることに気づいて。これはCancelボタンが終話(End Call)ボタンに割り当てられていて、長押しすると出るみたい。
「Power Options」のメニューの中には、「Turn Off Radio」というのがあるので、動くのかな?と選んでみると、D01NXのアンテナLEDが緑から赤に変化した。そのあと、同様に「Power Options」を表示すると、「Turn On Radio」とメニュー項目が変わっていて、また選択すると、今度はLEDが赤から緑に変わった。どうやら、電波のオン・オフのATコマンドは動いているらしい。

Kernelのバージョンとできてることのまとめ

一応、SL-C860で以下の使い方ができるのが目標、だということを再確認しておく。


  • D01NXが使える
  • MacBookをUSBケーブルでつなげば、ルーターになる(usbnetが有効)
  • 単体でもブラウザが使える(Androidが単体動作する)

で、現在できているところまでの、KernelのバージョンとAndroidとかその他のデバイス周りの星取り表。




































バージョン Android Android Power Wi-Fi usbnet D01NX AndroidでPPP
2.6.23 m5-rc15 OK OK OK OK N/A
2.6.24 1.5 NG OK NG NG NG
2.6.26 1.5 OK OK OK NG NG

現状、Kernel 2.6.23がベター。
ホントはブラウザだけなら、AngstromのGPEとWebKitと日本語化でもいいんでは、とも思うことがあったり。

Android SDK m5-rc15とD01NX

Android SDK m5-rc15では、rilがアクセスするシリアルデバイス名をKernelのコマンドラインに、android.ril=ttyACM0 と追加する必要がある。ttyACM0はD01NXを取り付けた時にできるttyデバイス。
Androidを起動しても、残念ながら、アンテナマークに変化なし。
Fn+←でコンソールに降りて、dumpstate でデバイスの状態をダンプして、RADIO LOGの項目を見てみると、確かに、D01NXとATコマンドでやりとりできているらしい。だけども、ATコマンドのいくつかはエラーが出るし、Exceptionも発生してる。一応、電波強度をとっている形跡もあるんだけどなあ。
とりあえず、AndroidとD01NXがなんらかの通信ができそうだ、という希望がもてたので、次に進もう。

D01NXをSL-C860 + Kernel 2.6.23で認識

半日ほどかけて、Angstrom stableブランチを最初から落とし直して、Kernel 2.6.23にしてビルド。まずはAndroidのパッチは当てずに、console-imageを作成し、kernel-module-usbcoreとkernel-module-cdc-acmのモジュールipkを作成(といっても、勝手に生成される)し、さらにuucp(cuコマンドを使うため)をビルドした。
console-imageをSL-C860に焼いて、モジュール2つとcuをipkgでインストール。さらに、vmb_csとvmb_hcdをコピーして、depmodを行った。このあと、D01NXをCFスロットに差し込むと、あら不思議、/dev/ttyACM0 ができますよ!
cuコマンドを使って、ttyACM0とATコマンドのテストを行って、ちゃんとつながっていることを確認。やったー!
Androidが使うというATコマンドをかたっぱしから入れていったら、ERRORを返したのは、以下のコマンドだけ。

AT+CMUT
AT+CIMI
AT+CNM

ところで、よくよく見たら、ネットインデックスのATコマンドリストには3GPPのほとんど載ってないじゃん。確かに、ほとんどはoptionalだけども。
さて、次は、m5-rc15と接続できるか試してみようかな。
それとも、vmbドライバを自分でbitbakeして問題がないかのテストをしようか。

古いAngstrom用のipkgがすでにない

こちらを参考に、Kernel 2.6.23版のc7x0用Angstromをダウンロードしてきて、さあ、D01NXを動かすぞ、と思ったのだけれど、Feedからすでに2.6.23用のipkgは削除されているようで、kernel-module-cdc-acm がインストールできない。がーん。
stableブランチをチェックアウトして、環境構築からやり直しかな。とほほ。