Depuración del Device Qualifier y Other Speed Configuration USB

Cómo depurar descriptores Device Qualifier, Other Speed Configuration, diferencias de enumeración high-speed frente a full-speed y fallos por desajuste de descriptores.

usb device qualifier, other speed configuration, high speed usb, full speed usb, descriptor mismatch, usb enumeration, diagnóstico USB

Los dispositivos USB que soportan operación full-speed y high-speed deben describir cómo se comportan a la otra velocidad. Los usuarios buscan "USB Device Qualifier descriptor", "Other Speed Configuration descriptor", "high speed device enumerates as full speed", "USB descriptor mismatch" y "device works on USB 2.0 but fails on hub" cuando el mismo producto se comporta distinto según el puerto, el cable, el hub o el host controller.

Bus Scope ayuda porque el diagnóstico exige comparar peticiones de descriptor, velocidad real, tamaños de paquete de endpoint, descriptores de configuración y decisiones del host durante la enumeración.

Qué es el Device Qualifier

El Device Qualifier describe cómo se comportaría un dispositivo capaz de high-speed a la otra velocidad. Si el dispositivo está en high-speed, el qualifier informa al host sobre el comportamiento full-speed. Si está en full-speed, puede describir la capacidad high-speed.

Campos importantes:

  • Versión USB.
  • Device class.
  • Subclass.
  • Protocol.
  • Max packet size del endpoint cero.
  • Número de configuraciones.

Si este descriptor falta, está mal formado o es inconsistente, la enumeración puede ir bien en un host y fallar en otro.

Other Speed Configuration

El Other Speed Configuration describe los detalles de configuración a la velocidad opuesta. Los tamaños de paquete de endpoint, los intervalos de polling y las suposiciones de ancho de banda pueden variar.

Patrones de fallo habituales:

  • La configuración full-speed anuncia tamaños de endpoint que solo tienen sentido en high-speed.
  • La configuración high-speed se olvida de una interfaz.
  • El conteo de descriptores other-speed no coincide con la configuración real.
  • El firmware devuelve STALL cuando el host espera un descriptor.
  • El host acepta el dispositivo pero enlaza el driver equivocado.
  • El dispositivo va por un hub y falla por otro.

Estos problemas son difíciles de ver en logs de aplicación.

Dispositivo high-speed que enumera como full-speed

Un caso habitual de soporte es "USB high-speed device detected as full-speed". Puede deberse a la calidad del cable, topología del hub, integridad de señal, comportamiento de chirp del firmware, diseño eléctrico o problemas de descriptor.

La evidencia de paquetes ayuda a separar capas:

  • ¿Pasó la negociación high-speed?
  • ¿Pidió el host el Device Qualifier?
  • ¿Devolvió el dispositivo bytes de descriptor válidos?
  • ¿Coincidieron los endpoint descriptors con la velocidad elegida?
  • ¿Reseteó y reintentó el host?
  • ¿Reenumeró más tarde el dispositivo a otra velocidad?

Si la traza muestra que el dispositivo nunca llegó a high-speed, los fixes de descriptor pueden no bastar. Si muestra enumeración high-speed pero otros descriptores other-speed inválidos, el firmware es el sospechoso más fuerte.

Desajuste de max packet size entre velocidades

Los endpoint descriptors pueden variar entre full-speed y high-speed. Un endpoint bulk puede ser de 64 bytes en full-speed y 512 bytes en high-speed.

Síntomas:

  • Las transferencias fallan solo en puertos high-speed.
  • Las transferencias fallan solo a través de un hub full-speed antiguo.
  • El tamaño de buffer del firmware encaja con una velocidad y el descriptor anuncia otra.
  • El driver del host manda transferencias más grandes de lo que el firmware esperaba.
  • El dispositivo devuelve short packets en límites inesperados.

Esto conecta directo con la depuración de wMaxPacketSize.

Dispositivos compuestos

