USB no Windows – Perguntas frequentes

Este tópico apresenta perguntas frequentes para desenvolvedores de driver que são novos no desenvolvimento e integração de dispositivos USB e drivers com sistemas operacionais Windows.

Ouço vários termos USB gerados quase intercambiável. O que todos eles querem dizer?

Digamos que você veja algo como : "Graças ao USB 3.0, posso conectar uma pen drive SUPERSpeed ao controlador de host xHCI do meu computador e copiar arquivos mais rapidamente."

Vamos entender os termos USB nessa frase. USB 3.0, USB 2.0 e USB 1.0 referem-se ao número de revisão de especificação USB do Fórum de Implementadores USB. As especificações USB definem como o computador host e o dispositivo USB se comunicam entre si.

O número de versão também indica a velocidade máxima de transmissão. A revisão de especificação mais recente é USB 3.0, que especifica uma velocidade máxima de transmissão de até 5 Gbps. O USB 1.0 define duas taxas de dados diferentes, USB de baixa velocidade (até 1,5 Mbps) e USB de velocidade total (até 12 Mbps). O USB 2.0 define uma nova taxa de dados, USB de alta velocidade (480 Mbps), mantendo o suporte para dispositivos de baixa e velocidade total. O USB 3.0 continua funcionando com todas as taxas de dados definidas anteriormente. Se você examinar o empacotamento de produtos, o USB SuperSpeed referencia os dispositivos USB 3.0 mais recentes. O USB de alta velocidade é usado para descrever dispositivos USB 2.0 de alta velocidade. USB, sem descritor, refere-se a dispositivos de baixa velocidade e velocidade total.

Além do protocolo USB, há uma segunda especificação para o controlador de host USB, a parte de hardware no computador ao qual um dispositivo está conectado. A especificação da Interface do Controlador de Host define como o hardware e o software do controlador de host interagem. A interface do controlador de host eXtensible (xHCI) define um controlador de host USB 3.0. A Interface avançada do controlador de host (EHCI) define um controlador de host USB 2.0. O CONTROLADOR de Host Universal (UHCI) e o CONTROLADOR de Host Aberto (OHCI) são duas implementações alternativas de um controlador de host USB 1.0.

Meu computador tem portas USB 3.0?

As portas USB 3.0 são marcadas com o Logotipo USB SuperSpeed ou a porta normalmente é azul.

porta com logotipo usb

porta usb 3.0 azul

Os computadores mais recentes têm portas USB 3.0 e USB 2.0. Se você quiser que seu dispositivo USB SuperSpeed seja executado em alta velocidade, localize uma porta USB 3.0 e conecte o dispositivo a essa porta. Um dispositivo SuperSpeed conectado a uma porta USB 2.0 opera em alta velocidade.

Você também pode verificar se uma porta específica é uma porta USB 3.0 no Gerenciador de Dispositivos. No Windows Vista ou versão posterior do Windows, abra Gerenciador de Dispositivos e selecione a porta na lista.

controladores de host usb no gerenciador de dispositivos

Se você tiver um controlador de host eXtensible, ele oferecerá suporte a USB 3.0.

Preciso instalar drivers para meu controlador de host eXtensible?

Windows 8 e Windows Server 2012 incluem suporte para USB 3.0.

Se o computador tiver portas USB 3.0 e estiver executando uma versão do Windows anterior a Windows 8, os drivers do controlador de host serão fornecidos pelo fabricante do computador. Se você precisar reinstalar esses drivers, deverá obtê-los do fabricante.

Se você adicionou um controlador USB 3.0 cartão ao computador que executa uma versão do Windows anterior a Windows 8, instale os drivers fornecidos pelo controlador cartão fabricante.

Em Windows 8, o conjunto fornecido pela Microsoft de drivers USB 3.0 (pilha de driver USB) funciona com a maioria dos controladores de host. A pilha de driver do Microsoft USB 3.0 não funciona com o controlador FL1000 da Lógica fresco. Para determinar se você tem um controlador FL1000, abra Gerenciador de Dispositivos e expanda controladores do Barramento Serial Universal. Exiba as propriedades do controlador selecionando e segurando (ou clicando com o botão direito do mouse) o nó do controlador. Na guia Detalhes , selecione A propriedade IDs de hardware na lista. Se a ID de hardware começar com PCI\VEN_1B73&DEV_1000, será a FL1000. Para esse controlador, baixe e instale drivers do computador ou controlador cartão fabricante.

Por que vejo vários controladores de host no meu sistema?

Além dos dispositivos USB que você conecta ao computador, há vários dispositivos integrados no computador que podem estar conectados por USB, como webcam, leitor de impressão digital, leitor de cartão SD. Para conectar todos esses dispositivos e ainda fornecer portas USB externas, o computador dá suporte a vários controladores de host USB.

