Home > Archives > 2014-07

2014-07

Xperia Z1fのAGPS(gpsOneXTRA)を有効にする方法

 Xperia Z1fのGPSの使い勝手向上のために、いろいろやってみた備忘録。なお、下記の行為は文鎮化等の危険もあるため、自己責任でお願いします。
 
1.イントロダクション
 androidのGPSの機能には、単独で動作するStand Alone GPSと、ネットワークの支援を受けて動作するAGPSがあります。Stand Alone GPSは、端末で受信するGPS信号のみで位置を測定する方式で、衛星から直接軌道情報を受信する必要がります。衛星からの軌道情報のデータ送信速度は50kbpsと遅く、発信間隔も30秒であるため、コールドスタートからの測位には通信状態が良くても30秒以上(一般に数分)の時間がかかります。AGPSは、この軌道情報を通信速度の速いネットワーク経由で取得し、GPS衛星からは時間信号のみを受信することにより、高速で測位をする仕組みです。

 AGPSには、gpsOneXTRAとsuplの2系統があります。このうちgpsOneXTRAは、ネットワークから全てのGPS衛星の軌道情報を数日分を丸ごとダウンロードしてきて、これを処理して測位する方式で、どのようなネットワーク経由でも利用可能ですが、計算負荷がかかります。一方、suplは、携帯電話が接続している基地局からおおまかな位置情報を特定した上で、必要な軌道情報のみを受信して処理する方式で、携帯電話回線経由である必要がありますが、計算負荷は少なくて済みます
 
 さて、Xperia Z1f SO-02FのAGPSですが、デフォルトだとgpsOneXTRAは無効となっており、suplのみが有効です。ただし、suplはdocomo回線時のみ利用可能なため、MVNO回線でGPSを利用する場合には、Stand Alone GPSとなってしまい、GPSの掴みが非常に悪くなります。
 
2.MVNOでAGPSを利用するための一般的な方法(要ルート)
 /system/etc/gps.confを書き換えます。こんな感じにしました。
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
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
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_USER_PLANE=TRUE
DEFAULT_SSL_ENABLE=FALSE
REPORT_POSITION_USE_SUPL_REFLOC=1
QOS_ACCURACY=50
QOS_TIME_OUT_STANDALONE=60
QOS_TIME_OUT_agps=89
QosHorizontalThreshold=1000
QosVerticalThreshold=500
AssistMethodType=1
AgpsUse=1
AgpsMtConf=0
AgpsMtResponseType=1
AgpsServerType=1
AgpsServerIp=3232235555
INTERMEDIATE_POS=1
C2K_HOST=c2k.pde.com
C2K_PORT=1234
SUPL_HOST=FQDN
SUPL_HOST=supl.google.com
SUPL_PORT=7276
SUPL_SECURE_PORT=7278
SUPL_NO_SECURE_PORT=3425
SUPL_TLS_HOST=FQDN
SUPL_TLS_CERT=/etc/SuplRootCert
ACCURACY_THRES=5000
CURRENT_CARRIER=common
QUIPC_ENABLED=1
ENABLE_WIPER=1

 
 しかし、これだけではXperia Z1fのAGPSは動きません。gps.confの設定はとりあえずこれでいいのですが、次にGPSドライバを更新する必要があります。
 
3.gpsOneXTRAが動くように、GPSドライバを入れ換える方法
 Xperia Z1fのGPSドライバは、/system/lib/hw/gps.default.soです。docomo仕様では、このドライバのgpsOneXTRA機能が無効になっているので、有効なドライバを探してきて入れ換える必要があります。私は、Android 4.2.2、Build 14.1.H.2.119 (docomo仕様)を使っているので、これに近いドライバを探しました。海外版の同一機種であるXperia Z1 CompactではAndroid 4.2.2のものがないので、海外版のXperia Z1 Build 14.1.G.2.257 (Global仕様) からドライバを拾うことにしました。
 ネット上からftfをダウンロードしてきて、このあたりを参考にして、gps.default.soを取り出して、/system/lib/hw/gps.default.soに上書きして再起動すれば、入れ換え完了です。なお、ドライバが適合していないと再起動ループ等に陥いるそうなので、バックアップ等をしっかりして自己責任でお願いします。
 
 これで、gpsOneXTRAが動くようになりました。測位が圧倒的に早いです。やったね!
 
4.suplはどうやっても動かなかった
 ここまできたら、せっかくだからsuplも動かしたいじゃないですか。というか、普通の端末ならこの段階でsuplが動くんじゃないかなー、と思う訳ですよね。でも、Xperia Z1fだと動かないこのへんを参考にsupl.google.com用のSSLルート証明書を用意してやったりもしたのですが、無駄でした。なんでかなー。もしかして、SMS対応simなら動くとか? Xperia Z1fのGPSのsuplをMVNOで動かせた人がいたら教えて下さい
 
