Wie kann ich mein Gerät von ADB unter Linux erkennen lassen?

18

Ich habe gerade meine glänzenden neuen Wileyfox Swift - und bevor sie setzen verwenden Ich möchte oem unlockund Wurzel es (wie ich in der Regel mit neuen Geräten zu tun;) Das Problem ist, obwohl auf dem Gerät aktiviert ist, und eine entsprechende Zeile in /etc/udev/rules.d/51-android.rulesexistiert wird das Gerät von nicht gesehen adb devices.

Ich weiß, dass auf dieser Website mehrere Antworten verstreut sind, aber sie sind entweder schwer zu finden, decken nur ein bestimmtes Gerät ab oder decken nicht alle Schritte ab, die ich schließlich benötigt habe. Daher nehme ich dies zum Anlass, eine kanonische, geräteunabhängige Frage zu stellen, und gebe im Folgenden eine ausführliche Antwort:

Wie kann ich mein Android-Gerät adbunter Linux anzeigen und verwenden ?

Izzy
quelle
Ich bin immer offen für Kritik - aber eine Ablehnung ohne Erklärung ist schwer zu interpretieren. Würde der Downvoter erklären, was an der Frage verbessert werden sollte? Ich verspreche, meine Mod-Fähigkeiten nicht zur Bestrafung zu missbrauchen :)
Izzy
3
Ich nehme an, der Wähler hat nicht bemerkt, dass Sie die Frage gestellt haben, um sie selbst zu beantworten (muss Sie in der Antwort nicht bemerkt haben). Da in der Frage oder den Kommentaren kein Hinweis darauf enthalten ist, dass sie zum Zwecke der Selbstantwort veröffentlicht wurde, hat der Wähler möglicherweise dem vorletzten Absatz widersprochen (zeigt Faulheit, wenn er im Kontext eines normalen Benutzers und seiner Frage gelesen wird). Ich kann mir noch keinen anderen Grund vorstellen.
Firelord
1
@Firelord klingt überzeugend (bearbeitete die Frage ein wenig, um zusätzliche Fehlschritte zu vermeiden). Aber dann sollte dieser Benutzer die Antwort positiv bewertet haben. Oder habe ich da auch was verpasst? ;)
Izzy

Antworten:

23

Aktivieren Sie das USB-Debugging auf dem Gerät

Dies erfolgt unter Einstellungen ›Entwicklung . Wenn Sie diesen Eintrag nicht in Ihrem Einstellungsmenü haben, gehen Sie zu Einstellungen ›Info , scrollen Sie zur" Build-Nummer "und hämmern Sie sie wie einen Affen, bis Ihr Gerät Sie als Entwickler beglückwünscht. Kehren Sie zur Hauptseite des Einstellungsmenüs zurück , und ganz unten sollten Sie jetzt die Einstellungen für "Entwicklung" (oder "Entwickler") sehen. Geben Sie es ein und aktivieren Sie das USB-Debugging hier.

Identifizieren Sie das Gerät

Zuerst müssen wir wissen, wie sich das Gerät auf dem USB-Bus identifiziert. Nehmen Sie dazu bei NICHT verbundenem Android-Gerät eine Shell und führen Sie den Befehl aus lsusb. Schließen Sie dann das Gerät an und führen Sie den Befehl erneut aus. Finde die neue Linie. Für den Wileyfox Swift ist dies ein "namenloses Gerät":

Bus 004 Device 003: ID 2970:2282

Einrichten der Regeln für ADB