O controlador de host USB 3.0 xHCI é totalmente compatível com versões anteriores com todas as velocidades do dispositivo USB, SuperSpeed, alta velocidade, velocidade total e baixa velocidade. Você pode conectar qualquer dispositivo diretamente a um controlador xHCI e esperar que esse dispositivo funcione. Para o controlador EHCI, esse não é o caso. Embora a especificação USB 2.0 dê suporte a todas as velocidades dos dispositivos, o controlador EHCI só dá suporte a dispositivos USB de alta velocidade. Para que os dispositivos USB de velocidade total e baixa velocidade funcionem, eles devem estar conectados ao controlador EHCI por meio de um hub USB 2.0 ou devem estar conectados a um controlador UHCI ou OHCI.

Para computadores mais recentes, a maioria das portas USB 2.0 expostas por computadores são downstream de um hub USB 2.0. Esse hub está conectado a um controlador EHCI. Isso permite que a porta USB 2.0 do computador funcione com todas as velocidades dos dispositivos. Os dispositivos SuperSpeed se comportam como dispositivos de alta velocidade quando conectados a uma porta 2.0.

Depois que a especificação USB 2.0 foi lançada, os computadores usaram uma combinação de controladores de host para dar suporte a todas as velocidades dos dispositivos. Uma única porta USB 2.0 seria conectada a dois controladores de host, um controlador de host EHCI e um controlador de host UHCI ou OHCI. Quando você anexa um dispositivo, o hardware roteia dinamicamente a conexão para um dos dois hosts. A rotina depende da velocidade do dispositivo.

Por que vejo dois hubs em Gerenciador de Dispositivos quando conectei apenas um hub USB 3.0?

Embora os controladores de host xHCI trabalhem com qualquer velocidade de dispositivo, um hub SuperSpeed só funciona com dispositivos SuperSpeed. Para garantir que os hubs USB 3.0 possam funcionar com todas as velocidades, eles têm duas partes: um hub SuperSpeed e um hub USB 2.0. Um hub USB 3.0 é capaz de dar suporte a todas as velocidades roteando dinamicamente dispositivos para o hub SuperSpeed ou hub 2.0, com base na velocidade do dispositivo.

Abra Gerenciador de Dispositivos, exiba Dispositivos por conexão e localize o controlador de host eXtensible. Quando você conecta um único hub USB 3.0 à porta USB 3.0, há dois hubs downstream do Hub Raiz dos controladores.

hub usb 3.0 no gerenciador de dispositivos

No exemplo a seguir, um dispositivo de armazenamento USB SuperSpeed e um dispositivo de áudio USB estão conectados a um hub USB 3.0. Você pode ver que o dispositivo de armazenamento está downstream do hub SuperSpeed e o dispositivo de áudio está downstream do hub USB 2.0.

hub usb 3.0 com dispositivos conectados no gerenciador de dispositivos

Qual conjunto de drivers é carregado para os dispositivos conectados a portas 2.0?

Um conjunto diferente de binários é carregado para cada tipo de controlador de host. É importante entender que a pilha de driver USB que o Windows carrega se correlaciona ao tipo de controlador de host, não à velocidade do dispositivo conectado.

Nesta imagem, você pode ver quais drivers são carregados para cada um dos diferentes tipos de controladores de host USB.

pilha de driver usb no windows 8

Se a porta USB 3.0 for roteada corretamente para um controlador xHCI, o Windows carregará a pilha de driver xHCI (também conhecida como pilha de driver USB 3.0).

Se a porta USB 2.0 estiver conectada a um controlador EHCI por meio de um hub USB 2.0, o tráfego passará pelo controlador EHCI e a pilha de driver USB 2.0 será carregada.

Para obter mais informações sobre os drivers na pilha do driver USB, consulte Drivers do lado do host USB no Windows.

Se as portas USB 2.0 do computador usarem um controlador complementar, o controlador de host para o qual a porta é roteada depende da velocidade do dispositivo. Por exemplo, um dispositivo de baixa velocidade se conecta por meio de um UHCI ou um controlador OHCI e usa o driver USBUHCI ou USBOHCI. O computador roteia um dispositivo de alta velocidade para um controlador EHCI, portanto, o Windows usa o driver USBEHCI.

Velocidades de dispositivo diferentes não determinam o driver carregado para o controlador. No entanto, diferentes velocidades de dispositivo podem determinar qual controlador é usado. O controlador sempre usa o mesmo driver.

Como fazer determinar se meu dispositivo USB 3.0 está operando como SuperSpeed?

Em Windows 8, primeiro, verifique se você tem uma porta USB 3.0 e um controlador de host xHCI. Se o dispositivo USB SuperSpeed estiver conectado ao controlador de host xHCI, Windows 8 mostrará uma mensagem "Conectado ao USB 3.0" em partes específicas da interface do usuário do Windows 8. Se o dispositivo estiver conectado a um controlador EHCI em vez do controlador XHCI, as mensagens, em vez disso, lerão: "O dispositivo pode executar mais rapidamente quando conectado ao USB 3.0".

