SC-05Dアップデート

投稿日: Leave a comment

4/12頃にソフトウェア更新の通知がきた。ただ、リカバリーのROMを純正ROMからCWMに焼きかえていたため、アップデートに失敗するのは分かっていて、延期→3時間延長を繰り返していたけど、さすがにしつこいので夜な夜なアップデートした。

アップデートはROM焼きツールのodinから。ここに書いてある通り。IMM76D.OMMP2のROMイメージを落としてきてodinで焼くだけ。

ついで、CWMの最新版 (ここにあるV6.0.1.2_r13) を入手して焼き、CWMからSuperSUを焼く。

そのあと、データ専用SIM対策とテザリング対策。前回と全く同じ手順。

再起動直後、BusyboxやTitanium backupの動きがおかしかったけど、何度か再起動しているうちに問題なく動くようになった。解決方法がわからずちょっと怪しいが結果おーらい。

ServiceState.radioTechnologyToString

投稿日: Leave a comment

山手線に乗っているとAndroidのRAT表示がHSDPA:9とHSPA:11が頻繁に切り替わり、通勤中はUMTS:3、HSDPA:9、LTE:14がよく切り替わる。この3とか9とか11とか14はカテゴリか何かだとは思っていたけど、正確には理解していなかったので、Androidのソースを落としてきて調べてみた。

ソースはgitで落としてくる。ICS/LT18i化したSO-01Cと最近買ったSC-05DのどちらもAndroidバージョンは4.0.4なので、その最新版のframeworkのソースを落としてみる。

> git init
> git clone -b android-4.0.4_r2.1 https://android.googlesource.com/platform/frameworks/base/

さっそく読み進める。

モデム周りの制御はここでいじったGsmServiceStateTrackerというのはある程度わかっていたのでまずはここを見る。

base\telephony\java\com\android\internal\telephony\gsm\GsmServiceStateTracker.java

    if (DBG) {
        log("RAT switched " + ServiceState.radioTechnologyToString(mRadioTechnology) +
                " -> " + ServiceState.radioTechnologyToString(mNewRadioTechnology) +
                " at cell " + cid);
    }

alogcatというアプリで無線のログを眺めていると”RAT switched HSDPA:9 -> LTE:14″という感じのがパラパラ出てくるのでRAT switchedで探したら上のコードを見つけた。ServiceState.radioTechnologyToStringとそれっぽい関数がHSDPA:9とかLTE:14を作っているように見える。

で、次に base\telephony\java\android\telephony\ServiceState.java を見てみて、ずばりのところを見つけた。

    /**
     * Convert radio technology to String
     *
     * @param radioTechnology
     * @return String representation of the RAT
     *
     * @hide
     */
    public static String radioTechnologyToString(int rt) {
        String rtString;

        switch(rt) {
            case 0:
                rtString = "Unknown";
                break;
            case 1:
                rtString = "GPRS";
                break;
            case 2:
                rtString = "EDGE";
                break;
            case 3:
                rtString = "UMTS";
                break;
            case 4:
                rtString = "CDMA-IS95A";
                break;
            case 5:
                rtString = "CDMA-IS95B";
                break;
            case 6:
                rtString = "1xRTT";
                break;
            case 7:
                rtString = "EvDo-rev.0";
                break;
            case 8:
                rtString = "EvDo-rev.A";
                break;
            case 9:
                rtString = "HSDPA";
                break;
            case 10:
                rtString = "HSUPA";
                break;
            case 11:
                rtString = "HSPA";
                break;
            case 12:
                rtString = "EvDo-rev.B";
                break;
            case 13:
                rtString = "eHRPD";
                break;
            case 14:
                rtString = "LTE";
                break;
            case 15:
                rtString = "HSPAP";
                break;
            default:
                rtString = "Unexpected";
                Log.w(LOG_TAG, "Unexpected radioTechnology=" + rt);
                break;
        }
        return rtString + ":" + rt;
    }

