2013年12月29日日曜日

Sony Xperia AがUbuntu 12.04で認識されない件

最近スマフォに変えた。Ubuntu 13.10にUSBでつないでみるとすぐ認識して
テザリングできるのだが、Ubuntu 12.04につないだ時はそもそも認識しない。
dmsgでみてもおかしいのでなにかいじらないといけないのはたしかなので
その理由を追求する記事。
更に
#adb -d shell
としても
error: insufficient permissions for device
となる。SDKでデバッグできないので非常にこまる。
 

この現象だがネットで調べるといろいろひっかかるので手当たりしだいにやってみた。
1.
Xperiaの設定がおかしいのでは?という話がある
具体的には、
設定ー>Xperiaー>USB接続設定ー>USB接続モード
のことなのだが、MTP,MSCどちらに切り替えてもダメなので今回は違う。

 
2.
次にMTP接続用のリポジトリを入れろっていうのがある
http://jaisejames.wordpress.com/2013/02/06/connectmount-android-mobile-phone-internal-storage-in-linux/
抜粋すると
$sudo add-apt-repository ppa:langdalepl/gvfs-mtp
$sudo apt-get update
$sudo apt-get upgrade(もしくはsudo apt-get dist-upgrade)
これをやってもXperia Aは認識しないのでこれも違う
さらに
$sudo update-pciids
$sudo update-usbids
をやってもだめ 
 
3.
次にudevの設定をいじれってのがある
https://groups.google.com/forum/#!topic/android-discuss/-Fp5VkTmW1k
抜粋すると
$sudo vi  /etc/udev/rules.d/51-android.rules
中身は 
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
こうなっているので同じく最後に
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"
を追加(※)
このあと再起動すると
Nautilusからはまだ見えないがadb -d shellでは見えるようになる
よってこれが半分正解だった。
 
※0fceはベンダーIDのこと 
$lsusb を実行すると
Bus 002 Device 019: ID 0fce:5198 Sony Ericsson Mobile Communications AB 
のような表示がずらずらUSBデバイス分並ぶ。この
0fce:5198
の前半0fceがVendorID(なお後半の5198はプロダクトID)
 
追記
なぜか最近起動時のログを見ていると51-android.rulesが文法エラーですと言われている
のに気づいた。
http://thjap.org/android/xperia-series/152.html?PageSpeed=noscript
とかみると
# xperia x10
SUBSYSTEM=="usb", ATTR{0fce}=="612e", MODE="0666", GROUP="plugdev"
こう書くのが正しいらしい。 
書きなおすととまった。
 




 
4.
さらにudevの設定をいじれってのがある
http://forum.xda-developers.com/showthread.php?t=1574551
抜粋すると
$ sudo gedit /etc/udev/rules.d/69-libmtp.rules
私の場合ファイルがなく新規だった。
ATTR{idVendor}=="0fce", ATTR{idProduct}=="5198", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
を記入 (0fce と5198は3※を参照)
これで再起動するとnautilusでもやっと認識される

というわけでudevの設定をいじるだけでもいいのかもだが一応上このようにした。