Você pode exibir essas mensagens de interface do usuário nas Configurações do COMPUTADOR.

  1. Abra a Barra de Botões (arraste o cursor para o canto superior ou inferior direito da tela, digite Chave do Windows + C ou passe o dedo para a direita).
  2. Selecione Configurações e, em seguida, Alterar configurações do computador.
  3. Selecione os Dispositivos nas configurações do computador.

Esta imagem mostra a mensagem de interface do usuário quando o dispositivo USB 3.0 está operando no SuperSpeed.

Captura de tela que mostra

Esta imagem mostra a mensagem da interface do usuário quando o dispositivo USB está operando em uma velocidade de barramento menor que SuperSpeed.

Captura de tela que mostra

Você pode exibir mensagens semelhantes em Dispositivos e Impressoras, conforme mostrado nessas imagens.

Captura de tela que mostra

dispositivo superspeed operando em alta velocidade

Se o dispositivo USB 3.0 for um dispositivo de armazenamento, o Windows Explorer mostrará mensagens semelhantes quando o rótulo de volume for selecionado, conforme mostrado abaixo. Observe que o painel Exibir –> Detalhes deve ser selecionado para que a mensagem fique visível.

Captura de tela que mostra um dispositivo U S B superspeed selecionado em

dispositivo usb superspeed operando em alta velocidade

Se você estiver escrevendo um driver de dispositivo, a ferramenta USBView , incluída no WDK (Kit de Driver do Windows), será muito útil. Para o WDK Windows 8, a Microsoft atualizou o USBView para exibir informações USB superSpeed. Você pode usar essa ferramenta para determinar se o dispositivo está ou não operando no SuperSpeed. Esta imagem mostra um dispositivo USB 3.0 operando no SuperSpeed no USBView.

dispositivo usb superspeed operando em superespesado

Se você for um desenvolvedor de driver de dispositivo, a pilha de driver USB expõe um novo IOCTL chamado IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, que você pode usar para consultar informações de velocidade para dispositivos USB 3.0.

Por que meu dispositivo USB SuperSpeed não é mais rápido do que um dispositivo USB de alta velocidade equivalente?

Geralmente, se um dispositivo USB USB 3.0 não for mais rápido do que um dispositivo USB de alta velocidade, ele não está funcionando no SuperSpeed. Se o dispositivo USB SuperSpeed estiver conectado a uma porta USB 3.0, ele poderá não operar no SuperSpeed pelos seguintes motivos:

  • Você está usando um hub USB 2.0.

    Se você estiver usando um hub, verifique se ele é um hub USB 3.0. Se você estiver usando um hub USB 2.0, qualquer dispositivo USB SuperSpeed anexado funcionará em alta velocidade. Substitua o hub por um hub USB 3.0 ou conecte o dispositivo diretamente à porta USB 3.0.

  • O firmware no hub USB 3.0 está desatualizado.

    Determinados hubs USB 3.0 anteriores não funcionaram bem. Como resultado, o Windows usa apenas a parte 2.0 desses hubs. Se Gerenciador de Dispositivos indicar um hub "Não Funcional", conforme mostrado nesta imagem, Windows 8 não estiver usando a parte 3.0 do hub.

    hub usb não funcional sobrespesado

    Você pode conectar seu dispositivo SuperSpeed diretamente à porta USB 3.0 ou atualizar o firmware no hub. Windows 8 reconhece hubs que têm firmware mais recente.

  • O dispositivo está conectado com um cabo USB 2.0.

    Verifique se o cabo usado para conectar o dispositivo é um cabo USB 3.0. Também é possível que o cabo USB 3.0 tenha problemas de integridade do sinal. Nesse caso, o dispositivo pode mudar para alta velocidade. Se isso acontecer, você deverá usar um cabo USB 3.0 diferente.

  • O firmware no dispositivo está desatualizado.

    Atualize o firmware para o dispositivo USB SuperSpeed obtendo a versão mais recente do site do fabricante. Alguns fabricantes de dispositivos USB SuperSpeed liberam correções, para bugs encontrados no dispositivo, como atualizações de firmware.

  • O firmware no controlador de host está desatualizado.

    Atualize o firmware para o controlador USB 3.0 obtendo a versão mais recente do site do fabricante do computador ou do seu suplemento em cartão site do fabricante. Alguns fabricantes de controladores USB 3.0 liberam correções, para bugs encontrados no controlador, como atualizações de firmware.

  • O BIOS para seu sistema está desatualizado.

    Atualize o BIOS para seu sistema obtendo a versão mais recente do seu criador de computadores. Em algumas placas-mãe, o BIOS pode rotear incorretamente um dispositivo conectado a um controlador de host xHCI para um controlador EHCI. Esse roteamento incorreto força um dispositivo USB SuperSpeed a operar em alta velocidade. Uma atualização do BIOS pode corrigir esse problema.

É possível ter uma composição e um dispositivo composto em uma parte do hardware?

