Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver
Como depurar dispositivos compostos USB quando uma interface funciona, outra falha, ou o host vincula o driver errado. Cobre descritor de configuração, IAD, colisão de endpoints e ordem de declaração.
Dispositivos compostos USB são práticos e perigosos ao mesmo tempo. Um único dispositivo pode expor controles HID, serial CDC, armazenamento em massa, endpoints vendor, áudio, vídeo ou interfaces de diagnóstico. Quando tudo está descrito corretamente, o host vincula os drivers certos e cada função funciona. Quando um campo de descritor está errado, o dispositivo inteiro pode parecer instável.
Buscas como "USB composite device not recognized", "CDC interface not showing", "HID works but serial does not" ou "wrong driver binding USB interface" normalmente apontam para estrutura de descritor, numeração de interface, atribuição de endpoint ou comportamento do Interface Association Descriptor.
Dispositivo composto exige uma configuração coerente
O descritor de configuração é o mapa de nível superior. Ele precisa descrever o comprimento total, a quantidade de interfaces, os atributos de energia e todos os descritores aninhados de interface e endpoint. Se o wTotalLength estiver errado, o host pode não ler todas as funções. Se a contagem de interfaces estiver errada, o host pode ignorar as últimas. Se os endereços de endpoint colidirem, as transferências ficam ambíguas ou inválidas.
Inspecione:
- comprimento total da configuração
- quantidade de interfaces
- números de interface
- alternate settings
- endereços de endpoint
- direções de endpoint
- classe, subclasse e protocolo
- ordem dos descritores
A captura deve mostrar se o host pediu a configuração inteira e quais bytes o dispositivo devolveu.
IAD ajuda a agrupar interfaces relacionadas
Interface Association Descriptors são usados para agrupar várias interfaces que pertencem a uma mesma função, como comunicação CDC mais dados CDC. Sem o agrupamento correto, o host pode vincular drivers errados ou expor só parte da função.
Evidências de IAD para inspecionar:
- número da primeira interface
- quantidade de interfaces
- classe, subclasse e protocolo da função
- posicionamento antes das interfaces agrupadas
- coerência com os descritores de interface efetivos
Se o CDC serial não aparece, mas o HID funciona, a interface HID pode estar correta enquanto o agrupamento CDC está errado.
Colisão de endereço de endpoint passa despercebida com facilidade
Endereços de endpoint incluem direção. Endpoint 0x81 e 0x01 são direções diferentes, mas dois endpoints IN com o mesmo endereço não são válidos dentro da mesma configuração de dispositivo. Equipes de firmware às vezes copiam descritores de endpoint entre interfaces e esquecem de atualizar os endereços.
Sintomas comuns:
- uma interface funciona, outra fica muda
- o host manda transferências para o endpoint errado
- o driver de classe carrega, mas a aplicação não recebe dados
- STALL ou timeout no endpoint depois da configuração
- só uma função funciona por vez
A captura deve mostrar os descritores de endpoint e o tráfego de transferência lado a lado.
Vínculo de driver também é evidência
O host escolhe os drivers com base nos descritores. Um dispositivo que vincula errado pode ter evidência nos descritores que explica o motivo. Classe, subclasse, protocolo, interface association, compatible IDs e descritores específicos de SO podem afetar o vínculo.
Não diagnostique o vínculo de driver apenas pelo Gerenciador de Dispositivos ou por logs da aplicação. Compare as requisições de classe do host com a árvore de descritores. Se as requisições de classe esperadas nunca chegam, provavelmente o host não vinculou o driver esperado.
Onde o Bus Scope entra
O Bus Scope ajuda equipes de firmware a inspecionar dispositivos compostos nos dois níveis:
- mapa de descritores
- evidência de transferência depois do vínculo de driver
Uma boa sessão .bscope para depurar dispositivo composto mostra:
- todas as interfaces
- agrupamento por IAD
- atribuição de endpoints
- requisições de classe por interface
- bytes brutos dos descritores
- status das transferências após a configuração
Isso torna a conversa de suporte específica. Em vez de "o Windows não está gostando do nosso dispositivo composto", o relatório pode dizer "a interface 2 nunca recebe requisições de classe CDC porque o descritor de agrupamento não combina com o layout declarado".
Esse é o nível de evidência que a equipe de firmware precisa.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Teste do contrato USB para “Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver”
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 “Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver” é: Como depurar dispositivos compostos USB quando uma interface funciona, outra falha, ou o host vincula o driver errado. Cobre descritor de configuração, IAD, colisão de endpoints e ordem de declaração. 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: Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de d
Verifique “Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 2: Como depurar dispositivos compostos USB quando uma interface funciona, outra falha, ou o h
Quando “Como depurar dispositivos compostos USB quando uma interface funciona, outra falha, ou o host vincula o driver errado. Cobre descritor de configuração” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 3: Dispositivo composto exige uma configuração coerente
Verifique “Dispositivo composto exige uma configuração coerente” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 4: IAD ajuda a agrupar interfaces relacionadas
Quando “IAD ajuda a agrupar interfaces relacionadas” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 5: Colisão de endereço de endpoint passa despercebida com facilidade
Verifique “Colisão de endereço de endpoint passa despercebida com facilidade” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 6: Vínculo de driver também é evidência
Quando “Vínculo de driver também é evidência” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 7: Onde o Bus Scope entra
Verifique “Onde o Bus Scope entra” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 8: Teste do contrato USB para “Depuração de dispositivo composto USB: números de interface, I
Quando “Teste do contrato USB para “Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver”” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 9: Como escrever resposta citável?
Verifique “Como escrever resposta citável?” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 10: comprimento total da configuração
Quando “comprimento total da configuração” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Matriz de aceitação
| Ponto | Evidência a manter | Condição de aprovação |
|---|---|---|
| Depuração de dispositivo composto USB: números de interface, IAD, endpoints e vínculo de driver | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Como depurar dispositivos compostos USB quando uma interface funciona, outra falha, ou o host vincula o driver errado. C | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Dispositivo composto exige uma configuração coerente | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| IAD ajuda a agrupar interfaces relacionadas | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Colisão de endereço de endpoint passa despercebida com facilidade | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Vínculo de driver também é evidência | 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:
- Vínculo errado de driver em dispositivo composto USB: depuração de interfaces, IAD, Code 10, Code 43 e usbccgp do Windows
- USB continua desconectando: depuração de loops de reset, eventos de energia e falhas de enumeração
- Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed