6 points par GN⁺ 2024-01-02 | 1 commentaires | Partager sur WhatsApp

Pourquoi les développeurs Android n’ont plus besoin de pilotes USB Windows

  • Aux débuts de la plateforme Android, les développeurs pouvaient connecter leurs appareils via un câble USB sous Linux ou Mac OS X, mais les utilisateurs de Windows devaient chercher et installer un pilote.
  • Aujourd’hui, ce n’est plus nécessaire.

USB pilotes / OS 101

  • Lorsqu’un périphérique USB est branché sur un port, le système d’exploitation examine la hiérarchie des descripteurs USB et doit charger un pilote pour l’interface.
  • La plupart des périphériques USB sont pris en charge automatiquement grâce aux pilotes intégrés de type « Device Class » inclus dans le système d’exploitation.
  • Windows charge un pilote installé par l’utilisateur s’il ne trouve pas de pilote « Device Class » intégré ou s’il en existe un meilleur.

Pourquoi cela ne fonctionnait pas

  • Si aucun pilote n’est trouvé, Linux charge usbfs et Mac OS charge IOKit afin de permettre aux programmes en espace utilisateur d’accéder au périphérique.
  • Windows signalait une erreur et ne chargeait pas de pilote, ce qui empêchait l’accès à l’appareil Android.

Pourquoi cela fonctionnait avec le pilote Android

  • Pour comprendre ce qui se passe lors de l’installation d’un pilote, l’article examine android_winusb.inf, le « cerveau » du pilote USB Google.
  • WinUSB est un pilote USB similaire à usbfs sous Linux et à IOKit sous Mac OS, qui permet aux programmes en espace utilisateur d’énumérer les interfaces et de lire/écrire sur les endpoints.

Pourquoi les appareils Android n’ont plus besoin de pilote Windows

  • L’ancienne méthode avait un défaut évident : si le VID/PID de l’appareil Android ne figurait pas dans la liste, winusb n’était pas chargé.
  • Windows 8 a introduit une meilleure méthode qu’un fichier INF : demander directement au périphérique le pilote nécessaire pour l’interface.
  • Si l’appareil est compatible avec les Microsoft OS Descriptors (MOD), Windows demande alors l’Extended Compat ID OS Feature Descriptor.
  • Cela permet de charger winusb.sys, puis à l’exécutable en espace utilisateur adb d’ouvrir l’appareil, de réclamer l’interface et de permettre au développeur de commencer à travailler.

Quels appareils prennent en charge les Microsoft OS Descriptors

  • D’après les appareils Pixel possédés par l’auteur, la prise en charge de MOD semble être apparue entre le Pixel 2 (2017) et le Pixel 3a (2019).

Extended Properties OS Feature Descriptor

  • Des appareils plus récents, comme le Pixel 8, disposent aussi d’un Extended Properties OS Feature Descriptor, qui peut inclure un GUID, une page d’aide, une URL, voire une icône.

L’avis de GN⁺

  • Le point essentiel de cet article est que les appareils Android peuvent désormais être utilisés pour le développement sous Windows sans installation séparée de pilote.
  • L’introduction des Microsoft OS Descriptors et de l’Extended Compat ID OS Feature Descriptor a nettement amélioré l’expérience utilisateur.
  • Ce changement apporte plus de confort aux développeurs Android et contribue à rendre l’environnement de développement plus accessible.

1 commentaires

 
GN⁺ 2024-01-02
Commentaires Hacker News
  • L’intérêt d’ADB (Android Debug Bridge)

    • ADB est un outil extrêmement utile, qui permet aussi de rerouter des ports via un VPN.
    • Même sans être développeur Android, c’est un véritable couteau suisse, et l’une des grandes raisons de préférer Android.
    • Le profil professionnel permet de séparer les éléments liés au travail des aspects intrusifs pour la vie privée, ce qui évite d’avoir besoin d’un deuxième téléphone.
  • Début de la prise en charge du MOD (Modern Operating Devices) sur les appareils Pixel

    • D’après une collection personnelle de Pixel, la prise en charge du MOD semble avoir commencé entre le Pixel 2 (2017) et le Pixel 3a (2019).
    • Cela aurait aussi concerné le Pixel 3, ainsi que tous les appareils conformes au CTS (Compatibility Test Suite) prenant en charge Android 11.
    • Les OEM doivent simplement définir une valeur dans l’USB HAL pour réussir le test CTS.
  • Pilote Windows Precision Touchpad

    • Mention de l’implémentation Windows Precision Touchpad pour Apple MacBook/Magic Trackpad 2 développée par Bingxing Wang.
  • Évolution des pilotes ADB

    • Autrefois, Windows devait installer un fichier de pilote .inf pour chaque nouvel appareil, mais depuis Windows 8, l’appareil peut indiquer le pilote nécessaire via les Microsoft OS Descriptors.
    • Cela a amélioré l’expérience utilisateur, et c’est important non seulement pour les développeurs, mais aussi pour les utilisateurs qui veulent une meilleure expérience Android.
  • Problèmes des pilotes USB sous Windows

    • Sous Windows, les pilotes USB sont confus et parfois risqués.
    • Certains étudiants se retrouvaient dans l’impossibilité d’utiliser sous Windows des clones d’Arduino qui fonctionnaient pourtant très bien sous Linux.
    • Comme Windows installe parfois automatiquement des pilotes qui désactivent les appareils jugés « faux », connecter autre chose qu’un périphérique de stockage à une machine Windows est considéré comme un dernier recours.
  • Critique de l’ajout de descripteurs USB propriétaires à Microsoft

    • Critique du fait que les fabricants de téléphones doivent ajouter des descripteurs USB propriétaires à Microsoft.
    • Il est déraisonnable que Windows exige des fonctionnalités spécifiques à Microsoft au lieu de les remplacer par une interface standardisée en espace utilisateur, comme sur Linux ou macOS.
  • Expérience de résolution de problèmes avec ADB

    • Quelqu’un a récemment rencontré des problèmes avec ADB en utilisant une Lenovo M7 pour un projet de miroir magique.
    • Après avoir trouvé et essayé tous les billets Stack Overflow pertinents, rien n’a fonctionné, d’où sa surprise en apprenant que ce problème aurait été résolu.
  • Expérience d’utilisation du protocole HID

    • Utilisation du protocole raw HID sur un appareil connecté en USB, avec un bon fonctionnement sur toutes les versions de Windows.
    • Cela ne convient pas à tous les besoins, mais c’est bien adapté à certains cas.