Sim. O Microsoft Natural Keyboard Pro, que tem um hub de três portas, alimentado por barramento, é um exemplo de um dispositivo USB composto composto. O dispositivo tem um dispositivo composto anexado à porta 1. Duas portas adicionais são expostas ao usuário final.

O dispositivo anexado à porta 1 é um dispositivo composto de baixa velocidade. O dispositivo tem duas interfaces, ambas em conformidade com a definição de classe de dispositivo padrão USB para dispositivos de interface humana (HID). O dispositivo composto fornece duas interfaces HID em vez de multiplexar todas as coleções em uma única interface HID usando coleções de nível superior. Esse design foi escolhido para compatibilidade com BIOSs mais antigos.

Por que alguns dos meus dispositivos USB são reinstalados quando são movidos para uma nova porta?

No Windows 2000 e em sistemas operacionais posteriores, um novo objeto de dispositivo físico (PDO) é criado quando um dispositivo USB é movido de uma porta para outra. Se o hardware relatar um número de série USB exclusivo, um novo PDO não será criado.

Para reutilizar o mesmo PDO e garantir que a experiência do dispositivo não seja alterada se o dispositivo for reinserido na mesma porta ou em uma nova porta, os fornecedores de hardware devem armazenar um número de série em seu dispositivo. De acordo com os requisitos do Programa de Certificação de Hardware do Windows, o número de série deve ser exclusivo para todos os dispositivos que compartilham o identificador de instalação do dispositivo.

Há uma lista de recomendações de design para empacotamento de produtos USB?

O USB-IF trabalhou com a Microsoft e outras empresas membros USB-IF para desenvolver uma lista de recomendações para que fornecedores independentes de hardware incluam em suas embalagens.

Mais informações estão disponíveis no site do USB.

Para USB Hi-Speed e SuperSpeed, consulte: https://www.usb.org/.

Preciso reescrever meu driver cliente para dar suporte a dispositivos USB 3.0?

Todos os drivers de cliente existentes devem continuar funcionando, como é, quando um dispositivo de baixa, completa ou de alta velocidade está conectado a uma porta USB 3.0. Em Windows 8, garantimos a compatibilidade com os drivers de cliente existentes.

A pilha de driver USB 3.0 mantém níveis de IRQL, contexto do chamador e status de erro; frequência de repetição e tempo ao interagir com dispositivos e muito mais para garantir que os drivers existentes continuem funcionando. Ainda é muito importante testar.

Falhas comuns ocorrem porque:

  • As quebras de análise do descritor de ponto de extremidade do driver devido à presença de descritores complementares de ponto de extremidade SuperSpeed.
  • Devido ao aumento da velocidade, você pode encontrar problemas de tempo no nível do protocolo do aplicativo.
  • O tamanho máximo do pacote com suporte pelo ponto de extremidade pode ser diferente.
  • Devido ao gerenciamento de energia da função, o tempo para a operação de suspensão seletiva pode ser diferente.

No Windows 7 e na versão anterior dos sistemas operacionais, a pilha de driver USB 3.0 é fornecida por terceiros. Portanto, é altamente recomendável testar seu driver para trabalhar com pilhas de driver USB de terceiros.

Novos drivers de cliente no Windows 8 para dispositivos USB de alta velocidade e SuperSpeed devem optar por novos recursos.

Qual driver é carregado para meu dispositivo de armazenamento SuperSpeed usar, Uaspstor.sys ou Usbstor.sys?

O protocolo UAS (USB Attached SCSI) é um novo protocolo de armazenamento em massa projetado para melhorar o desempenho em relação ao protocolo de armazenamento em massa USB estabelecido, BOT (Transporte Somente Em Massa). Ele faz isso reduzindo a sobrecarga de protocolo, dando suporte ao NCQ (enfileiramento de comando nativo SATA) e processando vários comandos em paralelo. Para fazer isso, o UAS usa um novo recurso USB 3.0 para transferências em massa chamadas fluxos.

O driver de armazenamento em massa existente, Usbstor.sys, usa o protocolo BOT. Ele funciona com todas as velocidades dos dispositivos, incluindo dispositivos USB SuperSpeed.

Para Windows 8, a Microsoft inclui um novo driver de classe de armazenamento em massa, Uaspstor.sys que usa o protocolo UAS. Como os fluxos são novos no USB 3.0, Uaspstor.sys só pode usar fluxos quando o hardware dá suporte a fluxos (um dispositivo USB SuperSpeed está conectado a um controlador de host xHCI). O driver também inclui suporte para fluxos de software, portanto, ele também pode carregar para dispositivos que operam em alta velocidade, independentemente do tipo de host.

Se você conectar um dispositivo de armazenamento em massa a Windows 8 e esse dispositivo der suporte ao UAS, o Windows carregará Uaspstor.sys. Em alguns casos, pode haver problemas conhecidos com fluxos de hardware em um controlador de host xHCI específico ou problemas conhecidos com a implementação do protocolo UAS de um dispositivo. Nesses casos, o Windows volta ao protocolo BOT e carrega o driver Usbstor.sys.

