Thursday, June 24, 2010

Froyo hit AOSP


ほとんど憶測で書いてるので読み流してください。

Android 2.2 FroyoのソースがAOSPにきたのでざっと見た感じをまとめてみる。
おそらくFroyoってるブランチは4つ以上はあって、次のようになっているんだと思う。
  • AOSPのfroyo branch
  • AOSPのmaster
  • Google Internal froyo
  • Google Internal froyo-plus-aosp

Google Internal treeはみえないのでなんともいえないのだけど、froyo branchってのはある時点で切られて以降 AOSPとは切り離されて開発されてる。
で、落ち着いたら(リリースが見えたら)AOSPにfroyo branchとして戻す。
なので、その間にAOSP masterにcontributeされたコードの存在は見られない。(実際にない)

かといって整合性がとれてないといけないので、froyo-plus-aospブランチで整合性がとれるものしかAOSPのcode reviewでapproveしていない。
で、リリースが見えて、froyoを戻すとともに、AOSP masterにfroyo-plus-aospをマージすると。
まぁテストとかを考えると妥当な手順なのかもしれない。eclair以前もこんな感じだったのかしら。

結局何が言いたいのかというと、AOSP masterはすでにfroyoになっていてAOSP contributeも含んでいるが、froyo branchはgoogleのrelease branchなのでAOSP contributeは(おそらく重要なものを除いて)マージされていないということ。
要するにMMS fixもはいってませんでした、と。

で、今後のCM6を踏まえた展望なのだけど、CyanogenはCM6をAOSP froyo branchベースで開発するようです。
masterもfroyoになってるしmasterをベースにしたほうがいいんじゃない?と言ってみたのだけど、masterはカオスだからrelease branchでやってその都度必要なものをcherry-pick mergeしていくんだと。
そんなわけで現在は1から組み直してるような状況ですなぁ。
すこし落ち着いたらMMS fixをcherry-pickするように促してみようかと思います。

終わり。

Tuesday, June 15, 2010

Nexus One Portable HotSpot with Android WiFi Tether 2.0.5

FroyoでPortable WiFi HotSpotがサポートされましたが、Android WiFi TetherでもAPモードでテザリングができるようになりました。
現状2.0.5-pre2というバージョンでまだEXPERIMENTALですが、とりあえず動作はします。

以下に、FroyoのHotSpotとの違いを簡単にまとめてみました。

- Froyo標準 WiFiTether
動作環境 Froyo Froyo, CM5.0.7以降もしくは相当のkernel(SoftAPサポート)とbcm4329firmware(fw_bcm4329_apsta.bin)
暗号化 OPEN/WPA2-PSK OPEN/WPA2-PSK
アクセス制御 - MACアドレスフィルタリング
その他-チャンネル変更,LANアドレス変更,通知設定等
同時接続8制限なし?

カーネルのSoftAPサポートが必須なのでCM-5.0.7より前のバージョンでは恐らく動きません。(kernelの差し替えで動くかも)
また、bcm4329を積んでるハードウェアでなくてはならないので、NexusOne以外では動きません。
Desireでもカーネルやbcm4329ファームウェアファイルを用意すれば動くかもしれませんが苦労しそうです。

未確認ですが、ソースコードを見た限りではFroyo環境でも動きそうです。(rootは必要)

暗号化がWPA2-PSKのみになので、対応していないPSPやNitendoDSは繋がりませんが、暗号化なしにすれば利用できます。
標準のHotSpot機能に比べて、MACアドレスフィルタリングができるのでOPEN時のタダ乗りは一応防止できますが、通信内容の暗号化はされないので注意が必要です。

Update: CM-5.0.7.1で動作確認しました。

Wednesday, June 2, 2010

Fix Android MMS more.

Update:CM-5.0.8がでましたが、マージされてませんので作りました。

どうやらAndroidのMMSはもう少し修正が必要だった模様でして。(おそらく自分の調査が甘かった)
純粋なmultipart/alternativeメッセージを受信できません。(multipart/mixedかつmultipart/alternativeは受信できる)

というわけで修正をsubmitしました。Review:14917
(追記 2010/06/15: mergeされました)

CM-5.0.7.1/5.0.8-N1用とCM-5.0.7/5.0.8-DS用のupdate-zipを用意してます。

update-mms-fix-framework-cm-508-N1-signed.zip
(MD5:541d0bc06fc960369d6c4ced1b31aa21)
update-mms-fix-framework-cm-508-DS-signed.zip
(MD5:e11c520cb98445098c3effcb6134273f)
update-mms-fix-framework-cm-5071-N1-signed.zip (MD5:c046768f48cf47dd30c3fe50d42245cb)
update-mms-fix-framework-cm-507-DS-signed.zip (MD5:7be1a11c220d441308870bcbebb58bd7)

frameworkの差し替えになるので初回起動時にえらい時間がかかります(特にDS)。adb logcatでも眺めてましょう。

Tuesday, June 1, 2010

ntpd on CyanogenMod (busybox)

Androidの時刻同期ツールもいろいろとでてきましたが、実はCyanogenMod(5.0.7)にはntpdがはいってます。
といってもbusybox appletなので完璧なntpdではありませんが、複数のntpd serverとpeerして同期するくらいのことはできます。

使い方はadb shellあるいはTerminal Emulatorアプリから起動します。
$ ./adb shell
# ntpd -p ntp.nict.jp -p ntp.ring.gr.jp
# exit
[ENTER]
~.[ENTER]

adbの場合、ntpdがバックグラウンドへいくとshellを終了できなくなるので、強制的に切り離してます。
動いているかどうか確認するには ps ntpd とでもすればわかります。

端末の起動時に自動的に起動する方法はありません。
(/sd-ext/userinit.shから起動すると、その段階ではnetworkが起動してないので失敗します)

GUIもありません。

リソース消費にやさしいくらいしかいいとこないかもしれません。
常に通信を行うので電池の消費が気になったのですが、大したことないようです。