Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de barramento

Como investigar o erro 'USB Device Descriptor Request Failed' no Windows, Code 43, descritores ruins, timeouts de enumeração, problemas de energia e crashes de firmware usando evidência de captura USB.

USB device descriptor request failed, Code 43, Windows USB, enumeração USB, device descriptor, USB desconhecido, depuração USB

"Unknown USB Device (Device Descriptor Request Failed)" é um dos erros de USB mais comuns no Windows. O Gerenciador de Dispositivos pode mostrar Code 43. O dispositivo pode aparecer como desconhecido, falhar logo depois de conectado, ou funcionar em uma máquina e não em outra. Buscas como "USB Device Descriptor Request Failed", "Windows Code 43 USB", "device descriptor request failed fix" e "USB enumeration failed" acontecem porque o Windows dá um rótulo para o usuário, não a razão no nível do barramento.

A requisição de descritor é uma das primeiras etapas da enumeração USB. Se ela falha, o host nem consegue descobrir o que é o dispositivo. Isso significa que drivers de classe, software de aplicação, portas seriais, relatórios HID e protocolos vendor não são o primeiro lugar para depurar. A falha aconteceu antes do sistema operacional ter informação suficiente para vincular o driver normal.

O Bus Scope ajuda nesse tipo de problema porque a evidência importante está nas primeiras control transfers depois do attach.

O que o Windows está tentando fazer

Quando um dispositivo USB é conectado, o host detecta o attach, reseta a porta e pede o device descriptor. O device descriptor contém identidade e capacidade básicas:

  • versão de USB
  • classe, subclasse e protocolo do dispositivo
  • max packet size do endpoint zero
  • Vendor ID
  • Product ID
  • release number do dispositivo
  • índice de string do fabricante
  • índice de string do produto
  • índice de string do serial number
  • número de configurações

Se o Windows não consegue ler esse descritor de forma confiável, ele pode reportar "Device Descriptor Request Failed".

O que a falha pode significar

Esse erro pode ser causado por:

  • Firmware do dispositivo não respondendo no endpoint zero
  • Cabo USB ruim ou instável
  • Energia insuficiente
  • Reset do dispositivo durante a enumeração
  • Conteúdo do descritor malformado ou inconsistente
  • Problema de max packet size do endpoint zero
  • Problema de timing na recuperação do reset
  • Incompatibilidade de hub ou porta
  • Problema de negociação USB 2.0 versus USB 3.x
  • Dano elétrico ou defeito de hardware
  • Problema de driver de host controller

O mesmo rótulo do Windows cobre muitas causas raiz diferentes. Por isso a evidência de pacote importa.

Sequência inicial de enumeração

Uma enumeração inicial saudável costuma ser:

Port attach
Port reset
GET_DESCRIPTOR(Device, primeiros 8 bytes)
SET_ADDRESS
GET_DESCRIPTOR(Device, completo)
GET_DESCRIPTOR(Configuration)
SET_CONFIGURATION

Host controllers e versões de Windows podem variar, mas o padrão é parecido. Se o primeiro GET_DESCRIPTOR falha, o host nunca chega à configuração normal do dispositivo.

Os primeiros 8 bytes importam

Hosts geralmente leem os primeiros 8 bytes do device descriptor primeiro para descobrir o packet size do endpoint zero. Se essa requisição falha ou devolve dados inconsistentes, a enumeração pode parar.

Desenvolvedores de firmware às vezes testam só a resposta completa do descritor e esquecem da requisição inicial curta. Um dispositivo pode funcionar em um host e falhar em outro porque o timing e o length da requisição são diferentes.

Procure por:

  • Nenhuma resposta para a primeira requisição de descritor
  • Short packet onde se esperava uma resposta válida
  • Stall no endpoint zero
  • Timeout seguido de reset
  • Tamanho do descritor que não bate com a estrutura esperada
  • Dados do descritor mudando entre tentativas

Energia e loops de reset

Se o dispositivo liga devagar ou consome corrente demais, ele pode resetar durante a enumeração. O Windows tenta de novo. O resultado pode ser um loop:

Attach
Reset
GET_DESCRIPTOR
Timeout
Reset
GET_DESCRIPTOR
Timeout
Unknown USB Device

Usuários podem achar que é problema de driver porque o erro aparece no Gerenciador de Dispositivos. Mas se o descritor nunca foi lido, o driver normal ainda não entrou em jogo.

Tente cabo curto e direto, outra porta, hub com fonte e outro host, mas preserve a captura. O trace mostra se o dispositivo falhou antes ou depois da resposta do descritor.

