Как определить тип подключенного usb устройства

Обновлено: 06.07.2024

В современной IT-индустрии часто случается так, что заверения производителя устройства относительно его функциональности не соответствуют действительности. От скепсиса по этому поводу перейдем к решению конкретной технической задачи…

Постановка задачи

В нашей тестовой лаборатории оказался USB Flash накопитель Kingston DataTraveler 3.0. Согласно информации производителя, устройство поддерживает USB 3.0. Проверим, так ли это на самом деле, не разбирая флешку и не нарушая гарантию.

Аппаратный тест

Присмотревшись к разъему, за четырьмя «ближними» контактами, обеспечивающими поддержку USB 2.0, мы, как и ожидалось, обнаружили пять «дальних» контактов, используемых только в режиме USB 3.0 Super Speed. Измеряем сопротивление сигнальных линий USB 3.0 относительно земли, получаем значения, отличные от бесконечности. Вывод: контакты USB 3.0 физически присутствуют и не заканчиваются тупиком. Измерение выполнялось омметром на пределе, используемом для проверки полупроводниковых диодов. Для доступа к «дальним» контактам разъема USB 3.0 можно сконструировать переходник или воспользоваться тонким и длинным щупом, например иглой. Полученный результат является необходимым, но не достаточным условием функционирования устройства в режиме USB 3.0 Super Speed. Может случиться так, что сигнальные цепи заканчиваются терминирующими резисторами, но не подключены к контроллеру. Поэтому переходим к следующему тесту – программному.

Программный тест

Эксперимент выполняем на достаточно новой, еще не исследованной плате Tyan S5533, построенной на чипсете Denlow.

Системная плата Tyan S5533

Рис 1. Системная плата Tyan S5533 в ITX-формате

Чтобы исключить влияние драйверов, запускаемых в сеансе операционной системы, наш тест будет «экстремально низкоуровневым», запускаться будем под DOS, а результаты контролировать путем просмотра дампа Memory Mapped I/O регистров контроллера USB.

Последовательность действий такова.

1) Воспользовавшись бета-версией утилиты USB.EXE разработки IC Book Labs, определим адрес блока конфигурационных регистров контроллера XHCI, в нашем примере это bus=0, device=14h, function=0. Также определим базовый адрес блока операционных регистров в пространстве Memory Mapped I/O, в нашем примере он равен F7500000h.

image

Рис 2. Результаты работы утилиты USB.EXE. Адрес блока конфигурационных регистров XHCI: bus=0, device=14h, function=0. Базовый адрес операционных регистров XHCI равен F7500000h.

2) Как известно, в целях совместимости с программным обеспечением, не поддерживающим контроллер USB 3.0 XHCI, на данной платформе, по умолчанию, порты USB 3.0 обслуживаются контроллером USB 2.0 EHCI. Наша задача – перевести их в режим обслуживания контроллером USB 3.0 XHCI. Воспользуемся документацией Intel 8 Series / С220 Series Chipset Family Platform Controller Hub Datasheet и любой утилитой, позволяющей редактировать содержимое регистров системной логики.

Программируем регистр USB 3.0 Port Routing Mask Register. Записываем по адресу bus=0, device=14h, function=0, register=0DCh байт со значением 0FFh.

Программируем регистр USB 3.0 Port Super Speed Enable Register. Записываем по адресу bus=0, device=14h, function=0, register=0D8h байт со значением 0FFh.

image

Рис.3. Регистр USB 3.0 Port Routing Mask Register

image

Рис.4. Регистр USB 3.0 Port Super Speed Enable Register

3) Считываем и расшифровываем согласно рис.5 и рис.6 исходное состояние нескольких битовых полей из младших 16-битов 32-битного регистра PORTSCNUSB3 до подключения устройства к исследуемому порту. Регистр находится по смещению 0570h от базового адреса блока операционных регистров контроллера, его адрес F7500000h+0570h=F7500570h

Прочитанное значение = 02A0h = 0000.0010.1010.0000b
D0=Current Connect Status=0. Устройство не подключено.
D1=Port Enabled/Disabled=0. Порт не используется.
D13=Port Speed=0000b. Скорость не определена.

image

Рис.5. Регистр USB 3.0 Port Status and Control Register, биты 4

image

Рис.6. Регистр USB 3.0 Port Status and Control Register, биты 13

4) Подключаем USB 3.0 флэшку, затем повторно считываем регистр и расшифровываем те же битовые поля.