Uaspstor.sys é novo em Windows 8. Ele não está presente em versões anteriores do Windows.

Quais classes USB DWG a Microsoft dá suporte?

O Windows dá suporte a várias classes USB que o DWG (Grupo de Trabalho de Dispositivo USB) definiu. Para obter a lista atual de especificações de classe USB e códigos de classe, visite o site do USB DWG em https://www.usb.org/documents.

Esta tabela realça as classes USB DWG com suporte no Windows e também identifica as versões do Windows que dão suporte a cada classe.

Especificação de classe Código bDeviceClass Nome do driver Suporte do Windows
Classe Bluetooth 0xE0 Bthusb.sys Windows XP e posterior
Dispositivos de interface de cartão inteligente/chip (CCID) 0x0B Usbccid.sys

Windows Server 2008 e posterior

Windows Vista e posterior

Windows Server 2003

Windows XP

Windows 2000

Classe Hub 0x09 Usbhub.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

Dispositivos de interface humana (HID) 0x03 Hidusb.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

MSC (classe de armazenamento em massa) 0x08 Usbstor.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

UAS (USB Attached SCSI) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

Classe de impressão 0x07 Usbprint.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

Verificação/geração de imagens (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

MtP (Transferência de Mídia) 0x06 WpdUsb.sys

Windows Server 2003 e posterior

Windows XP e posterior

Classe de áudio USB 0x01 Usbaudio.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

Classe Modem (CDC) 0x02 Usbser.sys

Windows Server 2003 e posterior

Windows XP e posterior

Windows 2000 e posterior

Classe de vídeo (UVC) 0x0E Usbvideo.sys

Windows Vista e posterior

Windows XP

*Instruções especiais são necessárias para carregar esse driver porque esse driver pode ter sido liberado mais tarde do que o sistema operacional. Os drivers de classe do Windows podem não dar suporte a todos os recursos descritos em uma especificação de classe DWG. Nesse caso, o driver não carrega com base na correspondência de classe. Para obter detalhes adicionais sobre os recursos implementados dentro de uma especificação de classe, consulte a documentação do WDK.

Qual classe de configuração de dispositivo devo usar para um dispositivo USB personalizado?

A Microsoft fornece classes de instalação definidas pelo sistema para a maioria dos tipos de dispositivo. OS GUIDs da classe de instalação definidos pelo sistema são definidos em Devguid.h. Para obter informações adicionais, consulte o WDK. Para obter uma lista de GUIDs de classe do Windows, consulte estes tópicos:

Os fornecedores independentes de hardware devem usar a classe de instalação associada ao tipo de dispositivo USB, não com o tipo de barramento. Se você estiver desenvolvendo um tipo de dispositivo para o qual a Microsoft não forneceu um GUID de classe existente, você poderá definir uma nova classe de configuração de dispositivo.

Em Windows 8, uma nova classe de instalação foi definida, chamada USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}). Se você estiver desenvolvendo um tipo de dispositivo, associe seu dispositivo ao USBDevice em vez da classe de instalação, USB. A classe USBDevice funciona no Windows Vista e em versões posteriores do sistema operacional.

A classe de instalação USB (ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}) é reservada somente para controladores de host USB e hubs USB e não deve ser usada para outras categorias de dispositivo. Usar essa classe de instalação incorretamente pode fazer com que o driver do dispositivo falhe no teste do logotipo do Windows.

Por que minha CPU não entra em C3 quando anexo alguns dispositivos USB?

Quando um dispositivo USB é conectado, o controlador de host USB sonda o agendador de quadros, que é uma operação de master de barramento de acesso direto à memória (DMA). "Eventos de interrupção", como tráfego de master de barramento, interrupções ou várias outras atividades do sistema, movem uma CPU para fora do C3 porque, por definição, o cache da CPU não pode ser bisbilhotado enquanto estiver em C3.

Há duas maneiras de contornar esse problema:

  • Remoção de hardware.

    Às vezes, o hardware pode ser desconectado eletronicamente do Barramento Serial Universal. Por exemplo, quando a mídia de armazenamento é removida do leitor USB, o leitor de USB pode emular uma desconexão eletrônica e reconectar quando a mídia é reinserida. Nesse caso, as transições C3 podem ocorrer porque nenhum dispositivo USB está no controlador de host.

  • Suspensão seletiva.

    A única alternativa disponível no Windows XP e em sistemas operacionais posteriores é dar suporte à Suspensão Seletiva USB. Esse recurso permite que um driver suspenda um dispositivo USB que ele controla quando o dispositivo fica ocioso, mesmo que o próprio sistema permaneça em um estado de energia totalmente operacional (S0). A Suspensão Seletiva será especialmente poderosa se todos os drivers de função USB derem suporte a ela. Se até mesmo um driver não der suporte a ele, a CPU não poderá inserir C3. Para obter informações adicionais sobre a Suspensão Seletiva, consulte o WDK.