数字はカテゴリでもなんでもなくて、RATに順番に番号を振っただけ。これだけ見るとなんだ、という感じだけどこういう情報がまとまっているのは見たことないので、個人的にはすっきりした。

これを機にAndroidのソースを読み進めようと思ったけど膨大すぎてすでに挫折気味。

アンテナピクト対策他

投稿日: Leave a comment

Galaxy noteを1週間近く使ってみて気になったこと。

  • 電池の減りは -4~-5%/h とちょっと多め
  • 普段はHSDPA(7.2Mbps)だけど、たまにUMTS(384kbps)に落ちることがある。
  • テザリングできない。
  • アンテナピクトの横のRAT表示はないとやっぱり不便

ということで、上2つはもう少し様子見、残りの2つを対策すべく、ここを参考にシステムファイルをいじってみた。

自分でも忘れそうなので備忘録として書いておきます。とりあえず、CWMリカバリ導入済み、root化済み、PCにはSamsung Kiesをインストールしてドライバは設定済み、adbが使えるようになっていることが前提。

1. /system/frameworkの吸出し

コマンドプロンプトから

adb pull /system/framework orig\framework

これで、orig\frameworkにファイルがコピーされる。さらに、作業用ファイルとしてworkディレクトリに framework.jar  をコピーしておく。

2. framework.odexを展開

java -jar baksmali-1.4.1.jar -a 15 -d orig\framework -x work\framework.odex

すると、outディレクトリが作成されてその下にたくさんのファイルが展開される。

3. ファイルの修正

変更箇所をパッチとして貼り付けようと思ったら思いのほか長いのでファイルへのリンクとして張ります。

mvno_psonly_sc05d_ics.patch

基本的にはここに書いてあるとおりで、

  • CS DomainでAttachに成功していると見せかける
  • テザリング時のAPNを変更させないようにする
  • 非 docomo 回線に見せる

というもののようです。(一つ目はXperia arcのときもやったけど、下2つはコードを読んでもよくわからず)

4. framework.jarに格納

まずはsmaliでdex化

java -jar smali-1.4.1.jar -o classes.dex out

ついで、framework.jarに格納 ※一応、zip非圧縮で

7za.exe u -tzip -mx0 work\framework.jar classes.dex

5. framework.odex生成

dexopt-wrapperが使えないらしいので端末のブート処理でodexを作らせる。

新しく作ったframework.jarを端末内に送り込み、オリジナルのframework.{jar,odex}をframework.{jar,odex}.old にリネームしておく。

adb push work\framework.jar /data/local/tmp/framework.jar.new
adb shell mv /system/framework/framework.jar /system/framework/framework.jar.old
adb shell cp /data/local/tmp/framework.jar.new /system/framework/framework.jar
adb shell mv /system/framework/framework.odex /system/framework/framework.odex.old

Wipe cache partition、Wipe Dalvik Cacheをして再起動。

ここでブートが途中で止まるので、1分くらい放置してからリカバリモードで再起動。

すると、framework.odexが 端末内の/data/dalvik-cache/system@framework@framework.jar@classes.dex として作られるので名前を変えておく。

adb shell mv /data/dalvik-cache/system@framework@framework.jar@classes.dex /data/local/tmp/framework.odex.new

一旦、framework.jarとframework.odexを元に戻す。

adb shell rm /system/framework/framework.jar
adb shell mv /system/framework/framework.jar.old /system/framework/framework.jar
adb shell mv /system/framework/framework.odex.old /system/framework/framework.odex

署名をコピーする。

adb shell busybox dd if=/system/framework/framework.odex of=/data/local/tmp/framework.odex.new bs=1 count=20 skip=52 seek=52 conv=notrunc

これで新しいframework.odex(.new)が出来上がり。

6. ファイル差し替え

adb shell cp /data/local/tmp/framework.odex.new /system/framework/framework.odex.new
adb shell chmod 644 /system/framework/framework.odex.new
adb shell mv /system/framework/framework.odex /system/framework/framework.odex.orig
adb shell mv /system/framework/framework.odex.new /system/framework/framework.odex

