Warum Android-Entwickler keine Windows-USB-Treiber mehr benötigen
- Auf der frühen Android-Plattform konnten Entwickler Geräte unter Linux oder Mac OS X per USB-Kabel verbinden, Windows-Nutzer mussten jedoch Treiber suchen und installieren.
- Heute werden diese Treiber nicht mehr benötigt.
USB-Treiber/OS 101
- Wenn ein USB-Gerät an einen Port angeschlossen wird, untersucht das Betriebssystem die USB-Deskriptor-Hierarchie und muss einen Treiber für die Schnittstelle laden.
- Die meisten USB-Geräte funktionieren automatisch über integrierte
Device Class-Treiber, die im Betriebssystem enthalten sind.
- Windows lädt einen vom Benutzer installierten Treiber, wenn kein eingebauter
Device Class-Treiber gefunden wird oder wenn ein besserer Treiber vorhanden ist.
Warum es früher nicht funktionierte
- Wenn kein Treiber gefunden wird, lädt Linux usbfs und macOS IOKit, damit Programme im User Space auf das Gerät zugreifen können.
- Windows meldete stattdessen einen Fehler und lud keinen Treiber, sodass kein Zugriff auf Android-Geräte möglich war.
Warum es mit dem Android-Treiber funktionierte
- Um zu verstehen, was bei der Installation des Treibers passiert, wurde
android_winusb.inf, das „Gehirn“ des Google-USB-Treibers, untersucht.
- WinUSB ist ein USB-Treiber ähnlich wie usbfs unter Linux und IOKit unter macOS und ermöglicht Programmen im User Space, Schnittstellen aufzulisten und von Endpunkten zu lesen und auf sie zu schreiben.
Warum Android-Geräte keine Windows-Treiber mehr benötigen
- Die frühere Methode hatte einen offensichtlichen Nachteil: Wenn die VID/PID eines Android-Geräts nicht in der Liste stand, wurde
winusb nicht geladen.
- Windows 8 fragt den für die Schnittstelle benötigten Treiber direkt beim Gerät an, was besser ist als der Weg über INF-Dateien.
- Wenn das Gerät mit Microsoft OS Descriptors (MOD) kompatibel ist, fordert Windows den Extended Compat ID OS Feature Descriptor an.
- Dadurch wird
winusb.sys geladen, und die User-Space-Executable adb kann das Gerät öffnen und die Schnittstelle anfordern, sodass Entwickler direkt mit der Arbeit beginnen können.
Welche Geräte Microsoft OS Descriptors unterstützen
- Nach Beobachtungen an persönlich genutzten Pixel-Geräten scheint die MOD-Unterstützung irgendwann zwischen dem Pixel 2 (2017) und dem Pixel 3a (2019) eingeführt worden zu sein.
Extended Properties OS Feature Descriptor
- Neuere Geräte wie das Pixel 8 verfügen über einen Extended Properties OS Feature Descriptor, der GUIDs, Hilfeseiten, URLs und sogar Icons enthalten kann.
Meinung von GN⁺
- Der wichtigste Punkt dieses Artikels ist, dass Android-Geräte unter Windows nun für die Entwicklung genutzt werden können, ohne dass separate Treiber installiert werden müssen.
- Durch die Einführung von Microsoft OS Descriptors und des Extended Compat ID OS Feature Descriptor wurde die User Experience deutlich verbessert.
- Diese Änderung erhöht den Komfort für Android-Entwickler und trägt dazu bei, den Zugang zu Entwicklungsumgebungen zu erleichtern.
1 Kommentare
Hacker-News-Kommentar
Begeisterung für ADB (Android Debug Bridge)
Seit wann Pixel-Geräte MOD (Modern Operating Devices) unterstützen
Windows-Precision-Touchpad-Treiber
Entwicklung der ADB-Treiber
Probleme mit USB-Treibern unter Windows
Kritik an zusätzlichen Microsoft-spezifischen USB-Deskriptoren
Erfahrungen bei der ADB-Fehlersuche
Erfahrungen mit dem HID-Protokoll