Los dispositivos compuestos hacen los descriptores other-speed aún más frágiles. Un dispositivo puede exponer HID, CDC, vendor-specific, mass storage e interfaces de actualización de firmware. El árbol other-speed tiene que mantenerse consistente.

Bugs típicos:

  • Falta el Interface Association Descriptor a una velocidad.
  • Números de interfaz distintos entre velocidades.
  • Direcciones de endpoint que cambian sin razón.
  • Una interfaz tiene un descriptor other-speed válido y otra no.
  • Windows enlaza un driver distinto tras la re-enumeración.

En productos con firmware a medida, esto es un fallo típico de copy-paste.

STALL puede ser válido o sospechoso

Algunas peticiones de descriptor pueden hacer STALL legítimamente para dispositivos que no soportan la capacidad pedida. Pero para dispositivos capaces de high-speed, los fallos repetidos alrededor del Device Qualifier u Other Speed Configuration merecen atención.

El informe debería conservar:

  • Request type.
  • Descriptor type.
  • wValue.
  • wIndex.
  • wLength.
  • Datos devueltos.
  • Estado STALL o timeout.

Bus Scope debería hacer estas transferencias de control legibles en vez de obligar a los ingenieros a decodificar bytes a mano.

Checklist de depuración

Usa este flujo:

  1. Captura desde el plug-in físico.
  2. Apunta la velocidad negociada real.
  3. Inspecciona el Device Descriptor.
  4. Inspecciona el Device Qualifier.
  5. Inspecciona el Other Speed Configuration.
  6. Compara tamaños de paquete de endpoint entre velocidades.
  7. Revisa números de interfaz y direcciones de endpoint.
  8. Prueba directo al puerto, vía hub y vía dock USB-C.
  9. Compara el comportamiento de enumeración en Windows y Linux.
  10. Conserva los fallos y reintentos de peticiones de descriptor.

Diagnóstico final

Los bugs de Device Qualifier y Other Speed Configuration son problemas de consistencia de descriptores. Explican por qué un dispositivo puede ir a una velocidad y fallar a otra, o comportarse distinto según el hub o el dock.

Bus Scope ayuda a capturar la evidencia exacta de enumeración: peticiones de descriptor, bytes other-speed, tamaños de endpoint, STALLs, resets y consecuencias de binding de driver.

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

Prueba del contrato USB para «Depuración del Device Qualifier y Other Speed Configuration USB»

La respuesta directa es que STALL, timeout o reset no explica por sí solo la causa. Primero demuestra que el proveedor observa el dispositivo correcto; después lee el contrato de transferencia: tipo, dirección, recipient, wValue, wIndex, longitud declarada y real, status y estado anterior y posterior. En «Depuración del Device Qualifier y Other Speed Configuration USB», relaciona la conclusión con la primera transacción que difiere de un caso bueno.

Límite Qué comparar Decisión útil
Plataforma proveedor, permiso, Root Hub o usbmon/XHC20 ¿Llegan records de la conexión correcta?
Setup bmRequestType, bRequest, wValue, wIndex, wLength ¿El host envía la petición prevista?
Data dirección, longitud y bytes retenidos ¿El payload cumple el contrato?
Status ACK, STALL, timeout o cancellation ¿Dónde termina la transacción?
Estado configuration, interface, alternate setting, endpoint halt ¿El dispositivo estaba preparado?

Empieza antes de reset y enumeración y conserva descriptors, SET_CONFIGURATION, SET_INTERFACE y el comando previo al fallo. Un filtro estrecho de endpoint puede ocultar el control transfer decisivo. Ejecuta una sola acción USB documentada por prueba y cambia solo firmware, driver, puerto, cable, comando o timing.

¿Cómo se escribe una respuesta citable?

Indica la petición observada, sus campos setup, la respuesta y el contexto anterior; propone después una prueba con un solo cambio. Bytes no retenidos por el límite de captura no prueban packet loss. La proximidad entre command y reset demuestra correlación, no causa sin repetición o transición de estado.

