またcupcakeがビルドできなくなったので調べてみる。

7/19にcupcakeのビルドエラーについての対処法を書いたが、その後、またいろいろ変わっているようで追記をしてみる。

解決策

これまで.repo/local_manifest.xmlに書かなければならなかった記述が、標準のmanifest.xmlに追加されたらしい。android-platformグループのやりとりを見ても、結局どうしたらよいかはっきり書いていない。
結局いろいろ試して、

.repo/local_manufest.xmlを削除する。

という結論に行き着いた。

他の方々の情報を見てもこの対処で正しいらしいが、こういう話はちゃんと公式にアナウンスして欲しいものだ。

cupcakeがビルドできなくなったので調べてみる。

いろいろいじったりする必要があったので、最新のソースでcupcakeをビルドしようとしたら、エラーが出るようになってしまったので調べてみた。

エラー

自分の過去のメモ
http://d.hatena.ne.jp/linuzau/20090223/1235398140
あたりを見ながら進める。

ところが、

Initializing project platform/vendor/htc/dream ...
fatal: The remote end hung up unexpectedly
error: Cannot fetch platform/vendor/htc/dream

のようなエラーが出てrepo syncが止まってしまう。

解決策

android-platformグループのやりとりを見てると、カーネルソースの整理中らしく、このようなエラーが出てしまうらしい。
回避策としては、.repo/local_manufest.xmlを、


 
 
 
 

となっているのを、remove-projectの行を消すのと、platform/vendor/htc/dreamをplatform/vendor/htc/dream-openにすると良いらしい。すなわち、


 
 
 

のように書き直す。うまくビルドできているようなのでこれで良いことにする。

HTC Dream(aka T-Mobile G1, Android Dev Phone 1)でwifi-tetheringを試してみる

愛用キャリアであるドコモよりHT-03A(HTC Magic)が出るとのこと。これまで夢の中でしか使えなかったのが、ついに現実の世界で使えるようになるということで、喜んでドコモショップに予約しに行ったが、断られた。発売日が決まるまで予約は受け付けないとのこと。
悔しいので夢の中(HTC Dream)で遊ぶことにした。HT-03Aでは恐らく封印されているであろうWifi Tetherを試してみることにした。

Wifi Tetherと言うのは、GSMやUMTS(3G)回線上のIP接続をWifi接続した機器にシェアすることである。下記よりWifi Tetherパッケージと、対応カーネルをもらってきてインストールすると使えるようになる。
http://code.google.com/p/android-wifi-tether/

インストール

まずは素直に使ってみる。下記の手順はcpucake専用なので注意。
ここhttp://code.google.com/p/android-wifi-tether/downloads/listからsigned_andTether_0_97_1.apkをもらってきて普通にインストールする。

$ adb install signed_andTether_0_97_1.apk

それから、adp-1_5-kernel-update.zipももらってきて、SDカードに書き込み、

$ adb push adp-1_5-kernel-update.zip /sdcard/update.zip
$ adb shell sync

リカバリモードでインストールする。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。

使い方

Wifi Tether for Root Usersを起動。メニューからWEPキー等を設定しておく。準備が終わったらトップ画面のアイコンを押してTether開始。
接続する端末側は、Wifiをadhocモードにする。
後はadhocモードで接続すれば、つながって、3G上のIP接続を利用できる。

改造

せっかくなのでクロックアップをしてみた。
まずはオリジナルwifi-tether対応のカーネルからconfigを取り出す。

$ adb pull /proc/config.gz .
$ gunzip config.gz

できたconfigをkernelディレクトリに.configとしてコピーしてから、いつものパッチを当てる。

--- arch/arm/configs/msm_defconfig      2009-03-21 23:01:52.000000000 +0900
+++ .config     2009-05-01 15:29:15.000000000 +0900
@@ -35,8 +35,8 @@
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+CONFIG_LOCALVERSION="-00392-g8312baf"
+# CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 # CONFIG_SYSVIPC is not set
 # CONFIG_POSIX_MQUEUE is not set
@@ -221,8 +221,8 @@
 CONFIG_MSM_CPU_FREQ=y
 CONFIG_MSM_CPU_FREQ_ONDEMAND=y
 # CONFIG_MSM_CPU_FREQ_SCREEN is not set
-CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=384000
-CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN=245760
+CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=528000
+CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN=128000
 CONFIG_MSM_HW3D=y
 CONFIG_MSM_ADSP=y
 CONFIG_WIFI_CONTROL_FUNC=y

