通勤中,電車の中でふとZ1fの画面を見たら,右端から8mm位のところに縦線が表示されるようになった.
さらによく見ると,画面右半分が全体的にちらついている.
静電気か何かで液晶のコントローラがおかしくなったか,フレキが接触不良か何かでノイズ拾っているか.
使えないこともないけど,気持ちが悪いので,白ROMで買った端末だけど,ドコモショップに持ち込もうかと思う.
通勤中,電車の中でふとZ1fの画面を見たら,右端から8mm位のところに縦線が表示されるようになった.
さらによく見ると,画面右半分が全体的にちらついている.
静電気か何かで液晶のコントローラがおかしくなったか,フレキが接触不良か何かでノイズ拾っているか.
使えないこともないけど,気持ちが悪いので,白ROMで買った端末だけど,ドコモショップに持ち込もうかと思う.
docomo/P のおサイフケータイジャケットとソニーのiPhone対応PaSoRi,どっちがはやるんだろうか.
世の中あまり盛り上がってる感じはないけど少し注目してる.
Xperia Z1 f を買った直後はAndroid 4.2.2だったが,動作確認として IIJmio の APN を設定したところ,これのP.20の動作確認と同じくAPNプロトコルに「IPv4/IPv6」(IPV4V6) を設定出来たけど,Android 4.4.2 にバージョンアップしたところ,APNプロトコルの設定がグレイアウトして設定できなかった.
ソフマップにてXperia Z1f (SO-02F) の白ロムを買った.
今使っているGalaxy Note (SC-05D) のメモリが足りなくなってきたので,次の機種を検討.
電車で大きい端末を使うのは手の小さい自分にとっては結構つらいので今度は小さいのにしようと決めていて,白ロムで割と程度が良くて値段もお手頃な Z1f にした.IPv6にも対応してそうだしってことで.
設定等については追々.
よく見ているサイトの情報が更新されていて、おもしろそうな方法が載っていたので、いじり済みのframework.odexを元に戻してインストールしてみた。
framework.odexを戻す前と同じように使えているので特に問題なさそう。
手間を考えるとXposedを使う方がはるかに簡単。
勢い余って、LT18iのICS ROMを焼いたSO-01Cにも同じことをやってみた。こちらもframework.odexをいじっていたがうまく処理できていなかったのか「通信サービスなし」の表示がとれず気になっていたが、Xposedの方法だと下のスクリーンキャプチャのように「NTT DOCOMO」が表示されるようになった。
ここに書いてあるのをやってみた。
SoftBankの使用済みSIMを入れたときのネットワークサーチ結果。DOCOMO、SoftBank、KDDIどれも利用可能なネットワークに見えてる。うまくいってる?
IIJmio (DOCOMO) のSIMに変えた後のネットワークサーチ結果。DOCOMOだけ利用可能なネットワークになった。DOCOMOのSIMだから?
SoftBankのSIMを入れたときにUnlockの解除キーを聞かれなくなったのでうまくいってるとは思うのだけど。プリペイドのSIMでも手に入れられれば確認できるのかな。
朝何気なく自社の商品ページを見たらP-02Dのアップデートのお知らせを発見。
P-02Dは普段持ち歩いていないので、アップデータを自宅サーバでwgetでダウンロードしておいて、帰宅後にアップデート。
> wget "http://dlcache.mobile.pfota.com/pcdownload/firmware/0P0000110100000000000279_0917.dat"
アップデートはここに書いてあるPCでダウンロードしてSDにアップデータを置いてインストールする方法で実行。
所要時間は約30分。開始後10分で、実際に書き換えが始まるようで電源を切るなというメッセージとともに残り時間が表示されるようになった。
アップデート後、再起動で完了。ただホーム画面においていたウィジェットがほとんど動作していなかったので、ガッツリ工場出荷状態に初期化。
立ち上げた時の雰囲気はP-06D (ELUGA V)そのもの。個人的には悪くはない。
P-02Dで一つ気になっていた、MVNO SIMを入れたときにGPSがちゃんと動いていなかったのが、動くようになっていた(GPS Testで確認)。
また、挙動もちょっと違う感じ。以前は、レベルが0の衛星がたくさん見えていたけど、それが表示されなくなって、実際に見えている(と思われる)衛星のみが表示されるようになった。
あと、カメラの性能は追々確認しようと思う。
4/12頃にソフトウェア更新の通知がきた。ただ、リカバリーのROMを純正ROMからCWMに焼きかえていたため、アップデートに失敗するのは分かっていて、延期→3時間延長を繰り返していたけど、さすがにしつこいので夜な夜なアップデートした。
アップデートはROM焼きツールのodinから。ここに書いてある通り。IMM76D.OMMP2のROMイメージを落としてきてodinで焼くだけ。
ついで、CWMの最新版 (ここにあるV6.0.1.2_r13) を入手して焼き、CWMからSuperSUを焼く。
そのあと、データ専用SIM対策とテザリング対策。前回と全く同じ手順。
再起動直後、BusyboxやTitanium backupの動きがおかしかったけど、何度か再起動しているうちに問題なく動くようになった。解決方法がわからずちょっと怪しいが結果おーらい。
山手線に乗っていると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のソースを読み進めようと思ったけど膨大すぎてすでに挫折気味。
Galaxy noteを1週間近く使ってみて気になったこと。
ということで、上2つはもう少し様子見、残りの2つを対策すべく、ここを参考にシステムファイルをいじってみた。
自分でも忘れそうなので備忘録として書いておきます。とりあえず、CWMリカバリ導入済み、root化済み、PCにはSamsung Kiesをインストールしてドライバは設定済み、adbが使えるようになっていることが前提。
コマンドプロンプトから
adb pull /system/framework orig\framework
これで、orig\frameworkにファイルがコピーされる。さらに、作業用ファイルとしてworkディレクトリに framework.jar をコピーしておく。
java -jar baksmali-1.4.1.jar -a 15 -d orig\framework -x work\framework.odex
すると、outディレクトリが作成されてその下にたくさんのファイルが展開される。
変更箇所をパッチとして貼り付けようと思ったら思いのほか長いのでファイルへのリンクとして張ります。
基本的にはここに書いてあるとおりで、
というもののようです。(一つ目はXperia arcのときもやったけど、下2つはコードを読んでもよくわからず)
まずは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
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)が出来上がり。
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をして再起動。
おしまい。