¿Cuándo vale una comparación?

Mantén VID/PID, firmware, speed, topología, proveedor, filtro y trigger. Compara fases USB semánticas y no frame numbers entre usbmon y USBPcap. Anota inicio, final, versión, OS, conexión y checksum. Revisa la solución de problemas de Bus Scope.

Los propietarios Semrush siguen separados: free USB analyzer en la página de producto, best USB protocol analyzer en la comparación y USB descriptor viewer en la guía de descriptors. Esta página de soporte no recibe volumen o KD inventado.

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

Respuesta directa y límite de aceptación

La respuesta breve a «Depuración del Device Qualifier y Other Speed Configuration USB» es: Cómo depurar descriptores Device Qualifier, Other Speed Configuration, diferencias de enumeración high-speed frente a full-speed y fallos por desajuste de descriptores. Trate esa frase como un resultado que debe comprobarse, no como una promesa para cualquier entrada, dispositivo, proyecto o entorno. Un resultado completo registra estado inicial, acción exacta, salida visible y condición que demuestra que la tarea terminó en Bus Scope.

Procedimiento basado en evidencia

Empiece con un caso pequeño y repetible antes de cambiar un proyecto completo. Anote versión de la aplicación, sistema operativo, identidad de entrada o dispositivo, ajustes relevantes y resultado esperado. Ejecute una acción deliberada, conserve la primera transición inesperada y compárela con un caso conocido cuando exista. Cambiar varios controles a la vez oculta qué condición creó o corrigió el problema.

Punto de control 1: Depuración del Device Qualifier y Other Speed Configuration USB

Trate «Depuración del Device Qualifier y Other Speed Configuration USB» como una puerta de aceptación independiente para «Depuración del Device Qualifier y Other Speed Configuration USB». Registre el estado inicial, el primer cambio visible y el estado final. Si el resultado no coincide con el objetivo descrito, vuelva al último punto confirmado en lugar de continuar sobre suposiciones.

Punto de control 2: Cómo depurar descriptores Device Qualifier, Other Speed Configuration, diferencias de enum

Convierta «Cómo depurar descriptores Device Qualifier, Other Speed Configuration, diferencias de enumeración high-speed frente a full-speed y fallos por desajust» en una afirmación de aprobado o fallo que otra persona pueda repetir. Incluya qué debe aparecer, qué debe estar ausente y qué recuperación es segura. Mantenga intacto el proyecto o captura original hasta que la copia corregida pase la misma prueba.

Punto de control 3: Qué es el Device Qualifier

Trate «Qué es el Device Qualifier» como una puerta de aceptación independiente para «Depuración del Device Qualifier y Other Speed Configuration USB». Registre el estado inicial, el primer cambio visible y el estado final. Si el resultado no coincide con el objetivo descrito, vuelva al último punto confirmado en lugar de continuar sobre suposiciones.

Punto de control 4: Other Speed Configuration

Convierta «Other Speed Configuration» en una afirmación de aprobado o fallo que otra persona pueda repetir. Incluya qué debe aparecer, qué debe estar ausente y qué recuperación es segura. Mantenga intacto el proyecto o captura original hasta que la copia corregida pase la misma prueba.

Punto de control 5: Dispositivo high-speed que enumera como full-speed

Trate «Dispositivo high-speed que enumera como full-speed» como una puerta de aceptación independiente para «Depuración del Device Qualifier y Other Speed Configuration USB». Registre el estado inicial, el primer cambio visible y el estado final. Si el resultado no coincide con el objetivo descrito, vuelva al último punto confirmado en lugar de continuar sobre suposiciones.

Punto de control 6: Desajuste de max packet size entre velocidades

