Я заметил, что как на Windows XP, так и на 7 (и на 2 разных компьютерах соответственно) мне удалось получить уведомление «Это устройство может работать быстрее, если вы подключите его к высокоскоростному порту USB 2.0», которое выскочит, если я подключу кабель очень медленно (или немного изо всех сил, делая это одной рукой). Если я подключаю его достаточно быстро или нормально обеими руками, уведомления нет. В любом случае все такие устройства работают нормально.
Я думаю, что случается так, что контакт между проводами прерывается на достаточное время при медленном / неуклюжем соединении, что контроллер USB считает, что это не 2.0, а медленнее. Но почему это так? Или почему он просто не говорит: «Вы плохо подключили кабели, пожалуйста, отключите и попробуйте снова»?
Ответы:
Сообщение относится к согласованию старой скорости передачи данных полной скорости (FS) 12 Мбит / с вместо скорости передачи данных высокой скорости (HS), которая составляет 480 Мбит / с. Должно быть действительно трудно получить этот эффект от порта USB2. Протокол USB 2.0 USB HS устанавливается после довольно сложного согласования между устройством и хостом, поскольку изначально каждое устройство HS действует как устройство FS.
Обычный процесс выглядит следующим образом:
Устройство с поддержкой HS поднимает линию D + после получения сигнала VBUS с резистором 1-1,5 кОм до 3,3 В. Так же, как устройство ФС будет делать.
Порт хоста обнаруживает D + = высокий уровень, и после минимальной задержки отсоединения 100 мс, хост устанавливает состояние USB_RESET на шине, выводя линии D + и D- на землю с драйверами 45 Ом в течение 10 или 50 мс.
Если устройство FS, оно ничего не делает и ждет до конца USB_RESET.
Если устройство HS, оно будет управлять D-high с помощью драйвера HS (источник 18 мА) в течение примерно 1 мс. Это создаст импульс с амплитудой около 800 мВ (от 18 мА до 45 Ом), называемый «Chirp-K»;
После обнаружения КОНЦА Chirp-K, если хост способен работать в режиме HS, он подает этот сигнал обратно (те же 18 мА при собственной нагрузке 45 Ом), теперь в течение примерно 50 мкс. Если это хост FS, он игнорирует Chirp-K и действует как FS.
Затем, если хост способен работать в режиме HS, он переключает свой привод в провод D +, образуя «Chirp-J», снова на 50 мкс;
Хост повторяет этот чередующийся шаблон 50 мкс в течение всей продолжительности состояния USB_RESET (10 мс на портах концентратора, 50 мс на портах корневого концентратора);
После трех чередующихся chirp-K / J устройство распознает, что хост является HS, и переключается в сам режим HS. Это подразумевает включение окончания HS на конце устройства, что приводит к тому, что полное сопротивление провода становится равным 22 Ом, а амплитуда сигнала ЛЧМ падает до 400 мВ до стандартного уровня сигнализации HS.
Хост продолжает работу с пакетами начала кадра HS (SOF) и запускает процесс перечисления в режиме HS.
Теперь никто не догадывается, какая часть виглинга нарушила этот протокол и заставила хост пометить порт как FS.
источник
FS
«полный» (USB 1.0, 12 Мбит / с),HS
«высокоскоростной» (USB 2.0, 480 Мбит / с) иSS
будет «SuperSpeed» (USB 3.0, 5 Гбит / с).Когда вы подключаете устройство к порту USB2, компьютер сначала пытается установить соединение, используя протокол данных USB2.
Когда это не удается, он пытается снова, используя протокол данных USB1.
Я думаю, что физическое соединение (из-за покачивания контактов) еще не стабильно во время согласования USB2. Таким образом, он возвращается к USB1, даже если устройство является устройством USB2.
Довольно забавно, что Windows понимает, что устройство должно поддерживать скорость USB2 (информацию, которую он получает от драйвера), и поэтому Windows приходит к выводу, что порт USB, к которому вы его подключили, был медленным портом USB1. Похоже, Windows не проверяет, поддерживает ли сам порт USB2.
И именно поэтому вы получаете несколько вводящее в заблуждение сообщение об ошибке.
PS Только что попробовал сам с машиной Windows 10: тот же эффект там.
источник
Возможно, вы вставили его достаточно медленно, чтобы Windows уже завершила процесс рукопожатия с контроллером, и в то время контакты, необходимые для связи через USB 2.0, не соприкасались. Это могло привести к тому, что Windows приняла устройство USB 2.0 за 1.1. устройство, поскольку не будет ответа на рельсы, помеченные как присутствующие только на USB 2.0 и выше.
источник