NokiaのE90に関連した備忘録です。いつまで続くかな?
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
追記しました。2012/05/12 14:17

少し前から気になっていた Boot to Gecko(B2G)を nexus s 用にコンパイルして動かしてみましたので
その時の備忘録として記録しておきます。

まず、コンパイル環境としてiMacのOSXで直接コンパイルできるか試したのですが、うまく動かなかったのでVMware Fusionにubuntu 11.10(64ビット版)を導入し、Linux上に環境を構築しました。

ここからは、Building and Running Boot To Gecko on the Nexus SSetting Up Boot to Gecko Build Environmentを参照しながら試行錯誤で行ったため、つまずいたところなどを記録しておきます。

1.まずは、開発環境の前提条件となるパッケージを導入すます。(git以外本当に必要かどうかは不明ですが、、、)

sudo apt-get build-dep firefox

sudo apt-get install git mercurial libasound2-dev libcurl4-openssl-dev libnotify-dev libxt-dev libiw-dev mesa-common-dev autoconf2.13

sudo apt-get install ia32-libs gcc-multilib g++-multilib bison flex gperf lib32z-dev lib32ncurses5-dev lib32ncursesw5-dev libncurses5-dev libidl-dev lib32gomp1 autoconf2.13 ccache libx11-dev lib32readline-gplv2-dev



2.Android SDKの前提条件であるJavaを導入します。

sudo apt-get install openjdk-7-jre



3.Android SDKを導入します。

http://developer.android.com/sdk/index.htmlからLinux用のandroid-sdk_r18-linux.tgzをダウンロードし、ホームディレクトリ-に展開します。

~/android-sdk-linux/toolsと~/android-sdk-linux/platform-toolsを環境変数PATHに追加します。
(android-sdk-linux/platform-toolsは次のステップで作成されますが、ついでなので先にPATHを通しておきます)

ターミナルを再起動してPATHを有効にします。



4.AndroidSDKのアップデートとplatform-toolsを導入します。

sdkのandroidコマンドを実行し、AndroidSDKToolsのrev.19とAndroidSDKPlatform-toolsにチェックを入れインストールします。
(今回は導入したSDKがrev.18だったので、アップデートにrev.19が表示されたためついでに最新版にしておきました)



5.B2Gの開発環境をダウンロードします。

git clone git://github.com/andreasgal/B2G

cd B2G

make sync
(この時にとても時間が掛かるので寝る前に実行するのがおすすめです)



6.Nexus s用のconfigを作成します。

make config-nexuss-ics



7.Nexus sがすでにICSだったので、ベースバンドの設定を追加します。

glue/gonk/device/samsung/crespo/board-info.txtにICSのブートローダーのバージョンとベースバンドの情報を追加します。
この設定がないとnexus sにB2Gを書き込むときにエラーとなります。

require version-bootloader=I9020XXJK1|I9020XXKA3|I9020XXKL1

require version-baseband=I9020XXJK8|I9020XXKB1|...|I9020UCKE1|I9020XXKI1



8.B2Gをコンパイルします。

make gonk

make



9.出来上がったB2Gをnexus s に転送します。

実は、ここからが結構はまってしまいました。

まず、USBでnexus sを接続してadbやfastbootで認識させるためには、LinuxでUSB周りの設定を行う必要があります。
エディターで次のファイルを作成します。

sudo vi /etc/udev/rules.d/51-android.rules

このファイルに記述する内容は以下の2行です。

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1",ATTR{idProduct}=="4e20", OWNER="user" ,SYMLINK+="android_adb"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1",ATTR{idProduct}=="4e20", OWNER="user" ,SYMLINK+="android_fastboot"

パーミッションを変更してudevのサービスを再起動します。

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo service udev restart

これでLinuxからUSB接続したnexus sに接続できたのですが、adb devices を実行してもデバイス名は??????となりnexus sを認識しませんでした。
そこで色々と調べた結果、adbもfastbootもroot権限がないとデバイスにアクセス出来ないので、これ以降はrootユーザーでコマンドを実行することにしました。

sudo su

. .bashrc
(環境変数読み込みます。)

adb kill-server
adb start-server
一般ユーザー権限で動いていたadbのサーバーを一度停止し、再度rootユーザー権限で再起動します。

ここで、nexus sをUSBでiMacに接続します。
この時、VMwareがUSBデバイスをOSXかLinuxのどちらに接続するか聞いてきますので、Linuxを選択します。

make flash-only
(nexus sのいわゆるSDカードのエリア以外は全部消えますのでバックアップを事前にとっておきます)

このコマンドを実行すると内部的にnexus sをfastbootでリブートするため、再度VMwareがUSBデバイスをどうするか聞いてきますのでもう一度Linuxを選択します。

導入が成功してもnexus sの画面にはエラーが表示されますが、これはまだgaiaと呼ばれるGUIのモジュールが導入されていないだけなので次のコマンドを実行します。

make install-gaia

導入が成功すると、nexus sの画面上にはB2Gのホーム画面が表示されます。



