6 puntos por GN⁺ 2024-01-02 | 1 comentarios | Compartir por WhatsApp

Por qué los desarrolladores de Android ya no necesitan controladores USB en Windows

  • En la plataforma inicial de Android, los desarrolladores podían conectar dispositivos por cable USB en Linux o Mac OS X, pero los usuarios de Windows tenían que buscar e instalar controladores.
  • Hoy en día, esos controladores ya no son necesarios.

USB Drivers/OS 101

  • Cuando se conecta un dispositivo USB a un puerto, el sistema operativo inspecciona la jerarquía de descriptores USB para cargar un controlador para la interfaz.
  • La mayoría de los dispositivos USB están incluidos en el sistema operativo para funcionar automáticamente con controladores integrados de 'Device Class'.
  • Windows carga un controlador instalado por el usuario si no puede encontrar un controlador integrado de 'Device Class' o si existe uno mejor.

Por qué antes no funcionaba

  • Si no se encontraba un controlador, Linux cargaba usbfs y Mac OS cargaba IOKit para permitir que los programas en espacio de usuario accedieran al dispositivo.
  • Windows reportaba un error y no cargaba ningún controlador, por lo que no se podía acceder al dispositivo Android.

Por qué funcionaba con el controlador de Android

  • Para entender qué sucede al instalar el controlador, se examina android_winusb.inf, el 'cerebro' del controlador USB de Google.
  • WinUSB es un controlador USB similar a usbfs en Linux e IOKit en Mac OS, que permite a los programas en espacio de usuario enumerar interfaces y leer y escribir desde los endpoints.

Por qué los dispositivos Android ya no necesitan controladores de Windows

  • El método anterior tenía una falla evidente: si el VID/PID del dispositivo Android no estaba en la lista, no se cargaba winusb.
  • Windows 8 solicita directamente al dispositivo el controlador necesario para la interfaz, en una forma mejor que usar un archivo INF.
  • Si el dispositivo es compatible con Microsoft OS Descriptors (MOD), Windows solicita el Extended Compat ID OS Feature Descriptor.
  • Esto permite que se cargue winusb.sys, y que el ejecutable en espacio de usuario adb abra el dispositivo, reclame la interfaz y el desarrollador pueda comenzar a trabajar.

Qué dispositivos son compatibles con Microsoft OS Descriptors

  • Según pruebas con dispositivos Pixel de propiedad personal, el soporte para MOD parece haber comenzado en algún momento entre el Pixel 2 (2017) y el Pixel 3a (2019).

Extended Properties OS Feature Descriptor

  • Dispositivos más recientes, como el Pixel 8, tienen un Extended Properties OS Feature Descriptor, que puede incluir GUID, páginas de ayuda, URL e incluso íconos.

Opinión de GN⁺

  • El punto más importante de este artículo es que los dispositivos Android ahora pueden usarse para desarrollo en Windows sin instalar controladores por separado.
  • La introducción de Microsoft OS Descriptors y del Extended Compat ID OS Feature Descriptor ha mejorado significativamente la experiencia del usuario.
  • Este cambio ofrece mayor comodidad a los desarrolladores de Android y contribuye a hacer más accesible el entorno de desarrollo.

1 comentarios

 
GN⁺ 2024-01-02
Comentarios de Hacker News
  • Amor por ADB (Android Debug Bridge)

    • ADB es una herramienta muy útil; incluso permite rerutear puertos a través de una VPN.
    • Incluso si no eres desarrollador de Android, es como una navaja suiza y una de las grandes razones para preferir Android.
    • Con el perfil de trabajo se puede separar el material laboral de los elementos invasivos para la privacidad personal, así que no hace falta un segundo teléfono.
  • Cuándo empezó el soporte de MOD (Modern Operating Devices) en dispositivos Pixel

    • Según una colección personal de Pixel, parece que el soporte de MOD comenzó entre el Pixel 2 (2017) y el Pixel 3a (2019).
    • Probablemente también se aplicó al Pixel 3, y a todos los dispositivos compatibles con Android 11 que cumplen con CTS (Compatibility Test Suite).
    • Los OEM deben pasar las pruebas de CTS configurando un valor sencillo en el USB HAL.
  • Controlador Windows Precision Touchpad

    • Se menciona una implementación de Windows Precision Touchpad para Apple MacBook/Magic Trackpad 2 desarrollada por Bingxing Wang.
  • Evolución del controlador ADB

    • Antes, Windows tenía que instalar un archivo de controlador .inf para cada dispositivo nuevo, pero desde Windows 8 y versiones posteriores, el dispositivo indica el controlador necesario mediante Microsoft OS Descriptors.
    • Esto mejoró la experiencia de usuario y es importante no solo para desarrolladores, sino también para quienes quieren una mejor experiencia con Android.
  • Problemas con los controladores USB en Windows

    • En Windows, los controladores USB son confusos y a veces pueden ser peligrosos.
    • Se ha visto que algunos estudiantes no pueden usar en Windows clones de Arduino que funcionan bien en Linux.
    • Existe el problema de que Windows instala automáticamente controladores que deshabilitan dispositivos considerados "falsos", por lo que conectar algo que no sea almacenamiento a una máquina con Windows se considera el último recurso.
  • Críticas a la adición de descriptores USB exclusivos de Microsoft

    • Se critica que los fabricantes de teléfonos tengan que agregar descriptores USB exclusivos de Microsoft.
    • Es poco razonable que Windows exija funciones exclusivas de Microsoft, en lugar de reemplazarlas con una interfaz estandarizada en espacio de usuario como Linux o macOS.
  • Experiencia resolviendo problemas de ADB

    • Recientemente, alguien se topó con problemas de ADB mientras hacía un proyecto de espejo mágico usando una Lenovo M7.
    • Revisó y probó todas las publicaciones relacionadas de Stack Overflow, pero no tuvo éxito, y expresa sorpresa al escuchar que este problema ya está resuelto.
  • Experiencia usando el protocolo HID

    • Se usó el protocolo raw HID en dispositivos conectados por USB, y funcionó bien en todas las versiones de Windows.
    • No sirve para todos los casos, pero en ciertos escenarios encaja bien.