El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración

Cómo diagnosticar un dispositivo USB que se desconecta repetidamente, se resetea, reenumera o falla tras un suspend usando evidencia USB a nivel de paquete.

usb desconectándose, usb reset loop, usb enumeration, usb power management, diagnóstico USB

Un dispositivo USB que se desconecta una y otra vez es uno de los problemas más frustrantes a nivel de hardware, porque el síntoma es ruidoso e inconsistente. El dispositivo aparece, desaparece, se reconecta, cambia de COM, falla al enumerar o funciona unos segundos y luego se resetea. Los usuarios buscan "USB device keeps disconnecting", "USB reset loop", "USB device not recognized after reconnect" y "why does my USB device re-enumerate" porque el mensaje del sistema operativo rara vez explica qué pasó de verdad.

La evidencia útil está por debajo de la capa de aplicación. Necesitas saber si el host reseteó el puerto, si el dispositivo dejó de responder, si la lectura de descriptor falló, si el power management suspendió el dispositivo, si el driver lanzó una class request o si el endpoint hizo STALL.

Bus Scope está pensado para ese estilo de troubleshooting USB. En vez de tratar el USB como una caja negra, ayuda a inspeccionar las transferencias de control, las lecturas de descriptor, los resets, el comportamiento de endpoint y el timing alrededor de la desconexión.

Qué puede significar "desconectarse"

La frase "USB disconnecting" puede describir varios fallos distintos:

  • Desconexión física o movimiento del cable.
  • Ruido eléctrico o mala estabilidad de alimentación.
  • Reset de puerto del host controller.
  • Crash y reboot del firmware del dispositivo.
  • Enumeración fallida tras un reset.
  • Descarga y recarga del driver.
  • Selective suspend o runtime power management.
  • STALL de endpoint seguido de fallo de recuperación.
  • Fallo de interfaz en dispositivo compuesto.
  • Sobrecarga de transferencia de alto ancho de banda.

Esos fallos se parecen en una notificación del escritorio, pero se ven distintos en la evidencia USB.

Bucle de reset en enumeración

Un bucle de reset suele empezar con el host detectando un dispositivo, reseteando el puerto, leyendo descriptores, asignando una dirección y fallando antes de que la configuración termine. El ciclo se repite.

Una secuencia simplificada:

Port reset
GET_DESCRIPTOR device
SET_ADDRESS
GET_DESCRIPTOR configuration
SET_CONFIGURATION
Disconnect
Port reset
GET_DESCRIPTOR device
...

Si el dispositivo falla antes de SET_CONFIGURATION, el problema puede estar en el contenido del descriptor, el timing del firmware, el power o la compatibilidad con el host. Si falla después de SET_CONFIGURATION, el problema puede estar en la inicialización de clase, el setup de endpoint o una petición de driver.

Los problemas de power pueden parecer problemas de protocolo

Los dispositivos USB pueden resetearse cuando cae la tensión, hay picos de consumo de corriente o un hub no puede entregar suficiente potencia. Es habitual con:

  • Cámaras USB.
  • Tarjetas de captura USB.
  • Discos externos.
  • Placas de desarrollo.
  • Módems celulares.
  • Dispositivos conectados a través de hubs pasivos.
  • Cables largos o de baja calidad.

A nivel de paquete, un reset por power puede parecer silencio súbito seguido de re-enumeración. El dispositivo deja de responder, el host resetea el puerto y la enumeración empieza de nuevo.

Bus Scope no mide tensión directamente, pero puede enseñar el timing y la secuencia alrededor del reset. Si la última operación correcta fue el inicio de un stream con mucho ancho de banda o un comando de modo motor/power, la evidencia apunta a power o a estrés del firmware.

Selective suspend y runtime power management

El sistema operativo puede suspender dispositivos USB inactivos para ahorrar energía. Es normal cuando el dispositivo y el driver lo soportan correctamente. Se vuelve problema cuando el firmware del dispositivo no se reanuda limpio o cuando el driver suspende un dispositivo que la aplicación espera que siga activo.

Síntomas:

  • El dispositivo funciona tras enchufarlo pero falla tras un tiempo inactivo.
  • La primera petición tras inactividad devuelve un error.
  • El dispositivo desaparece tras sleep o bloqueo de pantalla.
  • El dispositivo serie cambia de estado tras el resume.
  • El dispositivo HID pierde inputs tras el wake.

La traza USB puede enseñar si el tráfico se paró antes del fallo y si hubo una secuencia de resume o reset. Eso es más útil que adivinar a partir del mensaje de error de la aplicación.

STALL de endpoint antes de la desconexión

Algunos informes de desconexión son realmente fallos a nivel de endpoint. El dispositivo puede hacer STALL en un endpoint bulk, en un endpoint interrupt o en una petición de control. El driver intenta limpiar el stall. Si la recuperación falla, el driver resetea el dispositivo o la aplicación cierra el handle.

Busca:

  • STALL en una transferencia de control.
  • Bulk transfers fallidos repetidos.
  • CLEAR_FEATURE(ENDPOINT_HALT).
  • Un reset después de la misma petición cada vez.
  • Un timeout antes de la desconexión.

Si el mismo comando dispara el reset siempre, puede que el firmware del dispositivo esté cayendo mientras procesa ese comando.

Bucles de reset en dispositivos compuestos