もう一度、Wipe cache partition、Wipe Dalvik Cacheをして再起動。

おしまい。

Galaxy Noteを購入

投稿日: Leave a comment

少し前から画面の大きいAndroid機がほしいと思っていてGalaxy Note (初代)  SC-05D の白ロムに目をつけていて、ふらっと秋葉原に行ってみたらソフマップで台数限定で安く出ていたので思い切って購入してみた。

使っているSIMがIIJmioのデータ専用なので、セルスタンバイの電池浪費対策として、事前に*#197328640#でPS ONLYに設定できることを確認していたので、早速設定をして様子見中。

セルスタンバイで圏外100%にはなるけど電池の減りはそうでもないので、一応効いてはいそうな感じ。ただし、通知領域にRAT表示されないのでUMTSでつながっているかLTEでつながっているかわからずちょっと不便。とりあえずアプリ入れてウィジェットで対策。

その他、ごにょごにょ入れてとりあえず使える状態にしてみた。

それにしても1280×800で有機ELと画面はかなりきれいで満足。電池の減りはちょっと早いかなという感じ。

あと、文字入力は少しいけてない。フリック入力はひらがなのみで、英数はトグルのみ。Google日本語入力に手を出すか、POBoxあたり探してみようと思う。

SO-01Cの時刻ずれ

投稿日: Leave a comment

普段使っているLT18i化したSO-01Cの時計が数分ずれることに最近気が付いた。

通常なら、3Gのネットワークから時刻情報をもらってほぼ正確な時刻を刻んでくれるはずなんだけど、MVNOのデータ専用SIMを挿しているからなのか、WiFi接続率が高いからなのか、よくわからないが、同じDOCOMOネットワークにつながっているP-06Cと数分の時間がずれていることがある。

Android設定の「日付と時刻を自動設定」のチェックを入れなおしても変わらず、フライトモードに入れて3Gにアタッチしなおすと時刻ずれがなおる。どうやら最初につなぎに行くときだけ時刻補正がされているっぽい。

そういえば、データ専用SIMで発生するセルスタンバイモードを回避する細工を入れてCSのアタッチに失敗しても無視するようにしているのだが、それが悪さしているのかもという気がしてきた。

しょうがないので、NTPクライアントでも入れようと思ったら、定期的に時刻を補正するアプリは見つかったけど、ntpdみたいにslew modeでじわじわ合わせてくれるいい感じのアプリが見つからなかった。電池の消費量的にそういう挙動をさせるのはさすがに厳しいのかな。

LT18i化したSO-01Cの対応バンド

投稿日: Leave a comment

ふと、LT18iはヨーロッパ向けのモデルなので、Band V/VI (アメリカと日本の800MHz帯)に対応していないんじゃないかと思って、サービスモードで確認してみた。
(ちなみにアメリカ版はLT18aだったはず)

BCという表記はちょっと違和感があるけど、UMTSのBand I, II, V, VIに対応していると出ていて、どうやらちゃんとHWの対応バンドを見て動作しているっぽい。えらい。

 

SO-01CをICS化

投稿日: Leave a comment

P-02DにIIJmioのSIMを挿して使っていて、フライトモードで電池の減りはだいぶましになったけど、フライトモードに設定されるときと解除されるときでBluetoothや無線LANの状態が変わるのがいまいちだなぁと思って、他にいい手がないか調べていたら、root権限があればセルスタンバイ問題を回避する方法があるらしいということが分かった。

そうなれば、今使っていないSO-01Cに手を加えればいいんじゃないかと思って調べていたら、せっかくなのでICS化しようと思って、いろいろいじってみた。

やったことはこんな感じ。

  1. FlashtoolでLT18iのICS4.0.3を焼く
  2. rootを取る
  3. フォント変更、Quick pannelインストール
  4. セルスタンバイ問題のパッチをあてる

詳しくは上のリンク先の通りに設定。ただし、ファイルはリンク切れとかがあって、結構探した。

あと、PCはWindows7 64ビット版だとちょっと怖かったので、Vista 32ビット版のPCで作業した。Flashtoolは64ビット版も用意されていたので大丈夫そうだけど。

