Depuração de USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e transferências faltando

Como o USB selective suspend pode causar desconexões aleatórias, transferências faltando, falhas de resume e bugs em idle, e como diagnosticar com evidência USB.

USB selective suspend, desconexão aleatória USB, sleep resume, gerenciamento de energia USB, captura USB, depuração USB

O USB selective suspend existe para economizar energia. Quando funciona, dispositivos em idle entram em estado de baixo consumo e voltam quando preciso. Quando falha, o usuário vê desconexões aleatórias, dados faltando, câmeras travadas, portas seriais que param de responder, dispositivos HID que perdem entrada, ou dispositivos que somem depois do sleep. Buscas como "USB selective suspend random disconnect", "USB device stops working after idle", "USB resume failure" e "disable USB selective suspend" geralmente vêm de gente que já trocou cabo e driver.

Desligar o selective suspend pode ser um workaround, mas não é diagnóstico. A pergunta real é se o dispositivo, driver, hub, host controller ou aplicação está falhando durante o suspend/resume ou na recuperação de idle.

O Bus Scope ajuda porque a falha tem uma linha do tempo. Você precisa saber qual tráfego aconteceu antes do idle, se o host suspendeu o caminho, qual requisição acordou o dispositivo, e qual transferência falhou depois do resume.

O que o selective suspend faz

O selective suspend permite que o sistema operacional suspenda um dispositivo ou interface USB individual enquanto o resto do sistema continua ativo. Isso é diferente de sleep completo do sistema. Um dispositivo USB pode ser suspenso porque parece ocioso mesmo com o computador ligado.

Isso importa para:

  • adaptadores seriais USB
  • dispositivos HID
  • câmeras USB
  • interfaces de áudio
  • probes de debug
  • tokens de segurança
  • dispositivos vendor customizados
  • sensores alimentados pelo barramento

Se o firmware do dispositivo não tratar suspend/resume corretamente, a primeira transferência depois do idle pode falhar.

Sintomas típicos

Problemas de selective suspend costumam aparecer como:

  • Dispositivo funciona logo após conectar, mas falha depois de alguns minutos.
  • Primeiro comando depois do idle dá timeout.
  • Leitura serial trava para sempre depois de inatividade.
  • Preview da câmera trava depois da tela bloquear.
  • Relatórios HID param até tirar e recolocar o cabo.
  • Dispositivo reconecta com um novo endereço.
  • Aplicação diz que o dispositivo desconectou, mas ele continua fisicamente conectado.
  • Logs do Windows ou do Linux mostram mensagens de reset ou resume.

O padrão-chave é tempo. Se a falha segue períodos de idle, sleep/resume, tela desligada ou mudança de estado de energia do notebook, o gerenciamento de energia entra na investigação.

Falha de suspend versus falha de resume

São dois problemas diferentes:

  • Falha de suspend: o dispositivo ou driver não consegue entrar em baixo consumo corretamente.
  • Falha de resume: o dispositivo entra em baixo consumo, mas não volta corretamente.

Da perspectiva do usuário, os dois podem parecer "dispositivo desconectou". O trace USB consegue separar mostrando se o tráfego parou de forma limpa e se a próxima requisição depois do idle falhou.

Se o dispositivo desaparece só depois que a aplicação envia um comando após o idle, suspeite de resume ou restauração de estado no firmware. Se o dispositivo reseta enquanto está em idle sem nenhuma requisição da aplicação, suspeite de gerenciamento de energia do host, comportamento do hub ou watchdog do firmware do dispositivo.

Primeira transferência depois do idle

A primeira transferência depois do idle costuma ser a evidência mais importante. Ela pode ser:

  • Uma requisição de controle.
  • Uma leitura ou escrita bulk.
  • Um poll interrupt IN.
  • Uma requisição específica de classe.
  • Um comando vendor.
  • Uma requisição de restart de stream.

Se essa primeira transferência dá timeout, trava ou dispara reset, provavelmente o dispositivo não voltou ao estado esperado. A correção pode estar no tratamento de resume do firmware, na política de energia do driver, no retry da aplicação ou no selective suspend desabilitado para aquele dispositivo.

Runtime power management no Linux

O Linux também tem runtime power management USB. Dispositivos podem entrar em autosuspend depois de um delay de idle. Um dispositivo pode se comportar diferente dependendo do driver, da versão do kernel, das configurações de autosuspend e de se uma aplicação mantém o dispositivo aberto.

Para investigar no Linux, capture o tráfego e correlacione com os logs do sistema. Se o dispositivo resume e reseta imediatamente, o trace do barramento é mais útil do que um "I/O error" genérico vindo da aplicação.