Descritores malformados

Se o dispositivo devolve bytes de descritor, mas eles são inválidos, o Windows pode rejeitar o dispositivo. Exemplos:

  • bLength errado
  • Tipo de descritor errado
  • Mismatch no comprimento total da configuração
  • Descritor de endpoint faltando
  • Mismatch na contagem de interfaces
  • Max packet size inválido
  • Mismatch no length do string descriptor
  • Versão de USB declarada e não suportada

Descritores malformados são especialmente comuns em firmware custom, placas de desenvolvimento, cores USB em FPGA e dispositivos com stacks USB escritos à mão.

O Bus Scope ajuda a inspecionar o conteúdo do descritor diretamente, em vez de depender de um erro genérico do Gerenciador de Dispositivos.

Por que funciona no Linux e não no Windows

Alguns dispositivos enumeram no Linux, mas falham no Windows, porque os hosts não são igualmente tolerantes. O Windows pode validar a consistência dos descritores de forma diferente. O Linux pode retentar de um jeito que esconde problemas de timing. Um dispositivo também pode depender de um comportamento de driver de classe que difere entre sistemas.

Não conclua que o Windows está errado nem que o dispositivo está bom. Compare os traces de enumeração. A diferença costuma aparecer na ordem das requisições, no timing, no length do descritor ou no comportamento de reset.

Checklist de depuração

Use este processo:

  1. Capture antes de conectar.
  2. Identifique se a primeira requisição de device descriptor recebe alguma resposta.
  3. Confira se o endpoint zero trava ou dá timeout.
  4. Inspecione os bytes do descritor para conferir length e type.
  5. Confira se há port resets repetidos.
  6. Compare porta direta versus hub.
  7. Compare portas USB 2.0 e USB 3.x.
  8. Compare outro cabo.
  9. Compare traces de enumeração no Windows e no Linux.
  10. Se o firmware for custom, teste leituras curtas de descritor explicitamente.

O que incluir em um bug report

Um relatório útil inclui:

  • Texto do erro no Windows e Code 43, se houver
  • VID/PID do dispositivo, se chegou a ser lido
  • Se a primeira requisição de 8 bytes do descritor teve sucesso
  • Última requisição USB bem-sucedida antes da falha
  • Se os resets se repetem
  • Detalhes de cabo, hub e porta
  • Captura em torno da conexão, não só depois da falha

Isso dá evidência acionável para as equipes de firmware e driver.

Diagnóstico final

"USB Device Descriptor Request Failed" significa que o host falhou bem cedo na enumeração. A causa raiz pode ser firmware, estrutura do descritor, timing, comportamento do endpoint zero, energia, cabo, hub ou compatibilidade com o host. Em geral, é cedo demais para culpar a aplicação.

O Bus Scope apoia o fluxo certo: inspecionar as primeiras control transfers, preservar a sequência de enumeração e diagnosticar a falha a partir do barramento USB, em vez de um rótulo genérico do Windows.

<!-- bus-scope-localized-transaction-foundation-v1:start -->

Teste do contrato USB para “Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de barramento”

A resposta direta é que STALL, timeout ou reset não explica sozinho a causa. Primeiro prove que o provider vê o device correto; depois leia o contrato do transfer: tipo, direção, recipient, wValue, wIndex, comprimento declarado e real, status e estado anterior e posterior. Ligue a conclusão à primeira transação diferente do caso bom.

Limite Comparação Decisão
Plataforma provider, permissão, Root Hub ou usbmon/XHC20 Os records são da conexão correta?
Setup bmRequestType, bRequest, wValue, wIndex, wLength O host enviou o pedido esperado?
Data direção, comprimento e bytes retidos O payload cumpre o contrato?
Status ACK, STALL, timeout ou cancellation Onde a transação termina?
Estado configuration, interface, alternate setting, halt O device estava pronto?

Comece antes de reset e enumeration e preserve descriptors, SET_CONFIGURATION, SET_INTERFACE e o command anterior à falha. Filtro estreito pode esconder o control transfer decisivo. Execute uma ação USB por teste e altere apenas firmware, driver, porta, cabo, comando ou timing.

Como escrever resposta citável?

Informe request, campos setup, resposta e contexto anterior; depois proponha teste com uma variável. Bytes não retidos não provam packet loss. Proximidade entre command e reset mostra correlação, não causa sem repetição ou mudança de estado.

Mantenha VID/PID, firmware, speed, topologia, provider, filtro e trigger. Compare fases USB semânticas, não frame numbers entre usbmon e USBPcap. Registre início, fim, versão, OS, conexão e checksum. Consulte o troubleshooting Bus Scope.

