Por que o Windows mostra a notificação "Este dispositivo pode executar mais rapidamente" se eu o conecto desajeitadamente?

74

Notei que no Windows XP e 7 (e em 2 computadores diferentes, respectivamente), eu conseguia obter a notificação "Este dispositivo pode ter um desempenho mais rápido se você o conectar a uma porta USB 2.0 de alta velocidade" para aparecer se eu conectar o cabo bem devagar (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 isso acontece? Ou por que não diz apenas "Você é ruim em conectar cabos, desconecte e tente novamente"?

user1306322
fonte
O dispositivo está conectado a um dongle USB em vez de direto à sua caixa? Nesse caso, tente conectar o dispositivo diretamente e não a terceiros, por assim dizer.
Ele está conectado à porta de cabo traseira da torre da área de trabalho, portanto, não deve haver nada entre a placa-mãe e o dispositivo na outra extremidade.
user1306322
5
Quem diabos usa as duas mãos para conectar um dispositivo USB?
PNDA 03/10
3
@ Cunningham'sLawyer: cenário de uma mão : o plugue (ou a chave) empurra o laptop ao redor da mesa ao tentar um lado, virando-o, tentando novamente, virando-o para finalmente conectá-lo. Cenário de duas mãos : mesma quantidade de virar, mas a segunda mão mantém o laptop parado.
WoJ 3/10
Espere, então você tem portas USB 1 nesses laptops? 0_0
rahuldottech

Respostas:

76

A mensagem refere-se à negociação de uma taxa de dados antiga de velocidade total (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 em uma porta USB2. O protocolo USB 2.0 HS é estabelecido após uma negociação bastante complicada entre um dispositivo e o 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 + após receber o sinal VBUS com um resistor de 1-1,5kΩ a 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 100ms, o host afirma o estado USB_RESET no barramento, levando as linhas D + e D- ao terra com drivers de 45Ω por 10 ou 50ms.

  3. Se o dispositivo for FS, ele não fará nada e aguarda até o final do USB_RESET.

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

  5. Após a detecção do END do Chirp-K, se o host for capaz do modo HS, ele direciona esse sinal de volta (os mesmos 18mA para a própria carga de 45Ω), agora por cerca de 50µs. Se for um host do FS, ele ignora o Chirp-K e prossegue como FS.

  6. Então, se o host é capaz do modo HS, ele muda sua unidade para o fio D +, formando "Chirp-J", novamente por 50µs;

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

  8. Após três chirp-K / J alternados, o dispositivo reconhece que o host é HS e alterna para o próprio modo HS. Isso implica ativar a terminação HS na extremidade do dispositivo, o que eleva a resistência total do fio a 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 os pacotes de início de quadro do HS (SOF) e inicia o processo de enumeração no modo HS.

Agora, ninguém sabe qual parte da manobra quebrou esse protocolo e fez o host marcar a porta como FS.

Ale..chenski
fonte
10
Acrônimos: FSé "velocidade máxima" (USB 1.0, 12 Mbit / s), HSé "alta velocidade" (USB 2.0, 480 Mbit / s) e SSseria "SuperSpeed" (USB 3.0, 5 Gbit / s).
Isanae 1/10
4
Lidando com dispositivos USB nos últimos 16 anos, tenho que admitir que vejo a queda do HS para o FS pela primeira vez. O protocolo normal no nível do driver usa pelo menos mais duas tentativas para afirmar USB_RESET no processo de enumeração. No pior caso de oscilação na primeira inserção, haverá um ou dois USB_RESETs adicionais seguindo o protocolo descrito, para que o retorno nunca ocorra no nível do usuário. No entanto, alguns hosts modernos estão usando sinalização "acionada por voltagem" em vez de acionada por corrente clássica, de modo que toda combinação clássica de vários níveis de detecção de limite é ferida e as coisas podem acontecer.
Ale..chenski
21
@isanae Gostaria de saber quando os criadores de especificações de dispositivos terão a previsão de chamar algo de "velocidade lenta".
Wizzwizz4
7
@ wizzwizz4 quando eles intencionalmente e deliberadamente querem que seu produto falhe devido à má recepção do consumidor.
Dan Neely
10
@isanae - USB 1.0 também suporta "baixa velocidade" como 1,5 Mbits / s.
22419 Michael Karas #
32

Quando você conecta um dispositivo a uma porta USB2, o computador 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 à oscilação dos contatos) ainda não está estável durante a negociação do USB2. Portanto, ele volta ao USB1, mesmo que o dispositivo seja USB2.

O engraçado é que o Windows percebe que o dispositivo deve ter velocidade USB2 (informações obtidas do driver) e, portanto, o Windows conclui que a porta USB na qual você o conectou 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 a mensagem de erro um tanto enganadora.

PS Apenas tentei eu mesmo com uma máquina Windows 10: O mesmo efeito lá.

Tonny
fonte
A mesma coisa acontece ocasionalmente com um dispositivo USB3 num porto USB3 ...
davidbak
1
Não. A velocidade da porta USB é determinada pelo hardware ANTES de se envolver em qualquer protocolo de dados.
Ale..chenski
3
@AliChen Como é determinado?
Gronostaj # 1/16
Veja minha resposta completa. O software inicia apenas o comando de redefinição de porta ao ver o bit "port connect" (interrompe-o); o resto é feito em hardware.
Ale..chenski
Da Wikipedia: "Os dispositivos USB 2.0 usam um protocolo especial durante a redefinição, chamada chirping, para negociar o modo de largura de banda alta com o host / hub. Um dispositivo com capacidade HS [USB 2.0] primeiro se conecta como um dispositivo FS [USB 1.0] ( D + puxou alto), mas ao receber um USB RESET (DW e D-LOW dirigido pelo host por 10 a 20 ms), ele puxa a linha D alta, conhecida como chirp K. "
Nathan Osman
0

Pode ser que você o tenha inserido lento o suficiente para que o Windows já termine o processo de agitação das mãos com o controlador e, naquele momento, os contatos necessários para a comunicação USB 2.0 não estivessem tocando. Isso pode levar o Windows a confundir um dispositivo USB 2.0 como 1.1 dispositivo, pois não haveria resposta nos trilhos marcados como presentes apenas no USB 2.0 ou superior.

Stefan
fonte
Essa é uma situação comum para dispositivos USB da versão <2.0 que ainda reconhece a conexão e não escolhe falhar?
user1306322
8
Isso pode acontecer com dispositivos USB3 em uma porta USB3 onde os pinos USB1 / 2 se conectam primeiro. Mas não vejo como isso pode acontecer com o USB1 / USB2. Ambos usam apenas 4 pinos, um par para alimentação, um par para dados.
Hennes
@hennes eu concordo. Sua há distinção física entre USB 1 e 2.
Tonny
1
@ Tonny Tenho certeza de que vi algumas diferenças em alguns dispositivos USB 1.1 e 2.0 de marca obscura. Mas admito que provavelmente estou errado.
Stefan
1
@Stefan Nos primeiros dias do USB, havia muitos conectores baratos que possuíam dimensões ruins para os contatos. Já vi alguns em que cada um dos 4 pinos do plugue tinha comprimento e espessura diferentes. Eu ainda mantenho algumas no escritório para mostrar às pessoas quando temos uma discussão sobre os prós e contras de pedir cabos baratos.
Tonny