Android の Google Authenticator のデータをダンプしてバックアップする

Android の Google Authenticator 色々な認証に使えて便利ですが,以前 Nexus5 を紛失した時や LGL22 でデータが飛んでしまった後復旧が面倒でした.どうにかバックアップが取れないかなと調べてみました.

Android からデータを取得

/data/data/com.google.android.apps.authenticator2/databases/databases がデータが格納されているファイルらしいです.
adb pull で持ってきたいけど権限がないので一旦 /storage/sdcard0/ に cp する

% adb shell
shell@g2:/ $ su
root@g2:/ # cp /data/data/com.google.android.apps.authenticator2/databases/databases /storage/sdcard0/

ローカルPC に退避

% adb pull /storage/sdcard0/databases .

/storage/sdcard0/ に cp したデータを消す.暗号化領域の下のはずだけど一応上書きしてから削除

% adb shell
shell@g2:/ $ su
root@g2:/ # ls -l /storage/sdcard0/databases
-rw-rw---- root     sdcard_r    16384 2015-10-09 22:51 databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # rm /storage/sdcard0/databases
root@g2:/ # ^D
shell@g2:/ $ ^D

データ形式を確認してdump

該当ファイルは file コマンドによると SQLite3 のようなので dump してみる

% file ./databases
./databases: SQLite 3.x database
% sqlite3 ./databases
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE android_metadata (locale TEXT);
INSERT INTO "android_metadata" VALUES('ja_JP');
CREATE TABLE accounts (_id INTEGER PRIMARY KEY, email TEXT NOT NULL, secret TEXT NOT NULL, counter INTEGER DEFAULT 0, type INTEGER, provider INTEGER DEFAULT 0, issuer TEXT DEFAULT NULL, original_name TEXT DEFAULT NULL);
 :

ここで取得した PRIMARY KEY を HOTP TOKEN を割り出す script の "google-authenticator.py に食わせると Android App と同じコードが帰ってくるのを確認しました.勿論普通に認証も可能.

IMG_20151010_012917

ということで要root ですが, /data/data/com.google.android.apps.authenticator2/databases/databases を退避して他の端末に持って行っても動作するかも.少なくとも PRIMARY KEY は入手できるので手動で入力すれば OK ですね.
とはいえ端末紛失時には作りなおしたほうが良いでしょうが.

root が取れない場合は登録時に PRIMARY KEY をメモしておくくらいですかね.QR Code だけしか見えない場合は Google Authenticator に食わせる前に別のリーダーを利用したりすれば可能です
例えば以下のような読み取り内容の場合 6QHI5WW6H3FMJ2ZI が PRIMARY KEY です.

otpauth://t│·········· otp/mk@micro?secret=6QHI5WW6H3FMJ2ZI

Android の所謂Stagefright 問題対応を試す

てことで暫く運用して問題なさそう&思ってたより対応遅そうなのでこちらにもメモ.
所謂Stagefright 問題.

メディアプレイヤーフレームワーク Stagefright に欠陥があり,メディアファイルにより任意のコードが実行可能.対象はAndroid 2.2(Froyo) 以降全てと幅広い.(なお,95%のAndroid が対象らしい.逆に2.1以前が 5% もあるのに驚いたり)
MMS 経由で攻略メディアファイルを送信してユーザの操作なしに乗っ取り可能.日本ではMMS が利用できる環境は少ないけれどこのパターンは気づかないうちに乗っ取られるのがとても怖い.

脆弱性の確認は以下のアプリでも可能.

対策はAndroid 5.1.1_r5 にする,Google が各端末メーカに提供したパッチを配布したのでそれがリリースされるのを待って適用する.
しかし,Nexus でさえやっと8/5 にリリースなので,日本の端末は何時になるだろう……という感じ.

ちなみにCynamonMod は即日対応完了している.

先ずはMMS で勝手にメディアファイルが展開されるのを防げないかと幾つかのアプリを確認してみたがメディアを自動読み込みしないというような設定のあるものは見当たらなかった.