Прочитанное значение = 1203h = 0001.0010.0000.0011b
D0=Current Connect Status=1. Устройство подключено.
D1=Port Enabled/Disabled=1. Порт используется.
D13=Port Speed=0100b. Скорость равна 5.0 Gbit/S, режим USB 3.0 Super Speed работает.

5) Для самоконтроля, подключаем USB 2.0 флэшку к тому же порту, затем повторно считываем регистр и расшифровываем те же битовые поля. Прочитанное значение = 02A0h, что соответствует отсутствию подключения. Так и должно быть, регистр PORTSCNUSB3 «не видит» USB 2.0 устройство, так как оно обслуживается другой подсистемой и статус подключения доступен посредством другого регистра – PORTSCNUSB2, рассмотрение которого выходит за рамки наших исследований.

Резюме

Испытуемая флэшка действительно поддерживает режим USB 3.0.

Если формализовать и запрограммировать описанные действия в виде DOS-программы или UEFI-приложения, получится небольшая утилита, позволяющая быстро определить, в каком скоростном режиме работает USB устройство. Для упрощения нашего примера, мы реализовали его для частного случая – подсистемы USB платы Tyan S5533 и использования первого порта, поэтому адрес регистра PORTSCNUSB3 в нашем примере – константа. В общем случае, для того, чтобы программа была работоспособна на всех платформах, адрес регистра PORTSCNUSB3 должен вычисляться на основании содержимого полей XHCI Capabilities, в соответствии со спецификацией USB 3.0 XHCI. С другой стороны, достигнуть универсальности можно значительно проще и изящнее, используя UEFI-протоколы вместо прямого взаимодействия с регистрами контроллера.

Источники информации

image

В качестве «подопытного кролика» использовался девайс Kingston DataTraveler 100 G3, объемом 16 GB:

UPD-II

1. Дескрипторы устройств, доступные для просмотра с помощью различных информационных утилит индицируют потенциальные возможности устройства. Скоростной режим, установленный для USB порта при подключении устройства, не всегда соответствует возможностям, декларированным в дескрипторах.

Устройство, декларирующее поддержку USB 3.0, может работать в режиме USB 2.0 из-за заводских недоработок, неисправного кабеля и многих других причин. При этом содержимое дескрипторов может указывать на поддержку режима USB 3.0.

Спецификацией USB рекомендовано, чтобы устройство выдавало разный набор дескрипторов в зависимости от реальной установленной скорости. Но у нас нет гарантии, что эта рекомендация соблюдена разработчиками флешки.

Конечно, содержимое дескрипторов устройства — это более достоверный источник информации, чем надпись на флешке и клятвы продавца. Но по причинам, указанным выше, достоверность отлична от 100 процентов.

Именно стремление довести достоверность до 100% побудила нас на экстремально низкоуровневые исследования.

2. Другой метод – проследить в диспетчере устройств, какой контроллер является родительским для флешки (USB 2.0 EHCI или USB 3.0 XHCI), также неэффективен, так как, согласно спецификации, контроллер USB 3.0 XHCI может поддерживать все виды устройств: от Low-Speed до Super Speed. Поэтому, из того, что для флешки родительским контроллером является xHCI не следует, что устройство работает в режиме Super Speed.

Бывает, что при подключении USB 3.0 устройства, оно работает в режиме USB 2.0. Этим грешат, в частности, некоторые WiFi адаптеры с интерфейсом USB. Как решить данную проблему и заставить коварный гаджет перейти в скоростной режим USB 3.0, путем внесения изменений системный в реестр, я подробно написал здесь, поэтому повторяться не буду. Единственное, что могу добавить, если в роли «тормоза» выступает не сетевой адаптер, а внешний USB 3.0 диск, идентифицируемый как скази (SCSI) накопитель, попробуйте поковырять его настройки в этой ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\00xx.

реклама

Казалось бы, ну разве может быть что-нибудь еще хуже, чем замедленная работа устройства на порту USB? Еще как может! Новехонькое устройство, воткнутое в USB порт, может не заработать вообще.

Самое удивительное, что на самом деле, это вовсе не страшно. Я как раз на днях столкнулся с подобным случаем, поэтому поделюсь впечатлениями…

MSI RTX 3070 сливают дешевле любой другой, это за копейки Дешевая 3070 Gigabyte Gaming - успей пока не началось


реклама

var firedYa28 = false; window.addEventListener('load', () => < if(navigator.userAgent.indexOf("Chrome-Lighthouse") < window.yaContextCb.push(()=>< Ya.Context.AdvManager.render(< renderTo: 'yandex_rtb_R-A-630193-28', blockId: 'R-A-630193-28' >) >) >, 3000); > > >);


