Registravto.ru

Автожурнал "Регистр Авто"
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

USB-порт не видит устройство; как исправить

USB-порт не видит устройство — как исправить?

Как исправить USB-порт

USB-порт (Universal Serial Bus) представляет собой стандартный интерфейс кабельного соединения для персональных компьютеров. Он применяется для передачи цифровых данных на короткие расстояния. Два USB-порта позволяют разным устройствам установить связь друг с другом и совместно выполнять одну конкретную задачу. При необходимости, такие порты могут даже передавать электроэнергию (например, зарядка телефона через ноутбук).

Содержание статьи:

Применяются такие порты преимущественно для подключения периферии (клавиатуры, мышки), а также для приема или передачи данных посредством USB-накопителей.

Free Download for PC

Модуль поддержки USB устройств в Linux

USB устройства в настоящее время полностью поддерживаются в Linux. Большая часть изменений проявилась в ветке ядра 2.6, хотя определённая поддержка имелась даже в ядрах 2.2. Linux поддерживает как USB 2.0, так и ранние спецификации. Ввиду подключения на лету (горячего подключения), заложенной в самой природе USB, поддержка обычно производится посредством модулей ядра, которые могут загружаться или выгружаться по необходимости.

Команда lspci позволяет отобразить USB устройства:

Вывод команды показывает, что в системе имеются 3 USB контроллера.

С помощью команды lsmod можно отобразить загруженные USB модули:

PS/2 и USB [ править | править код ]

В настоящее время подавляющее большинство изготавливаемых компьютерных мышей и клавиатур имеют разъём USB, некоторые современные материнские платы (особенно миниатюрных форм-факторов) не имеют разъёма PS/2 или имеют только один разъём. Современные ноутбуки и нетбуки не имеют внешних разъёмов PS/2, и для подключения к ним мыши или внешней клавиатуры используется USB. Старые ноутбуки чаще всего имели один универсальный разъём.

Если USB-контроллер мышей и клавиатур поддерживает работу через интерфейс PS/2, то устройства (мыши и клавиатуры) можно подключить через пассивный переходник с разъёмом PS/2. Как правило, такой особенностью обладает большинство недорогих мышей и клавиатур.

Интерфейс PS/2 может использоваться не только для клавиатур и мышей, но и для других устройств, например, сканеров штрихкодов, позиционеров. Однако эти устройства в большинстве случаев эмулируют работу клавиатуры или мыши. Это позволяет избавиться от драйверов и сделать устройства платформонезависимыми.

Читайте так же:
Почему не поворачивается ключ в замке?

В офисных условиях иногда предпочитают использовать клавиатуры и мыши PS/2, а не USB по соображениям безопасности: это позволяет полностью отключить порты USB и сделать невозможным подключение флешек и других потенциально опасных устройств.

Издеваемся над USB

В очередной раз втыкая скоростную USB флешку в порт USB 3.0, я увидел надпись «Это устройство может работать быстрее. «. Но подождите, я и так его воткнул в порт 3.0! Неужели контакт барахлит? И если так, то как флешка определяет, на какой скорости ей работать? Ведь современные ПК поддерживают целых три стандарта соединения — USB 1.1, 2.0 и 3.0. Можно ли «понизить» стандарт USB, насильно заставив устройство работать, к примеру, на USB 1.1? Не на все эти вопросы в сети удалось найти ответ, и я решил разобраться сам, по ходу столкнувшись с довольно неочевидными ситуациями.

Понижаем USB 3.0 до 2.0

Вы сейчас скажете — да что может быть проще, просто возьми USB 2.0 кабель — и будете совершенно правы. Если в кабеле или разъёме нет USB 3.0 контактов, у устройства не будет иного выхода, кроме как завестись на скорости USB 2.0:

Но отключение каких конкретно проводков приведёт к переключению на USB 2.0? Что будет, если отключить только один, или замкнуть соседние? Интересно же выйти за рамки стандарта и поэкспериментировать!

Для экспериментов я спаял USB-«маму» и USB-«папу» проводками на макетной плате:

На фотографии не просто так один проводок находится в воздухе. Выяснилось, что соединение прекрасно работает даже без одного из проводников SS_TX дифф. пары! (для пары SS_RX такой фокус уже не работает)

Более того, если отключить все USB 3.0 контакты, кроме SS_TX, девайс продолжает считать, что он подключен к USB 3.0 и вообще никак не обнаруживается в системе. Честно говоря, я был уверен, что соединение в этом случае переключится на 2.0 режим:

Читайте так же:
Можно ли завести машину если не работает стартер?

здесь отключены SS_RX-, SS_RX+ и SS_TX+

Итого делаем вывод, что USB 3.0 устройство проверяет наличие SuperSpeed соединения по линии SS_TX, причём трансивер настолько устойчив к ошибкам, что ему плевать на обрыв одной из линий пары. Для гарантированного переключения устройства на USB 2.0 нужно рвать обе линии: SS_TX- и SS_TX+.

Понижаем USB до 1.1

USB 2.0 всем хорош, да больно уж шустрый. Если вы когда-нибудь пытались заснифать его логическим анализатором, у вас либо очень крутой анализатор, либо вы нашли древний USB-хаб вроде такого:

Несмотря на то, что интернет пестрит вопросами «как понизить USB 2.0 до 1.1», простого решения я нигде не увидел:

Давайте глянем внимательнее! По стандарту USB, скорость работы согласуется на сигнальном уровне. Устройство поднимает уровень D- до 0.8в, а хост отвечает пилообразным сигналом:

То же самое видим на нашем «экспериментальном стенде» на осциллографе:

То есть, нужно сделать так, чтобы хост не увидел этого повышения напряжения. А значит — ставим диод в разрыв линии D- (Шоттки, чтобы минимизировать падение):

Ииии он успешно подавляет сигнал от устройства, не мешая обычной передаче данных:

И здесь я был уверен, что диод нарушит передачу данных по линии и ничего не заработает, но нет — я не смог найти ни одного устройства, которое не заработало через такой «переходник».

Собираем «даунгрейдер»

Как обобщение вышеописанных экспериментов, я сделал простенький пассивный переключатель USB режимов — 1.1/2.0/3.0

Моё стремление к простоте порой невозможно сдерживать. Захотелось всё реализовать на единственном трёхпозиционном переключателе, вот таком:

Первоначальная идея была — один ряд контактов переключает D- между:

  • «диод» (USB 1.1)
  • «пусто» (USB 3.0)
  • «D-» (USB 2.0)
  • «пусто» (USB 1.1)
  • «SS_TX-» (USB 3.0)
  • «пусто» (USB 2.0)
Читайте так же:
Можно ли ездить на машине с трещиной на лобовом стекле?

Теперь средний контакт переключается между крайними, а в среднем положении выключатель замыкает две пары независимых контактов. Идеально! Осталось припаять и готово:

TODO: развести печатную платку и сделать красиво

Всё, теперь можно быть уверенным, что флешка работает именно в 3.0 (2.0, 1.1) режиме, а иначе она просто не обнаружится в системе. В заключение, тестируем наш картридер в различных положениях выключателя.

почему-то скорость USB 1.1 не понравилась Crystal Disk Mark, и в результате теста он показал нули

Вопрос на засыпку

В USB 3.0 разъёме две пары контактов — USB 2.0 и USB 3.0, мы уже выяснили, что устройство (флешка, картридер) сначала лезет на контакты 3.0, а если не получается, переходит в 2.0 режим.

Что, если к 3.0 контактам подключить одно устройство, а к 2.0 контактам — другое? Какое из устройств увидит компьютер?

Попробуйте ответить в опросе ниже перед тем, как заглядывать под спойлер.

Для этого эксперимента, спаяем вместе USB 3.0 SATA-адаптер и USB 2.0 флешку:

UsbView — просмотр дерева USB устройств в графическом интерфейсе

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

USBView — это небольшое приложение GTK, показывающее, как выглядит дерево устройств шины USB. Он показывает графическое представление устройств, которые в данный момент подключены, показывая топологию шины USB. Она также отображает информацию о каждом отдельном устройстве на шине.

