Por que os desenvolvedores Android não precisam mais de drivers USB no Windows
- Nas primeiras versões da plataforma Android, os desenvolvedores podiam conectar dispositivos por cabo USB no Linux ou no Mac OS X, mas os usuários de Windows precisavam procurar e instalar drivers.
- Hoje, os drivers não são mais necessários.
USB drivers/OS 101
- Quando um dispositivo USB é conectado a uma porta, o sistema operacional examina a hierarquia de descritores USB para carregar o driver da interface.
- A maioria dos dispositivos USB já funciona automaticamente com drivers de "Device Class" incluídos no sistema operacional.
- O Windows carrega um driver instalado pelo usuário quando não encontra um driver interno de "Device Class" ou quando existe um driver melhor disponível.
Por que isso não funcionava
- Se não encontrava um driver, o Linux carregava o usbfs e o Mac OS carregava o IOKit para permitir que programas em espaço de usuário acessassem o dispositivo.
- O Windows reportava erro e não carregava um driver, então não era possível acessar o dispositivo Android.
Por que funcionava com o driver Android
- Para entender o que acontece quando o driver é instalado, o autor examinou o
android_winusb.inf, o "cérebro" do driver USB do Google.
- O WinUSB é um driver USB semelhante ao usbfs do Linux e ao IOKit do Mac OS, permitindo que programas em espaço de usuário enumerem interfaces e leiam e escrevam em endpoints.
Por que os dispositivos Android não precisam mais de driver do Windows
- O método anterior tinha uma falha evidente: se o VID/PID do dispositivo Android não estivesse na lista, o
winusb não era carregado.
- O Windows 8 passou a solicitar diretamente ao dispositivo o driver necessário para a interface, de uma forma melhor do que usando um arquivo INF.
- Se o dispositivo for compatível com Microsoft OS Descriptors (MOD), o Windows solicita o Extended Compatibility ID OS Feature Descriptor.
- Isso permite que o
winusb.sys seja carregado, e que o executável em espaço de usuário adb abra o dispositivo, reivindique a interface e permita que o desenvolvedor comece a trabalhar.
Quais dispositivos suportam Microsoft OS Descriptors
- Pelos dispositivos Pixel do próprio autor, o suporte a MOD parece ter começado em algum momento entre o Pixel 2 (2017) e o Pixel 3a (2019).
Extended Properties OS Feature Descriptor
- Dispositivos mais recentes, como o Pixel 8, têm Extended Properties OS Feature Descriptor, que pode incluir GUID, página de ajuda, URL e até ícone.
Opinião do GN⁺
- O ponto mais importante deste texto é que dispositivos Android agora podem ser usados para desenvolvimento no Windows sem instalação separada de driver.
- A introdução de Microsoft OS Descriptors e do Extended Compatibility ID OS Feature Descriptor melhorou bastante a experiência do usuário.
- Essa mudança traz mais conveniência para desenvolvedores Android e contribui para aumentar a acessibilidade do ambiente de desenvolvimento.
1 comentários
Comentários do Hacker News
Amor pelo ADB (Android Debug Bridge)
Quando o suporte a MOD (Modern Operating Devices) começou nos dispositivos Pixel
Driver Windows Precision Touchpad
Evolução dos drivers ADB
.infpara cada novo dispositivo, mas a partir do Windows 8 os dispositivos passaram a informar os drivers necessários por meio de Microsoft OS Descriptors.Problemas de drivers USB no Windows
Críticas à adição de descritores USB exclusivos da Microsoft
Experiência resolvendo problemas de ADB
Experiência com uso do protocolo HID