Izzys Antwort ist irreführend. Zwei nicht zusammenhängende Dinge wurden verwechselt (die Hersteller-ID-Liste in adb auf der einen Seite und die Berechtigungseinstellung in Linux auf der anderen Seite).
1) von adb berücksichtigte Geräte:
Adb hat eine hartcodierte Liste von USB-Anbieter-IDs, die es versucht. Z.B. HTC-Mobiltelefone verwenden 0xbb4, das aufgelistet ist (Quelldatei usb_vendors.c), 0x2207 hingegen nicht.
Die nur Eine Möglichkeit, diese Liste zu ergänzen (ohne den Quellcode zu patchen), besteht darin, Hersteller-IDs in die Datei $HOME/.android/adb_usb.ini
einzufügen , Zeile für Zeile. (HOME ist richtig eingerichtet?)
Es wird kein spezielles Kabel benötigt.
2) Berechtigungseinstellung für Nicht-Root-Zugriff:
Das udev-fummeln soll dem Benutzer Zugriff auf z.B. /dev/bus/usb/002/009 (Busnummer/Gerätenummer ändern; siehe lsusb
für aktuelle Werte).
Die Details dazu sind für die Frage des ursprünglichen Posters nicht relevant, da er adb als root ausführte.
Wie unter Konfigurieren von ADB für Nexus 4 unter Ubuntu 11.10 beschrieben, ist es unter Linux wichtig, in entweder ~/.android/adb_usb.ini
aufgeführt zu sein (benutzerbasiert) oder /etc/udev/rules.d/51-android.rules
. Die Syntax für beide Dateien ist unterschiedlich:Während es im ersten Fall ausreicht, einfach die Hersteller-ID hinzuzufügen (echo 0x18d1 >> ~/.android/adb_usb.ini
für ein Nexus 4) ist der Eintrag für die UDEV-Regel etwas komplexer. Details finden Sie in der verlinkten Frage (bzw. deren Antworten).
Im Fall von krlmlr war es kein "entweder-oder", aber anscheinend wurden beide Teile benötigt (das hatte ich noch nie, und ich habe noch nie den adb_usb.ini
verwendet -- aber das bedeutet nicht, dass es keine solchen Ausnahmen gibt). Durch Hinzufügen des Geräts an beiden Stellen (was sowieso nicht schaden kann) tauchte das Gerät schließlich auf.
Zwei zusätzliche Anmerkungen:Nach dem Ändern der UDEV-Regeln muss der UDEV-Dienst neu gestartet werden, um die Änderungen zu übernehmen. Unter Ubuntu kann dies über sudo service udev restart
erfolgen (Alternativ können Sie UDEV einfach dazu zwingen, seine Regeln mit udevadm control --reload-rules
neu zu laden ). Wenn Ihr Gerät immer noch nicht erkannt wird, war es höchstwahrscheinlich angeschlossen, während Sie die Änderungen vorgenommen haben. Sie müssen dann das USB-Kabel trennen und wieder anschließen. Natürlich USB-Debugging muss auf Ihrem Gerät aktiviert sein :)
Beispiel
Basierend auf der folgenden Ausgabe von lsusb
für das betreffende Android-Gerät:
Bus 002 Device 009: ID 2207:0010
es war notwendig, /etc/udev/rules.d/51-android.rules
zu erstellen als root
mit folgendem Inhalt:
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0660", GROUP="plugdev"
und um ~/.android/adb_usb.ini
zu erstellen mit folgendem Inhalt:
0x2207
Die erste ist erforderlich, um normale Benutzer (die zur Gruppe plugdev
gehören) zuzulassen ), um auf das Gerät zuzugreifen. Beachten Sie die Berechtigungsmaske 0660
anstelle des häufig vorkommenden 0666
was unter dem Gesichtspunkt der Sicherheit schwächer ist (letzteres erlaubt "Welt"-Zugriff, während ersteres nur "Benutzer- und Gruppen"-Zugriff erlaubt). Der zweite ist erforderlich, damit adb
versucht, überhaupt mit dem Gerät zu sprechen. Danach:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
und trennen Sie Ihr Android-Gerät. Dann
adb devices
zeigte schließlich das Android-Gerät.
Für mein LG Optimus 4X HD , war es ausreichend, eine Zeile zu /etc/udev/rules.d/51-android.rules
hinzuzufügen :
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61a6", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Vielleicht die SYMLINK
Option macht den Unterschied, dass ich den zusätzlichen Eintrag in ~/.android/adb_usb.ini
nicht benötigt habe .