74

Я заметил, что как на Windows XP, так и на 7 (и на 2 разных компьютерах соответственно) мне удалось получить уведомление «Это устройство может работать быстрее, если вы подключите его к высокоскоростному порту USB 2.0», которое выскочит, если я подключу кабель очень медленно (или немного изо всех сил, делая это одной рукой). Если я подключаю его достаточно быстро или нормально обеими руками, уведомления нет. В любом случае все такие устройства работают нормально.

Я думаю, что происходит то, что контакт между проводами прерывается на достаточное время во время медленного / неуклюжего соединения, что контроллер USB считает, что это не 2.0, а медленнее. Но почему это так? Или почему он просто не говорит: «Вы плохо подключили кабели, пожалуйста, отключите и попробуйте снова»?

3 ответа3

76

Сообщение относится к согласованию старой скорости передачи данных полной скорости (FS) 12 Мбит / с вместо скорости передачи данных высокой скорости (HS), которая составляет 480 Мбит / с. Должно быть действительно трудно получить этот эффект от порта USB2. Протокол USB 2.0 USB HS устанавливается после довольно сложного согласования между устройством и хостом, потому что изначально каждое устройство HS действует как устройство FS.

Нормальный процесс выглядит следующим образом:

  1. Устройство с поддержкой HS поднимает линию D+ после того, как оно получает сигнал VBUS с резистором 1-1,5 кОм до 3,3 В. Так же, как устройство ФС будет делать.

  2. Порт хоста обнаруживает D+ = высокий уровень, и после минимальной задержки отсоединения 100 мс, хост устанавливает состояние USB_RESET на шине, выводя линии D+ и D- на землю с драйверами 45 Ом в течение 10 или 50 мс.

  3. Если устройство является FS, оно ничего не делает и ждет до конца USB_RESET.

  4. Если устройство HS, оно будет управлять D-high с помощью драйвера HS (источник 18 мА) в течение примерно 1 мс. Это создаст импульс с амплитудой около 800 мВ (от 18 мА до 45 Ом), называемый «Chirp-K»;

  5. При обнаружении КОНЦА Chirp-K, если хост способен работать в режиме HS, он возвращает этот сигнал обратно (те же 18 мА при собственной нагрузке 45 Ом), теперь в течение примерно 50 мкс. Если это хост FS, он игнорирует Chirp-K и работает как FS.

  6. Затем, если хост способен работать в режиме HS, он переключает свой привод в провод D+, образуя «Chirp-J», снова на 50 мкс;

  7. Хост повторяет этот чередующийся шаблон 50 мкс в течение всей продолжительности состояния USB_RESET (10 мс на портах концентратора, 50 мс на портах корневого концентратора);

  8. После трех чередующихся chirp-K/J устройство распознает, что хост является HS, и переключается в сам режим HS. Это подразумевает включение окончания HS на конце устройства, что приводит к тому, что полное сопротивление провода становится равным 22 Ом, а амплитуда ЛЧМ-сигнала падает до 400 мВ до стандартного уровня сигнализации HS.

  9. Хост продолжает работу с пакетами начала кадра HS (SOF) и запускает процесс перечисления в режиме HS.

Теперь никто не догадывается, какая часть виглинга нарушила этот протокол и заставила хост пометить порт как FS.

32

Когда вы подключаете устройство к порту USB2, компьютер сначала пытается установить соединение, используя протокол данных USB2.
Когда это не удается, он пытается снова, используя протокол данных USB1.

Мое лучшее предположение состоит в том, что физическое соединение (из-за покачивания контактов) еще не стабильно во время согласования USB2. Таким образом, он возвращается к USB1, даже если устройство является устройством USB2.

Довольно забавно, что Windows понимает, что устройство должно поддерживать скорость USB2 (информацию, которую он получает от драйвера), и поэтому Windows приходит к выводу, что USB-порт, к которому вы его подключили, был медленным USB1-портом. Похоже, Windows не проверяет, поддерживает ли сам порт USB2.
И именно поэтому вы получаете несколько вводящее в заблуждение сообщение об ошибке.

PS Только что попробовал сам с машиной Windows 10: тот же эффект там.

0

Возможно, вы вставили его достаточно медленно, чтобы Windows уже завершила процесс рукопожатия с контроллером, и в то время контакты, необходимые для связи через USB 2.0, не касались.Это может привести к тому, что Windows ошибочно примет устройство USB 2.0 как устройство 1.1, так как на шинах, помеченных как присутствующие только на USB 2.0 и выше, не будет ответа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .