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をいい感じにいじって試してみてください。
おしまい。
2013年3月28日木曜日
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
からダウンロードしてください。
で、ちゃんと使えたらカンパください。
このカーネルエクステンションを解凍して
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以外のデバイスで、同様の問題が発生した場合にも対応可能です。
登録:
投稿 (Atom)