2011年4月25日月曜日

GingerBread だと、ペアリングを覚えてくれない

何故か、GingerBread(私の場合、DesireHDのCyanogenMod7)だと、ペアリングを覚えてくれない。

いろいろ調べているとBluetoothをペアリングした際に設定されている設定値に異常がある様子。
その設定値を直接修正すると、ペアリングの度にキーを聞かれることはなくなった。
(Xperia arcの方にこの件伺ってみたところ問題なくペアリングされていると言うことなので、arcはOSに何らかの対策がはいっているのかなと思われます。)

Liveview ペアリング問題
# cd /data/misc/bluetoothd/XX:XX:XX:XX:XX:XX
cd /data/misc/bluetoothd/XX:XX:XX:XX:XX:XX
# ls -l
ls -l
-rw-r--r--    1 bluetoot bluetoot       216 Apr 20 10:07 classes
-rw-r--r--    1 bluetoot bluetoot        79 Apr 21 17:08 config
-rw-r--r--    1 bluetoot bluetoot       226 Apr  6 14:59 features
-rw-r--r--    1 bluetoot bluetoot       336 Apr 21 17:38 lastseen
-rw-r--r--    1 bluetoot bluetoot        84 Apr 21 17:45 lastused
-rw-------    1 bluetoot bluetoot       111 Apr 21 17:45 linkkeys
-rw-r--r--    1 bluetoot bluetoot        55 Apr  6 07:44 manufacturers
-rw-r--r--    1 bluetoot bluetoot       158 Apr 20 10:07 names
-rw-r--r--    1 bluetoot bluetoot       221 Apr 21 17:37 profiles
-rw-r--r--    1 bluetoot bluetoot      1272 Apr 21 17:45 sdp
「XX:XX:XX:XX:XX:XX」はそれぞれの端末のmacアドレス?

linkkeys
# cat linkkeys
cat linkkeys
00:0D:FD:2D:10:88 973688344CA275E54C6373934C2FEE8C 0 4
6C:23:B9:9A:E7:7D 1FDBC63985CDAEA2E94192154EA41409 4 -1
「6C:23:B9:9A:E7:7D」がLiveview。
4 -1 はおかしいらしい。
これを
6C:23:B9:9A:E7:7D 1FDBC63985CDAEA2E94192154EA41409 0 4
に書き換える

電池の減りが早い対策

Xperia x10 mini で利用していたときは、2日くらい電池が持ったのに、DesireHD で利用すると5時間と持たない。

その対策でBluetooth関係の設定ファイルを眺めてみた。

-DesireHD CyanogenMod6,7(/system/etc/bluetooth)
+Xperia x10 mini 2.1(/system/etc/bluez)

audio.conf
 -# Do not require master role for incoming connections
 -Master=false
 +# Switch to master role for incoming connections (defaults to true)
 +#Master=true
main.conf
 -DiscoverSchedulerInterval = 0
 +DiscoverSchedulerInterval = 20
 -# The link policy for connections. By default it's set to 15(0x000f) which is
 -# a bitwise OR of role switch(0x0001), hold mode(0x0002), sniff mode(0x0004)
 -# and park state(0x0008) are all enabled. However, some devices have
 -# connection stability issue or fail to setup SCO when the link is in park
 -# state, which requires park state bit cleared.
 -DefaultLinkPolicy = 7

現状、main.conf のみをDesireHD CyanogenMod7 に反映して、だいたい12時間くらい持つようになった。
main.conf
+DiscoverSchedulerInterval = 20
+DefaultLinkPolicy = 15