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

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

AndroidでWardrivingを試す

Wardriving?

 Wardrivingはドライブしながら位置情報とWi-Fiの電波を拾うことでどこにどんなWi-Fi APがあるかを記録することを言います(多分).これまで初期の頃はThinkPad 240Z でNetworkStumbler やKismet を動かしながら自転車で走り回ったり,iPad の脱獄アプリで記録したり,最近ではRaspberryPi でKismet を動かして保存していました.

何が楽しいの?

 コミックマーケットではアクセスポイント名にネタを仕込んだネタAP がよく飛んでいるのでこれを見るのが楽しみです.今回RaspberryPi で設定を行い動かしていましたが,動作確認もしていなかったのでサブにAndroid のアプリがないか探したらWardrive というアプリケーションを見つけました.
 WiGlE( https://wigle.net/ )向けのアプリケーションで,WiGlE のアカウントを取得してアップロードすることも出来ます.アカウントを設定しなければアップロードされませんしデータの利用も可能です.
 実用的な使い方としてはログから契約している公共無線LANサービスのエリアを探すと言ったことが可能です.例えば https://wigle.net/ のmapページに移動して調べたい緯度経度に移動した後右側のSSIDに調べたいSSIDを入力して[Filter]ボタンを押すとWigleにアップロードされたデータの中から検索した結果が表示されます.

Wardrive の使い方

 利用方法はとても簡単で Wardrive を導入して起動した後 [START] SCANNING ボタンを押すと記録が始まり,GoogleMap を利用した地図上にアクセスポイント名がポイントされていきます.メニューの Export からto KML (Google Earth) を選ぶと端末のルートディレクトリに wardrive.kml として保存されます.
Wigle のアカウントを持っている場合は設定からアカウントとパスワードを保存したうえで,Export からto KML for WiGlE(and Uploa it)* を押すとKML ファイルの作成とWiGlE へのアップロードが行われます.

Screenshot_2015-02-08-00-51-00

 保存は KML 形式で行われてGoogleEarth などのアプリケーションで閲覧できます.アクセスポイント名を眺めたいだけであれば以下のようにしてAP名だけを抜き出すといいでしょう.

% grep name wardrive.kml | cut -c 18- | cut -d']' -f1| sort -n | uniq | lv

WiGLE を見に行ったらWardrive は公式アプリではないようです.

Wigle Wifi Wardriving が公式のようです.こっちだと設定でOSMのタイルマップが使えそうなのですがそれらしい設定の Use WiGLE OSM tiles にチェックを付けてアプリを再起動しても反映されません….

Screenshot_2015-02-08-02-16-06
Screenshot_2015-02-08-00-53-17
Screenshot_2015-02-08-02-16-14
Screenshot_2015-02-08-02-16-24
Screenshot_2015-02-08-02-16-42

 さて,肝心のネタAPですが,感度が悪いのかしきい値が厳しいのか去年よりも大分少なかったです.でも利用方法はすごくお手軽なのでおすすめです.次はRaspberry Pi を携帯電話のリチウムイオンバッテリーで動かしてコンパクトにパッケージングして運用できないか試してみようと思っています.




NEXUS5 を落っことしてしまいISAI LGL22 を買った(Linux環境でのroot取得とカメラ無音化)

Nexus5 をどこかに落っことしてしまい(体調が悪い時で記憶があやふや.桜島港から家の間のどこかに多分落ちている)不便なので代替機を探して中古のISAI LGL22 を入手した.兄弟機で面白みはあまりないが,LTE でmineo が使えるのとUnLock が安価&安易でDocomo の電波も掴みそこそこ安いということで….

とりあえず初期化してroot 取ってカメラ無音化までした.root 取得の手順は確立されているけれどWindows向けでバッチファイルを叩くものしか見当たらなかったのでLinux 向けにメモ.(WinでもMacでも同じだけど)

  • 初期化
  • OS Update
    TAO で 4.4.2 に.
  • 画面のロックをパスワードに
  • 所有者情報設定
  • mineo 設定
  • 暗号化
    ※充電が80%以上になってから出ないと実行できない.
  • root取得
    isai_rootkit_kk_only.rar を以下から入手して利用した.https://mega.co.nz/#!h5EAmY7K!rrM2jZlCnRGc-EzhPhrxQ8gfPtGAcuv_mPPH8lYo7_M

    sha1sum    0a048c7be86ca64dc755a31a3c3a8d32455a3361
    sha256sum    67b3481f15e5f597e60397b9294074354877cd283ecede5bd8ba171e14392cd2
    

    前準備としてUSBデバッグを有効にしてPCと接続しUSBデバッグを有効にしておく.
    isai_rootkit_kk_only.rar を展開して install.bat を見ながら以下のような感じでコマンドを叩く.
    ※要開発環境.

    cd isai_rootkit_kk_only
    adb wait-for-device
    adb push "files" /data/local/tmp
    adb shell chmod 755 /data/local/tmp/getroot
    adb shell chmod 755 /data/local/tmp/busybox_file
    adb shell chmod 755 /data/local/tmp/install.sh
    adb shell chmod 755 /data/local/tmp/remove_apps_and_bins.sh
    adb pull /system/app/LGDMSClient.odex ./backup/system/app/LGDMSClient.odex
    adb pull /system/app/LGDMSClient.apk ./backup/system/app/LGDMSClient.apk
    adb pull /system/bin/subsystem_ramdump ./backup/system/bin/subsystem_ramdump
    adb pull /system/bin/dumpstate ./backup/system/bin/dumpstate
    adb pull /system/bin/fssamond ./backup/system/bin/fssamond
    adb shell "/data/local/tmp/getroot /data/local/tmp/remove_apps_and_bins.sh"
    adb wait-for-device
    adb shell "/data/local/tmp/getroot /data/local/tmp/install.sh"
    adb wait-for-device
    adb shell "rm /data/local/tmp/getroot"
    adb shell "rm /data/local/tmp/busybox_file"
    adb shell "rm /data/local/tmp/eu.chainfire.supersu-193.apk"
    adb shell "rm /data/local/tmp/remove_apps_and_bins.sh"
    adb shell "rm /data/local/tmp/install.sh"
    adb shell "rm -rf /data/local/tmp/system"
    
  • カメラ無音化
    /system/media/audio/ui/camera_click.ogg と /system/media/audio/ui/VideoRecord.ogg を退避する.

    adb shell
    su
    mount -o remount,rw /system
    cd /system/media/audio/ui/
    mv camera_click.ogg camera_click.ogg-
    mv VideoRecord.ogg VideoRecord.ogg-
    cd
    sync
    mount -o remount,ro /system
    exit
    exit
    

    #起動音と起動後のパスフレーズ入力時のキークリック音も消したいが見当たらず.

  • アプリ入れたり

HYUNDAI A7HD 無線LAN アンテナ調整

HYUNDAI A7HD この端末は無線LAN の感度がすごく悪いです.
AP からほんの2m くらいの距離でも通信に失敗してしまったりします.

しかし,内情アンテナの角度を変更することで改善されるという書き込みを見かけたので試してみました.

分解手順

アンテナ位置変更

DSC00025
DSC00028

写真の通りアンテナを180度回転させてアンテナ線をDC/HDMI の下をくぐらせて再度固定するだけです.
固定後再度裏蓋を取り付けて起動してみます.

目に見えて感度はましになったようです.
#設定前の感度を確認しておくべきでした><
device-2012-09-07-021746

アプリの更新や,ファイルのダウンロードが安定するようになりました.
これまでは通信時はAP の側に置いて放置したりしてたのですが,普通に使えそうです.

ただ,iPad などに比べるとまだ弱いです><