まだまだ出来立てのOSなので、カメラが動かないとか、SMSが送れないとか実際の使用には耐えられませんが、電源を入れてわずか10秒で起動する携帯電話なんて最近全く見かけないので実用化されるととても面白いと思います。
スケジュールを見ていると6月くらいにはβ版と呼ばれるものが出てきそうなので、その時にはもう一度試してみたいと思います。


追記.Wifiがうまくつながらない時の対応

ビルドした環境によってはWifiがうまく繋がらなくなることがありました。
その時は、B2GのディレクトリーにあるWIFI.mdというファイルの手順に従ってWifiの構成ファイルを修正することでちゃんとWifiに接続できるようになりました。
手順は以下の通りです。

構成ファイルの雛形をB2GからPCにダウンロードします。
adb pull /system/etc/wifi/wpa_supplicant.conf

エディターでファイルを開き、ファイルの最後にWifiの設定を追記します。

network={
ssid="SSIDを記述します"
psk="パスワードを記述します"
key_mgmt=WPA-PSK <ーWifiの設定に依存します。
priority=1
}

このファイルをB2Gの別の場所に戻します。
adb push wpa_supplicant.conf /data/misc/wifi/wpa_supplicant.conf

B2Gに入りパーミッションを変更しておきます。
adb shell
chmod 0600 /data/misc/wifi/wpa_supplicant.conf
chown system.wifi /data/misc/wifi/wpa_supplicant.conf

再起動します。
adb reboot

これで起動時にWifiを掴むようになります。



追記2 B2Gが更新されています。

いつのタイミングからかわかりませんが、最新版の2012-05-09 17:30:28のソースでは手順7は必要なくなっています。
glue/gonk/device/samsung/crespo/board-info.txtは使われていないようでglue/gonk-ics/device/samsung/crespo/board-info.txtを参照するようになっており、こちらのファイルにはデフォルトでICSのブートローダーの情報が書かれていました。
また、Wifiの設定もファイルを書き換えなくても単純にSettingからWi-Fiの設定をすることでちゃんと無線LANの電波をつかむようになりました。
定期的に
make sync && make config-nexuss-ics && make gonk && make
でソースを更新しコンパイルし直すようにした方が良さそうです。
ちなみにSMSも送受信できるようになっています。(^^) カメラはまだですが、、、

スポンサーサイト
Xperia Playにプリロードされたアプリが邪魔になってきたのでなんとか削除できないか調べてみました。

手っ取り早くroot化すればあとは何とでもなるのですが、恒久的なroot化はとある事情でできないため一時的なroot化で対応出来る方法を探してみたのでその備忘録として記録しておきます。

まず、ブートローダーのアンロックをしないでroot化出来る方法を探すと、

[04/Jan][ROOTING/UNROOTING] Xperia 2011 Easy Rooting Toolkit [v4.0](zergRush Exploit)

というツールが見つかりました。

そこで、ここからツール本体の DooMLoRD_v4_ROOT-zergRush-busybox-su.zip をダウンロードしました。

このzipファイルを展開すると、その中にrootを奪取するプログラムの zergRush や、su、Superuser.apk、busybox などが入っており、runme.bat がすべての作業を自動的に行なってくれるバッチファイルで、この中身を見ることで大体の手順がわかりました。

恒久的なroot化は望んでいなかったので、そこでやりたい事だけを手動で行うことにしました。


すべての作業はPCからXperiaを操作するため、adbが使える状態になっていることが前提です。

1.必要なプログラムをXperiaに転送する
  コマンドプロンプトから以下のコマンドを実行します。

  adb shell mkdir /data/local/tmp    
    root化されていない一般ユーザー権限で触れるディレクトリーは/data/localだけなのでここにワークディレクトリーを作成します。

  adb push zergRush /data/local/tmp/
    root奪取のコマンドzergRushをワークディレクトリーに転送します。

  adb shell chmod 777 /data/local/tmp/zergRush  
    zergRushに実行権限を与えます。

  adb push busybox /data/local/tmp/
    Linuxの各種コマンドを一つにまとめたbusyboxをワークディレクトリーに転送します。

  adb shell chmod 777 /data/local/tmp/busybox 
    busyboxに実行権限を与えます。


2.rootの奪取と/systemのリマウント
  コマンドプロンプトから以下のコマンドを実行します。

  adb shell /data/local/tmp/zregRush
    zregRushを実行してrootを奪取します。
    すると、以下のようなメッセージが表示されます。

    [**] Zerg rush - Android 2.2/2.3 local root
    [**] (C) 2011 Revolutionary. All rights reserved.

    [**] Parts of code from Gingerbreak, (C) 2010-2011 The Android Exploid Crew.

    [+] Found a GingerBread ! 0x00000118
    [*] Scooting ...
    [*] Sending 149 zerglings ...
    [+] Zerglings found a way to enter ! 0x10
    [+] Overseer found a path ! 0x000151e0
    [*] Sending 149 zerglings ...
    [+] Zerglings caused crash (good news): 0x2abcccc4 0x0054
    [*] Researching Metabolic Boost ...
    [+] Speedlings on the go ! 0x6fd193d3 0x6fd39667
    [*] Popping 24 more zerglings
    [*] Sending 173 zerglings ...

    [+] Rush did it ! It's a GG, man !
    [+] Killing ADB and restarting as root... enjoy!

    rootの奪取に成功すると、adb shell を実行した際のコマンドプロンプトが $ から # に変わりrootで接続できたことがわかります。

  adb shell /data/local/tmp/busybox mount -o remount,rw /system
    /system/appの中のプリロードアプリを削除するために/systemをrw(リード・ライト)モードでリマウントします。
    Androidにもmountコマンドはあるのですが、サブセットのためremountオプションが使えず、busyboxで提供されるmountを使います。
    busyboxは1つ目の引数に実行したいコマンドを書きますので、この場合はmountコマンドが実行されます。2つ目以降の引数はmountコマンドに対する引数となります。


