26 January 2015

Xperia M にXposed導入、シャッター音消去、失敗したブートローダー・アンロック

Xperia M C1904のファームウエアを15.4.A.1.9にアップデート後、カスタマイズを行った。

ブートローダー アンロックの失敗

ブートローダー・アンロックについて書かれたxdaフォーラムの『[TUTORIAL] Xperia M Bootloader Unlocking』を参考にして…

SONYの公式ページ『Unlock your boot loader』(http://developer.sonymobile.com/unlockbootloader/)にアクセスして、IMEIからアンロック・キーワードを受け取る。

※ まず、メールアドレスを入力して、IMEI登録ページのリンクを受け取る必要がある。 メールに記されたリンクをクリックすると、次のようなIMEI入力ページが表示される

20150126-bootunlock-01.jpg
IMEI入力画面

IMEIを入力すると、次のようなアンロック方法が書かれたページが表示される。

20150126-bootunlock-02.jpg
アンロック キーの通知と、アンロック方法を説明した画面

スマートフォンの電源を一旦切ってから、「Volume Up キーを押しながら」 USBケーブルをパソコンに接続する。 (Fastbootモードで接続する)

コンソールを開いて、スマートフォンがFastbootモードで認識されているか確認してから、ブートローダー・アンロックのコマンドを実行する。(アンロック方法が書かれた画面をコピー、ペーストすればよいだけ。次の入力サンプルで、赤字の部分がSONYから通知されたunlock code)

# fastboot devices
YT850CM11A	fastboot        ← 認識されていればこのように表示される
 
# fastboot -i 0x0fce oem unlock 0xFEF9475AF4AF1647
...
OKAY [  4.412s]
finished. total time: 4.412s

ケーブルをパソコンから抜いて電源を入れるか、もしくは、 fastboot reboot で再起動をかける。

20150126-bootscreen.jpg

ブート画面 (七色のプラズマが流れる 上のような画面)が延々と続くだけで、30分位放置しても何の進展もない。一般的にブートループ(bootloop)と呼ばれている、起動不能に落ちいった状況だ。

Googleで『 "Xperia M" bootloader bootloop 』検索すると、この悲劇に見舞われた人がなんと多数居ることか…

ブートループからの復旧

この状態でも、Fastbootモード(Volume Upキーを押してUSB接続) または Flashモード(Volume Downキーを押してUSB接続)で、パソコン側にきっちりと認識されているため、何らかの方法で復旧はできるはずだ。

まず、Flashtool でftf化したSONY公式ファームウエアに書き戻してみる。この結果は、ブートループが解消されず失敗。 → ブートループは公式ファームウエアの仕様のようだ…

次に、SONY PC Companionを起動して、『携帯電話/タブレットの修復』を実行する。以前に接続されたスマートフォンの一覧が表示されるので、”Xperia M”を選択して実行すれば、最新のファームウエアに上書きされて復旧される。 この結果、起動するようになった。

つまり、ブートローダーが元に戻されて(ロックされて)、その結果 公式ファームウエアの起動制限の罠に引っかからなくなったということなのだろう。

Google検索では、ブートループからの復旧方法が議論されている例が多く見つかるが、Linuxの起動シーケンスのどの部分を書き換えれば、起動制限を回避できるのかの情報は見つからなかった。 よって、ブートローダー・アンロックは諦めることにする。

Xposed導入

xdaフォーラムの『Xposed - General info, versions & changelog』に紹介されている、Xposedの公式配布ページ http://dl.xposed.info/latest.apk から、最新版のapk をダウンロードし、インストールする。

20150126-xposed-install.jpg
apkをインストール後Xposedアプリを実行して、このアプリ内でシステムへの組み込みを行う。この画面の『インストール/更新』のボタンを押すだけ。

スマートフォンを再起動後、モジュールをダウンロードしてインストール。モジュールの検索も、Xposedの『ダウンロード』画面から行える。 とりあえずインストールしたのは、次のようなモジュール

20150126-xposed-module.jpg

GravityBox [JB]
Hide Stamina mode icon
Serajr Xperia Xposed ← マルウエアが検出される件は次のセクション参照

実際にカスタマイズを行った設定画面例

20150126-xposed-statusbarcolor.jpg
Xposed GravityBoxでステータスバーの表示色を変更

この画面のステータスバーのように、標準の「白」からカスタマイズして「水色」に変更した。

20150126-xposed-navbarheight.jpg
Xposed GravityBoxでナビバーの高さを変更

ナビバーとは画面下部のホームや戻るボタンのある所。標準より、10%ほど細くしている。

20150126-xposed-navbarmenu.jpg
Xposed GravityBoxでナビバーにカスタムメニュー表示

ナビバーの右端に「…」のようなカスタムメニューを表示した。このボタンを押すと、スモールアプリではなく、普通のアプリへのショートカットのミニウインドウが開く。

また、ナビバーのそれぞれのボタンの「長押し」「ダブルタップ」などに新たなアクションを追加することもできる。

20150126-xposed-powermenu.jpg
Xperia Xposedで電源メニューのカスタマイズ

「フラッシュライト」や「再起動」メニューを追加した。

20150126-xposed-powermenu-compare.jpg
電源メニュー 変更前後の比較

※ ステータスバーを開いて表示する「クイック設定」をカスタマイズしてみたが、Xperia Mではシステムに反映されなかった。

Xperia Xposedにトロイの木馬が発見されたと警告

ClamAVのスキャンで、次のような警告が出た

/home/user/Desktop/sejar/com.serajr.xperia.xposed_v1_c86c47.apk: Andr.Trojan.Locker FOUND

apkは圧縮されているので、apktoolで解凍したものを、再度ClamAVでスキャンし安全であることを確認した。

$ java -jar ../apktool1.5.2/apktool.jar d com.serajr.xperia.xposed_v1_c86c47.apk

シャッター、画面キャプチャのサウンドを無効化

静かな部屋では、うるさすぎるくらいの音が出るため、無効化せずに使うことは事実上不可能。 ボリュームをいじれるようにしてくれないと、ほぼ全員が音を無効化して使うだけだと思うんですけどね…

シャッター音を無効化するためのスクリプト

disable_shutter_sound.sh
#!/system/bin/sh
 
# check process ric, if exist, disable ric
# (/systemをR/W許可でマウントすると強制リブートさせないようにする)
if [ -n "$(pgrep -f /sbin/ric)" ]
then
    /system/bin/mount -o remount,rw /
    [ -f /sbin/ric ] && /system/bin/mv /sbin/ric /sbin/ric.bak
    /system/bin/mount -o remount,ro /
    /system/bin/stop ric
    /system/xbin/pkill -f /sbin/ric
    echo "ric disabled......"
fi
 
# /system remount in R/W mode
/system/bin/mount -o remount,rw /system
echo "/system R/W remount......"
 
# シャッター音のファイルを改名して、読み込まれないようにする処理 (ここから)
[ -f /system/media/audio/ui/camera_click.ogg ] && mv /system/media/audio/ui/camera_click.ogg /system/media/audio/ui/_camera_click.ogg
[ -f /system/media/audio/ui/camera_focus.ogg ] && mv /system/media/audio/ui/camera_focus.ogg /system/media/audio/ui/_camera_focus.ogg
[ -f /system/media/audio/ui/VideoRecord.ogg ] && mv /system/media/audio/ui/VideoRecord.ogg /system/media/audio/ui/_VideoRecord.ogg
 
echo "media/audio/ui/ done......"
 
[ -f /system/media/audio/camera/sound1/shutter.m4a ] && mv /system/media/audio/camera/sound1/shutter.m4a /system/media/audio/camera/sound1/_shutter.m4a
[ -f /system/media/audio/camera/sound1/shutter_done.wav ] && mv /system/media/audio/camera/sound1/shutter_done.wav /system/media/audio/camera/sound1/_shutter_done.wav
[ -f /system/media/audio/camera/sound1/start_rec.m4a ] && mv /system/media/audio/camera/sound1/start_rec.m4a /system/media/audio/camera/sound1/_start_rec.m4a
[ -f /system/media/audio/camera/sound1/stop_rec.m4a ] && mv /system/media/audio/camera/sound1/stop_rec.m4a /system/media/audio/camera/sound1/_stop_rec.m4a
 
echo "media/audio/camera/sound1/ done......"
 
[ -f /system/media/audio/camera/common/af_success.m4a ] && mv /system/media/audio/camera/common/af_success.m4a /system/media/audio/camera/common/_af_success.m4a
 
echo "media/audio/camera/common/ done......"
 
# /system remount in R/W mode
/system/bin/mount -o remount,r /system
echo "/system R remount......"
 
echo "shutter silent, DONE"

デスクトップ アイコンの変更のため、ホーム・アプリを入れ替えてみる

・Advanced Xperia Z Launcher

Xperia Z (Android 4.0.3) のXperiaホームを改変したものがxdaフォーラムの『[APP][4.0.3+] Advanced Xperia Z Launcher | 2.0.6b | 28.Nov.2013』に公開されていたので、インストールしてみた。

確かに、ヴィジェットなどを使わず、アイコンをPNGファイルなどに変更することができる。

問題点は、Walkmanヴィジェットや時計ヴィジェットが消滅したり、そもそもAndroid 4.0用ということでXperia MのAndroid 4.3のものよりUXが劣るため、利用することは諦めた。

・Xperia Z3 Home + widgets + Live wallpaper

Xperia Z3 (Android 4.2) のものが、xdaフォーラムの『[PORT][4.2+][NO-ROOT] Xperia Z3 Home + widgets + Live wallpaper v1.4.6』に公開されていた。

こちらは、Androidバージョンが上がっているが、アイコン変更の機能追加はされていなかった。また、同様にWalkmanヴィジェットが消滅していたりしたので、利用することは諦めた。