Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed

Como depurar descritores Device Qualifier, Other Speed Configuration, diferenças de enumeração entre high-speed e full-speed, e falhas por descritor inconsistente.

device qualifier USB, other speed configuration, USB high speed, USB full speed, mismatch de descritor, enumeração USB, depuração USB

Dispositivos USB que suportam tanto full-speed quanto high-speed precisam descrever como se comportam na outra velocidade. Buscas como "USB Device Qualifier descriptor", "Other Speed Configuration descriptor", "high speed device enumerates as full speed", "USB descriptor mismatch" e "device works on USB 2.0 but fails on hub" acontecem quando o mesmo produto se comporta de forma diferente dependendo da porta, do cabo, do hub ou do host controller.

O Bus Scope ajuda porque o diagnóstico exige comparar requisições de descritor, velocidade real, packet sizes de endpoint, descritores de configuração e decisões do host durante a enumeração.

O que é o descritor Device Qualifier

O descritor Device Qualifier descreve como um dispositivo capaz de high-speed se comportaria na outra velocidade. Se o dispositivo está em high-speed, o qualifier diz ao host sobre o comportamento em full-speed. Se está em full-speed, pode descrever a capacidade de high-speed.

Campos importantes:

  • Versão de USB.
  • Classe do dispositivo.
  • Subclasse.
  • Protocolo.
  • Max packet size do endpoint zero.
  • Número de configurações.

Se esse descritor estiver faltando, malformado ou inconsistente, a enumeração pode passar em um host e falhar em outro.

Other Speed Configuration

O descritor Other Speed Configuration descreve os detalhes da configuração na velocidade oposta. Packet sizes de endpoint, polling intervals e suposições de bandwidth podem mudar.

Padrões comuns de falha:

  • A configuração em full-speed anuncia packet sizes de endpoint que só fazem sentido em high-speed.
  • A configuração em high-speed esquece uma interface.
  • A contagem de descritores other-speed não bate com a configuração real.
  • Firmware devolve um STALL quando o host espera um descritor.
  • Host aceita o dispositivo, mas vincula o driver errado.
  • Dispositivo funciona em um hub e falha em outro.

Esses problemas são difíceis de ver pelos logs da aplicação.

Dispositivo high-speed enumera como full-speed

Um caso frequente de suporte é "USB high-speed device detected as full-speed". Isso pode ser causado por qualidade de cabo, topologia de hub, integridade de sinal, comportamento de chirp do firmware, design elétrico ou problemas de descritor.

Evidência de pacote ajuda a separar as camadas:

  • A negociação de high-speed aconteceu?
  • O host pediu o Device Qualifier?
  • O dispositivo devolveu bytes válidos de descritor?
  • Os endpoint descriptors bateram com a velocidade selecionada?
  • O host resetou e tentou de novo?
  • O dispositivo reenumerou depois em outra velocidade?

Se o trace mostra que o dispositivo nunca chegou a high-speed, correções de descritor podem não bastar. Se o trace mostra enumeração em high-speed, mas outros descritores other-speed inválidos, o firmware é o suspeito mais forte.

Mismatch de max packet size entre velocidades

Os endpoint descriptors podem mudar entre full-speed e high-speed. Um endpoint bulk pode ser 64 bytes em full-speed e 512 bytes em high-speed.

Sintomas de falha:

  • Transferências falham só em portas high-speed.
  • Transferências falham só via um hub full-speed antigo.
  • Buffer do firmware combina com uma velocidade, mas o descritor anuncia outra.
  • Driver de host manda transferências maiores do que o firmware esperava.
  • Dispositivo devolve short packets em fronteiras inesperadas.

Isso se conecta diretamente à depuração de wMaxPacketSize.

Dispositivos compostos

Dispositivos compostos tornam os descritores other-speed mais frágeis. Um dispositivo pode expor HID, CDC, vendor-specific, mass storage e interfaces de update de firmware. A árvore other-speed precisa permanecer consistente.

Bugs comuns:

  • Interface Association Descriptor faltando em uma das velocidades.
  • Números de interface diferentes entre as velocidades.
  • Endereços de endpoint mudando sem aviso.
  • Uma interface com other-speed descriptor válido e outra sem.
  • Windows vinculando um driver diferente depois de reenumeração.

Para produtos com firmware custom, esse é um erro clássico de copiar e colar.

STALL pode ser válido ou suspeito

Algumas requisições de descritor podem legitimamente travar em dispositivos que não suportam a capacidade pedida. Mas, em dispositivos com capacidade de high-speed, falhas repetidas em torno de Device Qualifier ou Other Speed Configuration merecem atenção.

O relatório deve preservar:

  • request type.
  • descriptor type.
  • wValue.
  • wIndex.
  • wLength.
  • Dados devolvidos.
  • Status de STALL ou timeout.

O Bus Scope deve tornar essas control transfers legíveis em vez de obrigar o engenheiro a decodificar bytes brutos manualmente.

Checklist de depuração

Use este fluxo:

  1. Capture desde a conexão física.
  2. Registre a velocidade real negociada.
  3. Inspecione o Device Descriptor.
  4. Inspecione o descritor Device Qualifier.
  5. Inspecione o descritor Other Speed Configuration.
  6. Compare packet sizes dos endpoints entre as velocidades.
  7. Confira os números de interface e os endereços de endpoint.
  8. Teste porta direta, hub e dock USB-C.
  9. Compare o comportamento de enumeração entre Windows e Linux.
  10. Preserve falhas e retries de requisição de descritor.

Diagnóstico final

Bugs em Device Qualifier e Other Speed Configuration em USB são problemas de consistência de descritor. Eles explicam por que um dispositivo pode funcionar em uma velocidade e falhar em outra, ou se comportar diferente atrás de hubs e docks.

O Bus Scope ajuda a capturar a evidência exata da enumeração: requisições de descritor, bytes other-speed, tamanhos de endpoint, STALLs, resets e consequências no vínculo de driver.

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

Teste do contrato USB para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”

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 Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed” é: Como depurar descritores Device Qualifier, Other Speed Configuration, diferenças de enumeração entre high-speed e full-speed, e falhas por descritor inconsistente. 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 Device Qualifier e Other Speed Configuration em USB: problemas de descritor e

Trate “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed” como uma etapa de aceitação separada para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.

Ponto de controle 2: Como depurar descritores Device Qualifier, Other Speed Configuration, diferenças de enumer

Converta “Como depurar descritores Device Qualifier, Other Speed Configuration, diferenças de enumeração entre high-speed e full-speed, e falhas por descritor i” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.

Ponto de controle 3: O que é o descritor Device Qualifier

Trate “O que é o descritor Device Qualifier” como uma etapa de aceitação separada para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.

Ponto de controle 4: Other Speed Configuration

Converta “Other Speed Configuration” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.

Ponto de controle 5: Dispositivo high-speed enumera como full-speed

Trate “Dispositivo high-speed enumera como full-speed” como uma etapa de aceitação separada para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.

Ponto de controle 6: Mismatch de max packet size entre velocidades

Converta “Mismatch de max packet size entre velocidades” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.

Ponto de controle 7: Dispositivos compostos

Trate “Dispositivos compostos” como uma etapa de aceitação separada para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.

Ponto de controle 8: STALL pode ser válido ou suspeito

Converta “STALL pode ser válido ou suspeito” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.

Ponto de controle 9: Checklist de depuração

Trate “Checklist de depuração” como uma etapa de aceitação separada para “Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed”. Registre o estado antes da ação, a primeira mudança visível e o estado final. Se o resultado divergir do objetivo descrito, volte ao último ponto confirmado em vez de continuar com suposições.

Ponto de controle 10: Diagnóstico final

Converta “Diagnóstico final” em uma declaração reproduzível de aprovação ou falha. Inclua o que deve aparecer, o que deve estar ausente e qual recuperação é segura. Preserve o projeto ou captura original até a cópia corrigida passar pelo mesmo teste.

Matriz de aceitação

Ponto Evidência a manter Condição de aprovação
Depuração de Device Qualifier e Other Speed Configuration em USB: problemas de descritor entre high-speed e full-speed Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Como depurar descritores Device Qualifier, Other Speed Configuration, diferenças de enumeração entre high-speed e full-s Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
O que é o descritor Device Qualifier Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Other Speed Configuration Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Dispositivo high-speed enumera como full-speed Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Mismatch de max packet size entre velocidades 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 -->