IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza
Arregla errores de binding de driver en dispositivos compuestos USB y en el Interface Association Descriptor (IAD). Cubre usbccgp.sys de Windows, Code 10, Code 43, descriptores de interfaz y fallos parciales de enumeración.
Los dispositivos compuestos USB exponen varias funciones a través de un único dispositivo USB físico. Un solo dispositivo puede ofrecer controles HID, CDC serie, mass storage, diagnósticos vendor, audio, vídeo e interfaces de actualización de firmware. Cuando el binding de driver se rompe, los usuarios ven "USB Composite Device driver error", "This device cannot start Code 10", "Code 43", "interface not working", "COM port missing" o "one function works but another does not".
Búsquedas como "USB composite device wrong driver", "Windows usbccgp Code 10", "USB interface driver not binding" e "IAD descriptor debugging" suelen necesitar evidencia a nivel de bus. El estado de driver en Windows por sí solo no muestra si los descriptores describen correctamente las funciones.
Bus Scope ayuda porque el binding en compuestos está dirigido por los descriptores.
Cómo se estructuran los dispositivos compuestos
Un dispositivo compuesto contiene un device descriptor y una o más configurations. Dentro de una configuración, expone varias interfaces. Cada interfaz tiene valores de class/subclass/protocol y endpoints.
Ejemplos de funciones:
- Interface 0: HID.
- Interface 1: control CDC.
- Interface 2: datos CDC.
- Interface 3: diagnósticos vendor-specific.
Windows usa el driver genérico USB parent, a menudo usbccgp.sys, para enumerar las funciones hijas y enlazar los drivers apropiados.
Interface Association Descriptor
El IAD agrupa varias interfaces en una sola función. CDC ACM suele usar una interfaz de control y una de datos. Sin un IAD correcto, el SO puede enlazarlas mal o tratarlas como interfaces no relacionadas.
Síntomas de un IAD mal:
- Falta el puerto COM CDC serie.
- La función de audio aparece parcialmente.
- La cámara UVC enumera pero la interfaz de vídeo falla.
- La interfaz vendor se lleva el driver equivocado.
- Solo una subfunción funciona.
Revisa con cuidado los números de interfaz y los rangos del IAD.
Class codes y elección de driver
El binding depende de los códigos class/subclass/protocol a nivel de dispositivo o de interfaz. Un class a nivel de dispositivo de 0x00 significa que la clase se define por interfaz. Un class a nivel de dispositivo de 0xEF se suele usar para dispositivos compuestos varios con IAD.
Si el firmware declara el class code incorrecto, Windows puede elegir el driver que no es.
Para dispositivos a medida, sé deliberado:
- Las interfaces HID deben describir HID correctamente.
- Las interfaces CDC deben coincidir con las expectativas CDC.
- Las interfaces vendor-specific deben usar vendor class.
- Las interfaces WinUSB pueden necesitar Microsoft OS descriptors.
Code 10 y Code 43
Code 10 y Code 43 son síntomas del SO, no causas raíz. La traza USB puede revelar si:
- El device descriptor se leyó.
- El configuration descriptor es válido.
- Los interface descriptors son consistentes.
- Los endpoint descriptors encajan con la interfaz esperada.
- Los class-specific descriptors están mal formados.
- El driver lanzó una class request que hizo STALL.
- El dispositivo se reseteó durante el binding.
Si la enumeración va bien pero falla una class request, el problema es posterior a la lectura básica de descriptores.
Fallo parcial del dispositivo
Los dispositivos compuestos pueden fallar parcialmente. Por ejemplo, los botones HID funcionan pero el CDC serie no. Eso significa que el dispositivo no está simplemente "muerto". Significa que falló el camino de una interfaz.
Conserva:
- Todos los interface descriptors.
- Class-specific descriptors.
- Números de interfaz.
- Class requests del driver.
- Tráfico de endpoints de la interfaz que falla.
Checklist de depuración
Usa este flujo:
- Captura desde el momento del plug-in.
- Inspecciona class/subclass/protocol a nivel de dispositivo.
- Inspecciona la longitud total de la configuración y el número de interfaces.
- Inspecciona cada interface descriptor.
- Inspecciona los IAD y los rangos de interfaces.
- Inspecciona los class-specific descriptors.
- Identifica qué interfaz no llega a enlazar.
- Busca class requests stalled.
- Compara Windows, Linux y otro Windows si hace falta.
- Conserva los descriptores antes de tocar la captura.
Diagnóstico final
Los fallos de binding de driver en compuestos USB suelen venir de contratos de descriptor: class codes, números de interfaz, agrupamiento IAD, class-specific descriptors, Microsoft OS descriptors o class requests durante el arranque del driver.
Bus Scope ayuda a exponer esos contratos para que un "USB Composite Device driver error" se pueda rastrear hasta la interfaz exacta y la evidencia de descriptor.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Prueba del contrato USB para «IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza»
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 «IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza», 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 «IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza» es: Arregla errores de binding de driver en dispositivos compuestos USB y en el Interface Association Descriptor (IAD). Cubre usbccgp.sys de Windows, Code 10, Code 43, descriptores de interfaz y fallos parciales de enumeración. 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: IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza
Para «IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza», separe una decisión del producto de un límite del sistema, hardware, archivo fuente, permiso o proceso. Confirme qué capa produjo la evidencia antes de atribuir una causa. Así evita convertir un síntoma cercano en una causa raíz supuestamente probada.
Punto de control 2: Arregla errores de binding de driver en dispositivos compuestos USB y en el Interface Asso
Cierre «Arregla errores de binding de driver en dispositivos compuestos USB y en el Interface Association Descriptor (IAD). Cubre usbccgp.sys de Windows, Code» solo cuando el resultado guardado, exportado o reabierto conserve el estado observado. La respuesta temporal de la interfaz orienta, pero la evidencia duradera es más fuerte. Documente cualquier límite pendiente para quien continúe.
Punto de control 3: Cómo se estructuran los dispositivos compuestos
Para «Cómo se estructuran los dispositivos compuestos», separe una decisión del producto de un límite del sistema, hardware, archivo fuente, permiso o proceso. Confirme qué capa produjo la evidencia antes de atribuir una causa. Así evita convertir un síntoma cercano en una causa raíz supuestamente probada.
Punto de control 4: Interface Association Descriptor
Cierre «Interface Association Descriptor» solo cuando el resultado guardado, exportado o reabierto conserve el estado observado. La respuesta temporal de la interfaz orienta, pero la evidencia duradera es más fuerte. Documente cualquier límite pendiente para quien continúe.
Punto de control 5: Class codes y elección de driver
Para «Class codes y elección de driver», separe una decisión del producto de un límite del sistema, hardware, archivo fuente, permiso o proceso. Confirme qué capa produjo la evidencia antes de atribuir una causa. Así evita convertir un síntoma cercano en una causa raíz supuestamente probada.
Punto de control 6: Code 10 y Code 43
Cierre «Code 10 y Code 43» solo cuando el resultado guardado, exportado o reabierto conserve el estado observado. La respuesta temporal de la interfaz orienta, pero la evidencia duradera es más fuerte. Documente cualquier límite pendiente para quien continúe.
Punto de control 7: Fallo parcial del dispositivo
Para «Fallo parcial del dispositivo», separe una decisión del producto de un límite del sistema, hardware, archivo fuente, permiso o proceso. Confirme qué capa produjo la evidencia antes de atribuir una causa. Así evita convertir un síntoma cercano en una causa raíz supuestamente probada.
Punto de control 8: Checklist de depuración
Cierre «Checklist de depuración» solo cuando el resultado guardado, exportado o reabierto conserve el estado observado. La respuesta temporal de la interfaz orienta, pero la evidencia duradera es más fuerte. Documente cualquier límite pendiente para quien continúe.
Punto de control 9: Diagnóstico final
Para «Diagnóstico final», separe una decisión del producto de un límite del sistema, hardware, archivo fuente, permiso o proceso. Confirme qué capa produjo la evidencia antes de atribuir una causa. Así evita convertir un síntoma cercano en una causa raíz supuestamente probada.
Punto de control 10: Prueba del contrato USB para «IAD y depuración de dispositivos compuestos USB: cuando el d
Cierre «Prueba del contrato USB para «IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza»» solo cuando el resultado guardado, exportado o reabierto conserve el estado observado. La respuesta temporal de la interfaz orienta, pero la evidencia duradera es más fuerte. Documente cualquier límite pendiente para quien continúe.
Matriz de aceptación
| Punto | Evidencia que conservar | Condición de aprobado |
|---|---|---|
| IAD y depuración de dispositivos compuestos USB: cuando el driver equivocado se enlaza | Estado inicial, una acción y estado resultante | Otra persona reproduce el resultado declarado |
| Arregla errores de binding de driver en dispositivos compuestos USB y en el Interface Association Descriptor (IAD). Cubr | Estado inicial, una acción y estado resultante | Otra persona reproduce el resultado declarado |
| Cómo se estructuran los dispositivos compuestos | Estado inicial, una acción y estado resultante | Otra persona reproduce el resultado declarado |
| Interface Association Descriptor | Estado inicial, una acción y estado resultante | Otra persona reproduce el resultado declarado |
| Class codes y elección de driver | Estado inicial, una acción y estado resultante | Otra persona reproduce el resultado declarado |
| Code 10 y Code 43 | 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 -->