Android SDK 1.5 early-look

もうすぐAndroid 1.5が正式に出るらしいのだけど、その前に、early-lookとゆうことで、先行リリースされたので、mac版を落としてみた。
http://developer.android.com/sdk/preview/
emulatorの起動方法が変更になっていて、avd(android virtual device)とかゆうのを作ってからじゃないと起動できないらしい。SDKを作ってもちっとも起動できなかったのは、このせいかね?
新しくなったのは、当然、ロケールが日本語に対応したこと。オープンソース版の古いのだと、日付の表示がおかしかったけど、修正されたみたい。
設定の中で、地域設定のところでなぜかいきなり中国語が現れたのでビックリした。どうも、中国語の入力方式をどうするか、ということのようだけど、これは中国語ロケールの時だけでいいんじゃないかしら?

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ブランチなら動くかな?

masterがビルドできなくなってる

repo syncしてビルドし直したら、
external/opencore/oscl/oscl/osclio/src/oscl_file_native.h:141: error: field ‘sigbushandler’ has incomplete type
とかゆうエラーが出てビルド失敗。問題はつい1日ぐらいの間で起こったらしい。タイミングが悪いなあ。週明けぐらいまでには直るんだろうけど。
repoやgitで日付指定で戻せればいいんだろうけど、タグのないところには戻せないのかね。

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して問題がないかのテストをしようか。

D01NXを動かそう

Androidも少し使えるようになってきたので、D01NXをそろそろ動かそうかと。
というより、D01NXの方がメインじゃなかったっけ?
D01NXはAngstrom環境で動作するらしいのだけれど、今、Android 1.5を動かしている手元の環境は、Kernel 2.6.26。Kernel 2.6.23だと、Android SDK m5-rc15までしか動かない。これではちょっとねえ、ということで、2.6.26用でビルドできるように挑戦中。
ところで、AndroidのATコマンドと、D01NXのATコマンドを見比べてみると、基本は同じっぽい。ということは、ドライバさえできれば、Androidからダイアルアップできるのでは?