Por que o Windows mostra a notificação “Este dispositivo pode executar mais rápido” se eu conectá-lo desajeitadamente?

74

Percebi que no Windows XP e 7 (e em dois computadores diferentes, respectivamente) eu consegui obter a notificação de "Este dispositivo pode executar mais rápido se você conectá-lo a uma porta USB 2.0 de alta velocidade" se eu conecte o cabo muito lentamente (ou lute um pouco com apenas uma mão). Se eu conectá-lo com rapidez suficiente ou normalmente, com as duas mãos, não há notificação. Em ambos os casos, todos esses dispositivos parecem funcionar normalmente.

O que eu acho que acontece é que o contato entre os fios é interrompido por tempo suficiente durante a conexão lenta / desajeitada que o controlador USB acha que não é 2.0, mas mais lento. Mas por que acha isso? Ou por que não diz apenas "Você é ruim em conectar cabos, desconecte e tente novamente"?

    
por user1306322 01.10.2016 / 17:19

3 respostas

76

A mensagem refere-se à negociação da taxa de dados de velocidade máxima (FS) de 12 Mbit / s, em vez da taxa de dados de alta velocidade (HS), que é de 480 Mbit / s. Deve ser realmente difícil obter esse efeito de uma porta USB2. O protocolo USB2.0 HS é estabelecido após uma negociação bastante complicada entre um dispositivo e um host, porque inicialmente todos os dispositivos HS atuam como um dispositivo FS.

O processo normal é o seguinte:

  1. O dispositivo compatível com HS puxa a linha D + depois que recebe o sinal VBUS com 1-1.5kΩ resistor para 3.3V. Assim como um dispositivo FS faria.

  2. A porta do host detecta o D + = alto e, após um atraso mínimo de retorno de 100 ms, o host ativa o estado USB_RESET no barramento, dirigindo as linhas D + e D para o terra com 45Ω para 10 ou 50ms.

  3. Se o dispositivo for FS, ele não faz nada e aguarda até o final de USB_RESET.

  4. Se o dispositivo for HS, ele acionaria D- high usando o driver HS (fonte de 18mA) por aproximadamente 1 ms. Isto irá criar um pulso com amplitude de cerca de 800mV (18ma em 45Ω de carga) chamado "Chirp-K";

  5. Após a detecção do END do Chirp-K, se o host for capaz do modo HS, ele aciona esse sinal de volta (mesmo 18mA em carga própria de 45Ω), agora por cerca de 50µs. Se for um host FS, ele ignorará o Chirp-K e continuará como FS.

  6. Então, se o host é capaz do modo HS, ele alterna seu drive para o D + wire, formando "Chirp-J", novamente para 50µs;

  7. O host repete esse padrão alternado de 50 µs por toda a duração do estado USB_RESET (10ms nas portas do hub, 50ms nas portas do hub raiz);

  8. Depois de três alternados chirp-K / J, o dispositivo reconhece que o host é HS e alterna para o modo HS. Isso implica ativar a terminação HS na extremidade do dispositivo, o que torna a resistência total do fio em 22Ω e a amplitude do sinal de chirp cai para 400mV, para um nível de sinalização HS padrão.

  9. O host continua com pacotes de início de quadro (SOF) HS e inicia o processo de enumeração no modo HS.

Agora, ninguém sabe que parte da agitação quebrou este protocolo e fez com que o host marcasse a porta como FS.

    
por 01.10.2016 / 19:54
32

Quando você conecta um dispositivo em uma porta USB2, o computador primeiro tenta negociar uma conexão usando o protocolo de dados USB2.
Quando isso falha, ele tenta novamente usando o protocolo de dados USB1.

Meu melhor palpite é que a conexão física (devido a balançar os contatos) não é estável ainda durante a negociação USB2. Então, ele volta para USB1, mesmo que o dispositivo seja um dispositivo USB2.

Engraçado, o Windows percebe que o dispositivo deve ser capaz de ter velocidade USB2 (informações obtidas do driver) e, portanto, o Windows conclui que a porta USB na qual você ligou era uma porta USB1 lenta. O Windows parece não verificar se a porta em si é compatível com USB2. E é por isso que você recebe uma mensagem de erro um pouco enganosa.

P.S. Apenas tentei com uma máquina do Windows 10: o mesmo efeito ali.

    
por 01.10.2016 / 17:46
0

Pode ser que você o tenha inserido com velocidade suficiente para que o Windows já conclua o processo de tremor da mão com o controlador e que naquele momento os contatos necessários para a comunicação USB 2.0 não fossem tocados. Isso poderia levar o Windows a confundir um dispositivo USB 2.0 como um dispositivo 1.1, pois não haveria resposta nos trilhos marcados como presentes apenas no USB 2.0 e superior.

    
por 01.10.2016 / 17:32

Tags