出来上がったカーネルを下記に置いといた。
http://tetsu.homelinux.org/android/index.html
http://tetsu.homelinux.org/android/update-1.5-v5.zip

カーネルイメージの書き込み

adp1とUSBでつながっている状態で、

  • カーネルイメージをSDカードにコピー
$ adb push update-v5.zip /sdcard/update.zip
$ adb shell sync

として、SDカードにカーネルイメージをコピーする。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。

HTC Dream(aka T-Mobile G1, Android Dev Phone 1)の公式cupcake用クロックアップカーネルの下限クロックを下げてみる

cupcake(1.5)用クロックアップカーネルが安定しているようなので、もう少しいじってみた。
下限クロックが246MHzになっているのを、どこまで下げられるかやってみた。

下限クロック

いろいろ変えて試してみた。

クロック [MHz] 正確な値 [kHz] 起動結果
246 245760 OK
176 176000 OK
128 128000 OK
123 122880 起動せず

128MHzが限界らしい。

修正点

今回もカーネルのコンフィグ修正のみ。
arch/arm/configs/msm_defconfigをkernelディレクトリに.configとしてコピーしてから、下記のような修正をする。

--- arch/arm/configs/msm_defconfig      2009-03-21 23:01:52.000000000 +0900
+++ .config     2009-05-01 15:29:15.000000000 +0900
@@ -35,8 +35,8 @@
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+CONFIG_LOCALVERSION="-00392-g8312baf"
+# CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 # CONFIG_SYSVIPC is not set
 # CONFIG_POSIX_MQUEUE is not set
@@ -221,8 +221,8 @@
 CONFIG_MSM_CPU_FREQ=y
 CONFIG_MSM_CPU_FREQ_ONDEMAND=y
 # CONFIG_MSM_CPU_FREQ_SCREEN is not set
-CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=384000
-CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN=245760
+CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=528000
+CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN=128000
 CONFIG_MSM_HW3D=y
 CONFIG_MSM_ADSP=y
 CONFIG_WIFI_CONTROL_FUNC=y

出来上がったカーネルを下記に置いといた。
http://tetsu.homelinux.org/android/index.html
http://tetsu.homelinux.org/android/update-v4.zip

カーネルイメージの書き込み

adp1とUSBでつながっている状態で、

  • カーネルイメージをSDカードにコピー
$ adb push update-v4.zip /sdcard/update.zip
$ adb shell sync

として、SDカードにカーネルイメージをコピーする。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。

HTC Dream(aka T-Mobile G1, Android Dev Phone 1)の公式cupcake用クロックアップカーネルを作ってみる

adp1用のcupcake(1.5)がちゃんと使えるようなのでクロックアップをしてみた。

修正点

ソースの修正は不要。カーネルのコンフィグだけでクロックが変更できる。だいぶ進化している。
arch/arm/configs/msm_defconfigをkernelディレクトリに.configとしてコピーしてから、下記のような修正をするだけ。

--- arch/arm/configs/msm_defconfig	2009-03-21 23:01:52.000000000 +0900
+++ .config	2009-04-30 01:02:47.000000000 +0900
@@ -35,8 +35,8 @@
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_LOCK_KERNEL=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_LOCALVERSION=""
-CONFIG_LOCALVERSION_AUTO=y
+CONFIG_LOCALVERSION="-00392-g8312baf"
+# CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SWAP=y
 # CONFIG_SYSVIPC is not set
 # CONFIG_POSIX_MQUEUE is not set
@@ -221,7 +221,7 @@
 CONFIG_MSM_CPU_FREQ=y
 CONFIG_MSM_CPU_FREQ_ONDEMAND=y
 # CONFIG_MSM_CPU_FREQ_SCREEN is not set
-CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=384000
+CONFIG_MSM_CPU_FREQ_ONDEMAND_MAX=528000
 CONFIG_MSM_CPU_FREQ_ONDEMAND_MIN=245760
 CONFIG_MSM_HW3D=y
 CONFIG_MSM_ADSP=y

出来上がったカーネルを下記に置いといた。
http://tetsu.homelinux.org/android/index.html
http://tetsu.homelinux.org/android/update-v3.zip

カーネルイメージの書き込み

adp1とUSBでつながっている状態で、

  • カーネルイメージをSDカードにコピー
$ adb push update-v3.zip /sdcard/update.zip
$ adb shell sync

として、SDカードにカーネルイメージをコピーする。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。

HTC Dream(aka T-Mobile G1, Android Dev Phone 1)の公式cupcakeをインストールしてみる

