Ich habe verschiedene Anweisungen befolgt und konnte schließlich mein ZTE Blade zum USB-Debugging an meinen Ubuntu-Laptop anschließen. Das gleiche Setup funktioniert nicht, wenn ich das Telefon durch mein "no-name" i.onik TP10.1-1500DC Tablet tausche.
Ich habe verschiedene Kabel und verschiedene USB-Anschlüsse ausprobiert. Benötige ich ein spezielles Kabel, um ein Tablet für das USB-Debugging anzuschließen?
Das bekomme ich von einer Root-Shell:
~# adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
~#
(Ich weiß, dass es möglich sein sollte, adb
als Nicht-Root ausgeführt zu werden, aber dieser Test sollte Berechtigungsfehler ausschließen.)
Die lsusb
Ausgabe ist speziell für dieses Gerät, es wird keine Textbeschreibung angezeigt. Der erste Eintrag unten stammt von einem anderen Gerät, der zweite Eintrag vom Tablet. Ich habe dies überprüft, indem ich lsusb
mit und ohne angeschlossenes Tablet ausgeführt habe:
Bus 002 Device 005: ID 10d5:5000 Uni Class Technology Co., Ltd
Bus 002 Device 009: ID 2207:0010
Natürlich ist USB-Debugging in den Einstellungen des Tablets aktiviert, und ich habe es bereits neu gestartet.
Irgendwelche weiteren Hinweise?
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. Beispielsweise verwenden HTC-Mobiltelefone 0xbb4, das aufgelistet ist ( Quelldatei usb_vendors.c ), während 0x2207 nicht aufgeführt ist.
Die einzige Möglichkeit, diese Liste zu erweitern (ohne die Quelle zu patchen), besteht darin, Hersteller-IDs $HOME/.android/adb_usb.ini
Zeile für Zeile in die Datei einzufügen. (HOME ist richtig eingerichtet?)
Es wird kein spezielles Kabel benötigt.
2) Berechtigungseinstellung für Nicht-Root-Zugriff:
Die udev-Fummelei soll dem Benutzer Zugriff auf zB /dev/bus/usb/002/009 geben (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 in Konfigurieren von ADB für Nexus 4 unter Ubuntu 11.10 beschrieben , ist es unter Linux wichtig, entweder in ~/.android/adb_usb.ini
(benutzerbasiert) oder aufgeführt zu sein /etc/udev/rules.d/51-android.rules
. Die Syntax für beide Dateien ist unterschiedlich: Während es im ersten Fall ausreicht, einfach die Vendor-ID ( echo 0x18d1 >> ~/.android/adb_usb.ini
für ein Nexus 4) hinzuzufügen, ist der Eintrag für die UDEV-Regel etwas komplexer. Details finden sich 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 das noch nie benutzt adb_usb.ini
- aber das bedeutet nicht, dass es keine solchen Ausnahmen gibt). Durch das 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 erfolgen sudo service udev restart
(alternativ können Sie UDEV einfach mit zwingen, seine Regeln neu zu laden udevadm control --reload-rules
). 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 muss USB-Debugging in Ihrem Gerät aktiviert sein :)
von krlmlr
Basierend auf der folgenden Ausgabe von lsusb
für das betreffende Android-Gerät:
Bus 002 Device 009: ID 2207:0010
/etc/udev/rules.d/51-android.rules
Es war notwendig, wie root
mit den folgenden Inhalten zu erstellen :
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", ATTR{idProduct}=="0010", MODE="0660", GROUP="plugdev"
und~/.android/adb_usb.ini
mit folgenden Inhalten zu erstellen :
0x2207
Die erste ist erforderlich, um normalen Benutzern (die zur Gruppe gehören plugdev
) den Zugriff auf das Gerät zu ermöglichen. Beachten Sie die aus Sicherheitsgründen schwächere Berechtigungsmaske 0660
anstelle der häufig gesehenen 0666
(letztere erlaubt "Welt" -Zugriff, während erstere nur "Benutzer- und Gruppen" -Zugriff erlaubt). Der zweite wird benötigt, damit überhaupt adb
versucht wird, mit dem Gerät zu sprechen. Nachdem:
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
schließlich zeigte das Android-Gerät.
Anmerkung von Izzy:
Bei meinem LG Optimus 4X HD reichte es aus, eine Zeile hinzuzufügen zu /etc/udev/rules.d/51-android.rules
:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1004", ATTRS{idProduct}=="61a6", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
Vielleicht SYMLINK
macht die Option den Unterschied, dass ich den extra Eintrag in nicht benötigt habe ~/.android/adb_usb.ini
.
rules.d
. Nach meinem Verständnis musste ich beides tun: Die Einstellung in der .ini
Datei ist für "No-Name"-Geräte erforderlich, von denen adb
nicht bekannt ist, dass sie Android ausführen, während die rules.d
Einstellung erforderlich ist, um ohne root
Berechtigungen auf das Gerät zuzugreifen..ini
Datei zu patchen, und es funktionierte, ohne dass ich udev
als normaler Benutzer neu starten musste. (Ich musste den adb
Server jedoch neu starten.) Ich hatte das Gerät bereits erfolglos zu den Regeln hinzugefügt. Diese spezielle Information über die .ini
Datei ist sehr schwer zu finden, lassen Sie uns ein Q&A erstellen, das die Dinge endlich klärt :-).ini
. Wirklich. Ich habe gerade alle Kombinationen überprüft. Darüber hinaus, wie Sie richtig gesagt haben, .ini
muss sich das im Home des entsprechenden Benutzers befinden -- wenn Sie also beabsichtigen, es adb
als auszuführen root
, müssen Sie es dem root
Verzeichnis .android
von hinzufügen.udev
(oder ausführen udevadm control --reload-rules
) und Ihr USB-Gerät trennen und anschließen.adb
als ausführen root
und (falls erforderlich) das adb_usb.ini
in im root
Verzeichnis .android
haben. Hab das auch gerade gecheckt.SYMLINK
Option hat nicht geholfen, ich brauche die .ini
Datei noch.Versuchen Sie, adb_usb.ini zu bearbeiten und fügen Sie Ihre Geräte-ID hinzu. Sie finden sie, indem Sie zum Geräte-Manager gehen, die „Android ADB-Schnittstelle“ doppelt anklicken, zur Registerkarte „Details“ gehen und im Dropdown-Menü „Eigenschaften“ „Hardware“ auswählen Ids" auf dem Feld darunter mit der Bezeichnung "Werte". Sie sollten so etwas wie "USB\VID_2207&PID_0010&MI_01" sehen. Die Zahlen können je nach Hersteller-ID Ihres Geräts unterschiedlich sein, zum Beispiel ist meine Hersteller-ID "2207". Öffnen Sie nicht die adb_usb.ini, die sich auf der befindet Ordner unten und fügen Sie Ihre Geräte-ID im Hexadezimalformat hinzu
Zum Beispiel ist meine Geräte-ID "2207". Ich gebe sie dort als "0x2207" ein.
Es befindet sich normalerweise in
Aber wenn der Ordner nicht existiert, versuchen Sie ihn mit cmd zu erstellen. Und wenn die Datei adb_usb.ini auch nicht existiert, können Sie sie mit Notepad erstellen und nur Ihre Geräte-ID einfügen und im .android-Ordner speichern.
Izzy
krlmlr
adb_usb.ini
Datei löste das Problem sofort. Danke vielmals! Möchten Sie eine Antwort schreiben, damit ich sie akzeptieren kann?Izzy
krlmlr
adb
mitapt-get install android-tools-adb
. Sie müssen niemals Dateien kopieren oderPATH
Einstellungen anpassen. Das Paket selbst ist winzig und enthält nuradb
ein paar notwendige Dateien.Izzy
krlmlr
Izzy
krlmlr
apt
diesen Ansatz wählen, es sei denn, eine Installation versucht, die Hälfte meines Systems zu deinstallieren, aber das ist hier nicht der Fall. Wie auch immer, beide Methoden zum Abrufen der Dateien sind gültig und funktionieren meistens :-)