реклама

Некоторые пользователи, столкнувшись с такой проблемой, склонны впадать в панику, решив, что подключаемое USB устройство неисправно, и его нужно возвращать/менять по гарантии/ремонтировать, плюс «по пути» этот зловредный гаджет еще и «унес на тот свет» как минимум USB-порт на материнской плате, к которому его подключали. На самом деле нет! Все не так грустно, как кажется, и торопиться с выводами тут не стоит.

Справедливости ради уточню, что в очень редких случаях подключаемый USВ девайс действительно может оказаться неисправен. Но вероятность этого крайне низка.

С очень высокой вероятностью и само подключаемое USB устройство, и USB порт на плате исправны и абсолютно рабочие. Так почему же возникла ошибка, целенаправленно убивающая нервные клетки и добавляющая пользователям седых волос?

Причина появления данной ошибки в том, что при быстром последовательном подключении/отключении USB устройства несколько раз подряд в системе происходит сбой USB контроллера. Причина череды подключений/отключений гаджета может быть разной: вы намеренно подключили/отключили устройство несколько раз подряд; у вас просто «дрогнула рука» и при подключении в «расшатанный» порт устройство само быстро переподключилось непроизвольно; наконец вы могли совать штекер USB-кабеля в сильно запыленный USB-порт и скопившаяся в порту грязь (а также возможная коррозия на контактах разъема) привела к быстрому повторному переподключению USB-устройства. В любом случае USB контроллер воспринял этот процесс неадекватно и произошел сбой в его функционировании. Только и всего. Чтобы устранить возникшую проблему зачастую (хотя не всегда) достаточно реинициализировать (отключить и снова включить) соответствующий контроллер в диспетчере задач Windows.

реклама

Но! Обычный пользователь не всегда знает, какой именно контролер нужно реинициализировать. Скажу больше, многие даже не знают, где этот контроллер искать вообще. Поэтому побороть данную проблему лучше универсальным и наиболее надежным методом: нужно перезагрузить компьютер, чтобы произошла аппаратная реинициализация USB контроллера. А лучше выключите компьютер, выньте устройство/шнур из USB порта, очистите штекер и сам разъем USB от грязи, снова плотно вставьте USB устройство или шнур от него в порт на материнской плате и затем включите компьютер.

Интерфейс USB 3.0 значительно производительнее своего предшественника – USB 2.0. Тогда как последний ограничивает скорость линейной записи данных на флешку показателем в 30-40 Мб/с, посредством первого файлы на флешку USB 3.0 могут быть скопированы со скоростью порядка 100 Мб/с. Это реальный пример, в теории же предельной пропускной способностью USB 2.0 считается 60 Мб/с, а USB 3.0 – 625 Мб/с. Чтобы воспользоваться преимуществами интерфейса USB 3.0, им должны быть оборудованы и носитель (флешка, USB-HDD, прочие устройства хранения данных), и компьютер. Как узнать, на компьютере стоят порты USB 2.0 или 3.0?

На ноутбуках и материнских платах ПК, выпущенных ранее 2010 года, с высокой долей вероятности будут установлены порты USB 2.0. А вот компьютерные устройства, выпущенные позднее, могут быть оснащены USB 3.0.

Каким интерфейсом USB оснащен компьютер, можно узнать по внешним признакам портов. Порты USB 1.0 имеют 4 контакта, а пластмасса под ними белого цвета. Порты USB 2.0 также оборудованы 4 контактами, но пластмасса под ними, как правило, черного цвета. Внутри порта USB 3.0 находится целых 9 контактов, а пластмасса под ними обычно синего цвета. Современнейшие модели ПК и ноутбуков могут быть оснащены самым производительным на сегодняшний день интерфейсом USB 3.1 с заявленной максимальной пропускной способностью в 1250 Мб/с. Пластик под контактами таких портов может окрашиваться как в черный, так и в синий цвет. От интерфейсов-предшественников же порты USB 3.1 отличает выгравированная рядом надпись «SS» (Super Speed).

Корпуса ПК обычно оснащаются панелью спереди с дополнительными портами USB для удобства подключения устройств. Но за такое удобство владельцы компьютеров, не знающие, что их материнские платы поддерживают USB 3.0, нередко платят томительным ожиданием во время перемещения данных на флешку. Ведь даже современные, но бюджетные корпуса, как правило, оснащаются портами USB 2.0.

