Depuração BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha

Como depurar falhas em USB Mass Storage Bulk-Only Transport usando Command Block Wrapper, Command Status Wrapper e sense data. Inclui padrões para CBW, CSW, REQUEST SENSE e recuperação por reset.

USB, mass storage, BOT, CBW, CSW, sense data, REQUEST SENSE, depuração USB

Do lado do usuário, dispositivos USB Mass Storage parecem simples: "conecte um pendrive, data logger, dispositivo de update de firmware ou gadget de armazenamento embarcado, e um disco aparece. Quando falha, a mensagem costuma ser vaga: dispositivo não está pronto, erro de I/O, pedido para formatar, falha de montagem ou disco que some." Por baixo, muitos dispositivos usam Bulk-Only Transport. O BOT tem um fluxo de comando reconhecível: "Command Block Wrapper, fase de dados, Command Status Wrapper. Se esse padrão se quebra, a captura geralmente mostra onde."

Entenda o fluxo do BOT

O padrão normal é:

  • host envia CBW pelo bulk OUT
  • fase de dados opcional pelo bulk IN ou OUT
  • dispositivo envia CSW pelo bulk IN

O CBW carrega um comando SCSI. O CSW reporta o status do comando. Se o comando falha, o host pode emitir um REQUEST SENSE para entender o motivo.

Evidências úteis:

  • assinatura do CBW
  • command tag
  • data transfer length
  • flag de direção
  • bytes do comando SCSI
  • tamanho da fase de dados
  • assinatura do CSW
  • status do CSW
  • residue
  • sense data depois da falha

Se as tags não casam, o host não consegue confiar no status. Se o tamanho dos dados não bate com o comportamento, podem vir timeouts ou stalls na sequência.

Sense data explica muitas falhas

Um comando SCSI que falhou não é o fim do diagnóstico. O sense data costuma dar a razão real:

  • not ready
  • medium error
  • illegal request
  • write protected
  • logical block address fora do intervalo
  • unit attention depois de reset

Equipes de firmware devem capturar o comando que falhou e a resposta de sense que veio em seguida. Uma falha de montagem do host pode ser a resposta correta para uma condição de armazenamento reportada pelo firmware.

STALL em endpoint e recuperação por reset

O BOT tem um comportamento de recuperação definido. Se um endpoint trava ou um comando falha feio, o host pode emitir clear endpoint halt ou um mass storage reset. Um dispositivo que não se recupera corretamente pode parecer que desapareceu ou exigir que se tire o cabo.

Inspecione:

  • qual endpoint travou
  • se o host enviou clear feature
  • se houve um BOT reset
  • se o fluxo subsequente de CBW/CSW voltou ao normal
  • se as tags permaneceram consistentes

Essa evidência é melhor do que tentar adivinhar a máquina de estado do firmware.

Onde o Bus Scope entra

O Bus Scope é uma bancada de inspeção USB. Para casos de mass storage, bytes brutos sozinhos não bastam; a estrutura BOT decodificada e o status da transferência ajudam o engenheiro a encontrar a falha mais rápido.

Um relatório útil do Bus Scope para depuração de BOT deve responder:

  • qual comando SCSI falhou?
  • a fase de dados casou com a direção e o tamanho do CBW?
  • o CSW chegou?
  • a tag do CSW casou com a tag do CBW?
  • qual sense data veio na sequência?
  • a recuperação por reset funcionou?

Para buscas como "USB mass storage BOT failed", "CBW CSW mismatch" ou "USB flash drive I/O error firmware", esse é o caminho que leva do sintoma do usuário até a evidência do barramento.

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

Teste do contrato USB para “Depuração BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha”

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 BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha” é: Como depurar falhas em USB Mass Storage Bulk-Only Transport usando Command Block Wrapper, Command Status Wrapper e sense data. Inclui padrões para CBW, CSW, REQUEST SENSE e recuperação por reset. 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 BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha

Para “Depuração BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 2: Como depurar falhas em USB Mass Storage Bulk-Only Transport usando Command Block Wrapper,

Encerre “Como depurar falhas em USB Mass Storage Bulk-Only Transport usando Command Block Wrapper, Command Status Wrapper e sense data. Inclui padrões para CBW” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 3: Entenda o fluxo do BOT

Para “Entenda o fluxo do BOT”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 4: Sense data explica muitas falhas

Encerre “Sense data explica muitas falhas” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 5: STALL em endpoint e recuperação por reset

Para “STALL em endpoint e recuperação por reset”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 6: Onde o Bus Scope entra

Encerre “Onde o Bus Scope entra” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 7: Teste do contrato USB para “Depuração BOT em USB Mass Storage: CBW, CSW, sense data e tran

Para “Teste do contrato USB para “Depuração BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha””, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 8: Como escrever resposta citável?

Encerre “Como escrever resposta citável?” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Ponto de controle 9: host envia CBW pelo bulk OUT

Para “host envia CBW pelo bulk OUT”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.

Ponto de controle 10: fase de dados opcional pelo bulk IN ou OUT

Encerre “fase de dados opcional pelo bulk IN ou OUT” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.

Matriz de aceitação

Ponto Evidência a manter Condição de aprovação
Depuração BOT em USB Mass Storage: CBW, CSW, sense data e transferências com falha Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Como depurar falhas em USB Mass Storage Bulk-Only Transport usando Command Block Wrapper, Command Status Wrapper e sense Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Entenda o fluxo do BOT Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Sense data explica muitas falhas Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
STALL em endpoint e recuperação por reset Estado inicial, uma ação e estado resultante Outra pessoa reproduz o resultado declarado
Onde o Bus Scope entra 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 -->