5.実験記録
● 前提条件
 ・ 機種は、Xperia Z1f SO-02F (docomo)、root化済み
 ・ ROMはAndroid 4.2.2、Buildは14.1.H.2.119 (docomo仕様)
 ・ ネットワークはNVNO IIJmio (SMSなし)を利用
 ・ /system/etc/gps.confは置き換え済み
 ・ ドライバを入れ換えた場合には再起動
 
● 検証ケース
 GPSドライバ(/system/lib/hw/gps.default.so)について検証。
 ・ ケース1:Xperia Z1f 14.1.H.2.119 (docomo仕様) のドライバを利用
 ・ ケース2:Xperia Z1 14.1.G.2.257 (Global仕様) のドライバを利用
 
● 実験内容
 実験条件は以下の3パターン
 
(1) Stand Alone GPSの挙動の確認
 (a) 準備
  ・ GPS有効、ネットワーク無効の状態でGPS Statusを起動
  ・ 通知領域からGPSを無効にする
  ・ GPS StatusにてChash GPS DataをReset
  ・ GPS Statusを終了
 (b) 挙動の確認
  ・ GPS有効、ネットワーク無効の状態でGPS Statusを再起動
  ・ GPSが衛星を掴んでゆく挙動を確認
 
(2) ネットワーク有効時の挙動の確認
 (a) 準備
  ・ (1)と同じ
 (b) 挙動の確認
  ・ GPS有効、ネットワーク有効の状態でGPS Statusを再起動
  ・ GPSが衛星を掴んでゆく挙動を確認
 
(3) AGPSデータダウンロード済みのときの挙動の確認
 (a) 準備
  ・ GPS有効、ネットワーク無効の状態でGPS Statusを起動
  ・ 通知領域からGPSを無効にする
  ・ GPS StatusにてChash GPS DataをReset
  ・ GPS StatusにてAGPSデータのダウンロード
  ・ GPS Statusを終了
 (b) 挙動の確認
  ・ GPS有効、ネットワーク無効の状態でGPS Statusを再起動
  ・ GPSが衛星を掴んでゆく挙動を確認
 
● 実験結果
 ケース1(1)およびケース2(1)では、衛星数が0/0から徐々に増加し、衛星を1つづつ掴んでゆく挙動となりました。これは、Stand Alone GPSにおける通常の振舞いと考えられます。
 
 ケース1(2)および(3)では、AGPSによる高速化が期待されましたが、(1)と同様の結果となりました。
 
 ケース2(2)および(3)では、GPS Statusの起動直後に衛星数が0/0から0/16にジャンプし、その後に利用衛星数が増加してゆく挙動となりました。これは、AGPSが効いている場合の挙動だと考えられます。
 
 各ケースについて通信を監視して、XTRAサーバへのアクセスは確認しましたが、suplサーバーへのアクセスはありませんでした。また、gps.confをいじってXTRAなしの条件でも実験してみましたが、suplは起動しませんでした。
 
 Xperia Z1fはそれなりの演算能力があるので、gpsOneXTRAだけでも十分早いです。でも、機能的には問題ないとはいえ、suplが使えないというのは何となく釈然としないものがありますよねえ。

DualRecoveryでXperia Z1fのルートをとってみた

 前回の続き。14.1.H.2.119のROMを焼いたので、次はrootをとってrecoveryを入れます。いつものように、下記の行為は補償対象外で文鎮化の危険もあるので自己責任です。
 
● rootの取得とrecoveryの導入
(01) DualRecoveryを入手
 ここから、Z1C-lockeddualrecovery2.7.128-BETA.installer.zipを頂きました。これより新しいバージョンは、正常に作動しませんでした。
 
(02) 端末の準備をしておく
 (a) 開発者向けオプションを有効にする
  設定 → 端末情報 → ビルド番号を7回タップ
 (b) USBデバッグを有効にする
  設定 → 開発者向けオプション → USBデバッグ にチェック
 (c) ついでにスリープ無効にしておく
  設定 → 開発者向けオプション → スリープモードにしない にチェック
 (d) 提供元不明のアプリのインストールを有効にする
  設定 → セキュリティ → 提供元不明のアプリ にチェック
 (e) 機内モードにしておく
  設定 → その他の設定 → 機内モードにチェック
  (無線機が起きていると、問題が起きることがあるので)
 
(03) DualRecoveryを実行
 (a) install.batを実行
 (b) rootをとっていないので「3」を選択
 (c) 端末のmake it ra1nを押せと言われたら押す
  (ここで、無線LANが起きているとエラーが出るので注意)
 (d) 端末が自動で再起動する
  (端末が見つからないとかエラーがでるけど大丈夫)
 (e) Enjoy root!と表示されれば完了
 
