No-Name i.onik android tablet von adb nicht erkannt - adb geräte leer

7

Ich habe verschiedene Anweisungen befolgt und konnte mein ZTE Blade schließlich für das USB-Debugging an meinen Ubuntu-Laptop anschließen. Das gleiche Setup funktioniert nicht, wenn ich das Telefon mit meinem "no-name" i.onik TP10.1-1500DC-Tablet austausche.

Ich habe verschiedene Kabel und verschiedene USB-Anschlüsse ausprobiert. Benötige ich einen speziellen Kabeltyp, um ein Tablet für das USB-Debugging anzuschließen?

Folgendes 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, adbals Nicht-Root ausgeführt zu werden, aber dieser Test sollte Berechtigungsfehler ausschließen.)

Die lsusbAusgabe 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 lsusbmit und ohne angeschlossenem 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 das USB-Debugging in den Einstellungen des Tablets aktiviert, und ich habe es bereits neu gestartet.

Irgendwelche weiteren Hinweise?

krlmlr
quelle
1
Möglicherweise möchten Sie die Option ADB für Nexus 4 unter Ubuntu 11.10 konfigurieren überprüfen . Vielleicht haben Sie den Schritt weggelassen, um Ihr Gerät bekannt zu machen :)
Izzy
@Izzy: Durch Hinzufügen der Hersteller-ID zur adb_usb.iniDatei wurde das Problem sofort behoben. Vielen Dank! Möchtest du eine Antwort schreiben, damit ich sie akzeptieren kann?
krlmlr
Sicher, habe es einfach gemacht. Da wir die Details bereits in der verknüpften Frage haben, habe ich sie allgemeiner gehalten. Ich bin froh, dass es so einfach gelöst wurde - aber andererseits war das genau das, was ich erwartet hatte :) Viel Spaß! // Übrigens, damit andere Maschinen einfach eingerichtet werden können, könnte Sie auch interessiert sein. Gibt es eine minimale Installation von ADB? - das hat mich schließlich überzeugt: Kopieren Sie einfach ein paar Dateien und Sie sind fertig. Keine Notwendigkeit für das gesamte SDK, wenn Sie kein Entwickler sind :)
Izzy
@Izzy: In Ubuntu, kann ich installieren adbverwenden apt-get install android-tools-adb. Sie müssen niemals Dateien kopieren oder PATHEinstellungen anpassen . Das Paket selbst ist winzig und enthält nur adbeinige notwendige Dateien.
krlmlr
Ich weiß davon (da ich auch Ubuntu benutze). Aber ich habe auch gehört, dass es eine Reihe von Abhängigkeiten mit sich bringt - weshalb ich auf die "Kopiervariante" zurückgegriffen habe. Hier werden die ausführbaren Dateien statisch kompiliert, so dass unabhängig von der Verteilung immer funktioniert.
Izzy

Antworten:

7

Izzys Antwort ist irreführend. Zwei Dinge, die nichts miteinander zu tun hatten, wurden verwechselt (die Hersteller-ID-Liste in adb auf der einen Seite und das Einrichten der Berechtigungen in Linux auf der anderen Seite).

1) Geräte von adb berücksichtigt:

Adb verfügt über eine fest codierte Liste der USB-Hersteller-IDs, die es versucht. Beispielsweise verwenden HTC-Mobiltelefone 0xbb4, das aufgelistet ist ( Quelldatei usb_vendors.c ), während 0x2207 dies nicht ist.

Die einzige Möglichkeit, dieser Liste etwas hinzuzufügen (ohne die Quelle zu patchen), besteht darin, Hersteller-IDs $HOME/.android/adb_usb.iniZeile für Zeile in die Datei einzufügen . (HOME ist richtig eingerichtet?)

Es wird kein spezielles Kabel benötigt.

2) Berechtigungssetup für Nicht-Root-Zugriff:

Das udev-Fiddling besteht darin, dem Benutzer Zugriff auf zB / dev / bus / usb / 002/009 zu gewähren (Änderung der Busnummer / Gerätenummer; lsusbaktuelle Werte siehe ).

Die Details hierfür sind für die Frage des Originalplakats nicht relevant, da er adb als root ausführte.

Robert Siemer
quelle
3

Wie unter 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 Hersteller-ID ( echo 0x18d1 >> ~/.android/adb_usb.inifür ein Nexus 4) hinzuzufügen , ist der Eintrag für die UDEV-Regel etwas komplexer. Details finden Sie in der verknüpften 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 heißt nicht, dass es keine solchen Ausnahmen gibt). Durch Hinzufügen des Geräts an beiden Stellen (was ohnehin nicht schaden kann) wurde das Gerät schließlich angezeigt.

Zwei zusätzliche Anmerkungen: Nach dem Ändern der UDEV-Regeln muss der UDEV-Dienst neu gestartet werden, um die Änderungen zu akzeptieren. Unter Ubuntu kann dies über erfolgen sudo service udev restart(alternativ können Sie UDEV einfach zwingen, seine Regeln mit neu zu laden udevadm control --reload-rules). Wenn Ihr Gerät immer noch nicht erkannt wird, wurde 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 das USB-Debugging auf Ihrem Gerät aktiviert sein :)

