2011年1月28日金曜日

Apple Lossless and PowerAMP

iPhoneをずっと使ってきたので、iTunesで結構音楽がたまってます。PureAudoも趣味の自分にはやっぱりロスレスだろうと、ほとんどの曲をApple Losslessでエンコードしてあります。ところがAndroidではこれが問題に。結局いろいろ試してみた結果、WinAMP(母艦)+PowerAMPという形に落ち着きました。PowerAMPは有償のソフトですが、買って損はないでしょう。かなりの多機能です。WinAMPもiTunesのライブラリを直接認識して、簡単な操作でAndroidへ転送できます。iPhoneも同時に使う人にはよい選択肢だと思います。おすすめです。

2011年1月27日木曜日

b-mobile SIM U300


b-mobileのU300を買ってみました。Nexus SはSIM Lock Freeなので、普通に使えます。SPEEDTEST.NETアプリで計測してみましたが、300Kbpsは出ないですね。そもそもTokyoの計測サーバに接続するとえらい遅いというか、不安定なので、Seoulのサーバに接続してみてます。結果は以下のとおり。3,4回やってみてこんなかんじですので、おそらく200Kbps程度ですね。1ヶ月の契約のSIMなので、気軽に試せるのはいいと思います。ですが、1ヶ月後は手持ちのiPhone4のSIMに入れ替えるだろうなぁ。。

iPhone4のSIMでパケ放題フルが適用されるか一度ためしてみたのですが、smile.worldでまったく問題なく接続できましたし、MySotfbankで料金の確認もしてみましたが、普通に割引が適用されていました。

Nesux S Kernel build and create my boot.img

わすれっぽい自分のために。。

1.事前準備
Ubuntu10.04をUbuntuのサイトから落としてVMWare Playerあたりをつかって、まずインストール。10.04からはsun-java6-jdkがaptでとれないので
add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo apt-get update
コンパイルに必要なパッケージを全部aptで導入する
sudo apt-get -y install git-core gnupg \
  sun-java6-jdk flex bison gperf libsdl-devlibesd0-dev libwxgtk2.6-dev \
  build-essential zip curl libncurses5-dev zlib1g-devvalgrind g++ 
repoの導入
mkdir ~/bin
curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
export PATH=$PATH:~/bin (.bashrcなどに追加しておく)

javaへパスを通す
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.**.**

repoで取得、toolchainとかも降ってくるから必ず取得しておく
repo init -u git://android.git.kernel.org/platform/manifest.git
repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.1_r1 (2.3用)

※初回のみ
repo sync
しばらくまつ。。

2.Kernelのソースをダウンロード(for Nexus S)
git clone git://android.git.kernel.org/kernel/samsung.gitKernelのconfig

cd samsung
make ARCH=arm herring_defconfig
(*)make menuconfig ARCH=arm (menuconfigもできるのでいじる人はこれやってもいい)
makeする(とりあえず)

make ARCH=arm CROSS_COMPILE=/home/creams/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-arch/arm/boot/
arch/arm/boot/zImageが作成されていればOK。

3.boot.imgの作成
実機からboot.imgを取り出す。
adb shell
su
cat /dev/mtd/mtd2 > /sdcard/nexussboot.img
exit
adb pull /sdcard/nexussboot.img .
split_bootimg.plをどこからか探して~/binあたりに保存しておく
$ split_bootimg.pl nexussboot.img
Page size: 4096 (0x00001000)
Kernel size: 2799472 (0x002ab770)
Ramdisk size: 142442 (0x00022c6a)
Second size: 0 (0x00000000)
Board name:
Command line: console=ttyFIQ0 no_console_suspend
Writing nexussboot.img-kernel ... complete.
Writing nexussboot.img-ramdisk.gz ... complete.
カレントにboot.imgとkernelが展開される。consoleの部分を記録しておく。

mkbootimgでboot.imgを作成。zImageは自分でビルドしたもの、ramdiskイメージは、展開して取得したものを指定する。

mkbootimg --cmdline 'console=ttyFIQ0 no_console_suspend' \
  --kernel zImage --base 0x30000000 --pagesize 4096 \
  --ramdisk boot.img-ramdisk.gz -o myboot.img