(04) SuperSUをインストール
 google playからインストールしました
 
● PhilZ Touch 6 によるBackup
(05) PhilZ Touchの起動
 端末の起動 → バイブ → すぐにvolumeの『+』を長押し
 → バイブしたら、volumeボタンは放してOK

 
(06) 日付の修正
 GUI Preference → Time SetUp
  → Time Zone UTC を UTC-9:00
  → Time Zone Offset を 0min
  → Change Date and Time で現在日時を設定
   → Calidate Chosen Date

  
(07) バックアップ
 Backup and Restore → Backup to /storage/sdcard1
  途中で画面が非常に暗くなるかも
  終了時バイブするので、タッチすると復帰
 
(08) 再起動
 Reboot System Now → No で再起動
 
(09) 確認
 sdcard1/clockworkmod/backupにバックアップファイルができている
 
 ISW12HTのときと比べて、Xperia Z1fはroot化手法が確立されていてツールも揃っているので、使う道具さえ間違えなければ凄く簡単ですね。

Xperiaのftfを作ったり焼いたりしてみた

 SonyのXperia Z1f SO-02Fの白ロムを入手したので、ROMを焼いてみた備忘録。言わずもがなですが、下記の行為は補償対象外で文鎮化の可能性もあるので自己責任で。
 
● 目的
 入手したXperia Z1f SO-02FのFirmwareのビルド番号は14.1.H.1.281。最新版は14.3.B.0.288だけど、イマイチ評判が良くない。そこで、14.1.H.2.119のROMを焼くことにした。
 
● 保険に、14.3.B.0.288のftfを作っておく
(01) Flashtoolのインストール
 XperiaのROM焼きツール、Sony Mobile Flasher by Androxydeを入手。
 ここから、ver.0.9.16.1をダウンロードしてインストールしました。 
 
(02) 各種ドライバをインストールしておく
 (a) Flashtool\drivers\Flashtool-drivers.exeを実行
 (b) 以下のものにチェックを入れて『インストール
  Flashmode Driver
  Fastboot Driver
  Common drivers Rhine board
  Xperia Z1 f SO-02F driver
 (c) いろいろ警告が出るけど、無視して強制的にインストール
 
(03) 端末の準備をしておく
 (a) 開発者向けオプションを有効にする
  設定 → 端末情報 → ビルド番号を7回タップ
 (b) USBデバッグを有効にする
  設定 → 開発者向けオプション → USBデバッグ にチェック
 (c) ついでにスリープ無効にしておく
  設定 → 開発者向けオプション → スリープモードにしない にチェック
 (d) 提供元不明のアプリのインストールを有効にする
  設定 → セキュリティ → 提供元不明のアプリ にチェック
 (e) 機内モードにしておく
  設定 → その他の設定 → 機内モードにチェック
  (無線機が起きていると、問題が起きることがあるので)
 
(04) 14.3.B.0.288の素を入手する
 (a) XperiaをPCに接続
 (b) 端末側にダイヤログが出るのでインストールを選択
 (c) PCにPC Companionがインストールされて起動する
 (d) 自動で機種が判別されるので、アップデートのインストールを選択
 (e) 端末を外すか聞かれるので外すを選択
 (f) 端末を外すとダウンロード開始
 (g) 終了すると、アップデートするか聞かれるのでキャンセル
 
(05) 14.3.B.0.288のftfを作る
 (a) 作業用に適当なフォルダを用意して、以下のファイルをコピー
  ProgramData\Sony Mobile\Update Engine\db\13740270\blob_fs\
   FILE_281073473
   FILE_281155295
   FILE_281204359
 (b) ftfの作成
  Flashtoolを起動 → tool → Bundles → FILESET Decrypt を選択
  → 上記の作業フォルダを指定全てのファイルを『->』で右へ移動
  → Convertボタンを押して、画面が変わるまで待つ
  → Deviceをダブルクリックして、Sony Xperia Z1 f (SO-02F) を選択
  → BrandingdocomoVersion14.3.B.0.228とか書く
  → 見えている全てのファイルを『->』で右へ移動
  → Createボタンを押して、待つ
  → Flashtool\firmwares\ にftfファイルが作成される
  SO-02F_14.3.B.0.288_docomo.ftf
 
● 本命の14.1.H.2.119を焼く
(06) SO-02Fの14.1.H.2.119のftfの素となるbinファイルを入手
 14.1.H.2.119のftfは持っていないので、素材をダウンロードして作ります。
 ここにSonyのファイル置き場が書いてあるので、そこから入手しました。
  
