イジーの答えは誤解を招くものです。 2 つの無関係なものが混同されていました (片側の adb のベンダー ID リストと、反対側の Linux の権限設定)。
1) adb によって考慮されるデバイス:
Adb には、試行する USB ベンダー ID のハードコーディングされたリストがあります。例えば。 HTC 携帯電話は、リストされている (ソース ファイル usb_vendors.c) 0xbb4 を使用しますが、0x2207 は使用しません。
のみ このリストに (ソースにパッチを適用せずに) 追加する方法は、ベンダー ID をファイル $HOME/.android/adb_usb.ini
に入れることです。 、 1行ずつ。 (HOMEはセットアップされていますよね?)
特別なケーブルは必要ありません。
2) 非ルート アクセスの権限設定:
udev-fiddler は、例えばへのユーザーアクセスを与えることです。 /dev/bus/usb/002/009 (バス番号/デバイス番号の変更; lsusb
を参照)
この詳細は、ルートとして adb を実行したため、元の投稿者の質問とは関係ありません。
Ubuntu 11.10 での Nexus 4 用の ADB の構成で説明されているように、Linux では ~/.android/adb_usb.ini
のいずれかにリストされていることが重要です。 (ユーザーベース) または /etc/udev/rules.d/51-android.rules
.両方のファイルの構文は異なります。一方、最初のケースでは、ベンダー ID (echo 0x18d1 >> ~/.android/adb_usb.ini
Nexus 4 の場合)、UDEV ルールのエントリはもう少し複雑です。詳細は、リンクされた質問 (またはその回答) にあります。
私はkrlmlrの場合、それは「どちらか一方」ではありませんでしたが、一見両方の部分が必要だったようです(以前はそれがなかったし、 adb_usb.ini
を使用したことさえありませんでした) -- しかし、それはそのような例外がないという意味ではありません)。両方の場所にデバイスを追加することにより (いずれにせよ害はありません)、最終的にデバイスが表示されました。
2 つの追加の注意事項:UDEV ルールを変更した後、UDEV サービスを再起動して変更を受け入れる必要があります。 Ubuntu では、これは sudo service udev restart
経由で実行できます。 (または、単純に udevadm control --reload-rules
を使用して UDEV に強制的にルールをリロードさせることもできます。 )。それでもデバイスが検出されない場合は、変更中に接続された可能性があります。次に、USB ケーブルを取り外して再接続する必要があります。もちろん、USB デバッグ デバイスで有効にする必要があります:)
例
lsusb
の次の出力に基づく 問題の Android デバイスの場合:
Bus 002 Device 009: ID 2207:0010
/etc/udev/rules.d/51-android.rules
を作成する必要がありました root
として 次の内容で:
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0660", GROUP="plugdev"
そして ~/.android/adb_usb.ini
を作成する 次の内容で:
0x2207
1 つ目は、通常のユーザー (グループ plugdev
に属するユーザー) を許可するために必要です。 ) デバイスにアクセスします。許可マスク 0660
に注意してください よく見られる 0666
の代わりに これはセキュリティの観点からは弱いです (後者は「世界」アクセスを許可しますが、前者は「ユーザーとグループ」アクセスのみを許可します)。 adb
になるように 2 番目が必要です。 最初にデバイスとの通信を試みます。その後:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
Androidデバイスを抜き差しします。次に、
adb devices
最後に Android デバイスを示しました。
LG Optimus 4X HD の場合 、 /etc/udev/rules.d/51-android.rules
に 1 行追加するだけで十分でした :
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61a6", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
たぶん SYMLINK
オプションは、~/.android/adb_usb.ini
の余分なエントリを必要としなかったという違いを生みます .