Topologia USB para DMA: controladores, hubs e portas
Como funcionam controladores host, root hubs e a banda compartilhada, e por que porta traseira não é superstição. Também mostra como ler a velocidade negociada de uma porta e como a suspensão seletiva de USB mata a ligação.
Resposta curta
USB é uma árvore: cada controlador host alimenta um root hub, e todo hub externo, dock ou conector frontal abaixo dele divide a banda desse controlador. O lugar de uma placa DMA é em uma porta traseira ligada a um root hub, sem mais nada disputando aquele controlador.
Nesta página10
- Como as portas USB realmente se ligam ao computador
- Quatro termos de USB para conhecer
- Por que usar uma porta USB traseira?
- Mantenha a placa em um controlador USB só dela
- Como conferir a velocidade negociada de uma porta
- Desligue a suspensão seletiva de USB com o powercfg
- Desligue a economia de energia do USB no Gerenciador de Dispositivos também
- Problemas comuns de USB e como resolver
- Perguntas sobre USB
- Fontes
Como as portas USB realmente se ligam ao computador
A maioria das pessoas imagina cada conector USB como uma ligação independente até o computador, mas não é assim que funciona. Uma máquina tem um número pequeno de controladores host, cada controlador é dono de um root hub, e cada root hub é dono de um conjunto de portas. Tudo o que é plugado nessas portas divide a banda, o tratamento de interrupções e o driver daquele controlador. Um hub externo ou um dock acrescenta mais uma camada, que todos os dispositivos dele dividem por sua vez. Quase toda queda de DMA sem explicação vem de essa árvore estar mais funda ou mais movimentada do que o leitor tolera.
Quatro termos de USB para conhecer
Depois que esses quatro termos ficam claros, a maior parte dos conselhos sobre USB que você vai ler passa a fazer sentido.
- Controlador host
- O silício que comanda um barramento USB. Em uma máquina moderna, é um controlador xHCI. Ele tem driver e pode ser o gargalo
- Root hub
- O hub virtual no topo da árvore de um controlador. As portas dele são os conectores ligados direto à placa
- Hub
- Qualquer dispositivo que abre uma porta em várias: um hub externo, um dock, um monitor com portas, a placa de conectores frontais dentro do gabinete
- Velocidade negociada
- O que a ligação de fato acertou, não o que a porta suporta. Uma porta USB 3 com um cabo USB 2 negocia USB 2
Por que usar uma porta USB traseira?
As portas da traseira são soldadas na placa-mãe e ligadas direto a um root hub. Uma porta frontal fica na ponta de um cabo interno que vai até um conector do gabinete e, em muitos gabinetes, esse conector fica atrás de um hub interno. A porta frontal, portanto, acrescenta comprimento de cabo, conectores extras e muitas vezes um estágio de hub antes de o sinal chegar ao controlador. USB 3 em velocidade cheia não tolera um caminho no limite, e é exatamente por isso que todo guia manda usar uma porta traseira. É também por isso que uma placa que falha na porta frontal funciona na traseira sem mais nada mudar.
Dica
Mantenha a placa em um controlador USB só dela
Dividir um controlador com um teclado ocioso não custa nada, mas dividir com uma webcam, um HD externo, uma placa de captura ou um DAC USB custa banda de verdade. Isso ainda soma carga de interrupções exatamente no momento em que o leitor está no meio de uma transferência. Máquinas com várias portas traseiras costumam espalhar essas portas por mais de um controlador. O objetivo prático é pôr a placa em uma porta cujo controlador não carregue mais nada exigente, e manter os periféricos famintos por banda em outro lugar. Pelo mesmo motivo, desconectar todo dispositivo desnecessário antes de um teste de velocidade de leitura não é só formalidade, porque isso muda o resultado.
Como conferir a velocidade negociada de uma porta
Faça isso no segundo PC, com a placa conectada e o PC de jogo ligado. O objetivo é confirmar que a ligação subiu como USB 3 e não caiu em silêncio para uma velocidade menor.
- Abra o Gerenciador de Dispositivos no segundo PC
- No menu Exibir, escolha Dispositivos por conexão, que redesenha a lista como a árvore real
- Siga a árvore do controlador host, passando pelo root hub, até o seu dispositivo, e anote cada hub do caminho como uma camada que dá para remover
- Volte o Exibir para Dispositivos por tipo e expanda Controladores USB (barramento serial universal)
- Clique com o botão direito no dispositivo FTDI ou na ponte USB, escolha Propriedades e abra a aba Detalhes
- Na lista Propriedade, escolha Pai, que nomeia o dispositivo logo acima deste na árvore USB
- Para uma leitura direta da velocidade, instale o Windows SDK com as Debugging Tools, rode o USBView e selecione o dispositivo para ver a velocidade de barramento dele. SuperSpeed quer dizer que a ligação USB 3 subiu, enquanto High quer dizer que ela caiu para USB 2
- Se a velocidade estiver errada, troque o cabo primeiro, depois a porta, e então tire o que estiver no meio, conferindo a velocidade de novo depois de cada mudança isolada
Desligue a suspensão seletiva de USB com o powercfg
A suspensão seletiva de USB deixa o driver do hub desligar uma porta que ele considera ociosa. Para um teclado isso economiza energia, mas para uma placa DMA significa um dispositivo que some enquanto você não está olhando. Os GUIDs abaixo são o subgrupo padrão das configurações de USB e a configuração de suspensão seletiva, e o valor 0 desliga ela. Rode estes comandos em um prompt como administrador e apenas no SEGUNDO PC.
powercfg /setacvalueindex SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg /setdcvalueindex SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg /setactive SCHEME_CURRENT
powercfg /query SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3Atenção
Desligue a economia de energia do USB no Gerenciador de Dispositivos também
Desligar a suspensão seletiva no plano de energia é necessário, mas muitas vezes não basta. Dispositivos Hub Raiz USB e Hub USB também podem ter a própria aba Gerenciamento de Energia no Gerenciador de Dispositivos, embora nem todo hub mostre uma. Onde a aba existe, a caixa Permitir que o computador desligue este dispositivo para economizar energia vem marcada por padrão, então desmarque ela em todo hub do caminho. Se a placa ainda some depois de um tempo parada com as duas configurações trocadas, desconfie do cabo ou da porta antes de desconfiar da placa.
Problemas comuns de USB e como resolver
Cada linha corresponde a um sintoma que as pessoas costumam pesquisar. Vá descendo a lista em ordem, porque cada correção sai mais barata que a seguinte.
| Sintoma | Causa provável | Solução |
|---|---|---|
| O dispositivo aparece como High speed em vez de SuperSpeed | Um cabo USB 2 ou só de carga, ou uma porta que parece USB 3 mas não é | Troque por um cabo USB 3 com dados, depois mude para uma porta que a placa-mãe documente como USB 3. Confira a velocidade informada de novo depois de cada troca |
| A taxa de leitura despenca sempre que uma webcam ou um HD externo está ativo | Os dois dispositivos ficam atrás do mesmo controlador host e dividem a banda dele | Mude o outro dispositivo para uma porta em outro controlador, ou desconecte ele durante a sessão |
| O dispositivo some depois de alguns minutos parado | Suspensão seletiva de USB, ou um Hub Raiz USB ainda autorizado a desligar | Desligue a suspensão seletiva de USB no plano de energia, depois desmarque a caixa de gerenciamento de energia em todo hub do caminho que mostrar essa opção |
| Funciona em uma porta traseira e falha na porta do lado | As duas portas estão em controladores diferentes e só uma tem driver saudável e orçamento de energia suficiente | Deixe a placa na porta que funciona e marque essa porta, porque portas não são intercambiáveis nem quando ficam lado a lado |
| Estável até entrar um dock ou hub em qualquer lugar da máquina | O hub acrescentou uma camada e renegocia o link de subida compartilhado a cada mudança | Tire o dock do caminho da placa de vez e use ele só para mouse, teclado e monitor |
| Unknown USB device, descriptor request failed (no Windows em português: “Falha na Solicitação do Descritor de Dispositivo”) | A ligação está instável demais para concluir a enumeração — em geral o cabo, às vezes um conector danificado | Teste um cabo curto e comprovadamente bom em outra porta traseira e, se um cabo comprovadamente bom falhar em dois controladores, desconfie do conector da placa |
Perguntas sobre USB
Dá para usar um hub com fonte se eu precisar mesmo de mais portas?
Para periféricos, dá, mas não para a placa como padrão. Se não houver outra saída, use um hub com fonte sem mais nada ligado nele e confirme a taxa de leitura com um teste antes de confiar.
O comprimento do cabo importa?
Importa, porque a tolerância de sinal do USB 3 cai com o comprimento, e um cabo longo e barato é causa comum de quedas intermitentes. Use o cabo mais curto que chegue com folga.
Como eu sei quais portas dividem um controlador?
No Gerenciador de Dispositivos, escolha Exibir e depois Dispositivos por conexão para ver a árvore real, onde tudo que está sob o mesmo controlador host divide esse controlador. O USBView mostra a mesma árvore com as velocidades junto.
Uma porta USB 2 funciona de algum jeito?
Ela costuma enumerar o dispositivo, mas a vazão fica muito limitada, então trate uma ligação USB 2 como resultado de diagnóstico e não como configuração para manter.
Ajuda desabilitar outros dispositivos USB no Gerenciador de Dispositivos?
Raramente. Desconectar fisicamente é mais confiável e fácil de desfazer, enquanto desabilitar te deixa com uma máquina cujo comportamento você vai ter que lembrar depois.
Fontes
Fora as duas referências listadas, o material sobre portas traseiras, controladores compartilhados e quedas vem das medições da equipe nas próprias máquinas.
- 01Windows debugging tools (Microsoft)
de onde vem o USBView, a ferramenta que esta página usa para ler a velocidade negociada de uma porta
learn.microsoft.com
- 02USB device descriptors (Microsoft Learn)
o que é um descritor de dispositivo, que é justamente a leitura que falha em um erro de solicitação de descritor
learn.microsoft.com
Leia em seguida
Ainda travado? Abra um ticket no Discord
Todos os guias