Узнать, на компьютере стоят USB-порты 2.0 или 3.0, можно с помощью средств Windows. Заходим в диспетчер устройств и раскрываем ветку «Контроллеры USB». Если в перечне ветки хост-контроллеры значатся как «Расширенный хост-контроллер» («Enhanced Host Controller»), при этом в их названиях не содержится дописка «USB 3.0», это значит, что на компьютере стоят порты USB 2.0.


О наличии портов USB 3.0 будет прямо говорить дописка «USB 3.0» в названиях расширенных хост-контроллеров. О том, что компьютер поддерживает USB 3.0, также свидетельствует наличие в перечне ветки контроллеров, в названии которых присутствует аббревиатура XHCI – указание на универсальный интерфейс eXtensible Host Controller Interface.

Как обзавестись портами USB 3.0, если их не обнаружилось? У тотального апгрейда в виде замены ноутбука или материнской платы ПК со всеми зависимыми от нее комплектующими есть альтернатива – установка адаптера USB 3.0. Для сборок ПК такие адаптеры существуют в виде плат, устанавливаемых в слот PCI Express. К ноутбукам адаптеры USB 3.0 подключаются с помощью слота ExpressCard. На AliExpress адаптеры USB 3.0 можно заказать за акционную цену чуть более $5. Такой вариант даст определенный прирост производительности, но все равно не будет дотягивать до возможностей USB 3.0, изначально поддерживаемого современными ноутбуками и материнскими платами. Ведь передача данных будет ограничена пропускной способностью соответствующего слота.

Данный материал подойдет для новичков и профессионалов. Некоторых часто волнует вопрос, как определить тип USB порта. Особенно это вызывает трудности, когда в ноутбуке все порты помечены черным цветом, хотя в характеристиках сказано, что USB 3.0 и 2.0 присутствуют. Правда не написано с какой стороны.

Эта статья не только поможет определить USB 3.0, но и попробуем отличить подделку. Статья будет небольшой, но в полной мере поможет разобраться, что к чему.

Определить вид USB порта с помощью Windows

Сейчас я попробую показать все программным путем, а потом посмотрим на сами порты. Большинство из вас знают, что USB-порты имеют версии 1.0, 2.0 и 3.0. Сейчас уже есть версия 3.1, но это не важно. Чтобы определить тип USB порта, нужно зайти в Диспетчер устройств. В Windows 10 нажимаем правой кнопкой мыши по меню Пуск и выбираем соответствующий пункт (либо нажимаем сочетание Win+X и делаем то же самое).


Как только открылось окно ищем вкладку «Контроллеры USB» и раскрываем ее. Там можем увидеть множество драйверов для USB портов. Если в одном из устройств есть слово «xHCI», то это есть USB 3.0, все остальное относится к USB 2.0.


Легко? Тогда перейдем к следующему варианту определения.

Как определить тип USB порта по внешнему виду?

Давайте начнем с самой первой версии – USB 1.0, сейчас данный вариант в ноутбуках практически не используется, но имеет место в некоторых мышках и других устройствах. Выглядит он следующим образом: белый порт с 4-мя контактами – это и есть USB 1.0.


USB 2.0 обычно окрашен черным цветом и внутри имеет также 4 контакта. Второй тип совместим с USB 1.0, но отличаются лишь пропускной способностью. Второй тип быстрее.


В данном примере мы рассмотрели флешку, а как же выглядит разъем, например, в ноутбуке? Вот так и выглядит:


Почти ничем не отличается. Важный момент – некоторые производители могут окрасить тот же USB 2.0 в другой цвет, например, оранжевый. Конечно, это никак не влияет на характеристики интерфейса.


USB 3.0 выглядит, как синий порт и имеет 9 контактов. Четыре находятся впереди, остальные пять сзади. Смотрите внимательнее. Те, что сзади немного приподняты. Если материал синего цвета, то это точно USB 3.0. Также, на некоторых компьютерах рядом с разъемом вы можете видеть надпись «SS», что говорит о максимальной скорости передачи данных (Super Speed).


Иногда можно увидеть USB 2.0, который тоже синего цвета, и как это понимать? Как я уже сказал, разработчики могут использовать любой дизайн. Определить тип USB вы можете по количеству контактов.

Хочется отметить, что USB 1.0, 2.0 и 3.0 совместимы друг с другом, поэтому смело можете использовать их так, как вздумается. Например, вставить разъем USB 2.0 в 3.0, правда скорость тут будет на уровне 2.0.

Итак, подведём небольшие итоги, сейчас я еще раз опишу особенности портов USB:

Читайте также: