Ich habe ein Mobiltelefon über USB an meinen PC angeschlossen.
Beim Anzeigen der Geräteinformationen mit
sudo udevadm info --attribute-walk
Die Produkt- und Lieferanten- IDs werden ordnungsgemäß angezeigt , es gibt jedoch keine ATTR {serial} . Für eine von mir verwendete Anwendung (Android adb) muss das Gerät eine Seriennummer melden, damit sie ordnungsgemäß funktioniert.
Gibt es eine Möglichkeit, die Seriennummer des Geräts zu fälschen, beispielsweise mithilfe einer udev-Regel?
Erläuterung: Die Frage ist nicht, wie Sie die Seriennummer des USB-Geräts erhalten, sondern wie Sie die Seriennummer einstellen .
Ich hatte ein Android-Handy, das keine Seriennummer über USB meldet, und das ADB-Tool mochte dies nicht allzu sehr. Bisher scheint es dafür keine einfache Lösung zu geben. Heutzutage ist es jedoch sehr einfach, ein geeignetes Android-Handy für die Entwicklung zu kaufen.
Antworten:
Stellen Sie zunächst sicher, dass das Gerät, das keine Seriennummer meldet, wirklich das Problem ist.
adb devices
listet die Seriennummer als alle Fragezeichen auf, wenn keine Berechtigung zum Zugriff auf das entsprechende Gerät unter vorhanden ist/dev/bus/usb/
. Denken Sie auch daran, dass adb einen Server startet. Möglicherweise müssen Sie diesen beenden, damit er erneut getestet wird.Angenommen, es ist wirklich ein Problem mit dem Gerät, habe ich den adb-Quellcode schnell überprüft. Es erscheint
register_device
incore/adb/usb_linux.c
liest die Seriennummer direkt vom Gerät.core/adb/usb_libusb.c
ruftlibusb_get_device_descriptor
dazu auf, was (Überprüfung des libusb-Quellcodes) es von sysfs oder direkt vom Gerät abruft. Leider hilft kein udev-Trick.Ihre Wahl scheint zu sein:
adb
(es ist Open Source). Dies ist eine Frage mehr für Stack Overflow, denke ich.quelle
Wenn Sie den Geräteknoten des jeweiligen Geräts kennen (z. B. / dev / sdb), können Sie ihn mit dem folgenden Befehl nachschlagen:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Wenn Sie versuchen, eine benutzerdefinierte Regel in /etc/udev/rules.d/51-android.rules für Android-Geräte zu erstellen, wird beim Schreiben
lsusb
in Ihrem Terminal normalerweise Folgendes angezeigtBus 002 Device 004: ID 062a:3270 Creative Labs
. Die vier Zeichen nach "ID" - in diesem Fall wäre es062a
- werden verwendet, um das SpezifischeidVendor
in dieser Datei anzugeben .quelle
adb start-server
kann adb die Seriennummer selbst lesen, sobald die udev-Regeln festgelegt sind (und Sie als root oder mit sudo ausgeführt werden).Wahrscheinlich ist es nicht seriell, sondern FTDI, also können Sie es folgendermaßen versuchen:
1) Holen Sie sich die Seriennummer
2) Erstellen Sie die Regel und ersetzen Sie die XXXXXXXX durch die gefundene Seriennummer oder eine FAKE-Seriennummer
3) Laden Sie die Regeln neu
.
Versuchen Sie in diesem Fall, den Autor dieses Artikels zu kontaktieren .
quelle