Wir müssen jetzt die Zahlen am Ende der Zeile oben: 2970:2282. Diese geben den Anbieter (2970) und das Gerät selbst (2282) an. Mit diesen Details benötigen wir eine Root- Shell auf unserem Linux-Rechner, um die /etc/udev/rules.d/51-android.rulesDatei zu bearbeiten (oder zu erstellen, falls sie noch nicht existiert) . Fügen Sie dort eine Zeile für Ihr Gerät hinzu. Die folgende Beispielzeile zeigt, wie es für den Wileyfox Swift aussieht : ¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Wenn Sie ein anderes Gerät haben, ersetzen Sie die Hersteller- und Produkt-IDs durch die oben beim Ausführen gefundenen lsusb. Eine kurze Erklärung der Zeile:

  • SUBSYSTEMS=="usb": natürlich gilt diese Regel nur für USB;)
  • ATTRS{idVendor}=="2970": Die Hersteller-ID des Geräts, für das diese Regel gilt
  • ATTRS{idProduct}=="2282": die Geräte-ID
  • MODE="0666": Berechtigungen, die der Geräteknoten erhalten soll. 0666Es ist ziemlich lässig, jedem Benutzer auf Ihrem System Lese- und Schreibrechte zu erteilen. Wenn Sie also Bedenken haben, können Sie versuchen, diese durch ein zu ersetzen 0660(nur Eigentümer und Gruppe können Lese- und Schreibrechte erteilen und anderen alles verweigern).
  • GROUP="androiddev": Zu welcher Gruppe der Geräteknoten gehören soll. Dies sollte eine Gruppe sein, zu der die Benutzer gehören, die mit dem Gerät arbeiten sollen.
  • SYMLINK+="android%n": nur um dem Knoten einen schönen Namen zu geben, damit du ihn leichter finden kannst /dev(in meinem Fall tauchte er später dort auf als /dev/android5)

/etc/udev/rules.d/51-android.rulesWir müssen sagen udev, dass diese Regel in Kraft getreten ist , um sie zu nutzen. Der sicherste Weg (neben einem Neustart;) ist ein Neustart des udevDienstes. Abhängig von Ihrer Linux-Distribution kann dies entweder über service udev restartoder erfolgen /etc/init.d/udev restart.

Wenn Sie das getan haben, verlassen Sie die Root-Shell. Trennen Sie Ihr Android-Gerät und schließen Sie es adb deviceserneut an. Versuchen Sie es erneut. Die meisten Geräte tauchten jetzt auf, aber nicht der Wileyfox Swift - der offensichtlich ein paar zusätzliche Kuschelpartien möchte. Wenn Sie in dieser Situation sind, öffnen Sie die Datei (oder erstellen Sie sie, falls sie nicht vorhanden ist) ~/.android/adb_usb.iniund fügen Sie eine einzelne Zeile hinzu, wobei Sie den oben genannten Hersteller angeben lsusb. für den Swift wäre das 0x2970(yupp, hier musst du es voranstellen, um 0xdarauf hinzuweisen, dass es eine hexadezimale Zahl ist). Dann starten Sie den ADB - Server: adb kill-server && adb start-server. Trennen Sie das Gerät vom Computer und schließen Sie es erneut an. Jetzt adb devicessollte es sehen.

Gerät anschließen

Sie haben vielleicht bemerkt, adb devicesdass Ihnen so etwas erzählt wurde 0123456789ABCDEF unauthorized. Das ist in Ordnung und dient Ihrer (Geräte-) Sicherheit: Ihr Computer muss zuerst autorisiert werden, um auf das Gerät zugreifen zu können. Also einfach adb shelljetzt ausgeben - mit error: device unauthorized. Please check the confirmation dialog on your device.dem Hinweis "Folgen Sie diesem Hinweis" beenden (optional das Kästchen ankreuzen, um Ihren Computer dauerhaft zu autorisieren) und fertig: Jetzt können Sie mit auf Ihr Gerät zugreifen.


Aktualisierung:

¹ Beachten Sie, dass sich in späteren Linux-Versionen die Syntax für die UDEV-Regeln geringfügig geändert hat, wie z. B. jcomeau_ictx in seinem Kommentar ausgeführt hat. Für die oben gefundenen Werte wäre das:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Zwei Unterschiede: Es ist jetzt SUBSYSTEM(kein Plural), und die Gruppe hat sich von androiddevzu geändert plugdev(Ersteres ist auf neueren Systemen nicht vorhanden, Letzteres ist vorhanden und wird normalerweise mindestens dem ersten Benutzer zugewiesen).