Beispiel

von krlmlr

Basierend auf der folgenden Ausgabe von lsusbfür das betreffende Android-Gerät:

Bus 002 Device 009: ID 2207:0010  

es war notwendig, /etc/udev/rules.d/51-android.ruleswie rootbei 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, damit reguläre Benutzer (die zur Gruppe gehören plugdev) auf das Gerät zugreifen können. Beachten Sie die Berechtigungsmaske 0660anstelle der häufig gesehenen, 0666die aus Sicherheitsgründen schwächer ist (letztere ermöglicht den Zugriff auf "Welt", während erstere nur den Zugriff auf "Benutzer und Gruppen" ermöglicht). Die zweite ist erforderlich, damit zunächst adbversucht 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 ziehen Sie den Stecker aus der Steckdose und schließen Sie Ihr Android-Gerät an. Dann,

adb devices

Endlich zeigte sich das Android-Gerät.

Bemerkung von Izzy:

Für mein LG Optimus 4X HD war es ausreichend, 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 SYMLINKmacht die Option den Unterschied, dass ich den zusätzlichen Eintrag in nicht brauchte ~/.android/adb_usb.ini.

Izzy
quelle
Beachten Sie, dass ich mein Tablet bereits zu einer Datei in hinzugefügt habe rules.d. Nach meinem Verständnis musste ich beides tun: Die Einstellung in der .iniDatei ist für Geräte ohne Namen erforderlich, von denen adbnicht bekannt ist, dass sie Android ausführen, während die rules.dEinstellung erforderlich ist, um ohne rootBerechtigungen auf das Gerät zuzugreifen .
krlmlr
Ich habe dieser INI-Datei nie ein Gerät hinzugefügt, immer nur der UDEV-Regeldatei. Vielleicht haben Sie dabei etwas verpasst? Meines Wissens ist eine der beiden Varianten ausreichend. In meinem Fall funktioniert der UDEV-Teil einwandfrei, und ich habe viele Berichte gelesen, in denen die Ini-File-Variante dies ohne spezielle UDEV-Anpassungen getan hat.
Izzy
Nein, nach Ihrem Kommentar habe ich nur die .iniDatei gepatcht , und es hat funktioniert, ohne dass ich udevals normaler Benutzer neu starten musste. (Ich musste den adbServer jedoch neu starten .) Ich hatte das Gerät bereits ohne Erfolg zu den Regeln hinzugefügt. Diese spezielle Information über die .iniDatei ist sehr schwer zu finden. Lassen Sie uns ein Q & A erstellen, das die Dinge endlich
regelt
Versuchen Sie, die Änderungen an UDEV zu entfernen (oder zu kommentieren), starten Sie den UDEV-Dienst neu, und Sie werden feststellen, dass er weiterhin funktioniert. Und ich stimme Ihnen zu: Ich war überrascht, auch über die Ini-Dateilösung zu lesen. Was Ihren Q & A-Vorschlag betrifft: Überprüfen Sie einfach das ADB-Tag-Wiki :)
Izzy
Nein, das tut es nicht. Ich brauche sowohl die Regeln als auch die .ini. Ja wirklich. Ich habe gerade alle Kombinationen überprüft. Außerdem ist , wie Sie richtig gesagt haben, das .inimuss in der Heimat des entsprechenden Benutzers leben - so, wenn Sie ausführen möchten , adbwie root, müssen Sie es hinzufügen root‚s - .androidVerzeichnis.
krlmlr
0

Versuchen Sie, adb_usb.ini zu bearbeiten und Ihre Geräte-ID hinzuzufügen. Sie finden sie, indem Sie zum Geräte-Manager gehen. Suchen Sie das Doppelklick-Menü "Android ADB-Schnittstelle". Gehen Sie zur Registerkarte "Details" und wählen Sie im Dropdown-Menü "Eigenschaft" die Option "Hardware" IDs "auf dem Feld darunter mit der Bezeichnung" Werte ". Sie sollten so etwas wie" USB \ VID_2207 & PID_0010 & MI_01 "sehen. Die Nummern können je nach Hersteller-ID Ihres Geräts unterschiedlich sein. Meine Lieferanten-ID lautet beispielsweise" 2207 ". Öffnen Sie nicht die adb_usb.ini auf der Ordner unten und fügen Sie Ihre Geräte-ID im Hex-Format hinzu

Zum Beispiel ist meine Geräte-ID "2207". Ich werde sie dort als "0x2207" einfügen.

Es befindet sich normalerweise in

  1. XP: \ Dokumente und Einstellungen.android \
  2. Windows 7: \ Users.android \
  3. Windows 7: \ Users.android \

Wenn der Ordner jedoch nicht vorhanden ist, versuchen Sie, ihn mit cmd zu erstellen. Und wenn die Datei adb_usb.ini auch nicht existiert, können Sie sie mit dem Editor erstellen und nur Ihre Geräte-ID einfügen und im Ordner .android speichern.

mlclopez
quelle