以下、ざっと作業の流れ。

1.flashtool-0.6.9.1-windows.exeをインストールして、LT18_4.1.A.0.562_NCB.ftfを焼く。
そのとき、3回に分けて焼く必要があって、

[1回目] Wipe Cache と Exclude system にチェック
[2回目] Exclude Baseband と Exclude Kernel にチェック
[3回目] Wipe User Data、Exclude system、Exclude Baseband、Exclude Kernel にチェック

ただ、自分でやるとなぜか2回目と3回目の終わりでエラーが出る。でも無視しててもちゃんと立ち上がったのでとりあえずよしとする。

2.のrootは、DooMLoRD_v1_Xperia-2011-ICS-ROOT-emu-busybox-su.zip を解凍してrunme.bat を実行するだけ。

3のフォントは、システムのファイルを書き換えるので、ファイルマネージャを入れようと無線LANにつないでESファイルエクスプローラをインストール。そして、/system/fonts に DroidSansJapanese.ttf、/system/etc に fallback_fonts2.xml を入れて、パーミッションを644に変更。そして、元のファイルの名前を変えた上で、fallback_fonts2.xml を fallback_fonts.xml にリネーム。

Quick pannelもやり方は基本的に同じで、/system/appにSystemUI.apkとQuickPannelSettings.apkをコピー。SystemUI.apkのコピーもいったん別名でおいて、パーミッションを644にしてから、元のファイルを消して、新しいファイルをSystemUI.apkに変更する。これだけは、元のファイルをリネームしただけではだめで、消さなければだめだった。

そういえば、ES file managerを入れるときに無線LANをつないだら、4.1.B.0.587のアップデートが来て、ドキドキしながら入れてみた。結局とくに問題はなかったけど。

最後にセルスタンバイ問題。これをやるにはadbを使えるようにしなければいけないので、AndroidSDKをインストール。で、作業はパソコンからコンソールに入ったりファイルを抜き出して書き換えたりという感じ。

これで、IIJmioのSIMでテザリングもできるし、この通り圏外時間が0%になってセルスタンバイ問題もおきなくなったし、かなり快適になった。

 

P-06CとIIJmioのSIMを入手

投稿日: Leave a comment

SPモードメールを使うのが嫌になったのと、いざという時に電池切れでおサイフケータイとして不安を感じ始めてしまったので、勢いでP-06CIIJmioのSIMを買ってみた。

P-02Dの月々サポートを切るのが嫌だったのと、MicroSIMを維持したかったので、機種変更ではなく新規で購入。購入といっても0円。というか、0円だったから衝動的に買ったようなもの。その代わり、月々の基本料が約千円かかるのでランニングコストは0ではない。お店の人も状況をよくわかっているのか、手続きが終わって引き渡す時に「電源切っておきましょうね」といってすかさず電源OFFしてくれた。

んで、SIMの方はIIJmioのミニマムスタート128プランの方。写真の送受信があるのでできれば帯域が広い方がいいけど、外でそんなに必要になることもないので、128kスタートのやつ。
こんなCDみたいなパッケージだけど、中にdocomoの純正SIMと全く同じものが入っていた。

とりあえず、P-06CにP-02DのMicroSIMを挿すにあたってSIMアダプタが必要なので並行してネットで調達し、i-mode契約も追加。そういえば、i-mode契約の追加はMy docomoとかだとだめで、151に電話しなきゃだめだったけど、特に何も言われることなく5分後くらいには使えるようになりまーす、とのこと。

あと、パケホーダイの変更。月の変わり目でしか種別変更できないので、8月末までフラット、9月からダブル2に変更。ダブル2なので月々サポートは維持可能。

それと、新規契約した回線はそのSIMでちょっとだけ端末を立ち上げてMy docomoのIDを発行して電源OFF。あとはネットで不要なオプションやらをすべて解約。パケホーダイシンプルとi-modeも切っちゃてもいいんだけどとりあえず残しておいた。(あまり意味なし)