Convierta «Desajuste de max packet size entre velocidades» en una afirmación de aprobado o fallo que otra persona pueda repetir. Incluya qué debe aparecer, qué debe estar ausente y qué recuperación es segura. Mantenga intacto el proyecto o captura original hasta que la copia corregida pase la misma prueba.

Punto de control 7: Dispositivos compuestos

Trate «Dispositivos compuestos» como una puerta de aceptación independiente para «Depuración del Device Qualifier y Other Speed Configuration USB». Registre el estado inicial, el primer cambio visible y el estado final. Si el resultado no coincide con el objetivo descrito, vuelva al último punto confirmado en lugar de continuar sobre suposiciones.

Punto de control 8: STALL puede ser válido o sospechoso

Convierta «STALL puede ser válido o sospechoso» en una afirmación de aprobado o fallo que otra persona pueda repetir. Incluya qué debe aparecer, qué debe estar ausente y qué recuperación es segura. Mantenga intacto el proyecto o captura original hasta que la copia corregida pase la misma prueba.

Punto de control 9: Checklist de depuración

Trate «Checklist de depuración» como una puerta de aceptación independiente para «Depuración del Device Qualifier y Other Speed Configuration USB». Registre el estado inicial, el primer cambio visible y el estado final. Si el resultado no coincide con el objetivo descrito, vuelva al último punto confirmado en lugar de continuar sobre suposiciones.

Punto de control 10: Diagnóstico final

Convierta «Diagnóstico final» en una afirmación de aprobado o fallo que otra persona pueda repetir. Incluya qué debe aparecer, qué debe estar ausente y qué recuperación es segura. Mantenga intacto el proyecto o captura original hasta que la copia corregida pase la misma prueba.

Matriz de aceptación

Punto Evidencia que conservar Condición de aprobado
Depuración del Device Qualifier y Other Speed Configuration USB Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Cómo depurar descriptores Device Qualifier, Other Speed Configuration, diferencias de enumeración high-speed frente a fu Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Qué es el Device Qualifier Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Other Speed Configuration Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Dispositivo high-speed que enumera como full-speed Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Desajuste de max packet size entre velocidades Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado

Aislamiento, recuperación y entrega

Deténgase en el primer límite que falla. Conserve fuente, proyecto, sesión o captura, duplíquelo antes de una edición destructiva y cambie una variable por experimento. Repetir un flujo amplio después de varios cambios puede dar otro resultado sin explicar la causa.

Separe ausencia de evidencia de evidencia de ausencia. Una vista vacía puede indicar entrada, alcance, filtro, permiso, dispositivo, intervalo o estado equivocado. Verifique adquisición o importación antes de interpretar el decoder, editor, informe o exportación.

Antes de entregar, reabra el artefacto y revise inicio, punto de decisión y final. Registre versión, plataforma, configuración, expectativa, observación y reproducción mínima. Elimine o redacte datos sensibles y confirme que el destinatario está autorizado.

Preguntas y respuestas

¿Cuál es la forma fiable más rápida de empezar?

Use el caso representativo más pequeño, escriba el resultado esperado y cambie una variable. Confirme el recorrido básico antes de añadir filtros, efectos, ediciones, automatización o una fuente mayor.

¿Qué evidencia debe guardarse?

Conserve identidad de entrada, versión, plataforma, ajustes, acción exacta, primera transición inesperada y salida final. Cierre y reabra cualquier proyecto, sesión, informe o exportación antes de considerarlo duradero.

¿Cuándo debe repetirse el procedimiento?

Repítalo después de cambios relevantes en aplicación, sistema, driver, firmware, modelo, fuente o flujo. Preserve el caso aceptado anterior como referencia sin modificar.

¿Cuándo está listo para entregar?

Cuando otra persona autorizada identifica la entrada, repite la acción, obtiene el mismo resultado, entiende los límites restantes y abre el artefacto sin depender de estado local no documentado.

Guías relacionadas

Estas páginas en el mismo idioma cubren etapas contiguas sin cambiar el propietario canónico del tema:

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