HTCよりadp1用のcupcake(1.5)が配布されていたのでインストールしてみた。
(手順が間違ってたので修正)
http://www.htc.com/www/support/android/adp.html

ファイル取得

http://www.htc.com/www/support/android/adp.htmlからAndroid 1.5用のイメージファイルを2つもらってくる。

  • ラジオファーム: ota-radio-2_22_19_26I.zip
  • リカバリイメージ: signed-dream_devphone-ota-147201.zip または システムイメージ: signed-dream_devphone-img-147201.zip

以下の手順で、

  • ラジオファーム+リカバリイメージ または ラジオファーム+システムイメージ

を書き込む。

ラジオファームの書き込み

adp1とPC/MacがUSBでつながっている状態で、

  • ラジオファームをSDカードにコピー
$ adb push ota-radio-2_22_19_26I.zip /sdcard/update.zip
$ adb shell sync

として、SDカードにラジオファームをコピーする。かわりにmicroSDカードリーダ等を使っても良い。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。
  • 再起動後にファームウェアの書き込みが実行される。

リカバリイメージの書き込み

手順はラジオファームと同様。adp1とPC/MacがUSBでつながっている状態で、

  • リカバリイメージをSDカードにコピー
$ adb push signed-dream_devphone-ota-147201.zip /sdcard/update.zip
$ adb shell sync

として、SDカードにリカバリイメージをコピーする。システムイメージと名前が似ているので注意。

  • 赤(終話)ボタンを長押しして電源オフ。
  • ホームボタンを押しながら電源オンでリカバリモードに突入。
  • ALT+Lでヘルプ画面が出る。
  • ALT+Sでファームの書き込み。
  • 終わったらホーム+バックで再起動。
  • 再起動後にファームウェアの書き込みが実行される。

システムイメージの書き込み

adp1とPC/MacがUSBでつながっている状態で、

  • システムイメージの書き込みと再起動
$ fastboot update signed-dream_devphone-img-147201.zip


これですっかりcupcakeになった。何も問題がないのでしばらく使い続けることにする。

HTC Dream(aka T-Mobile G1, Android Dev Phone 1)のcupcakeに再チャレンジしてみる

splhack氏(中の人)がcupcake(1.5)がまともに動くようだと言っているので試してみた。
http://blogger.splhack.org/2009/02/cupcake-on-android-dev-phone-1.html

ビルド

http://blog.makezine.com/archive/2009/01/taking_android_cupcake_for_a_spin.html
のあたりを見ながら進める。
Tweak the Android source code some more
のあたりがめんどくさいけど、それ以外はいつも通り。

$ mkdir ~/mydroid
$ cd ~/mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b master

.repo/local_manifest.xmlを以下のように作成。

<?xml version="1.0" encoding="UTF-8" ?> 
<manifest>
  <remove-project name="kernel/common" /> 
  <project path="kernel" name="kernel/msm" revision="refs/heads/android-msm-2.6.27" /> 
  <project path="vendor/htc/dream" name="platform/vendor/htc/dream" revision="master" /> 
  <project path="hardware/msm7k" name="platform/hardware/msm7k" revision="master" /> 
</manifest>
$ repo sync
$ cp build/buildspec.mk.default build/buildspec.mk

buildspec.mkをこんな風にエディット。

--- build/buildspec.mk.default	2009-02-22 20:09:08.000000000 +0900
+++ buildspec.mk	2009-02-22 20:13:24.000000000 +0900
@@ -53,7 +53,7 @@
 # Choose a product to build for.  Look in the products directory for ones
 # that work.
 ifndef TARGET_PRODUCT
-#TARGET_PRODUCT:=generic
+TARGET_PRODUCT:=htc_dream
 endif
 
 # Choose additional targets to always install, even when building
$ cd vendor/htc/dream
$ ./extract-files.sh
$ cd ~/mydroid
$ make

out/target/product/dream/*.imgができあがる。fastbootで書き込むべし。

使った感想

そこそこ安定しているようだ。
操作感は1.0/1.1と少し異なっている。メニュー選択時の横スクロールや、バックボタン押下時の挙動が違う。
IMEみたいな画面が最初から出てくる。対応したIMEがあれば日本語入力もできるのだろう。
Vending.apk(Market)が動かない。変なエラーが出て止まってしまった。
Marketが動くならもう少しがんばって環境構築しても良かったのだが、実用マシンになっているので元に戻してしまった。

誰かMarketの動かし方を教えて下さい。