Selective suspend no Windows

No Windows, o comportamento do selective suspend depende do plano de energia, do suporte do driver, das configurações do hub USB e da classe do dispositivo. Usuários frequentemente desativam a "USB selective suspend setting" nas opções de energia. Isso pode ser um workaround prático, mas um diagnóstico profissional ainda deve explicar se o dispositivo falhou durante a recuperação de idle.

Problemas de USB no Windows também podem ser afetados por Modern Standby, comportamento de dock de notebook, hubs e drivers de host controller. Um dispositivo pode funcionar em um desktop e falhar no dock de um notebook porque o comportamento de suspend e resume é diferente.

Estratégia de captura

Para capturar um bug de selective suspend:

  1. Comece a captura enquanto o dispositivo está funcionando.
  2. Execute uma operação que normalmente dá certo.
  3. Deixe o dispositivo em idle o tempo suficiente para disparar o problema.
  4. Execute a operação que costuma falhar.
  5. Continue a captura através do timeout, reset ou reconexão.
  6. Salve a janela inteira de tempo.

Não comece a captura só depois que o dispositivo já falhou. Você precisa da transição de ativo para idle até a falha.

O que procurar no trace

No trace, inspecione:

  • Última transferência antes do idle.
  • Intervalo de tempo até a falha.
  • Primeira transferência depois do idle.
  • Timeout, stall, reset ou desconexão.
  • Reenumeração depois da falha.
  • Mudança no endereço do dispositivo.
  • Requisição específica de classe depois do resume.
  • Recuperação de halt em endpoint.
  • Mudanças de alternate setting para dispositivos de streaming.

Timing não é ruído aqui. Timing é a evidência.

Checklist de depuração

Use esta ordem:

  1. Confirme se as falhas se correlacionam com idle.
  2. Teste em energia AC e em bateria.
  3. Teste porta direta versus hub ou dock.
  4. Capture antes do idle e através da falha.
  5. Identifique a primeira transferência que falhou depois do idle.
  6. Confira se o dispositivo reseta ou só uma transferência falha.
  7. Compare com selective suspend desativado.
  8. Compare com outro SO ou host controller.
  9. Confira o tratamento de resume do firmware.
  10. Confira a política de energia do driver e o comportamento de retry da aplicação.

Diagnóstico final

Problemas de USB selective suspend não se resolvem bem com achismo. Desativar o gerenciamento de energia pode reduzir sintomas, mas a resposta real de engenharia vem da linha do tempo USB: tráfego ativo, gap de idle, tentativa de resume, transferência que falhou, reset ou recuperação.

O Bus Scope ajuda a preservar e inspecionar essa evidência para que uma "desconexão aleatória de USB" possa ser diagnosticada como uma falha específica de suspend/resume, driver, firmware, hub ou gerenciamento de energia.

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

Teste do contrato USB para “Depuração de USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e transferências faltando”

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 USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e transferências faltando” é: Como o USB selective suspend pode causar desconexões aleatórias, transferências faltando, falhas de resume e bugs em idle, e como diagnosticar com evidência USB. 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 USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e trans

Quando “Depuração de USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e transferências faltando” 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 2: Como o USB selective suspend pode causar desconexões aleatórias, transferências faltando,

Verifique “Como o USB selective suspend pode causar desconexões aleatórias, transferências faltando, falhas de resume e bugs em idle, e como diagnosticar com evi” 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 3: O que o selective suspend faz

Quando “O que o selective suspend faz” 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 4: Sintomas típicos

Verifique “Sintomas típicos” 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 5: Falha de suspend versus falha de resume

Quando “Falha de suspend versus falha de resume” 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 6: Primeira transferência depois do idle

Verifique “Primeira transferência depois do idle” 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 7: Runtime power management no Linux

Quando “Runtime power management no Linux” 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 8: Selective suspend no Windows

Verifique “Selective suspend no Windows” 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 9: Estratégia de captura

Quando “Estratégia de captura” 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 10: O que procurar no trace

Verifique “O que procurar no trace” 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.

Matriz de aceitação

Ponto Evidência a manter Condição de aprovação
Depuração de USB Selective Suspend: desconexões aleatórias, falhas de sleep/resume e transferências faltando Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Como o USB selective suspend pode causar desconexões aleatórias, transferências faltando, falhas de resume e bugs em idl Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
O que o selective suspend faz Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Sintomas típicos Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Falha de suspend versus falha de resume Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Primeira transferência depois do idle 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 -->