adbで接続できないときは?

結構はまったのですが覚え書き程度デス

adbで実機に接続出来ない際の確認事項(OSがLinuxの時)
現在、実装がすべて済んでないので設定関連で矛盾が生じる事がるようだ…。。。。
それぞれ、相互依存を調べてないし、実機の再起動が必要かもしれない…。

基本の基本

設定→アプリケーション→開発→USBデバッグ にチェックが入っていること。


実機で adbd が起動しているかどうか?
# ps
 (省略)
root      1204  1     4424   200   ffffffff 0000f594 S /sbin/adbd
(省略)
のように、adbd が実機で動いていればok。
adbd は init.rc にて service として記述されているので、
停止の場合
# stop adbd
開始の場合
# start adbd
とするとよい。stop 及び start の後は ps でプロセスを確認すると成功したかどうか分かる。

qxdm_enable の確認。qxdm_enable を 1 に設定しておくと adbd の起動が若干速くなる。

有効
# cat /sys/devices/platform/msm_hsusb_periphera/qxdm_enable 
1
0の時は無効になっている
# echo 1 > /sys/devices/platform/msm_hsusb_periphera/qxdm_enable 
再起動しても保持されていはずなのだが、再起動すると無効になることもあるようだ。
(手元で再現しないのは何故でしょうか??)

init.rc 内でサービス停止が指示されると止まるのでそれまでは繋がる。
検証中は adbd を停止するような指示はコメントアウトしていた方がよいかも。

kernel側の現在値
# cat /sys/devices/platform/msm_hsusb_periphera/functions/adb 
1
1でオン。0 の時の対策
# echo adb=1 > /sys/devices/platform/msm_hsusb_periphera/func_enable 

property の確認
# getprop persist.service.adb.enable
1
1で正常。ゼロの場合の対策
# setprop persist.service.adb.enable 1
(boot.img を作成する際に default.prop で 1 を指定しているので問題ないとは思うが、起動後に書き換わるかもしれないので。)

settings.db の確認
# sqlite3 /data/data/com.android.providers.settings/databases/settings/databases/settings.db
sqlite> select * from secure where name='adb_enabled';
277|adb_enabled|1
277は環境によって異なる。最後が 1 ではないとき の対策
sqlite> update secure set value=1 where name='adb_enabled';
sqlite> .exit
updateのsql文で間違えると、全設定情報が書き換わるので注意のこと。
実機を再起動する。場合によってはホスト側OSも再起動する。
設定の開発チェックボックスと連動していない??

その他の対策

  • ホストOS側のUSBデーモン(サービス)再起動
# service udev stop
# service udev start
  • USBの抜き差しを行う。
  • USB HUBを使っている場合は、USB HUBとPCとの間を抜き差しする。
  • 全項目を試した上で、最終的には、実機とホストOS側両者を再起動する。



ざっと、項目を羅列しただけなので何か有りましたらコメントまで
コメント
名前:
コメント:

すべてのコメントを見る










(2011/02/05 23:13 公開)
最終更新:2011年09月25日 11:22
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。