Os owners Semrush continuam separados: free USB analyzer na página do produto, best USB protocol analyzer na comparação e USB descriptor viewer no guia descriptor. Não invente volume ou KD.

<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->

Resposta direta e limite de aceitação

A resposta curta para “Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de barramento” é: Como investigar o erro 'USB Device Descriptor Request Failed' no Windows, Code 43, descritores ruins, timeouts de enumeração, problemas de energia e crashes de firmware usando evidência de captura USB. Trate essa frase como um resultado a verificar, não como promessa para qualquer entrada, dispositivo, projeto ou ambiente. Um resultado completo registra estado inicial, ação exata, saída visível e condição que comprova a conclusão da tarefa no Bus Scope.

Procedimento orientado por evidências

Comece com um caso pequeno e repetível antes de alterar um projeto completo. Registre versão do aplicativo, sistema operacional, identidade da entrada ou dispositivo, configurações relevantes e resultado esperado. Execute uma ação deliberada, preserve a primeira transição inesperada e compare com um caso conhecido quando possível. Alterar vários controles ao mesmo tempo esconde qual condição criou ou corrigiu o problema.

Ponto de controle 1: Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de bar

Encerre “Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de barramento” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 2: Como investigar o erro 'USB Device Descriptor Request Failed' no Windows, Code 43, descrit

Para “Como investigar o erro 'USB Device Descriptor Request Failed' no Windows, Code 43, descritores ruins, timeouts de enumeração, problemas de energia e c”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 3: O que o Windows está tentando fazer

Encerre “O que o Windows está tentando fazer” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 4: O que a falha pode significar

Para “O que a falha pode significar”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 5: Sequência inicial de enumeração

Encerre “Sequência inicial de enumeração” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 6: Os primeiros 8 bytes importam

Para “Os primeiros 8 bytes importam”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 7: Energia e loops de reset

Encerre “Energia e loops de reset” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 8: Descritores malformados

Para “Descritores malformados”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 9: Por que funciona no Linux e não no Windows

Encerre “Por que funciona no Linux e não no Windows” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 10: Checklist de depuração

Para “Checklist de depuração”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Matriz de aceitação

Ponto Evidência a manter Condição de aprovação
Falha em device descriptor request no Windows: como depurar o Code 43 com evidência de barramento Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Como investigar o erro 'USB Device Descriptor Request Failed' no Windows, Code 43, descritores ruins, timeouts de enumer Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
O que o Windows está tentando fazer Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
O que a falha pode significar Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Sequência inicial de enumeração Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Os primeiros 8 bytes importam Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado

Isolamento, recuperação e entrega

Pare no primeiro limite que falhar. Preserve fonte, projeto, sessão ou captura, duplique antes de edição destrutiva e altere uma variável por experimento. Repetir um fluxo amplo depois de várias mudanças pode gerar outro resultado sem explicar o motivo.

Separe ausência de evidência de evidência de ausência. Uma tela vazia pode indicar entrada, escopo, filtro, permissão, dispositivo, intervalo ou estado incorreto. Verifique aquisição ou importação antes de interpretar decoder, editor, relatório ou exportação.

Antes da entrega, reabra o artefato e examine início, ponto de decisão e final. Registre versão, plataforma, configuração, expectativa, observação e reprodução mínima. Remova ou oculte dados sensíveis e confirme a autorização do destinatário.

Perguntas e respostas

Qual é a maneira confiável mais rápida de começar?

Use o menor caso representativo, escreva o resultado esperado e altere uma variável. Confirme o caminho básico antes de adicionar filtros, efeitos, edições, automação ou uma fonte maior.

Quais evidências devem ser salvas?

Mantenha identidade da entrada, versão, plataforma, configurações, ação exata, primeira transição inesperada e saída final. Feche e reabra projeto, sessão, relatório ou exportação antes de tratá-lo como durável.

Quando o procedimento deve ser repetido?

Repita após mudanças relevantes no aplicativo, sistema, driver, firmware, modelo, fonte ou fluxo. Preserve o caso aceito anterior como referência sem alterações.

Quando a tarefa está pronta para entrega?

Quando outra pessoa autorizada identifica a entrada, repete a ação, vê o mesmo resultado, entende os limites restantes e abre o artefato sem depender de estado local não documentado.

Guias relacionados

Estas páginas no mesmo idioma cobrem etapas próximas sem alterar o proprietário canônico deste assunto:

<!-- multilingual-blog-closeout:end -->