myboot.imgがオリジナルのbootimageだ。
実機で試すには、Nexus Sをfastbootモードで起動して、kernelをUSB経由でアップして起動してみる。この方法だと、bootパーティションに書き込まずにテストできる。
adb reboot bootloader
fastboot boot myboot.img
これだと、Wifiが使えないはず(kernelが変更されているので)。SIMが刺さっていればそっちは通信できるはずなので、端末情報あたりを眺めてニヤニヤするw。オリジナルのkernelが適用されていれば、「カーネルバージョン」の項目が、変更されているのがわかる。

ちなみに、username@hostname がバージョン情報に挿入されるので、オリジナルを主張したい人w
は、そのへん気をつけてbuildするといいだろう。

kernelが問題なく動作するようなら、焼きこんでみる。この作業を行う前にかならずbackupなどをとっておこう。思いもしない不具合に出くわすことだってある。
fastbootモードにして、、

fastboot flash boot myboot.img
Wifiを動作させるためには、Kernelをbuildしたときに出来ているmoduleに入れ替える必要がある。ファイルの場所は、samsung/drivers/net/wireless/bcm4329にあるbcm4329.ko。これを、実機の/system/modules/に転送する。
adb pull /system/modules/bcm4329.ko .
adb shell
su
mount -o remount,rw -t ext4 /dev/block/platform/s3c-sdhci.0/by-name/system /system
もしくは
adb remount (unsecureなboot.imgのひとだけ)
adb push bcm4329.ko /system/modules
かならずadb pullでバックアップとっておこう。


Appendix
ramdiskを展開して中身をいじるには
mkdir ramdisk
cd ramdisk
gunzip -c ../ramdisk.image.gz | cpio -i
カレントディレクトリに展開されるので、いろいろいじる、前回のext4のオプションもinit.herring.rcあたりに設定しておく。

固める
find . | cpio -o -H newc | gzip > ../new.ramdisk.image.gz
で、作成完了。あとはmkbootimgでmyboot.imgを作成して、実機bootしてみる。
こうやって作成したkernelでいまは使ってみている。いまのところ不具合などはないけれど、文鎮化する可能性もあるので、同じことやってみようと思う人自己責任でお願いします。

Nexus S Quadrant score with ext4 option tune.



Droid Xを手に入れたあたりから開発環境をととのえて、仕事のからみもあっていろいろ情報を収集してきましたが、Nexsusはbootloader周辺の構成とか、非常に開発に向いてる感じがして、いろいろいじくってはいます。nexusのカーネルのコードが公開されているようなので、仕事に必須なDevice Driverの組み込みや、ext4のmount optionなどをいじってみました。Quadrantのスコアは、低いほうがstockのbootimageでの結果、高いほうがext4のmount optionを調整したのみのbootimage。

お手軽に試すにはrootをとってる必要があるけど。下記のとおり。

mount -o remount,noauto_da_alloc -t ext4 /dev/block/platform/s3c-sdhci.0/by-name/system /system
mount -o remount,noauto_da_alloc -t ext4 /dev/block/platform/s3c-sdhci.0/by-name/userdata /data

不具合起きても責任はとれないので、own riskで。

ポイントとなるところはnoauto_da_allocで、ext4の遅延書き込みを制御するオプションだ。ただ、このオプションを適用してしまうと、遅延書き込みが有効な場面(どんな?)で、その機能が使えないということは念頭に置くべきだろう。実際Quadrantのスコアだけじゃわからない部分も多いです。

My Favorite Apps


ちょっとホームスクリーンを晒してみよう。基本的にLauncherProでまとめてますが、Beautiful Widgetもポイントです。
  • LauncherPro / ADW
  • BeautifulWidget (天気予報と時間)
  • ServersMan for Android
  • Advanced Task Killer Froyo
  • Temp+CPU V2
  • SetCPU
  • WinAmp
  • En2ch
  • Staocks
  • etc.
iPhoneがデビューしたときからiPhone3G->3GS->4 とつかってきてAndroidにはあまり食指がうごかなかったのですが、2010年の秋にひょんなことから、Droid Xを入手、すぐにNexus S入手という感じになったのは、やっぱりAndroidの勢いかな?

Nexus S !

Nexus Sを手に入れたのをきっかけに始めました。基本的には開発関連の話題とか、扱えたらいいですが、おそらく、くだらないつぶやきで満たされるでしょう。。ゆるくやっていきます。