Установка UsbView в Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

Установка UsbView в Arch Linux, Manjaro, BlackArch и их производные:

Во время установки программа сообщит, что для её работы необходимо выполнить команду

Читайте так же:
Как отправить смс с телефона нескольким адресатам?

либо в файл /etc/fstab добавить строку

Вместо этого можно обойтись тем, что запустить программу с правами суперпользователя:

На скриншоте показано, что компьютер имеет 2 xHCI хост контроллера, один из них версии 3.10:

К контроллеру версии 3.10 подключены два устройства, одно из устройств версии 3.00 (обратите внимание на строку «USB Version: 3.00»).

Список подключенных устройств Linux

В операционной системе Linux используется особенная философия управления. Все объекты, в том числе и устройства считаются файлами. При подключении какого-либо устройства к системе для него создается файл в каталоге /dev/.

Обычно, после того, как вы подключили любую USB флешку или другой накопитель к системе с установленным окружением рабочего стола, устройство автоматически монтируется в папку /media/имя_пользователя/метка_устройства/, а затем вы можете получить доступ к файлам из устройства в этой папке. Тем не менее, бывают ситуации, когда вам нужно вручную монтировать USB и тогда такой вариант не поможет.

Файлы всех устройств находятся в каталоге /dev/. Здесь вы можете найти файлы sda, hda, которые представляют из себя жесткий диск, а также файлы sda1 или hda1, которые позволяют получить доступ к разделам диска. Мы уже подробно рассматривали это все в статье работа с устройствами Linux. Вы можете посмотреть список всех устройств в каталоге /dev/ с помощью команды:

usb0

Теперь осталось понять какие из этих файлов устройств принадлежат USB устройствам и каким устройствам именно.

VMware PCI Passthrough (VMDirectPath): проброс USB контроллера в ВМ

Другой, менее удобный метод предоставления доступа из ВМ к физическому USB устройству – проброс целиком USB контроллера с ESXi хоста. Этот режим называется VMDirectPath. Для его использования чипсет сервера должен поддерживать Intel Directed I/O или AMD I/O Virtualization Technology (AMD IOMMU), и этот режим включен в настройках BIOS/UEFI.

Читайте так же:
Сколько бак на Peugeot 206?

Если на сервере установлен только один USB контроллер, при пробросе его в ВМ, вы не сможете использовать локально подключенные USB устройства хоста (клавиатуру, мышь). В этом случае лучше добавить в сервер дополнительный PCI USB контроллер.

Если на хосте имеется несколько USB контроллеров, вы можете идентифицировать подключенное USB устройство и номер контроллера через ESXi shell. Вывести список USB устройств:

lsusb -v | grep -e Bus -e iSerial

В выводе команду нужно найти строку USB накопителя, например:

Затем по номеру контроллера (Bus02 в этом случае) определяем root hub и его iSerial:

tail -f /var/log/vmkernel.log | grep -i USB

Если USB диск не определяется ESXi хостом, проверьте что служба запущена:

#chkconfig usbarbitrator —list.

Соответственно, мы получили номер USB контроллера, который нужно пробросить в ВМ.

VMware USB Passthrough (VMDirectPath) проброс USB контроллера

  1. Чтобы пробросить физический USB контроллер, выберите ESXi хоста, на котором запущена ваша ВМ и перейдите в раздел Manage -> Settings -> PCI Devices -> Edit;
  2. В списке PCI устройств найдите и выберите нужный USB контроллер по его ID (в моем примере 00:1D.0, контроллер называется C610/X99 series chipset USB Enhanced Host Controller #1 Intel Corporation);
  3. Статус USB контролера должен смениться с Unavailable (This device is not currently available for VMs to use) на Available (This device available for VMs to use). Нажмите Ок.
  4. Для сохранения изменений нужно перезагрузить хост ESXi.
  5. После загрузки хоста, выключите ВМ и добавьте новое PCI устройство (New Device -> PCI Device -> Add). В выпадающем списке выберите ваш USB контроллер (например 0000:00:1D| Intel Corporation USB Chipset…).

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector