Устройство USB не опознано. Возникновение ошибки «устройство USB не опознано» в операционных системах Windows появляется при подключении различных USB- устройств и иногда они работают неправильно или же Windows не удается распознать их, причину нестабильной работы и пути решения ошибки будут рассказаны в этой статье. Первая и часто встречаемая причина – статическое электричество. Электрический заряд скапливается на USB- устройствах, при этом компьютерная техника создает электростатическое поле и зачастую при подключении съемного устройства к компьютеру возникает повышенное напряжение, поэтому срабатывает защита системы и все порты автоматически отключаются. РЕШЕНИЕ: Отключаем питание от сети на персональном компьютере, то есть полностью обесточиваем. Если у Вас ноутбук, тогда необходимо извлечь аккумуляторную батарею. Ожидаем не менее 5- и минут, включаем компьютер.
Устранение ошибки Код 43 Unknown Device. ILNUR127 Что делать если не работают USB на ПК, ноутбуке, устраняем не исправность - Duration: 1:29. Как легко обновить все драйвера на компьютере? Вы пытались найти драйвер USB\DEVICE? Не отчаивайтесь, это могло произойти по нескольким причинам. Для решения проблемы попробуйте произвести следующие шаги.
- First Device Descriptor Request - состояние отправки первого запроса дескриптора устройства. Стек драйвера USB выдает запрос на получение.
- Неизвестное устройство USB device. Если вы новичок здесь, вы можете подписаться на мой Новостная лента. Unknown Device - запрос дескриптора устройства не удалось.
- Перевод статьи DRIVE IT YOURSELF: USB CAR Один из аргументов Device Descriptor : idVendor 0x0a81 Chesen Electronics Corp.
- Предположим, что драйвером хаба USB было обнаружено изменение состояния Прочитанный дескриптор устройства ( USB Device Descriptor) имеет.
- Скачать на компьютер USB Драйвера.
USB порты работают!!! Второй случай – появление ошибок типа «устройство USB не опознано»Unknown USB device (Port reset failed) или Unknown USB device (Device Descriptor Request Failed) Error Code 4. РЕШЕНИЕ: Вам необходимо войти в «Диспетчер устройств», сделать это можно следующим способом – нажать сочетание клавиш «Логотип Windows + R», появится окно «Выполнить», введите команду «devmgmt. Войдя в «Диспетчер устройств» выберите . Ошибка будет исправлена!!! В случае если, первые два метода не помогли решить проблему, остается выполнить следующие шаги для решения этой проблемы. Войдите в «Диспетчер устройства» и удалите по порядку все записи «Корневой USB- концентратор», после удаления закройте окно и перезагрузите компьютер.
Надеемся, что наши рекомендации помогли Вам по решению проблемы «устройство USB не опознано». Спасибо за внимание!
Реверс- инжениринг драйверов USB- устройств на примере машинки на радиоуправлении / Хабрахабр. Перевод статьи DRIVE IT YOURSELF: USB CARОдин из аргументов любителей Windows перед любителями Linux – недостаток драйверов для оборудования под эту ОС. С течением времени ситуация выправляется.
Сейчас она уже гораздо лучше, чем 1. Но иногда можно встретить какое- то устройство, которое не распознаётся вашим любимым дистрибутивом. Обычно это будет какая- нибудь USB- периферия. Красота свободного софта в том, что эту проблему можно решить самостоятельно (если вы программист).
Конечно, всё зависит от сложности оборудования. С трёхмерной веб- камерой у вас может и не получится – зато многие USB- устройства довольно просты, и вам не придётся нырять в глубины ядра или закапываться в С. В этом уроке мы с вами при помощи Python по шагам изготовим драйвер к игрушечной радиоуправляемой машинке.
Процесс по сути будет реверс- инженирингом. Сначала мы подробно изучим устройство, затем сохраним данные, которыми оно обменивается с драйвером в Windows, и попытаемся понять, что они означают. Для нетривиальных протоколов вам может потребоваться как опыт, так и удача. Знакомство с USB.
USB – шина с управлением хостом. Хост (PC) решает, какое устройство отправляет данные по проводам, и когда именно. Даже в случае асинхронного события (нажатие кнопки на клаве) оно не отправляется хосту сейчас же.
Поскольку на каждой шине может быть до 1. Также у USB есть многослойная система протоколов – примерно как у интернета. Самый нижний уровень обычно реализован в кремнии. Транспортный слой работает через туннели (pipe). Потоковые туннели передают разные данные, туннели сообщений – сообщения для управления устройствами.
Каждое устройство поддерживает минимум один туннель сообщений. На высшем уровне приложения (или класса) есть протоколы вроде USB Mass Storage (флэшки) или Human Interface Devices (HID), устройства для взаимодействия человека с компьютером.
В проводах. USB- устройство можно рассматривать как набор конечных точек, или буферов ввода/вывода. У каждого есть направление данных (ввод или вывод) и тип передачи. По типам буферы бывают следующие: прерывания, изохронные, управляющие и пакетные. Прерывания передают данные по чуть- чуть в реальном времени. Если пользователь нажал клавишу, устройство ждёт, пока хост не спросит «не нажимали ли там кнопочки?». Хост не должен тормозить, и эти события не должны потеряться.
Изохронные работают примерно так же, но не настолько жёстко – они разрешают передавать больше данных, при этом допуская их потерю, когда это не критично (например, веб- камеры). Пакетные предназначены для больших объёмов. Чтобы они не забивали канал, им отдаётся всё место, которое сейчас не занято другими данными. Управляющие используются для управления устройствами, и только у них есть жёстко заданный формат запросов и ответов. Набор буферов со связанными с ним метаданными называется интерфейсом.
У любого USB- устройства есть буфер номер ноль – это конечная точка туннеля по умолчанию, который используется для управляющих данных. Но как хост узнаёт, сколько у устройства есть ещё буферов и какого они типа? Для этого используются разные дескрипторы, отправляемые по особым запросам по туннелю по умолчанию. Они могут быть стандартными для всех, особыми для конкретных классов устройств, или проприетарными. Дескрипторы составляют иерархию, которую можно посмотреть утилитами типа lsusb.
Наверху сидит дескриптор устройства, где содержится Vendor ID (VID) и Product ID (PID). Эта пара уникальная для каждого устройства, по ней система находит нужный драйвер. У устройства может быть несколько конфигураций, каждое со своим интерфейсом (например, принтер, сканер и факс в МФУ). Но обычно определяется одна конфигурация с одним интерфейсом. Они описываются соответствующими дескрипторами.
У каждой конечной точки есть дескриптор, содержащий её адрес (число), направление (ввод или вывод) и тип передачи. У спецификаций классов есть свои типы дескрипторов. Спецификация USB HID ожидает передачу данных в виде «отчётов», которые отправляются и принимаются по буферу управления или прерываний. Эти дескрипторы определяют формат отчёта (к примеру, «1 поле длиной 8 бит») и то, как его надо использовать («офсет в направлении Х»). Поэтому HID- устройство описывает само себя и его может поддерживать универсальный драйвер (usbhid в Linux).
Иначе пришлось бы писать свой драйвер для каждой мыши. Не буду пытаться описывать в нескольких абзацах сотни страниц спецификаций.
Интересующихся отправляю к книге O’Reilly «USB in a Nutshell», бесплатно лежащей по адресу www. Займёмся- ка лучше делом. Разбираемся с разрешениями.
По умолчанию с USB- устройствами можно работать только из- под рута. Чтобы не запускать таким образом тестовую программу, добавим правило udev: SUBSYSTEM==. Входит в комплект usbutils. Поле ID – это пара VID: PID. Для чтения дескрипторов запустите lsusb - v. Как и у большинства устройств, у неё только одна конфигурация и интерфейс.
Можно заметить одну конечную точку interrupt- in (кроме точки по умолчанию 0, которая есть всегда, и поэтому не выводится в списке). Поле b. Interface. Class сообщает о том, что это устройство HID.
Это хорошо – протокол общения с HID открыт. Казалось бы, прочтём дескриптор отчётов, чтобы понять их формат и использование, и дело в шляпе. Однако у него стоит пометочка ** UNAVAILABLE **. Поскольку машинка – устройство HID, драйвер usbhid присвоил её себе, но не знает, что с ней делать. Надо отвязать его от управления ею.
Для начала надо найти адрес шины. Переподключим её, запустим dmesg . X, Y и Z – целые числа, уникальным образом определяющие порты на хосте. Чтобы подвязать всё обратно, запишите то же самое в /sys/bus/usb/drivers/usbhid/bind.
Теперь поле Report descriptor выдаёт информацию: Report Descriptor: (length is 5. Item(Global): Usage Page, data= . Один читает с устройства (ввод), второй пишет (вывод). Однако их использование не очевидно. Для сравнения, вот как выглядит дескриптор отчёта для мышки (не весь, но главные строчки): Report Descriptor: (length is 7. Item(Global): Usage Page, data= .
С машинкой – непонятно, и нам надо догадаться об использовании битов самостоятельно. Небольшой бонус. Большинство радиоуправляемых игрушек просты и используют стандартные приёмники, работающие на одинаковых частотах. Значит, нашу программу можно будет использовать для управления другими игрушками, кроме этой машинки. Работа для детектива. При анализе сетевого трафика используют снифер. И в нашем случае такая штука пригодится.
Бывают специальные USB- мониторы для коммерческого использования, но для нашей задачи подойдёт и Wireshark. Настроим перехват USB в Wireshark. Сначала разрешим мониторинг USB в ядре.
Загрузим модуль usbmon. Целое число – номер шины (первая часть адреса шины USB); 0 означает все шины на хосте. Чтобы сохранить все передачи на шине 2, введите. Хорошо, что Wireshark будет декодировать данные. Теперь нам нужна Windows, которая будет работать с оригинальным драйвером.
Лучше всего установить всё в Virtual. Box (с Oracle Extension Pack, поскольку нам необходима поддержка USB). Убедитесь, что Virtual.
Box может использовать устройство, и запустите Ke. Usb. Car, которая управляет машинкой в Windows. Запустите Wireshark, чтобы посмотреть, какие команды драйвер отправляет на устройство. На первом экране выберите интерфейс usbmon. X, где X – это шина, к которой подключена машинка. Если Wireshark запускается не из- под рута, убедитесь, что узлы /dev/usbmon* имеют соответствующие разрешения. Нажмём в Ke. Usb.
Car кнопочку Forward. Wireshark перехватит несколько исходящих управляющих пакетов. На скриншоте отмечен тот, который нужен нам. Судя по параметрам, это запрос SET. Согласно тому Report Descriptor, что мы видели, длина данных составляет 1 байт, и сам отчёт содержит 0x.
Нажатие кнопки Right выливается в похожий запрос. Но отчёт уже содержит 0х. Можно догадаться, что это означает направление движение. Таким же образом выясняем, что 0х. Правило простое: код направления – это двоичная единичка, сдвинутая влево на позицию кнопки в интерфейсе Ke. Usb. Car, если считать их по часовой стрелке. Также можно отметить периодические запросы прерываний от Endpoint 1 (0x.
Кроме кнопок, у Ke. Usb. Car есть индикатор заряда, так что это, возможно, данные по батарее.
Их значение не меняется (0х. В противном случае запросов прерываний не происходит, но они возобновляются, если мы ставим её обратно. Тогда, видимо, 0х.
Когда батарея зарядится, прерывание начнёт возвращать 0x. Видимо, 7 бит означает «заряжено».
Что делают биты 0 и 2, которые составляют 0х. Пишем почти настоящий драйвер. Заставить программу работать с устройством, которое ранее не поддерживалось – это хорошо, но иногда нужно сделать так, чтобы с ним работала и остальная система. Это значит, надо делать драйвер, а это требует программирования на уровне ядра (http: //www. Но возможно, нам удастся обойтись и без этого, если речь идёт про USB. Если у вас есть USB- сетевуха, можно использовать TUN/TAP для подключения программы Py. USB в сетевой стек Linux.
Интерфейсы TUN/TAP работают как обычные сетевые, с именами типа tun. Модуль pytun делает работу с TUN/TAP простой. Быстродействие страдает, но можно переписать программу на С с использованием libusb. Ещё один кандидат – USB- дисплей. В Linux есть модуль vfb, который позволяет обращаться к фреймбуферу как к /dev/fb.
X. Можно использовать ioctls, чтобы перенаправить консоль на него, и закачивать содержимое /dev/fb. X на USB- устройство. Это тоже не быстро, но ведь вы не собираетесь играть в 3. D- шутеры через USB. Пишем код. Сделаем такую же программу, как для Windows. Код лежит на Git. Hub github. com/vsinitsyn/usbcar.
Как нам работать в USB под Linux? Это возможно делать из пространства пользователя при помощи библиотеки libusb.
Она написана на С и требует хороших знаний USB. Простая альтернатива – Py. USB. Для интерфейса пользователя я использовал Py. Game. Исходники Py. USB скачайте с github. Ещё вам понадобится установить библиотеку libusb. Поместим функциональность для управления машиной в класс с оригинальным названием USBCar.
USBCar(object). REVERSE.