検索したりしていると以下のフォーラムを発見.build.drop でStagefright を無効にしてしまうというもの.

media.stagefright.enable-aac=false
media.stagefright.enable-fma2dp=false
media.stagefright.enable-http=false
media.stagefright.enable-player=false
media.stagefright.enable-qcp=false
media.stagefright.enable-scan=false

build.drop の書き換えは権限さえあれば以下のアプリでお手軽に出来る.

root が無くても書き換えが可能な場合もあるらしいが,AU で契約している端末(KYOCERA URBANO PROGRESSO)はダメだった.

% ./adb pull /system/build.prop
% vim build.prop
% ./adb push ./build.prop /system/build.prop 
failed to copy './build.prop' to '/system/build.prop': Read-only file system
% ./adb shell
shell@android:/$ ls -l /system/build.prop
rw-r--r- root     root         4977 2014-07-29 21:20 build.prop
/dev/block/mmcblk0p12 /system ext4 ro,relatime,user_xattr,barrier=1,nodelalloc,data=journal 0 0

手持ちのAU と契約している端末は2012年5月のものらしい.セキュリティ修正は何時やってくるのか,そもそもやってくるのか…….

可能なら CynamonMod にしてしまいたいところですが,国内端末とかはなかなかですね…….

TeamViewer Linux版 を少し試す & 文字化け対応

