ラベル adb の投稿を表示しています。 すべての投稿を表示
ラベル adb の投稿を表示しています。 すべての投稿を表示

2013年3月28日木曜日

Androidでadbが繋がらないときの試すことリスト

Android端末を用いてプログラムを書いているとよく起こるのが、 なんだかよくわからないけれどもadbでデバイスと繋がらないぞ?という問題。
 そんなときに試してみるべきことをまとめてみました。

1.一回端末を抜いてさし直す

2.端末を再起動してみる

3.端末のデバッグ実行を一回offにしてからonにし直す
(Android4.0以降は開発者メニューから、2.x系はアプリケーションからできます。)

4.ターミナルから
$ adb kill-server
$ adb start-server
$ adb devices
を実行して、デバイスが検出されることを確認する

5.端末のVendorIDが~/.android/adb_usb.iniに書いてあるか確認する
書いてなかった場合は
# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
#↓のように16進数でばすっと書いてみる
0x9999
0x1000

6.ケーブルが壊れていないか確認する
同じケーブルで別の端末を試すか、ケーブル自体を変えてみるとよいと思います。


意外と忘れがちなのがVendorIDの登録確認で、一回書いておけばオッケーかと思いきや、
新しいSDKを入れたりするとなぜか消えていたりするので、あまり油断なりません。
さらにこれでもなおらないときには、N-06Cの繋がらない問題と同じ問題だったりするかもしれないので、kextをいい感じにいじって試してみてください。

おしまい。

2011年8月25日木曜日

Mac OS X LionからN-06C Mediasにadbで接続する方法

Snow Leopardでは特に何もせずにadbで接続できていた
Mediasが、Lionにしたとたんに急にadbでつなぐことができなく
なってしまったので、Lion対応Medias用USBドライバ(もどき)の
カーネルエクステンションを作ってみました。

※2012/03/01 変更
めんどいので、とりあえず
http://8kpx.com/android/archive/download.php
からダウンロードしてください。

で、ちゃんと使えたらカンパください。
オプション



このカーネルエクステンションを解凍して
/System/Library/Extensions/
以下に配置し、ターミナルから

$sudo chown -R root:wheel /System/Library/Extensions/N06CADBDriver.kext
$sudo kextload /System/Library/Extensions/N06CADBDriver.kext

と実行すると、Snow Leopardと同じようにMediasがadbから繋がる
ようになります。ちょーべんり。

/System/Library/Extensionsをいじるのは、あっさりカーネルパニックになったりするので、
自己責任で導入してください。


-------以下詳細---------
この問題の原因は、MediasのUSBデスクリプタのbDeviceClassが、本来0のはずが、2になっており、
正しいドライバが読み込めなくなってしまっていたことでした。

なので、このカーネルエクステンションでは、bDeviceClassが2でかつデバイスがMediasの場合に、
本来のドライバ(IOUSBCompositeDriver)を読み込むという設定をしております。(実際にはplistに書いただけ)

デバイスの判定には、具体的にはidProduct, idVendorという二つのパラメータを利用しており、
この値を書き換えることで、Medias以外のデバイスで、同様の問題が発生した場合にも対応可能です。