Quais drivers de classe USB dão suporte à Suspensão Seletiva?

Veja a seguir uma lista de drivers de classe USB em Windows 8 que dão suporte à Suspensão Seletiva:

  • Bluetooth

    Esse driver pode suspender seletivamente dispositivos em computadores que executam o Windows XP Service Pack 2 e versões posteriores do Windows. O driver requer o rádio Bluetooth para definir os bits de ativação remota e auto-alimentados no descritor de configuração. O driver suspende seletivamente (D2) o rádio Bluetooth quando não há conexões Bluetooth ativas.

  • USB HID

    Esse driver pode suspender seletivamente um dispositivo HID. É sua responsabilidade disparar o sinal de ativação remota em todas as alterações de estado do dispositivo. Para habilitar a Suspensão Seletiva na pilha HID, o valor do Registro SelectiveSuspendEnabled deve ser habilitado para o VID+PID específico do dispositivo. Para obter exemplos, consulte Input.inf.

    Em sistemas que dão suporte ao Modo de Espera Conectado do Windows 8, esse driver entra em suspensão seletiva (D2) quando o sistema está em modo de espera conectado. Esse driver pode ativar o sistema e ativar a tela.

  • Hub USB

    Esse driver pode suspender seletivamente um hub raiz ou externo quando nenhum dispositivo está conectado a ele ou quando todos os dispositivos anexados a esse hub podem ser suspensos seletivamente.

  • USB Modem

    Esse driver pode suspender seletivamente o dispositivo quando não há conexões de modem ativas.

  • Armazenamento USB (BOT)

    Esse driver pode suspender seletivamente dispositivos de armazenamento (D3) em sistemas que dão suporte a Windows 8 Modo de Espera Conectado, quando esses sistemas entram em Espera Conectada. Como HID, há uma substituição do Registro para habilitar a suspensão seletiva em todos os sistemas de Windows 8.

  • Armazenamento USB (UAS)

    Esse driver pode suspender seletivamente (D3) um dispositivo de armazenamento quando ele está ocioso por um período de tempo limite de disco.

  • Vídeo USB

    Esse driver pode suspender seletivamente (D3) uma webcam no Windows Vista e em um sistema operacional posterior.

  • Áudio USB

    Esse driver pode suspender seletivamente (D3) um dispositivo de áudio USB no Windows 7 e em sistemas operacionais posteriores quando o computador está com energia da bateria.

  • USB composto

    Esse driver pode suspender seletivamente (D3) dispositivos compostos quando todos os filhos estão suspensos. Em sistemas que dão suporte a D3-Cold, todas as crianças devem optar pelo D3-Cold.

  • Cartão Inteligente USB

    Esse driver pode suspender seletivamente (D2) dispositivos de interface de cartão inteligente por padrão em sistemas operacionais Windows 7 e posteriores.

  • Periféricos USB genéricos (WinUSB)

    Esse driver pode suspender seletivamente dispositivos (D3) por padrão no Windows Vista e em sistemas operacionais posteriores.

  • WWAN: 3G ou WiMax Dongles

    Esse driver pode suspender seletivamente os dispositivos. Quando há uma assinatura ativa, o dispositivo insere D2, sem uma assinatura ativa, o dispositivo insere D3.

Por que um dispositivo USB não pode despertar o Windows do S3?

Um dispositivo USB não pode despertar o Windows do S3 por vários motivos, incluindo o seguinte:

  1. BIOS incorreto.

    Verifique se o BIOS mais recente está instalado no computador. Para obter a revisão mais recente do BIOS para o computador, visite o site do OEM ou ODM.

  2. BIOS que não está habilitado para ativação.

    Alguns BIOSs possibilitam desabilitar a ativação de S3 e S4. Verifique se o BIOS está habilitado para ativar do S3.

  3. A chave do Registro USBBIOSx não está sendo definida.

    Uma instalação limpo do Windows XP não tem a chave do Registro USBBIOSx. Se o OEM ou o ODM validar que o BIOS pode ser ativado do S3, defina essa chave do Registro como 0x00 e reinicie o computador.

  4. O Controlador de Host não tem energia no S3 ou S4.

    Muitas vezes, o computador corta a energia de um suplemento cartão quando o computador está em um estado de energia mais baixo. Se o suplemento cartão não tiver energia, ele não poderá detectar um evento de ativação e não poderá ativar o computador.

Para obter informações adicionais, consulte a solução de problemas de USB no Centro de Ajuda e Suporte no Windows XP e versões posteriores do Windows.

Preciso instalar drivers para meu controlador de host avançado (USB 2.0) ?

As seguintes versões do Windows dão suporte ao controlador de host avançado USB 2.0:

  • Windows Vista e posterior
  • Windows Server 2003 e posterior
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