[TeamViewer Linux版 あるのか.しらなかった

“Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
(元投稿消えている)

ということでTeamViewer にLinux版があるのを知り試してみました.

導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

% wget http://download.teamviewer.com/download/teamviewer_i386.deb
% sha1sum teamviewer_10.0.41499_i386.deb 
438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
% sha256sum teamviewer_10.0.41499_i386.deb 
0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
% sudo dpkg -i teamviewer_10.0.41499_i386.deb

このとき日本語Linux環境で利用した場合所々文字化けが起こります.
Screenshot from 2015-08-02 08-03-25

TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

  • 修正内容
    /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"

デーモンの再起動

% teamviewer daemon stop
% teamviewer daemon start

次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

TeamViewer Linux版 を少し試す & 文字化け対応

[TeamViewer Linux版 あるのか.しらなかった

“Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
(元投稿消えている)

ということでTeamViewer にLinux版があるのを知り試してみました.

導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

% wget http://download.teamviewer.com/download/teamviewer_i386.deb
% sha1sum teamviewer_10.0.41499_i386.deb 
438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
% sha256sum teamviewer_10.0.41499_i386.deb 
0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
% sudo dpkg -i teamviewer_10.0.41499_i386.deb

このとき日本語Linux環境で利用した場合所々文字化けが起こります.
Screenshot from 2015-08-02 08-03-25

TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

  • 修正内容
    /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"

デーモンの再起動

% teamviewer daemon stop
% teamviewer daemon start

次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

Android のTTS でハングアウトメッセージを流す

Ingressで複数人で移動することがあったのですが,連絡は基本的にGoogle ハングアウト.motercycle では基本的に確認できません.Android には標準でTTS(Text To Speak) が利用出来ます.ハングアウトメッセージをTTS に繋げることが出来たら大雑把に状況確認が出来るのではと試してみました.

N2 TTS の導入

TTS にはKDDI研究所のN2 TTS を利用しました.導入手順は以下のページにあります.

追加音声も4×4種類あります.

今回はfa001 を利用しました.

Screenshot_2015-06-23-07-19-04Screenshot_2015-06-23-07-18-50Screenshot_2015-06-23-07-18-30

Voice Notify の設定

ハングアウトアプリからTTS に流し込めれば良いのですが,出来ないようです.Google Play Store で使えそうなアプリを探したところ通知を読み上げてくれるVoice Notify というアプリを見つけました.

このアプリを導入し,音声通知をOn に
Screenshot_2015-06-23-07-19-33

通知対象のアプリにハングアウトだけ登録します.アプリケーションが多い場合はメニューから Igoner All で一旦全部解除してから filter で検索すると便利です.
Screenshot_2015-06-23-07-20-29Screenshot_2015-06-23-07-20-16

ここで通知対象のアプリを増やすとそのアプリの通知も読み上げられます.メッセージの内容が読み上げられるかはそのアプリの通知内容次第になります.例えばGoogle+ では内容により省略されたりします.

ハングアウトの設定

通知をしたいハングアウトの通知をOn にします.これでハングアウトから通知があればその内容が読み上げられます.

Screenshot from 2015-06-23 07-35-06


これで実際に試してみましたが,思っていたより内容は把握出来ました.長文だと辛いですが短文なら十分.ボリュームは6割位でイヤホンマイク片耳(ダイソーで購入した@100のもの)で聞いていましたが低速なら問題なし,50km/h以上だと聞き取りづらくなってきました.恐らく高速道路だとダメでしょうね.この辺はスピーカーやイヤホン次第で変わると思います.

mineoを刺したLGL22のA-GPSサーバを変更してみる

Screenshot_2015-04-21-20-55-30
LGL22 にmineo のSIM を挿して運用していますが,どうもGPS の動作がおかしい.IngressGPS Status & Toolbox を起動して1時間とかずっと置いといても測位できなかったりする.
以下のページを見るとキャリアが用意したA-GPS 情報を配布しているサーバは外からアクセスできなくてMVNO だと使えない,Google提供のA-GPS サーバがあってこれは外から使えるらしいということが分かりました.A-PGS 使えなかった時はタイムアウトして欲しい気もしますが….

  • トークセッション. MVNOとGPSについて (大内)

    趣旨:「MVNOではGPSは使えない」という誤解がありますが、正しくありません。しかし、一部のスマホでGPSの位置情報がうまく利用できないように見えるのも事実です。Androidを例に位置情報取得の仕組みとその原因についてご紹介します。

ということで,/etc/gps.conf のSUPL 部分を以下のように書き換えてみました.

SUPL_HOST=supl.google.com と SUPL_PORT=7275 or SUPL_PORT=7276 部分.書き換えた後再起動しても症状は変わらないよう.

Cinnamon Mod だと元々Google のサーバを向いているとのことなので CM12 をそのまま真似してみる.

これで数日使ってみているけど今のところ問題無さそう.
ただ,この方法は /system 領域の編集が必要なので通常は要root
もうすぐキャリア端末のSIM Free がやりやすくなるようですが,この辺りも解決して欲しいですね.APN みたいに設定画面から書き換えできるようにするとか.

以下は書き換え時のメモです.

$ ./adb shell
$ su
# mount -o rw,remount /system
# cp -p /etc/gps.conf /etc/gps.conf.org
# vi /etc/gps.conf
# cat /etc/gps.conf
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
SUPL_HOST=supl.google.com
SUPL_PORT=7276
# mount -o ro,remount /system
# exit
$ exit

Xperia Pro(MK16a)に入れたCM12を使ってみる

Xperia Pro(MK16a)にCM12を入れました.ちょこちょこ設定をしてみます.

Bluetoothテザリングを試す

先ずはやりたかったBluetoothテザリングの設定などをしてみます.
といってもメニューから辿ってOnにするだけです.この設定は再起動してもそのままのようです.
Screenshot_2015-03-27-13-54-20Screenshot_2015-03-27-13-54-36Screenshot_2015-03-27-13-54-52

後は適当な機器とペアリングをすれば接続できます.同時接続も可能で3台までは確認しました.同時にRazikoをBluetoothヘッドホンで聞いても大丈夫.
Screenshot_2015-03-27-13-59-43

このテザリング機能はなかなか良く出来ていて,XperiaProが3Gに接続されている場合はもちろん,Wi-Fiに接続されている場合はそちらにルーティングを行います.これはなかなか便利.
公衆Wi-Fiサービスなどで1台しか接続できない場合もありますがそういう時も大丈夫ですね.

暫く使ってみていますが,途中で切れてしまうこともなく安定しています.
#手持ちのAUの国内端末すぐ通信できなくなるので見習って欲しい….

root権を使えるようにする

adb shellからsuでrootになれず.SuperSUも使えなくてあれ?と思ったのですがCM12ではちょっと方法が変わっているようです.開発者向けオプションの中に以下のような設定ができていました.とりあえずADB shellで使いたいので「ADBのみ」の設定に
Screenshot_2015-03-23-02-15-40 (2)

カメラのシャッター音を消してみる

ADBでrootが使えるように設定した後,シャッター音を消すためにadb shellでXperiaProの中に入ります.

% ./adb shell
shell@MK16i:/ $

suコマンドでrootになります.

shell@MK16i:/ $ su
root@MK16i:/ #

シャッター音らしきファイルをfindコマンドで探します.それらしいものがありました.

root@MK16i:/ # find /system -name "*.ogg"|grep -i camera
/system/media/audio/ui/camera_focus.ogg
/system/media/audio/ui/camera_click.ogg

該当のファイルシステムを書き込みできるようにremountします.

root@MK16i:/ # df
Filesystem               Size     Used     Free   Blksize
/dev                   219.4M    36.0K   219.4M   4096
/sys/fs/cgroup         219.4M     0.0K   219.4M   4096
/mnt/asec              219.4M     0.0K   219.4M   4096
/mnt/obb               219.4M     0.0K   219.4M   4096
/system                919.5M   568.7M   350.8M   4096
/cache                   4.0M   804.0K     3.2M   4096
/data                    2.0G   505.2M     1.5G   4096
/mnt/media_rw/sdcard0     5.4G   302.5M     5.1G   32768
/mnt/secure/asec         5.4G   302.5M     5.1G   32768
/storage/sdcard0         5.4G   302.5M     5.1G   32768
root@MK16i:/ # mount -o remount,rw /system
root@MK16i:/ # mount |grep /system
/dev/block/mtd/by-name/system /system yaffs2 rw,seclabel,relatime 0 0

該当ファイルをリネームします.

root@MK16i:/ # cd /system/media/audio/ui/
root@MK16i:/system/media/audio/ui # ls
Dock.ogg
Effect_Tick.ogg
KeypressDelete.ogg
KeypressInvalid.ogg
KeypressReturn.ogg
KeypressSpacebar.ogg
KeypressStandard.ogg
Lock.ogg
LowBattery.ogg
Trusted.ogg
Undock.ogg
Unlock.ogg
VideoRecord.ogg
WirelessChargingStarted.ogg
camera_click.ogg
camera_focus.ogg
root@MK16i:/system/media/audio/ui # mv camera_click.ogg camera_click.ogg-
root@MK16i:/system/media/audio/ui # mv camera_focus.ogg camera_focus.ogg-
root@MK16i:/system/media/audio/ui # mv VideoRecord.ogg VideoRecord.ogg-

元のようにファイルシステムを読み込み専用に戻します.

root@MK16i:/ # mount -o remount,ro /system
root@MK16i:/ # mount |grep /system
/dev/block/mtd/by-name/system /system yaffs2 ro,seclabel,relatime 0 0

カメラアプリを試すとシャッター音がしなくなっていました.成功のようです.

アプリを導入してみる

CM12にしてストレージは結構空きが出来たしSDへの導入も出来るようになりましたが,重いアプリは辛いのであまり入れていません.とりあえずキーボードを活かすためにエディタのJota+,日本語入力のためにFlickWnn,GPSログを取るためにOSMTracker,データやり取りのためにownCloud/Picasa Tool,サイマルラジオのRaziko(radiko.jp,らじる),念の為?Ingressといったところです.
Screenshot_2015-03-27-14-08-40

FlickWnn利用時はShift+Spaceで入力切替,右端の地球マークのキーで大文字小文字切り替えです.起動しは遅いけど起動してしまえば普通に入力できます.

最近メインで使っているSNSのGoogle+も入れてみたのですが,重くて使い物にならないので諦めました.投稿機能だけでいいので軽いものとかがあると良いのですけど….標準ブラウザでの閲覧も重いです.モバイル版だとそこそこ軽いですが,投稿時に写真添付するのに画面遷移が必要だったりと結構ストレスです.この端末では諦めたほうが良さそう.

しかし,重いとはいえOSが最新になったのは嬉しいです.重いと言っても2.3の頃と同じくらいの重さな感じなので戻す気はしません.今はいろいろと穴が多くてAndroid 4.3以前は使いたくないですしね….
国内の大抵の端末は2年縛りがあってもそれ以前にサポートやめちゃって穴の開いたまま使うか新しいのに乗り換えるしか無いので辛いです.ずっとサポートされるのが理想ですが,サポートしないならこの端末のように公式でロック解除方法を提供してくれるのが普通になるといいのにと思います(Nexusシリーズなどは公式で初めからロック解除可能).そうしたら今回のようにOSを入れ替えて使い続けることが出来るかもしれません.そうならないとCMの開発対象になる国際端末やその国内版じゃないとなかなか手を出す気にならないです….
#でも保証が無くなるのを理解しないでサポートに文句言うような人が要ると難しいのかもですね.

XperiaPro(MK16a)にLolipopベースのCyanogenMod12を導入してみる

Xperia Pro(MK16a)をBootloader Unlock してみた | matoken’s meme
でXperia Pro のブートローダーのアンロックをしたのでROMを入れ替えてみます.
入れ替えるROMはAndroidベースのCyanogenModを利用します.

CyanogenModのページを見るとXperiaProのイメージはメンテされていないようです.

古いXperiaのプロジェクトのLegacyXperia Projectを見に行くとアクティブなようなのでこちらのイメージを利用することにします.

せっかくなのでLolipop ベースのCyanogenMod12 を試してみます.

BasketBuild からcm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zipを入手しました.cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip.md5 は0byte でした….BasketBuild には8caec5afb32aacd9e529ca31f6df6595 と書かれていたのでこれと突き合わせました.

% echo '8caec5afb32aacd9e529ca31f6df6595  cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip' > cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip.md5
% md5sum -c cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip.md5
cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip: 完了
% sha1sum cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip
7d9b2c06c34bb540f5ed74635e7ddee65d27c2fa  cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip
% sha256sum cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip 
b82909fffea8ddf9ceb4f69b84970e7148a4de1b6f745a7a17f1c9cf9b8b2436  cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip
% sha512sum cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip 
5a7c6b5c0314ee4df6d9e381669518468c265cdeec0c831c20278c852aa2c4c32146ede11a5650b57e07ecddccb02950b58509d3a53310512be704975e0cbae9  cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip

CyanogenModにはGoogleの不自由なソフトウェアやプロプライエタリなドライバが同梱されていません.別パッケージのGoogle Apps(GApps)として配布されています.

GAppsは巨大なので機能を削ってスリム化されたパッケージも配布されています.

今回はこの pa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip を利用しました.hashは見当たりませんでした.手元では以下のような感じです.

% md5sum pa_gapps-modular-pico\(uni\)-5.0.1-20150315-signed.zip
3ee06867bb52465a83fd7625f7750f75  pa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip
% sha1sum pa_gapps-modular-pico\(uni\)-5.0.1-20150315-signed.zip 
639411d58817e38212b892a34832bbe1db094d36  pa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip
% sha256sum pa_gapps-modular-pico\(uni\)-5.0.1-20150315-signed.zip
f4a88039ff7870eaf989ab63c5d01ac315aecef3e66bff24e723cb8de66681fe  pa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip
% sha512sum pa_gapps-modular-pico\(uni\)-5.0.1-20150315-signed.zip 
daec26a87eb5acb6a492d6a691c2d602adc9fb201a9d9e0604f199654c16c59dcc99f636f21684a38931930951cbf68692a4c4ac717a09a60802fc0d2ce854b2  pa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip

#このPA_GAppsは記事を書くために確認したら開発をやめちゃうようです><
##次の辺りが使えるかもしれません.(未確認)

cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zippa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zip の2ファイルをmicroSD Card にコピーして,microSD をXperiaProに挿します.

cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip内からboot.imgファイルを取り出します.

% unzip cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip boot.img
Archive:  cm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zip
signed by SignApk
  inflating: boot.img

Xperia Pro をnvflash モードで起動します.

  • 電源off 状態からメニューキーを押しながらUSB Cable 接続
  • 右上側面のHDMIコネクタ上のLEDが青になる

nvflash コマンドでboot.img を送り込み起動させます.

% ./fastboot flash boot boot.img
[sudo] password for mk:
sending 'boot' (8704 KB)...
(bootloader) USB download speed was 139264kB/s
OKAY [  0.999s]
writing 'boot'...
(bootloader) Download buffer format: boot IMG
(bootloader) Flash of partition 'boot' requested
(bootloader) S1 partID 0x00000003, block 0x00000280-0x000002e3
(bootloader) Erase operation complete, 0 bad blocks encountered
(bootloader) Flashing...
(bootloader) Flash operation complete
OKAY [  1.707s]
 inished. total time: 2.706s

この後,USB Cableを抜いて電源を入れます.LegacyXperiaのロゴが出ている間に下ボリュームキーを連打します.うまく行くとCYANOGEN Recoveryの画面になります.

IMG_20150327_130657

先ずはデータ消去を行います.

  • ボリュームの上下でメニューを移動し,Wipe cache partition で電源キーを押し決定
  • ボリュームの上下でメニューを移動し,Wipe data/factory resetで電源キーを押し決定

ROMを焼きます.

  • ボリュームの上下でメニューを移動し,Apply update で電源キーを押し決定
  • Choose from sdcard0を選択し,SD Card内のcm-12-20150314-UNOFFICIAL-LegacyXperia-iyokan.zipを選択して焼く
  • 同様にGAppsのpa_gapps-modular-pico(uni)-5.0.1-20150315-signed.zipを焼きます.
  • Reboot system nowで再起動します.

後はAndroidの初期設定です.しかし,初期設定時はすごく重い(ホームボタンを押してもタイムアウトして何も出ないうちに画面が消灯したりする)ので気長にやりましょう.初期設定が終わればそこそこ実用的な速度になります.

IMG_20150322_101440
Screenshot_2015-03-27-13-36-34Screenshot_2015-03-27-13-36-41

重いけどIngressも動きます.
Screenshot_2015-03-25-12-45-44Screenshot_2015-03-25-12-59-16

Xperia Pro(MK16a)をBootloader Unlock してみた

Xperia Pro(MK16a)を持っているのですが,OSが古いし標準アプリも多くてストレージもいっぱいで使いたいアプリもなかなか入れることが出来ません.
最近はこの端末にMVNOのSIMを刺してモバイルルータ and GPSロガー的に使っていますがbluetooth tethering も使えずWi-Fi tethering だとバッテリの減りも早いです.ということでカスタムROMやCyanogenMod11か12あたりに入れ替えたいのですがブートローダーにロックがかかっているのでまずはこれを解除しないといけません.Test Point を使ったりするのは面倒だなと思っていたのですが,現在は公式でアンロックコードを手に入れることができるのでこちらで行うことに.
※保証がきかなくなります.SEUSなどが利用できなくなります.公式アップデートも利用できなくなるそうです.(まあこれからOTAとか来ることはないと思いますが)

本体の他に以下のものが必要です.ここでは開発環境の説明はしません.

  • Android 開発環境の動作するPC(今回はDebian Jessie)
  • Android 開発環境の中のfastboot コマンド(sdk/platform-tools 以下)
  • USB A-microB ケーブル

アンロックコードの入手

アンロックコードは以下のページから入手できます.

機種を選択して,メールアドレスを入力すると確認メールが届くので,そのメールのURL をクリックするとIMEIの入力画面になって,そこでIMEI を入力することでCodeが入手できます.

アンロック

Xperia Pro の電源を切ります.
USBケーブルはPCのみに接続する
電源Off 状態からメニューボタンを押しながらUSBケーブルを接続する
右上側面のHDMIコネクタ横のLEDが青くなるとFastbootモードになっている

Fastboot モードの時のdmesgはこんな感じでした.

[78677.917985] usb 1-1.1: new high-speed USB device number 30 using ehci-pci
[78678.013776] usb 1-1.1: unable to get BOS descriptor
[78678.025756] usb 1-1.1: New USB device found, idVendor=0fce, idProduct=0dde
[78678.025764] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[78678.025769] usb 1-1.1: Product: S1Boot Fastboot
[78678.025774] usb 1-1.1: Manufacturer: Sony Ericsson Mobile Communications AB
[78678.025778] usb 1-1.1: SerialNumber: CB5A1G45XXXXXX

fastboot devices コマンドで接続を確認します.

% ./fastboot devices
CB5A1G45XXXXXX  fastboot
% ./fastboot -i 0x0fce getvar version
version: 0.3
finished. total time: 0.001s

もしここでno permissions fastboot というエラーが出る場合はadb serverを起動しなおしてみるとうまく行くようです.それでもうまく行かない場合root権限で起動し直す(sudo command)とうまく行ったことも.

% ./fastboot devices
no permissions  fastboot
% ./adb kill-server
% ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
% ./fastboot devices
CB5A1G45XXXXXX  fastboot

問題ないようなら以下のコマンドでアンロックコードを指定してアンロックします.

% ./fastboot -i 0x0fce oem unlock 0xC3BA1080A6XXXXXX
...
(bootloader) Unlock phone requested
(bootloader) Erasing block 0x00001300
(bootloader) Erasing block 0x00001400
(bootloader) Erasing block 0x00001500
(bootloader) Erasing block 0x00001600
(bootloader) Erasing block 0x00001700
(bootloader) Erasing block 0x00001800
(bootloader) Erasing block 0x00001900
(bootloader) Erasing block 0x00001a00
(bootloader) Erasing block 0x00001b00
(bootloader) Erasing block 0x00001c00
(bootloader) Erasing block 0x00001d00
(bootloader) Erasing block 0x00001e00
(bootloader) Erasing block 0x00001f00
OKAY [  4.587s]
finished. total time: 4.587s

これでアンロック完了です.
次はOSを入れ替えてみます.

Android から USB-TTL 経由でRaspberry Pi にアクセス

ふと,手元のUSB-TTLアダプタ(Prolific PL2303)とmicroUSBのホストケーブルでAndroidに繋げば普通に使えるのではと思って試してみました.

Raspberry Pi 側の接続.
赤の5Vは接続しなくても動きますが,接続すると少し給電されます.
IMG_20150212_163124

こんな感じに.
IMG_20150212_204416.jpg

Android側のアプリは10種類ほど試しましたが今回利用したProlific PL2303では以下の3つでデバイスを認識しました.Playストアを見た感じではFTDI対応のものが一番多そうでした.

という感じで実際利用できているのはUSB Serial Terminal Liteだけでした.

設定はBitrateの変更と文字コードの変更を行いました.
Screenshot_2015-02-12-20-39-28

デバイスの認識状態はこんな感じ
Screenshot_2015-02-12-20-24-12Screenshot_2015-02-12-20-24-19

そしてこんな感じで使えています
Screenshot_2015-02-12-20-22-35

使い勝手はあまり良くないですが,出先とかでちょっとコマンドを打ちたいときに良さそうです.