Los dispositivos compuestos exponen varias interfaces bajo un mismo dispositivo. Por ejemplo, un dispositivo puede ofrecer:

  • Interfaz CDC serie.
  • Interfaz HID de control.
  • Interfaz mass storage.
  • Interfaz vendor-specific de diagnóstico.

El dispositivo puede enumerar parcialmente y aun así fallar cuando se conecta un driver de una interfaz. Los usuarios pueden ver "USB device recognized" seguido de una desconexión inmediata porque una interfaz dispara un crash de firmware o un conflicto de driver.

En una traza, inspecciona los interface descriptors, los alternate settings, los endpoint descriptors y las class-specific requests. El reset puede pasar solo después de que el host empiece a configurar una interfaz concreta.

Dispositivos de alto ancho de banda

Dispositivos de vídeo, audio, captura y adquisición de datos USB pueden desconectarse bajo carga. El dispositivo puede enumerar correctamente y pasar peticiones de control simples, y luego fallar cuando empieza el streaming.

Causas habituales:

  • Fallo de reserva de ancho de banda isócrono.
  • Timeout en endpoint bulk.
  • Presión de ancho de banda del host controller.
  • Cuello de botella en el hub.
  • Desajuste de modo USB 2.0 frente a USB 3.x.
  • Desbordamiento de buffer en el firmware.
  • Driver que elige un alternate setting no soportado.

Si la desconexión pasa tras una petición de start de stream o un cambio de alternate setting, inspecciona la transferencia exacta que viene justo antes del reset. Esa suele ser la pista más importante.

Qué capturar

Para una desconexión repetible, captura desde antes del plug-in o antes de la acción que falla. Quieres la historia completa:

  1. Attach del dispositivo.
  2. Port reset.
  3. Lecturas de descriptor.
  4. Asignación de dirección.
  5. Selección de configuración.
  6. Peticiones de driver de interfaz.
  7. Primera transferencia normal de aplicación.
  8. Última transferencia correcta antes del fallo.
  9. Timeout, stall, reset o desconexión.
  10. Re-enumeración tras el fallo.

Empezar la captura cuando el dispositivo ya falló se pierde la evidencia más importante.

Checklist de depuración

Usa este orden:

  1. Reproduce con un cable corto y conocido como bueno.
  2. Evita hubs pasivos en la primera prueba.
  3. Captura la enumeración desde el plug-in.
  4. Comprueba si el fallo pasa antes o después de SET_CONFIGURATION.
  5. Identifica la última petición correcta.
  6. Busca stalls, timeouts y resets repetidos.
  7. Compara el fallo en reposo frente al fallo bajo carga.
  8. Prueba otro puerto USB u otro controller.
  9. Desactiva selective suspend solo tras recoger evidencia.
  10. Compara el mismo dispositivo en otro SO si es posible.

Diagnóstico final

"USB device keeps disconnecting" es un síntoma, no una causa raíz. La corrección depende de si la evidencia muestra inestabilidad de power, reset de firmware, fallo de descriptor, fallo de class request del driver, stall de endpoint, problemas de suspend/resume o sobrecarga de alto ancho de banda.

Bus Scope ayuda mostrando las transacciones USB alrededor del fallo para que dejes de adivinar con notificaciones del escritorio y empieces a depurar desde el comportamiento real del bus.

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

Prueba del contrato USB para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración»

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 «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración», 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 «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración» es: Cómo diagnosticar un dispositivo USB que se desconecta repetidamente, se resetea, reenumera o falla tras un suspend usando evidencia USB a nivel de paquete. 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: El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y f

Trate «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración» como una puerta de aceptación independiente para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración». 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 diagnosticar un dispositivo USB que se desconecta repetidamente, se resetea, reenumer

Convierta «Cómo diagnosticar un dispositivo USB que se desconecta repetidamente, se resetea, reenumera o falla tras un suspend usando evidencia USB a nivel de pa» 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é puede significar "desconectarse"

Trate «Qué puede significar "desconectarse"» como una puerta de aceptación independiente para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración». 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: Bucle de reset en enumeración

Convierta «Bucle de reset en enumeración» 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: Los problemas de power pueden parecer problemas de protocolo

Trate «Los problemas de power pueden parecer problemas de protocolo» como una puerta de aceptación independiente para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración». 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: Selective suspend y runtime power management

Convierta «Selective suspend y runtime power management» 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: STALL de endpoint antes de la desconexión

Trate «STALL de endpoint antes de la desconexión» como una puerta de aceptación independiente para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración». 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: Bucles de reset en dispositivos compuestos

Convierta «Bucles de reset en dispositivos compuestos» 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: Dispositivos de alto ancho de banda

Trate «Dispositivos de alto ancho de banda» como una puerta de aceptación independiente para «El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración». 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: Qué capturar

Convierta «Qué capturar» 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
El dispositivo USB se sigue desconectando: depurando bucles de reset, eventos de power y fallos de enumeración Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Cómo diagnosticar un dispositivo USB que se desconecta repetidamente, se resetea, reenumera o falla tras un suspend usan Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Qué puede significar "desconectarse" Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Bucle de reset en enumeración Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Los problemas de power pueden parecer problemas de protocolo Estado inicial, una acción y estado resultante Otra persona reproduce el resultado declarado
Selective suspend y runtime power management 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 -->