Nota Como o Windows 2000 e o Windows XP foram lançados antes do hardware USB 2.0 estar disponível, os drivers foram liberados para esses sistemas operacionais nos service packs. Para instalar drivers:

  1. Siga o procedimento descrito na resposta à primeira pergunta para verificar se o computador tem portas USB 2.0 e se você precisa instalar um driver para o controlador de host aprimorado.

  2. Na janela Gerenciador de Dispositivos, expanda a seção Outros Dispositivos, conforme explicado na primeira pergunta, e clique duas vezes em Controlador de Barramento Serial Universal (USB).

  3. Na guia Geral da caixa de diálogo Propriedades, selecione Reinstalar Driver.

    reinstalar driver

  4. No Assistente para Adicionar Novo Hardware, selecione Instalar o software automaticamente (Recomendado) e, em seguida, selecione Avançar. Continue com o assistente, aceitando todas as opções padrão, até chegar à última página do assistente e selecione Concluir. Talvez seja necessário reiniciar o computador para concluir a instalação.

Nota Para garantir que você tenha as atualizações mais recentes instaladas em seu computador, visite Windows Update regularmente.

Posso desabilitar o aviso "Dispositivo USB HI-SPEED conectado à porta USB não HI-SPEED"?

O Windows XP e versões posteriores do Windows criam um aviso pop-up quando um dispositivo USB de alta velocidade é conectado a uma porta USB que não dá suporte à alta velocidade. Para obter o desempenho mais rápido do dispositivo, os usuários devem selecionar o aviso e seguir as instruções na tela.

Para desabilitar o aviso, siga estas etapas:

  1. Inicie Gerenciador de Dispositivos, conforme descrito na primeira pergunta nestas perguntas frequentes.
  2. Na janela Gerenciador de Dispositivos, expanda o nó Controladores do Barramento Serial Universal. Procure um controlador de host com a palavra "Universal" ou "Abrir" no título. Se você encontrar um, clique duas vezes nele.
  3. Na guia Avançado da caixa de diálogo Propriedades , selecione Não me fale sobre erros usb.

Nota O procedimento anterior desabilita todos os avisos USB, não apenas "Dispositivo USB HI-SPEED conectado à porta não HI-SPEED".

Meu hub USB 2.0 é tt único ou multi-TT?

Um hub USB 2.0 pode ter um TT (tradutor de transações) para todas as portas voltadas para downstream no hub (TT único) ou pode ter um TT para cada porta voltada para downstream no hub (vários TT).

O valor do campo bDeviceProtocol do descritor de dispositivo USB e o campo bInterfaceProtocol do descritor de interface USB indicam se um hub é um TT único ou multi-TT:

  • TT único. bDeviceProtocol == 0x01
  • Multi-TT. bDeviceProtocol == 0x02

Usbhub.sys usa essa configuração para habilitar o modo multi-TT ou o modo TT único. No Windows XP e posterior, Usbhub.sys sempre habilita o modo multi-TT em um hub multi-TT. Para obter detalhes adicionais sobre o layout TT, consulte as seções 11.14.1.3 e 11.23.1 da Especificação USB 2.0.

Quais caracteres ou bytes são válidos em um número de série USB?

O campo iSerialNumber do descritor de dispositivo USB indica se o dispositivo tem um número de série e onde o número está armazenado, da seguinte maneira:

  • iSerialNumber == 0x00 : o dispositivo USB não tem número de série.
  • iSerialNumber != 0x00 : o dispositivo USB tem um número de série. O valor atribuído a iSerialNumber é o índice de cadeia de caracteres do número de série.

Se o dispositivo tiver um número de série, o número de série deverá identificar exclusivamente cada instância do mesmo dispositivo.

Por exemplo, se dois descritores de dispositivo tiverem valores idênticos para os campos idVendor, idProduct e bcdDevice , o campo iSerialNumber deverá ser diferente para distinguir um dispositivo do outro.

Plug and Play requer que cada byte em um número de série USB seja válido. Se um único byte for inválido, o Windows descartará o número de série e tratará o dispositivo como se não tivesse número de série. Os seguintes valores de bytes não são válidos para números de série USB:

  • 0x2C.
  • Valores menores que 0x20.
  • Valores maiores que 0x7F.

Para obter detalhes adicionais sobre o valor iSerialNumber , consulte a seção 9.6.1 da Especificação USB 2.0.

Qual LANGID é usada em uma solicitação de cadeia de caracteres em builds localizados do Windows?

Um dispositivo USB indica a presença de um número de série definindo o campo iSerialNumber do descritor de dispositivo USB como o índice de cadeia de caracteres do número de série. Para recuperar o número de série, o Windows emite uma solicitação de cadeia de caracteres com o LANGID (identificador de idioma) definido como 0x0409 (inglês dos EUA). O Windows sempre usa esse LANGID para recuperar números de série USB, mesmo para versões do Windows localizadas para outros idiomas.

Qual LANGID é usado para extrair o número de série de um dispositivo?