Außerdem müssen Sie möglicherweise die VendorID zu Ihrer ~/.android/adb_usb.iniID hinzufügen (eine ID pro Zeile in hexadezimaler Schreibweise):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
Izzy
quelle
1
Das Format für die udev-Regel war auf meinem Jessie-System anders: jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.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. 0x0e8d Ich musste den Rat ignorieren, android update adbum es auszuführen und manuell einzugeben, wie Sie angegeben haben.
jcomeau_ictx
@jcomeau_ictx danke für das feedback! Soweit ich aus Ihrem Kommentar ersehen kann, wird nur eine andere Benutzergruppe verwendet ( plugdevanstelle von androiddev). Nicht verifiziert, aber ich würde sagen, der wichtige Teil hier ist, dass es sich um eine Gruppe handelt, die auch Ihr Benutzer (mit dem Sie USB verwenden möchten) hat.
Izzy
1
auch SUBSYSTEMstatt SUBSYSTEMS, ATTRstatt ATTRS, Komma nach MODE="0666" nicht sicher , ob alle diese Änderungen waren notwendig, aber das ist , was funktioniert.
jcomeau_ictx
Oh - danke, ich habe die Kleinen verpasst, @jcomeau_ictx - guter Punkt!
Izzy
Für Linux arbeiteten nicht versierte Leute sudo wget -O /etc/udev/rules.d/51-android.rulesvon hier für mich für mein Xiaomi Mi A1. Natürlich ist es besser zu lernen, aber gut, faul zu sein :)
Beeshyams
0

Ein paar Kommentare von einer neueren Linux-Distribution. Fedora 29 mit einem Nexus 5X oder dem Nokia 7.1 (Android One).

Trennen Sie zuerst das Telefon, falls es bereits verbunden ist.

  1. Installieren Sie Android-Tools, die ADB ( sudo dnf install android-tools) liefern
  2. Kopiere udev Regeln ( sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d)
  3. Udev rules neu laden ( sudo udevadm control --reload-rules)
  4. Starten Sie ADB neu, um sicherzugehen ( sudo systemctl restart adb)

Schließen Sie nun das Telefon an und führen Sie es adb devicesüber die Befehlszeile aus. Sie werden wahrscheinlich ein Gerät mit der Auflistung "Keine Berechtigungen" sehen. Das ist okay.
WENN es nicht aufgeführt ist, müssen Sie Ihr Gerät zur udev-Regeldatei hinzufügen, aber für mich haben die getesteten Geräte nur mit den vordefinierten Regeln funktioniert.

Führen adb shellSie das Programm aus, und Sie werden hoffentlich per Sicherheitsbenachrichtigung gefragt, ob Sie dem Computer vertrauen möchten. Wählen Sie "Ja" aus.
WENN Ihr Computer stattdessen "Fehler: Unzureichende Berechtigungen für Gerät" anzeigt, müssen Sie sicherstellen, dass Sie auf dem Telefon den USB-Anschluss auf "Dateien übertragen" und nicht auf "Gerät laden" eingestellt haben. Unter Android 8.1 finden Sie dies in den Einstellungen unter "Angeschlossene Geräte"> "USB".

Mir ist aufgefallen, dass selbst wenn heute alles funktioniert, es morgen ohne ersichtlichen Grund plötzlich kaputt gehen kann. Überprüfen Sie in diesem Fall zunächst die USB-Anschlusseinstellung des Geräts, die möglicherweise wieder in den Lademodus geändert wurde. Wenn dies fehlschlägt, widerrufen Sie die USB-Debug-Berechtigungen auf dem Gerät (in den Einstellungen unter Entwickleroptionen) -up wieder, wenn Sie laufen adb shell.

Damit kann ich Android Studio ausführen und auf dem verbundenen Gerät ausführen.

rauben
quelle