arrows zのルート奪取とソニエリLiveView

どうも。お久しぶりです。
今回は話が話なので、わかる人のみに向けです。
自己責任が取れない人は真似しないでください。
最近、ひょんなことからソニエリのLiveViewなんかを手に入れまして。
腕時計型のガジェットで、Android端末と繋いで色々しちゃう、新着メールなんかも見ちゃうというスグレモノです。

ですがこいつ、一つ難点がありまして。
Bluetoothなんで、すぐに切断されます。

一応切断されたら、右側のボタンを押すことによって再リンクするんですが、こいつがたちがわるい、接続するたびに「ペア設定リクエスト」なんてAndroid側に出てきて、いちいちタップしないと繋がらないんですね。
最初は我慢して使ってたんですが、どうも、腕時計で確認したいのにAndroidを出さないと駄目だという本末転倒的なことにイライラしてきて、何でか確認してみました。

色々なサイトを見ると、AndroidのGingerbredからこうなるとか、ソニエリ端末ではまともに動くとかそういう情報とともに、原因が。

/data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

の中の記述が

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 -1

となってるんですね。これはおかしい。本来は、

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0 4

でないといけない。

という事で、root取得から書き換えまで、解説込みで行こうと思います。

まず、Android SDKが要ります。適当にインストールして下さい。
その後、ArrowsZのADBドライバ入れて、adb shellできるようにして下さい。これが大前提。
adb出来てるものとして話を進めます。

PCと接続跡、adb shellでシェルへ。
この段階では$です。一般ユーザです。

で、

cd /data/local

をタイプ。
lsで、motion_activemass02.dbが存在することを確認してから、あれば

mv motion_activemass02.db motion_activemass02.db-

してください。自分の環境にはありました。つまりこれで、退避させます。
次に、

ln -s /data/local.prop motion_activemass02.db

をタイプ。シンボリックリンク作成。つまり、motion_activemass02.dbへの書き込みは/data/local.propへの書き込みとするわけです。
こうすることによって、motion_activemass02.dbを書くとき、その持ち主が、/data/local.propを作ってくれるわけですね。で、こいつはroot:rootでさらに、666なのです。素晴らしい。

この状態で、設定→自分からだ設定→ウォーキング/Exカウンタ利用設定から「歩数計利用」にチェック付けて、少し歩きます。実際はチェックつけるだけでいいかもしれないです。で、チェック外す。
この間、ADBは閉じずにokです。
そうすると、なんと、/data/local.propが出来てると思います。root:root 666で。
こうすればしめたものです。
必要があれば、mv motion_activemass02.db- motion_activemass02.db で、退避したものを戻します。

次に、

echo ro.kernel.qemu=1 > /data/local.prop

で、/data/local.propに書き込みます。
これは、adbdで接続されるときにrootになりますよという印。
ここでパーミッションで蹴られなければ、ctrl+Cでadb shell抜けてから、

adb reboot

で端末を再起動します。

瞬時に、DOS窓やらターミナルから、

adb wait-for-device

を叩いておきます。
繋がった瞬間(コマンド抜けた瞬間)、adb shell rm /data/local.prop
を叩いてください。こいつが残ってるとそれなりに面倒なことになります。

欲を言えば、MacやらLinuxのターミナルから

adb wait-for-device & adb shell rm /data/local.prop

をたたいておけば万全ですね。

で、このあと、adb shellを叩くと
#
で、特権になってると思います。おめでとう。
su入れたい人は、ここで入れてくださいい。ただ、arrowsは/usr/xbin/suがあると起動しないので、su以外のファイル名にしてください。

次にLiveViewの設定。

cd /data/misc/bluetoothd

で、ディレクトリを移動して、

ls

を叩いてください。
あなたの端末のBluetoothMACアドレスで、

yo:ur:de:vi:ce:ad

があるはずです。
そのまま、

cat /data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

を叩くと、

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 -1

と出るはずです。出なければ、ちゃんとAndroidとLiveViewが繋がってるか再確認してから、再度頭から手順を繰り返してください
(おそらくこの状態で設定のBluetoothは開けないはずです)
出れば、表示されたものを「li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」までコピーし、

echo li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0 4 > cat /data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

と叩いて、adb shellを抜けて、

adb reboot

で、すべてがうまくいくと思います。
何の保障もしませんが、今のところ全アップデートかけてもこれで動いてます。