3.プリロードアプリの削除
  /systemに対する書き込みができるようになったので、必要のないプリロードアプリをrmコマンドで削除していきます。


今回の手順で奪取したroot権限はAndroidを再起動すると使えなくなります。
そこで、手順2からやり直すことになるのですが、一度実行すると/data/local/tmpの下に、boomshとshという2つのファイルが出来上がっているので、先にこれらのファイルを削除してから実行することになります。


2年前に買ったMacBookProにSnow Leopardを入れてみました。

Boot CampでWindowsXPも共存していたのでちょっと不安でしたが
上書きで導入したら本当にあっさりとアップデートが完了しました。

次にSnow Leopardの売りの一つである64ビットのカーネルで起動出来るか
どうかを試してみました。

/Library/Preferences/SystemConfiguration/com.apple.Boot.plist

の内容が

<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>

となっていたので

<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string>arch=x86_64</string>

のように

Kernel Flags に arch=x86_64 を追加しました。

これで再起動する事でカーネルが64ビットで起動するかなと思ったのですが
ちょっと甘かったようです。

EFIも64ビットになっているのですがMid 2007のMacBookPro3,1ではどうがんばっても
今のところ64ビットカーネルでの起動は出来ないようです。

まあ、メモリーも増設しないでまだ2GBのままだし、32ビットのカーネルでもいいかな。
ちょっとくやしいですけどね。
会社で支給されているEDGEのPCMCIAのカードがMacBookProで使えないのでイーモバイルのD02HWを買って使い始めたのが今年の2月。
せっかく高速通信できるのでノートPCをゲートウェイにしてE90やiPodtouchからも使えるように設定していましたが、電車での移動中などいちいちノートPCを起動しないと使えないのであまり意味がありませんでした。だって普通の人はそのままノートPC使いますからね。(^^ゞ
そんな時、Webで見つけたのがcradlepointのPHS300というUSB接続のモデムを繋いで無線LANのホットスポットになるマシンでした。
2chなどでの動作報告を信用して、ebayの代行業者を経由して入手しました。
値段ははオークションのBuyitNowで$157.99が円高のおかげで16,163円で購入できました。
ただ、代行手数料、US国内での送料、国際宅急便の送料と関税全て合わすと23,380円と微妙ですが、ファームウェアも最新の2.1.0になっていたので、ファームアップの手間が省けたことでよしとしておこうと思います。

ここからがPHS300設定の備忘録。

hwhackさんのところで書かれていたATコマンドを設定をすることで本当にあっけなくPHS300からD02HWを経由してインターネットに接続できるようになりました。
hwhackさんに感謝感謝です。
実際にPHS300のATコマンドの設定するところには、

AT
AT&FE1V1X1&D2&C1S0=0
AT+ipr=230400
ATDT*99***1#

この4行を記述し、後はユーザーIDとパスワードともに"em"と記述するだけです。

ただ、D02HWは普通にUSBで接続するとCD-ROMに見えて、その後専用プログラムがモデムとして使えるようコマンドを発行するそうです。
ですので、PHS300にD02HWをさすだけでは使えなくて、

1.PHS300の電源を入れ、電源と無線LANのランプが緑色になるのを待つ。
2.D02HWを接続し、D02HWのランプが赤から青の点滅になるのを待つ。
 おそらくこのときはまだCD-ROMとしてしか認識されていないので、PHS300のモデムのランプは点灯しません。
3.PHS300に接続されたUSBケーブルを全部抜かず、ほんの少し引っ張ってもう一度差し込む。
 ここがすごく微妙なところです(^^ゞ
4.うまくいくと、まずD02HWのランプが赤くなり、その後すぐにPHS300のモデムのランプが赤くなります。
 この時のPHS300の赤のランプはモデムとの接続に失敗したことになるのですが、数秒でD02HWのランプが青く点灯し(点滅ではない)、PHS300も緑に点灯します。

この手順を踏めば100%間違いなく接続できるようになりました。

これで、今後は電車での通勤中にパケット代を気にすることなくE90やiPodtouchを有効活用できそうです。(^^)

ちなみに、PHS300が思ってたより大きくて、ちょっとショックだったのはヒミツ(^^ゞ

20080408001.jpg


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。