Um dispositivo USB indica a presença de um número de série definindo o campo iSerialNumber do descritor de dispositivo USB como o índice de cadeia de caracteres do número de série. Para recuperar o número de série, o Windows emite uma solicitação de cadeia de caracteres com o LANGID (identificador de idioma) definido como 0x0409 (inglês dos EUA). O Windows sempre usa esse LANGID para recuperar números de série USB, mesmo para versões do Windows localizadas para outros idiomas.

Como os números devem ser atribuídos a várias interfaces em um dispositivo composto?

O Windows trata dispositivos USB que têm mais de uma interface na primeira configuração como dispositivos compostos.

Para o Windows XP Service Pack 1 e versões anteriores do Windows:

  • Os números de interface devem ser baseados em zero.
  • Os números de interface devem ser consecutivos e aumentar.

Para o Windows XP Service Pack 2 e versões posteriores do Windows, os números de interface só precisam estar aumentando, não consecutivos.

As configurações alternativas para uma interface devem ser atribuídas da seguinte maneira para todas as versões do Windows:

  • O valor padrão de uma interface é sempre a configuração alternativa zero.
  • Números de configuração alternativos adicionais devem ser consecutivos e crescentes.

Para obter informações adicionais sobre configurações alternativas, consulte a Seção 9.6.5 da Especificação USB 2.0.

Quais são as principais restrições impostas por Usbccgp.sys?

Usbccgp.sys dá suporte a dispositivos compostos para:

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Embora ainda seja possível carregar Usbhub.sys como o driver pai do dispositivo composto nessas versões posteriores do Windows, a Microsoft não recomenda isso porque isso pode causar erros de compatibilidade de hardware. Em vez disso, você deve usar Usbccgp.sys .

Para garantir que você carregue o driver correto para seu dispositivo composto, use as diretivas Incluir e Necessidades em seus arquivos INF, da seguinte maneira:

Include = USB.INF
Needs = Composite.Dev

As principais restrições impostas a dispositivos de hardware e drivers por Usbccgp.sys são as seguintes:

  • O Usbccgp dá suporte apenas à configuração padrão, configuração 0.

  • O Usbccgp não dá suporte à Suspensão Seletiva no Windows XP e no Windows Server 2003. Esse recurso tem suporte apenas no Windows Vista e em versões posteriores do Windows. Nota O Usbccgp dá suporte à Suspensão Seletiva no Windows XP SP1 e versões posteriores do Windows XP, mas com recursos limitados. Para essas versões do Windows, o dispositivo composto será colocado em Suspensão Seletiva somente se cada função filho do dispositivo tiver um IRP ocioso pendente. O Usbccgp não dá suporte à Suspensão Seletiva no Windows XP RTM

  • O Usbccgp dá suporte ao IAD (descritor de associação de interface) somente no Windows XP SP2, Windows Server 2003 SP1 e versões posteriores do Windows.

  • O Usbccgp dá suporte a números de interface não seguros somente no Windows XP SP2, Windows Server 2003 SP1 e versões posteriores do Windows.

Como fazer habilitar o rastreamento de depuração para binários de núcleo USB?

Consulte a postagem no blog sobre Como incluir e exibir mensagens de rastreamento do WPP nos arquivos PDB públicos de um driver.

Para obter informações sobre dispositivos USB e eventos ETW, consulte Depurando problemas de dispositivo USB usando eventos ETW.

O Windows dá suporte a descritores de associação de interface?

Sim. A ECN (Notificação de Alteração de Engenharia) do IAD (Descritor de Associação de Interface) USB 2.0 introduziu um novo método padrão para descrever um agrupamento de interfaces e suas configurações alternativas dentro de uma função. O IAD pode ser usado para identificar duas ou mais interfaces consecutivas e configurações alternativas dentro de uma função.

Atualmente, a Microsoft está trabalhando com IHVs para desenvolver dispositivos que dão suporte ao IAD. Os seguintes sistemas operacionais têm suporte para IAD:

  • Windows XP Service Pack 2 e posterior
  • Windows Server 2003 Service Pack 1 e posterior
  • Windows Vista

A pilha USB lida com MDLs encadeados em um URB?

Essa funcionalidade é compatível com a pilha de driver USB 3.0 incluída no Windows.

Um driver pode ter mais de um URB em um IRP?

Não. Essa funcionalidade não é compatível com a pilha USB incluída no Windows.

O Windows dá suporte a hubs compostos USB?

Um dispositivo USB composto - também conhecido como um dispositivo USB multifuncional - expõe várias funções, cada uma das quais pode ser tratada como um dispositivo independente. O sistema carrega o driver pai genérico USB, Usbccgp.sys, para servir como o driver pai para eaech das funções do dispositivo. O driver pai genérico USB enumera as funções do dispositivo composto como se fossem dispositivos USB separados e, em seguida, cria um PDO e constrói uma pilha de dispositivos para cada função.

Um dispositivo USB composto não pode expor uma função que serve como um hub. O Windows não enumera esses hubs corretamente e tentar instalar o dispositivo pode causar uma falha no sistema.