2017年1月20日金曜日

Xperia Z1 SO-01F の省電力化 (GPS変更編)

色々調べた結果、

  1. /etc/gps.conf の書き換え
  2. /system/lib/hw/gps.default.so の置き換え

を行うことにしました。

ftf からファイルを取り出すのは7-Zipを使ってFTFの.sinファイルから中身を取り出す方法を参考にさせていただきました。

/etc/gps.conf の書き換えですが、ドコモ版をベースにしました。変更したところは緑で表示、斜体は実際には書いていないコメントになります。

# SPモードで通信しないようにドコモのsupl関連をコメントアウト
#SUPL_HOST=dcm-supl.com
#SUPL_PORT=7275
#SUPL_VER=0x20000
#CAPABILITIES=0x17

# AGPS を追記。いらない気もする...
#
XTRA_SERVER のコメントアウトを削除
#Uncommenting these urls would only enable
#the power up auto injection and force injection(test case).
AGPS=
http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin

# Error Estimate
# _SET = 1
# _CLEAR = 0
ERR_ESTIMATE=0

# NTP_SERVER に追記
#Test
NTP_SERVER=ntp.nict.jp
NTP_SERVER=jp.pool.ntp.org
NTP_SERVER=0.jp.pool.ntp.org
NTP_SERVER=1.jp.pool.ntp.org
NTP_SERVER=2.jp.pool.ntp.org
NTP_SERVER=3.jp.pool.ntp.org
NTP_SERVER=time.gpsonextra.net
#Asia
# NTP_SERVER=asia.pool.ntp.org
#Europe
# NTP_SERVER=europe.pool.ntp.org
#North America
# NTP_SERVER=north-america.pool.ntp.org

# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info
#               4 - Debug, 5 - Verbose
# If DEBUG_LEVEL is commented, Android's logging levels will be used
DEBUG_LEVEL = 2

# Intermediate position report, 1=enable, 0=disable
INTERMEDIATE_POS=0

# SUPL_VER を追記。ドコモ版だと先頭に記載されている 0x2000
# supl version 1.0
SUPL_VER=0x10000

# ドコモ版はCAPABILITIESの記載が無いのでデフォルトの 0x37 から変更
# GPS Capabilities bit mask
# SCHEDULING = 0x01
# MSB = 0x02
# MSA = 0x04
# ON_DEMAND_TIME = 0x10
# GEOFENCE = 0x20
# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING | GEOFENCE
CAPABILITIES=0x13

# Accuracy threshold for intermediate positions
# less accurate positions are ignored, 0 for passing all positions
# ACCURACY_THRES=5000

################################
##### AGPS server settings #####
################################

# ドコモ版は先頭で dcm-supl.com を指定している。
# ググった結果だと google 指定が多いが Xperiaなので SONY様を指定
# どうせ Googleマップだと google様を参照すると思うし

# FOR SUPL SUPPORT, set the following
SUPL_HOST=supl.sonyericsson.com
SUPL_PORT=7275

# FOR C2K PDE SUPPORT, set the following
# C2K_HOST=c2k.pde.com or IP
# C2K_PORT=1234

####################################
#  LTE Positioning Profile Settings
####################################
# 0: Enable RRLP on LTE(Default)
# 1: Enable LPP_User_Plane on LTE
# 2: Enable LPP_Control_Plane
# 3: Enable both LPP_User_Plane and LPP_Control_Plane
LPP_PROFILE = 0

# 海外版だとSGLTE_TARGET の指定は無いが、こちらはドコモ版の設定を生かす
################################
# EXTRA SETTINGS
################################
# NMEA provider (1=Modem Processor, 0=Application Processor)
NMEA_PROVIDER=0
# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE)
SGLTE_TARGET=0

# 海外版だA_GLONASS_POS_PROTOCOL_SELECT の 指定は無いが、
# こちらはドコモ版の設定を生かす。(ロシアの衛星を掴むのかな?)

##################################################
# Select Positioning Protocol on A-GLONASS system
##################################################
# 0x1: RRC CPlane
# 0x2: RRLP UPlane
# 0x4: LLP Uplane
A_GLONASS_POS_PROTOCOL_SELECT = 0x2

gpsのライブラリを置き換える必要がありますので、ベースバンド書き換えの際に落としてきたグローバル版の ftf から

  1. 7-zipsystem.sin の取り出し
  2. flashtool で ext4化
  3. 7-zip で /system/lib/hw/gps.default.so を取り出し
  4. dos窓から adb push gps.default.so /data/local/tmp
  5. adb shell で Z1 に入り、super user になる
  6. mount -o remount,rw /system で /system の読み書きを可能に
  7. /data/local.tmp から /system/lib/hw へ gps.default.so をコピー (旧ファイルのバックアップを忘れずに)
  8. mount -o remount,ro /system で /system の読み込みのみ

をしました。

GPS を ONにしてしばらく状況を確認してみることにします。

ここまでやって何なのですが、実は gps.default.so はドコモ版もグローバル版も同じでした... 先にチェックすれば良かった。SO-02F とかの MVNO対応だとライブラリの入替必須と書いてあったので、てっきり Z1も同様だと思っていました。

ということは、今回の対策で省電力化は多分駄目だと思うので、com.sonyericsson.android.wakeup に対する対策をする必要がありそうです。

2017/02/03 追記
  com.sonyericsson.android.wakeup ですが、TitaniumBackup で無効化することにしました。現在様子見中。問題が無ければこのまま永眠。

2017/02/06 追記
  TitaniumBackup で無効化するも別プロセスから呼ばれているため、無効化の意味が無さそう。もう少し調べてみる。

0 件のコメント:

コメントを投稿