ここまでが、先週のこと。

SIMアダプタがいろいろトラブりながも先週末に届いたので、電話帳やらおサイフケータイやらを移行。おサイフケータイはドコモショップのiCお引越しでやろうと思っていたけど、いつの間にか対応しているサービスが激減していて、いちいち足を運ぶ価値なしと判断して、ひとつずつちまちまとサーバに預けて呼び戻す作業を繰り返した。

で、昨日、IIJmioのSIMが届いたので、さっそくP-02Dに挿してAPNを設定。問題なく接続できるし、アンテナピクトもちゃんと表示できる。IIJmioのウェブメールサーバへのアクセスは速度制限なしでつながっているのか、spモードのときよりサクサク動いている感あり。そんなにアクセスすることはないけど。

そして今日一日使ってみて、セルスタンバイ 圏外100%問題がちゃんと起きることも確認。データ専用SIMだとPSでしかアタッチできず、CS側のアタッチ失敗=圏外と判定してしまうらしく、アタッチリトライを繰り返すのか、激しく電池が消耗する。

というのはうわさで聞いていたけど、確かに激しい。で、対策で画面スリープでフライトモードに入れるツールもあるけど、それじゃあまりに芸がないので、別のツールを探してみて、AMCTというツールを発見。Aireplane Mode Control Timerというので、フライトモードに入れて何秒後に起きてデータ通信接続をして、また何秒して通信してなかったらフライトモードに入れる的なシーケンス処理をしてくれるもので、タイマーの設定値は自由に変えられるので、チューニングすればいい感じに使えそうなのだけど、逆に自由度が高すぎて最適設定に持っていくのにわりと試行錯誤が入りそうな感じ。

結局、携帯+Palmの構成で使っていた状態に近づいてきた感があるが、やっぱり1台にまとまるといいなとも思う。

P-02Dでpingが打てない

投稿日: Leave a comment

Net Pingというアプリでpingを打とうと思ったら打てず判明。以前は普通に使えていた。

システムのファイルを見てみると、どうやらpingの実行ファイル(/system/bin/ping)がsetuid rootされていなさそうなのが原因ぽい。

P-02D:

$ cd /system/bin
$ ls -l ping
-rwxr-xr-x root  root     26720 2012-07-05 13:34 ping

SO-01C:

$ cd /system/bin
$ ls -l ping
-rwxr-sr-x root  net_raw  26720 2011-07-07 06:37 ping

ファイルのタイムスタンプからして7/5のFOTAでファイルが置き換わったように見える。setuidはセキュリティホールになりうるから意図的にこうしているのかなぁ。pingぐらい使わせてくれてもいいのに。

LUMIX Phone P-02Dに機種変更

投稿日: Leave a comment

価格改定で機種変更でも実質無料になったので、P-02Dを買った。SO-01Cの月々サポートの値引きを打ち切る形になったので、実質的には数千円の持ち出し。

とりあえず、おさいふケータイ復活。

USIMがMicro-SIMに変更。どうやって変更するのかと思ったら、手続き中にSIMが変更になって、旧SIMが挿してあったSO-01Cが圏外状態になって、新しい方が圏内になっていた。

古いSIMは返却するとおもいきや、そのままもらえてしまった。使い道ないけど。

電話帳はgmailの連絡先を使っていたので、データの移行はspモードメールのみ。Micro SDにエクスポートして、新携帯でインポートするだけ。アプリは、PCのブラウザから、Android market 改め Google Play にgmailのアカウントでログインして、マイアプリからひたすらインストールしまくるだけ。すると、P-02Dの中でひたすらインストール処理が実行される。気持ち悪いけど、便利。

写真データやらを移そうと思ったら、Xperia arcについていたMicro SDHC 16GBの内、7GBくらい消費していて、P-02Dの試供品の2GB には到底収まらず。というわけで、慌ててSANDISKのMicro SDHC 16GBを発注した。

それまでのつなぎは、手元にある使っていない4GBに最低限のデータを入れて運用することにする。