(07) binファイルを合体・リネーム
 キューブキューブさんのツールをここから頂きました。
  
 binファイルのあるフォルダでbin2ftffiles.vbsを実行
 以下のファイルができる
  FILE_279914849
  FILE_280857833
  FILE_280857983
 
(08) 14.1.H.2.119のftfを作る
 (05)の手順と同様なので割愛
 SO-02F_14.1.H.2.119_docomo.ftf
 
(09) 14.1.H.2.119のROMを焼く
 (a) 稲妻マーク(Flash device)をクリック
 (b) Flashmodeを選択
 (c) SO-02F/14.1.H.2.119/docomoのFirmwareを選択
 (d) Flashボタンを押す
 (e) 画面の指示に従い、デバイスを接続
  電源を切って30秒以上経過させること
  volumeの『-』キーを押しながらPCと接続すること
 (f) 上手く接続できたら、自動的にFlash開始
 (g) 緑のバーが消えて終了ログが出ていたらデバイスを外す
 (h) 無事に起動すれば成功

 今回は初期化で良いので、APPSLOGもCACHEもDATAもWipe(除外)せずに焼きました。

TestDiskを使ったHDDのリカバリー事例

 先日、同僚のHDDが壊れたので、リカバリーをしてみた備忘録。トラブル内容は、Linuxの外付けUSBHDDが壊れてマウントができない、というものです。まずは、fdiskで状況を確認してみました。
  fdisk -lu /dev/sdc
 
 Linuxさんのご回答は以下のとおり。
 パーティションテーブルが壊れとりますな
  Disk /dev/sdc doesn’t contain a valid partition table
 
 通常の方法(fsckとか)では復旧できそうにないので、TestDiskというツールを使うことにします。ダウンロード元はこちら。Linux, kernel 2.6.18 or later x86_64を頂きました。以下、今回のリカバリーの手順。
 
(01) ダウンロードしたファイルを展開します
 tar jxf testdisk-7.0-WIP.linux26-x86_64.tar.bz2
 
(02) スーパーユーザー権限でtestdisk_staticを叩きます
 sudo ./testdisk-7.0-WIP/testdisk_static

(03) TestDiskが起動するので、新しいログファイルを作成を選択
 >[ Create ] Create a new log file
 
(04) 目的のデバイスを選択
 >Disk /dev/sdc – 1000 GB / 931 GiB – BUFFALO External HDD
 
(05) partition tableのタイプを選択。通常はIntel。稀にEFI GPT。
 >[Intel ] Intel/PC partition
 
(06) 壊れたパーティションを探しに行きます
 >[ Analyse ] Analyse current partition structure and search for lost partitions
 
20140703_01
 
 パーティションテーブルが壊れています。知ってた。
 
(07) ディスクを調べてもらいます
 >[Quick Search]
 
20140703_02
 
 パーティションを見つけてくれました。えらいえらい。
 
(08) パーティションの種類をPrimaryにしてEnterを押します
 >P Linux 0 1 1 121600 254 63 1953520002
 *=Primary bootable P=Primary L=Logical E=Extended D=Deleted
 
(09) ディスクに正しいパーティションテーブルを書き込みます
 >[ Write ] Write partition structure to disk
 
(10) ディスクに書き込んでよいかを聞かれます
 ここを越えると、元に戻せない可能性もあるので、自己責任でYを押します。
 Write partition table, confirm ? (Y/N)
 
(11) Advancedモードを選択します
 >[ Advanced ] Filesystem Utils
 
 パーティションの復旧をしていないと、No partition availablと言われます。
 
(12) ディスクの中身を見てみます
 >[ List ] List and copy files
 
20140703_03
 
 これで、ディスクの中身が見えれば、一応成功です。
 パーティションテーブルだけが壊れているという奇跡を期待しましょう。
 
(13) 見えたファイルを安全なディスクにコピーします
 ”;“で選択して、”C“で選択したファイル/ディレクトリーをコピー。
 コピー先を選択して、”C“で実行。
 
 無事にコピーしてくれることを祈ります。
  
(14) リカバリー完了
 今回は、何回かに分けていくつかのフォルダをコピーしましたが、以下のような結果となりました。
  Copy done! 521688 ok, 2 failed
  Copy done! 25976 ok, 0 failed
  Copy done! 127447 ok, 1 failed
 だいたい、救出できたっぽいですね。いくつかファイルが壊れていますが、致命的ではなさそうなので一安心。
 
 今回は、運良くほぼパーティッションテーブルだけ壊れている状態だったので、99%以上のデータを救出することができました。いつもこんなに上手くいくとは限りませんが、ご参考まで。

Home > Archives > 2014-07

Search
Feeds
Meta

Return to page top

QR Code Business Card