Usb device

Create an USB Device Application

This chapter describes the software structure of the USB Device Component and its use for creating applications. The USB Device Component simplifies the software development of microcontroller systems that interface to a USB Host.

Attributes of the USB Device Component:

  • Supports Low-Speed, Full-Speed and High-Speed.
  • Supports standard USB Classes with multiple device class instances.
  • Supports composite devices. Combine USB Device Classes to create a composite device.
  • Supports multiple USB Devices on a single microcontroller with more than one USB Device controller.
  • Provides for implementing the USB Device functionality.
  • Provides an user-friendly configuration file for each device class to generate USB Descriptors.
  • Flexibly assigns USB Endpoints to the microcontroller USB Device peripheral.
  • Provides USB Device Examples to show the use of the software stack.

For interfacing to an USB Host Computer, additional software may be required. Page Interface to an USB Host Computer shows an example for such a software running on Windows PCs.

RTE Components

The picture shows the relationship between RTE Components and the microcontroller's USB Device peripheral (USB Controller). RTE Components provide configuration files and user code templates.

Configuration files configure the RTE Components, hardware interfaces, memory resources and USB Device driver parameters. They can have an impact on multiple RTE Components (for example RTE_Device.h configures the USB Controller 0 and Driver_USBD0).

User code templates provide the skeleton for implementing the USB Device functionality.

The grey area around the RTE Components USB Device 1 and Driver_USBD1, as well as USB Controller 1 means that these components are optional and can only be used if a microcontroller device has multiple USB controllers present. If this is the case, an USB Device Class can be connected to any of the USB Device Instances.

USB Device Structure

USB Device peripherals can have one or more of the following USB Device Classes:

  • Audio Device Class (ADC) is used to exchange streaming audio data between the USB Host and the USB Device.
  • Communication Device Class (CDC) provides virtual communication port functionality to the USB Host.
  • Human Interface Device (HID) is typically used to implement a keyboard, joystick, or mouse. The HID Class can be also used for low bandwidth data exchange.
  • Mass Storage Class (MSC) is used to connect various storage devices to an USB Host. Mass Storage Class media can be an SD card, internal or external Flash memory, or RAM.
  • Custom Class is used to implement either a standard or a vendor specific USB Device Class.

Generic information about USB Device Classes can be found on the USB-IF's Approved Class Specification Documents page.

Multiple RTE Component instances can interface with more than one USB Controller or can implement multiple USB Device Classes. RTE Component instances are numbered.

The number is appended to the RTE Component name, related configuration files, and user code templates. Each RTE Component has a separate configuration file.

For example, for HID 0 and HID 1 the configuration files have the name USB_Config_HID_0.h and USB_Config_HID_1.h.

NoteThe default configuration settings are pre-configured for one instance of an USB Device or USB Device Class in a non-composite device peripheral. For other combinations the settings need to be edited to ensure proper operation. The USB Composite Device example shows how to implement and configure a composite devices

The steps to create a microcontroller application that uses USB communication with an USB Device controller are:

For interfacing to an USB Host computer, standard USB Device Classes drivers can be used. This may require additional software development for the USB Host application. An exemplary application for interfacing to an USB HID Device is explained here.

RTE Component Selection

Only a few steps are necessary to complete the RTE Component selection:

  1. From the USB Component:
    • Select USB:CORE that provides the basic functionality required for USB communication.
    • Set USB:Device to '1'. This creates one USB Device for communication with the USB Host.
    • Select the desired USB Classes (HID, MSC, CDC, ADC, or Custom Class). For example, set USB:Device:HID to '1' to create a single HID Class Device. If you select more than one class or multiple instances of the same class on the same device, you will create a Composite USB Device.
  2. From the Drivers Component:
    • Select an appropriate USB Device driver suitable for your application.
  3. From the Device Component:
    • Additional device specific drivers may be required according to the validation output.
  4. From the CMSIS Component:
    • Select the CMSIS:CORE to provide the core interface to the processor.
    • Select a suitable CMSIS:RTOS that is a required for the USB Component.

RTE Component Selection

Note

  • Most microcontrollers have only one USB Controller implemented in hardware and only one driver Driver_USBD0 is available. In this case, only one USB:Device can be selected to generate USB Device 0.
  • On a single USB Device 0 an USB Composite Device may be implemented that combines multiple USB Device Classes.
  • When a microcontroller implements multiple USB Controllers an additional USB Device 1 can be generated by setting USB:Device to '2'.

USB Driver and Controller

The USB Device Driver and the USB Controller of the microcontroller need to be correctly configured. In particular this means:

  • The USB Device Driver selected under the Drivers Component is typically configured with the RTE_Device.h configuration file. While this file provides multiple options, it is typically sufficient to enable the USB Device peripheral related to this driver. Some microcontrollers may require settings that are related to a physical layer interface (PHY). The picture below shows two possible variants. Either, the USB PHY is integrated into the controller, or an external chip is used for providing the USB signal lines:USB Controller and PHY Setups
  • The USB Controller of the microcontroller typically needs specific clock settings. Consult the user's guide of the microcontroller to understand the requirements. Alternatively, you may copy the setup of an USB Device example (in case your hardware setup is similar to that of the chosen evaluation boards).

USB Device Configuration

The configuration file USBD_Config_n.c is listed in the Project Windows under the Component USB and contains a number of important settings for the specific USB Device.

  • The Driver_USBD# number is set according to the selected USB Controller. This specifies which driver will be used for the USB Device determining the pin-out as well. For single USB Device Controllers it will be '0'.
  • High-Speed may be selected if supported by the USB Controller.
  • The Vendor ID (VID) needs to be set to a private VID. The default Vendor ID is owned by Keil and must not be used for actual products. Please visit USB-IF for more information on how to apply for a valid Vendor ID.
  • Every device variant needs an unique Product ID. Together with the VID, it is used by the Host computer's operating system to find a driver for your device.
  • The Device Release Number will be shown in Windows and Linux systems as “Firmware Revision”. The number will be interpreted as “binary coded decimal”, meaning that 0x0101 will be shown as firmware revision 1.01.
  • The Manufacturer, Product and the Serial Number String can be set to identify the USB Device on the USB Host.

Refer to USB Core Configuration for more configuration options of the USB Device.

NoteYou can configure the USB Device at run-time using the functions from the USB Device Core API. The section USB Device Core explains the details. Implement the run-time specific behavior with the user code template USBD_User_Device_n.c.

USB Device Class Configuration and USB Endpoint Settings

The USB Device Class Parameters and Endpoint Settings are configured in separate files for each USB Device Class and separately for each instance. The configuration files contain Device Class specific Endpoint Settings Numbers and are listed in the Project Window under the Component USB.

  • USBD_Config_ADC_n.h configuration for Audio Device Class (ADC).
  • USBD_Config_CDC_n.h configuration for Communication Device Class (CDC).
  • USBD_Config_HID_n.h configuration for Human Interface Device Class (HID).
  • USBD_Config_MSC_n.h configuration for Mass Storage Device Class (MSC).
  • USBD_Config_CustomClass_n.h configuration for Custom Class.

Each USB Endpoint can only be used once on the same USB Device. It has to be made sure that the different USB Device Classes or multiple instances of the same USB Device Class use different Endpoints.

The default configuration supports applications that use a single USB Device Class.

The remaining parameters are specific settings that configure parameters for USB communication speed and the USB Device Class.

System Resource Configuration

For proper operation, the USB Device Component requires some system configuration settings. The requirements are:

  • Additional stack size of 512 bytes. This can be configured in the device's file (Stack_Size).
  • The USB Device component uses CMSIS-RTOS threads. Depending on the number of supported USB Device Classes, you need to configure additional settings in the file.

For more information, check the USB Device component's Resource Requirements section.

User Code Implementation

files provide function templates used to implement USB Device Class functionality. The available functions are explained in the Reference section of the USB Component. These routines can be adapted to the needs of the microcontroller application, in case different then default functionality is needed.

The following templates are available for the USB Device component:

Changing Default USB Descriptors

Источник: http://www.keil.com/pack/doc/mw/USB/html/_u_s_b__device.html

неизвестное устройство USB device_descriptor_failure

Если вы новичок здесь, вы можете подписаться на мой Новостная лента. Спасибо за визит!

Один из самых распространенных проблем, связанных с USB устройства это неудачи перечисление. Вы, скорее всего ошибки Encounter как Неизвестное устройство, неизвестное устройство USB (Запрос дескриптора устройства не удалось), код 43, код 10 или отказ USB дескриптора устройства и т.д..

  • Вы уже исключили вопросы с Порты USB других устройств, таких как мышь или клавиатура работает нормально на порты USB.
  • Это может быть сам USB-устройство.
  • Если USB-устройство работает нормально на других компьютерах, то вопрос, конечно, программное обеспечение, связанное.

Есть целый ряд причин для получения неизвестных ошибки прибора
Я перечислил ниже шаги для решения вопросов, связанных с Неизвестное устройство & Неизвестный USB-устройство (Запрос дескриптора устройства не удалось) ошибки

Хотя ниже шаги являются специфическими для Windows, 7 Окна и 10. Это решение работает для других операционных систем Windows, слишком.

Шаг за шагом решение

Шаг 1: Отключите соответствующий USB-устройства от компьютера Шаг 2: Перезагрузка компьютера. Шаг 3: Если вы видите какие-либо обновления, Установка, Дождитесь ее завершения. Еще раз перезагрузите компьютер. Шаг 4: Подключите соответствующие устройства USB к вашему компьютеру

Шаг 5: Откройте диспетчер устройств, Подождите некоторое время, чтобы проверить, если обнаружено устройство USB, и нет никаких ошибок в диспетчере устройств.

Чтобы открыть диспетчер устройств в Windows 7: Перейдите в раздел настройки > Панель управления > Диспетчер устройств
Чтобы открыть диспетчер устройств в Windows 10: Щелкните правой кнопкой мыши Windows Пуск значок > Диспетчер устройств

Если проблема не устранена

Шаг 6: Right-click the respective USB device and select uninstall from the drop down list. Ждать для того исчезнуть из диспетчера устройств. Шаг 7: Щелкните правой кнопкой мыши Контроллеры универсальной последовательной шины и выберите команду Обновить конфигурацию оборудования. Шаг 8: Перезагрузите компьютер.

Шаг 9: Подключите USB-устройство. Ждать для того, чтобы автоматически установить драйверы.

Устройство будет отображаться в диспетчере устройств без каких-либо ошибок.

Если описанные выше шаги не удастся решить проблему, Затем вы должны:-

Шаг 10: Удаление каждое устройство под Universal Serial Bus контроллеров в диспетчере устройств. Это включает в себя все устройства, включая любое устройство USB Mass Storage, Корневой USB-концентратор, Составное USB устройство, USB хост-контроллер и т.д..
Шаг 11: Перезагрузите компьютер и подождите, пока последовательной шины Универсальные автоматически переустановить.

Шаг 12: Подключите USB-устройство у вас есть проблемы с, и проблема должна быть вещь прошлого.

Please note: После этапа 10, your keyboard and mouse might stop working. You would then have to manually restart the system using the power button.

Пожалуйста, поделитесь Ваш отзыв ниже разделе комментариев

Источник: https://www.techtantri.com/ru/unknown-device-usb/

USB device

Digi Embedded Yocto version

The universal serial bus (USB) driver implements a standard Linux driver interface to the CHIPIDEA USB-HS On-The-Go (OTG) controller.

The USB provides a universal link that can be used across a wide range of PC-to-peripheral interconnects. It supports plug-and-play, port expansion, and any new USB peripheral that uses the same type of port.

The CHIPIDEA USB controller is enhanced host controller interface (EHCI) compliant.

Kernel configuration

You can manage the USB OTG and gadget support through the kernel configuration options:

  • OTG support (CONFIG_USB_OTG)
  • ChipIdea Highspeed Dual Role Controller (CONFIG_USB_CHIPIDEA)
  • ChipIdea device controller (CONFIG_USB_CHIPIDEA_UDC)
  • Freescale MXS USB PHY support (CONFIG_USB_MXS_PHY)
  • USB Gadget support (CONFIG_USB_GADGET)

These options are all enabled as built-in on the default ConnectCore 6 SBC kernel configuration file.

The USB device driver provides the functionality upon which the USB gadget drivers work. The USB gadget drivers implement one or more “functions”, each providing a different capability.

The following gadget drivers are supported and enabled as loadable modules on the default ConnectCore 6 SBC kernel configuration file:

  • Mass Storage Gadget (CONFIG_USB_MASS_STORAGE)
  • Ethernet Gadget with CDC Ethernet support (CONFIG_USB_ETH)
  • Serial Gadget with ACM and CDC OBEX support (CONFIG_USB_G_SERIAL)

Note Gadget drivers are enabled as loadable modules because only one gadget function can be used at a time. Before using a gadget driver, you must first make sure no other gadget driver is loaded.

Platform driver mapping

The i.MX6 USB device driver is located at drivers/usb/.

Device tree bindings and customization

The i.MX6 USB OTG interface device tree binding is documented at Documentation/devicetree/bindings/usb/usbmisc-imx.txt.

The USB OTG interface is defined in the i.MX6 CPU, ConnectCore 6 system-on-module, and ConnectCore 6 SBC device tree files.

Definition of the USB device

Common i.MX6 device treeusbotg: usb@02184000 { compatible = “fsl,imx6q-usb”, “fsl,imx27-usb”; reg = ; interrupts = ; clocks = ; fsl,usbphy = ; fsl,usbmisc = ; fsl,anatop = ; status = “disabled”; };

IOMUX configuration

ConnectCore 6 system-on-module device tree usbotg { pinctrl_usbotg: usbotg { fsl,pins = < MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059 MX6QDL_PAD_EIM_D22__USB_OTG_PWR 0x17059 MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x17059 >; }; };

USB device enabling and definition

ConnectCore 6 SBC device tree&usbotg { pinctrl-names = “default”; pinctrl-0 = ; fsl,power-line-polarity-active-high; fsl,over-current-polarity-active-low; status = “okay”; };

The USB device driver exposes the connected devices through the file system at /dev/bus/usb/. The interface can expose different USB device gadgets.

Serial gadget

The serial gadget exposes a TTY-style serial line interface, usable with minicom and similar tools. Most Linux hosts can talk to this interface using the generic usb-serial driver. The latest versions of this driver implement the CDC ACM class. This driver works with MS-Windows usbser.sys driver, the Linux cdc-acm driver, and many other USB host systems.

For detailed information on how to set up the driver on both Windows and Linux systems, see Documentation/usb/gadget_serial.txt. Follow the instructions in this file for exposing your target as a serial port to the eyes of a USB host.

Loading the serial gadget

Load the serial gadget driver module (full details at Documentation/usb/gadget_serial.txt):

Target device # modprobe g_serial

Connect the target platform to a Linux host computer via the USB cable. Linux will create a device node called /dev/ttyGS0 on the target side and a device node called /dev/ttyACM0 on the host side. (Node names may vary in different distributions.)

The USB connection between target and host now works as a serial line.

Testing the serial gadget

You can verify the serial connection of the two ports:

  • Configure the serial port of the host computer:

Host PC$ stty -F /dev/ttyACM0 raw -echo -echoe -echok -echoctl -echoke

  • Configure the serial port of the target platform:

Target device # stty -F /dev/ttyGS0 raw -echo -echoe -echok -echoctl -echoke

  • On the host, read the contents arriving at the new serial port:

Host PC$ cat /dev/ttyACM0

  • On the target, write a text line to the serial port:

Target device# echo “Hello from target side” > /dev/ttyGS0

You will see the text line arrive at the host computer.

Opening a console shell via USB serial

The following instructions describe how to open a console shell via the USB serial port.

  • On the target side, execute a console on the serial gadget with the getty command (baudrate is mandatory but irrelevant):

Target device# setsid getty -L -l /bin/sh -n 115200 /dev/ttyGS0

The setsid command avoids permission problems when running getty from an interactive shell.

  • On the host side, open a minicom or putty session on the USB serial port /dev/ttyACM0 to access the shell.

Note

Источник: https://www.digi.com/resources/documentation/digidocs/90001945-13/reference/bsp/cc6/r_usb_device.htm

MTP USB Device Drivers for Windows 10, 8, 7, Vista, XP

Aug. 07, 2018 / Updated by Bessie Shaw to Driver Download

MTP USB Device drivers are necessary to be downloaded and installed on Windows OS, because the MTP (Media Transfer Protocol) enables you to transfer media files between any portable device with storage and Windows machines. For example, you can transfer pictures from Android devices like Samsung Galaxy S3, Lenovo T410, HTC One M7, etc. to a PC of Windows 10, 8.1, or 7.

If you receive error message “MTP USB Device driver failed” when you try to connect a MTP device to a PC, this means you need to download and install proper MTP USB device driver for your computer.

Read More: Top 5 Ways to Fix MTP Connection Problem on Windows 10

Incorrectly configured MTP USB device drivers can cause a failure media files transformation as well as other serious computer issues such as device not recognized, INACCESSIBLE_BOOT_DEVICE blue screen, mouse and keyboard not working, etc.

So you need to install the MTP USB device drivers according to the Windows OS version. However, almost all the MTP USB drivers for Samsung, Huawei, HTC, Asus and other Android devices are not available to download from the manufacturer’s website.

How to Download and Install MTP USB Device Drivers for Windows 10, 8.1, 8, 7, Vista and XP

Driver Talent is a professional and easy-to-use driver download utility, which can help to detect outdated MTP USB device driver in your PC and download a proper one to keep both the Android device and Windows PC running at their best performance.

Download Now

Follow the 3 steps to download and install Samsung S5 MTP driver, HTC MTP device driver, MTP driver for Dell Inspiron n5110 or MTP USB device drivers for other devices:

Step 1: Scan for Problematic Drivers

Click “Scan” to detect the outdated, missing or incorrectly configured MTP driver on the PC.

Step 2: Repair Driver Problems

Click “Repair” and fix the MTP driver issues. Or click “Update” if there are updatable drivers available.

Step 3: Restart the PC

Restart the computer to make the newly installed MTP USB driver take effect.

Now connect your Android device to the PC to see if pictures or music can be transferred successfully.

If you encounter other USB driver issues, read:

If you can’t download the MTP USB device drivers you need, comment below to let us know please. We’ll try our best to help you.

Recommended Download

Источник: https://www.drivethelife.com/driver-download/mtp-usb-device-drivers-for-windows-10-8-7-vista-xp.html

Developer Help

USB defines class code information that is used to identify a device’s functionality and to nominally load a device driver based on that functionality.

The information is contained in three bytes with the names Base Class, SubClass, and Protocol. (Note that ‘Base Class’ is used in this description to identify the first byte of the Class Code triple.

That terminology is not used in the USB specification).

There are two places on a device where class code information can be placed. One is in the Device Descriptor, and the other is in the Interface Descriptors.

Some defined class codes are allowed to be used only in a Device Descriptor, others can be used in both Device and Interface Descriptors, and some can only be used in Interface Descriptors.

The following table shows the currently defined set of Base Class values, what the generic usage is, and where that Base Class can be used (either Device or Interface Descriptors, or both).

Base Class Table

Base ClassDescriptorUsageDescription
00h Device Use class information in the Interface Descriptors
01h Interface Audio
02h Both Communications and CDC Control
03h Interface Human Interface Device (HID)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage (MSD)
09h Device 8Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
10h Interface Audio/Video Devices
11h Device Billboard Device Class
DCh Both Diagnostic Device
0Eh Interface Wireless Controller
EFh Both Miscellaneous
FEh Interface Application Specific
FFh Both Vendor Specific

Base Class 00h (Device)

This base class is defined to be used in Device Descriptors to indicate that class information should be determined from the Interface Descriptors in the device. There is one class code definition in this base class. All other values are reserved.

This value is also used in Interface Descriptors to indicate a null class code triple.

Base ClassSubClassProtocolMeaning
00h 00h 00h Use class code info from Interface Descriptors

Base Class 01h (Audio)

This base class is defined for Audio capable devices that conform to the Audio Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.

Values outside of that defined spec are reserved. These class codes may only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
01h xxh xxh Audio device

Base Class 02h (Communications and CDC Control)

This base class is defined for devices that conform to the Communications Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.

Values outside of that defined spec are reserved. Note that the Communication Device Class spec requires some class code values (triples) to be used in Device Descriptors and some to be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
02h xxh xxh communication device class (CDC) control

Base Class 03h (HID – Human Interface Device)

This base class is defined for devices that conform to the HID Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
03h xxh xxh HID device class

Base Class 05h (Physical)

This base class is defined for devices that conform to the Physical Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
05h xxh xxh Physical device class

Base Class 06h (Still Imaging)

This base class is defined for devices that conform to the Imaging Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved.

Base ClassSubClassProtocolMeaning
06h 01h 01h Still Imaging device

Base Class 07h (Printer)

This base class is defined for devices that conform to the Printer Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
07h xxh xxh Printer device

Base Class 08h (Mass Storage)

This base class is defined for devices that conform to the Mass Storage Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
08h xxh xxh Mass Storage device

Base Class 09h (Hub)

This base class is defined for devices that are USB hubs and conform to the definition in the USB specification. That specification defines the complete triples as shown below. All other values are reserved. These class codes can only be used in Device Descriptors.

Base ClassSubClassProtocolMeaning
09h 00h 00h Full Speed Hub
09h 00h 01h High Speed Hub with single TT
09h 00h 02h High Speed Hub with single TTs

Base Class 0Ah (CDC-Data)

This base class is defined for devices that conform to the Communications Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.

Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
0Ah xxh xxh CDC data device

Base Class 0Bh (Smart Card)

This base class is defined for devices that conform to the Smart Card Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values.Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
0Bh xxh xxh Smart Card device

Base Class 0Dh (Content Security)

This base class is defined for devices that conform to the Content Security Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
0Dh 00h 00h Content Security device

Base Class 0Eh (Video)

This base class is defined for devices that conform to the Video Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
0Eh xxh xxh Video device

Base Class 0Fh (Personal Healthcare)

This base class is defined for devices that conform to the Personal Healthcare Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes should only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
0Fh xxh xxh Personal Healthcare device

Base Class 10h (Audio/Video Devices)

The USB Audio/Video (AV) Device Class Definition describes the methods used to communicate with devices or functions embedded in composite devices that are used to manipulate audio, video, voice, and all image- and sound-related functionality. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Interface Descriptors.

Base ClassSubClassProtocolMeaning
10h 01h 00h Audio/Video Device – AVControl Interface
10h 02h 00h Audio/Video Device – AVData Video Streaming Interface
10h 03h 00h [[include :xsi:box:c]]

Base Class 11h (Billboard Device)

This base class is defined for devices that conform to the Billboard Device Class Specification found on the USB-IF website. That specification defines the usable set of SubClass and Protocol values. Values outside of that defined spec are reserved. These class codes can only be used in Device Descriptors.

Base ClassSubClassProtocolMeaning
11h 00h 00h Billboard Device

Base Class FFh (Vendor Specific)

This base class is defined for vendors to use as they please. These class codes can be used in both Device and Interface Descriptors.

Base ClassSubClassProtocolMeaning
FFh xxh xxh Vendor specific

Источник: http://microchipdeveloper.com/usb:device-classes

Как исправить USB device over current status detected при включении компьютера

10.04.2018  для начинающих | ремонт компьютеров

Если после включения ваш компьютер сам выключается, при этом на экране вы видите сообщение об ошибке USB device over current status detected System will shut down after 15 seconds, это говорит, о том, что есть проблемы работой USB (включается защита от перегрузки по току), однако начинающий пользователь не всегда может выяснить, в чем дело и как исправить проблему.

В этой инструкции подробно о простых способах исправить ошибку USB device over current status detected с последующим автоматическим выключением компьютера.

Простой метод исправления

Для начала о самой распространенной причине и простом для начинающих пользователей методе исправления проблемы. Он подходит в том случае, если проблема появилась внезапно, без действий с вашей стороны: не после того, как вы сменили корпус, или разбирали ПК и чистили его от пыли или что-то подобное.

Итак, если вы столкнулись с ошибкой USB device over current status detected, чаще всего (но не всегда) всё сводится к следующим моментам

  1. Проблемы с подключенными USB устройствами —обычно проблема в этом.
  2. Если в последнее время вы подключили новое устройство к USB, пролили воду на клавиатуру, уронили USB-мышь или что-то подобное, попробуйте отключить все эти устройства.
  3. Учитывайте, что дело может быть в любом из подключенных USB устройств (в том числе, в упомянутых мыши и клавиатуре, даже если с ними ничего не происходило, в USB-хабе и даже простом кабеле, принтере и т.п.).
  4. Попробуйте отключить все ненужные (а в идеале — и нужные) устройства от USB на выключенном компьютере.
  5. Проверьте, исчезло ли сообщение USB device over current status detected.
  6. Если ошибки нет (или сменилась на другую, например, об отсутствии клавиатуры), попробуйте подключать устройства по одному (выключая компьютер в промежутках), чтобы выявить проблемное.
  7. В результате, выявив USB-устройство, которое вызывает проблему, не используйте его (или замените при необходимости).

Ещё один простой, но редко встречающийся случай — если вы в последнее время перемещали системный блок компьютера, убедитесь, что он не соприкасается ни с чем металлическим (радиатор отопления, антенный кабель и т.п.).

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

Дополнительные причины сообщения «USB device over current status detected. System will shut down after 15 seconds» и способы их устранить

Следующая по распространенности причина — Поврежденные разъемы USB. Если вы часто пользуетесь каким-то разъемом USB, например, ежедневно подключая и отключая флешку (чаще всего страдают разъемы на передней панели компьютера), это тоже может вызывать проблему.

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

О том, как они выглядят и как подписаны — в инструкции Как подключить передние разъемы корпуса к материнской плате, в разделе «Подключение USB портов на передней панели».

Иногда причиной ошибки USB device over current status detected может быть задетая или снятая перемычка (джампер) питания USB, обычно подписываемая как USB_PWR, USB POWER или USBPWR (их может быть более одной, например: одна для задних разъемов USB, например, USBPWR_F, одна — для передних — USBPWR_R), особенно если в последнее время вы выполняли какие-то работы внутри корпуса компьютера.

Попробуйте найти эти перемычки на материнской плате компьютера (находятся недалеко от разъемов USB, к которым подключается передняя панель из предыдущего шага) и установить их таким образом, чтобы они замыкали 1 и 2 контакт, а не 2 и 3 (а если они и вовсе отсутствуют и не установлены — установить их на место).

По сути, это все способы, которые работают для простых случаев ошибки. К сожалению, иногда проблема может быть серьезнее и сложнее для самостоятельного исправления:

  • Повреждение электронных компонентов материнской платы (вследствие перепадов напряжения, неправильного отключения, или простого выхода из строя со временем).
  • Повреждение задних разъемов USB (требует ремонта).
  • Редко — неправильная работа блока питания компьютера.

Среди прочих советов в Интернете на тему этой проблемы можно встретить сброс БИОС, однако в моей практике это редко оказывается результативным (если только непосредственно перед появлением ошибки вы не выполняли обновление БИОС/UEFI).

А вдруг и это будет интересно:

Источник: https://remontka.pro/usb-device-over-current-status-detected/

USB Device Not Recognized

A common problem that arises for computer users is dealing with the USB Device not recognized error. This error is thrown after an electronic device is connected to the computer or USB hub but is not automatically detected.

When the error occurs, the Windows Device Manager may also list the component as an “unknown device” depending on the nature of the error.

Although more commonly encountered on Windows computers, Mac OS X users can also experience the equivalent error when connecting new or legacy peripheries to their computer(s).

What Are the Common Causes of the USB Device Not Recognized Error?

There are several factors that can contribute to the USB device not recognized error. These include:

The computer does not support USB 2.0 or USB 3.0

Incorrect USB drivers installed on the computer

A malfunction in the host controller hardware has occurred

Attached devices or hubs may have created the conflict

Host controller hardware malfunction

Additional system hardware or configurations that may change the timing of the device.

Methods to Correct the USB Device Not Recognized Error

Some of the common methods to use to correct issues with a USB device not being recognized include: initiating recognition of the USB device using the Windows Device Manager, disabling power management of the USB hub, restarting the computer, conducting a system file check, checking for loose connections, and running the Windows System Restore utility. All of the methods can be attempted by end-users who have administrator privileges on their computer without having to pay a computer professional to troubleshoot the error.

Steps to Initiate Recognition of the USB Device by the Device Manager

Step 1 – Unplug and then plug the USB device back into your computer.

Step 2 – Select the “Start” menu button and enter “Devmgmt.msc” in the search text field followed by pressing the “Ok” button on the computer’s keyboard. On older versions of Windows, you will need to select the “Run” menu button after “Start” to enter the command.

Step 2 – Click on the Device Manager window to select the computer you are using as the location for the hardware scan.

Step 3 – Click the “Scan for hardware changes” on the “Action” menu.

Step 4 – Wait for the scan to complete. Windows will display a message similar to, “Windows XP recognizes the new device” if the Device Manger has been successful in correcting the USB device not recognized error.

Disable Power Management of the USB Hub

Step 1 – Reseat the USB device in the computer by unplugging and plugging back into the USB port.

Step 2 – Select the “Start” menu button and enter “Devmgmt.msc” command in the search text field followed by clicking the “Ok” menu button to launch the Windows Device Manager.

Step 3 – Expand the Universal Serial Bus controllers menu option. Then, right-click a USB Root Hub on the listing and choose the “Properties” menu option. This action will display the USB Root Hub Properties dialog menu box.

Step 4 – Choose the “Power Management” menu tab.

Step 5 – Select the menu option to allow the computer to turn off this device to save power check box. Click the “Ok” menu button.

Step 6 – Repeat steps 3 through 5 for each USB hub listed in the application.

Step 7 – Select the “Scan for hardware changes” menu choice on the “Action” menu.

Step 8 – If the USB device error has been fixed, Windows will display a message that it recognizes the new device.

Restart the Computer to Recognize the USB Device

A method commonly overlooked when troubleshooting a USB device error is to restart the computer to force the Operating System to recognize the device.

Step 1 – Unplug the USB device.

Step 2 – Restart the computer. Wait about 10 seconds after the computer has completed the restart.

Step 3 – Plug the USB device into the hub or computer.

Step 4 – If successful, Windows will display a message that the device is now recognized.

Fix Errors Using Windows System File Check

If the USB device has previously worked on your computer, there is a possibility that a configuration file has become corrupted. The Windows System File checker can be used to identify and correct corrupted files.

Step 1 – Select the “Start” menu button followed by choosing the “All Programs” and “Accessories” menu options.

Step 2 – Right click the “Command Prompt” and choose the “Run as Administrator” menu option.

Step 3 – Select the “Continue” menu button. Some configurations of the Windows OS will require that you enter the administrator login and password on this step.

Step 4 – Enter “sfc /scannow” in the command prompt window followed by pressing the “Enter” key.

Step 5 – Windows will initiate a full scan of the computer. The following message will be displayed to indicate the scan status:

Beginning the system scan. This process will take some time.

Beginning verification phase of system scan.

Verification XX % complete

Step 6 – View the Windows System File Check results after the scan has completed on the screen. The application will either: 1 – find no integrity violations, 2 – find corruption(s) and repair them, or 3 – find corruptions and fail to repair them. The results of the scan will also be saved to the CBS.log file that is stored in the %windir%LogsCBS folder.

Step 7 – Restart your computer if errors were discovered and repaired and the USB device not found error should be corrected.

Use System Restore to Fix the USB Device Not Found Error

If the USB device has previously worked on the computer, Windows System Restore can be used to restore the operating system to a previous condition. For this method to work, a Restore Point will have to be selected prior to the issues with device recognition occurring.

Step 1 – Select the “Start” menu button followed by the “All Programs,” “Accessories,” and “System Tools” menu options.

Step 2 – Click the “System Restore” menu choice followed by the “Continue” menu button. Windows may require you enter the administrator login and password for the computer before you can select the “Continue” button.

Step 3 – Select the “Choose a different restore point” menu option followed by clicking the “Next” menu button.

Step 4 – Choose a date and time prior to the issues being experienced with the USB device. If it has been greater than 5 days since you have had the problems, you will need to select the “Show restore points older than 5 days” check box.

Step 5 – Continue with Windows System Restore and restart your computer if it does not do so automatically.

Step 6 – Insert the USB device after computer restart and it should now be recognized.

**Note: Use System Restore with caution. If you have installed any computer programs, updates, or made major configuration changes to the computer since the restore point you choose they will be lost. Personal files, documents, emails, and photos will not be affected through using the System Restore application.

Disable USB Hub Power Management

If you are using a USB hub, the power management utility can interfere with the proper operation of a USB device. Disabling this feature can fix the USB device not found error in some cases.

Step 1 – Select the “Start” menu button and enter “devmgmt.msc” in the search text field followed by clicking the “Ok” menu button.

Step 2 – Expand the “Universal Serial Bus Controllers” menu node.

Step 3 – Right click the “USB Root Hub” menu item and then click the “Properties” menu choice.

Step 4 – Select the “Power Management” menu tab. Then, clear the “Allow the computer to turn off this device to save power” check box followed by clicking the “Ok” menu button.

Step 5 – Restart the computer and the error should be corrected. Note that if the procedure is accomplished on a laptop the battery life will be reduced.

Remove the Computer from the Power Supply

If you do not have time to take the basic troubleshooting steps to fix the USB device not found error, or they do not work, a quickfix that you can attempt is unplugging the power supply from a laptop.

Step 1 – Unplug or remove your computer from its power supply. (note these steps are for laptops).

Step 2 – Remove the USB device from the computer.

Step 3 – Turn off the computer using the power button or the “Shut Down” command found by selecting the “Start” menu button or pressing the “CTRL” + “ALT” + “DEL” keys simultaneously.

Step 4 – Restart the computer. Insert the USB device after the computer has restarted to correct the USB device not found error.

USB Device Not Recognized on a Mac

Although the USB device not recognized is a common error that is seen on computers that run the Windows OS, it can also be encountered on those running Mac OS X.

Since Mac OS 9, Apple has designed the OS to not require special drivers to detect USB devices which helps minimize the issues previously seen with external peripheries on the OS; however, this has still not proven to be full-proof against errors arising.

 The steps to troubleshoot the error on a Mac are similar to those taken on a Windows computer.

Step 1 – Ensure the connection between the device and USB port is secure. Remove the device throwing the error from the computer’s USB port and then plug it in again. The connection should be secure, but take care not to force the connection as damage to the port could result.

Step 2 – Remove other devices that are connected to the computer via USB ports. After removing all accessories, start plugging them in one at a time. Ensure the device is recognized and functioning properly before moving to the next device.

Sometimes on Mac OS X computers, two devices will interfere or conflict with each other. If you discover this is the case on your computer, you will have to deconflict usage of the two devices and seek software fix(es) from the respective device manufacturer(s).

Step 3

Источник: http://www.tech-faq.com/usb-device-not-recognized.html

Как стек USB производит энумерацию устройства | windows | adminstuff

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}
Как стек USB производит энумерацию устройства
Добавил(а) microsin   

В этой статье приведено подробное описание процесса перечисления (опознания, или энумерации) устройства USB стеком USB ядра операционной системы Windows 7 (перевод поста [1], автор Martin Borve, разработчик команды подсистем USB Windows) – с точки зрения стека, когда было детектировано присутствие устройства, и стек указывает менеджеру PnP, что появилось новое устройство.

Прим. переводчика: все непонятные термины, касающиеся USB, ищите в руководстве [3].

Процесс энумерации устройства для порта USB начинается, когда хаб индицирует изменение статуса соединения (connect status) через конечную точку прерывания хаба (hub interrupt endpoint). Если новый статус порта показывает подключенное устройство, USB-драйвер хаба будет использовать следующие шаги по энумерации устройства:

Port Stabilization Debounce – дебоунсинг, процедура борьбы с дребезгом при подключении, стабилизация состояния порта.

Драйвер хаба должен отслеживать изменение состояния соединения как минимум 100 мс, пока состояние не перестанет изменяться (USB 2.0 spec, 7.1.7.3, TATTDB).

Если порт не стабилизировал свое состояние после 200 мс, драйвер хаба запретит порт и остановит энумерацию. Подсистеме PnP не будет сообщено об устройстве.

First Port Reset – первый сброс порта. Как только дебоунсинг успешно завершился, драйвер хаба выдаст запрос на сброс (reset request) для порта. При нормальном функционировании это приведет к тому, что статус порта перейдет в состояние connected и enabled (соединено и разрешено), и устройство само ответит на адрес USB по умолчанию 0.

Сбросы порта всех устройств USB сериализованы через “enumeration lock” (блокировка энумерации) на базе контроллера хоста, поскольку в любой момент времени может быть разрешено только одно устройство USB с адресом USB по умолчанию 0.

Драйвер хаба получит enumeration lock до выдачи первого запроса сброса порта (port reset request), и отменит enumeration lock, когда устройству был присвоен адрес не по умолчанию, или когда энумерация будет отменена.

Драйвер хаба использует таймаут 5 секунд для случая, когда port reset request не завершится.

В течение ожидания завершения первого сброса порта драйвер хаба должен быть в состоянии обрабатывать следующие события:

Device Disconnect. Отключение устройства, энумерация отменена. Подсистеме PnP не будет сообщено об устройстве.

Overcurrent Change. Изменение перегрузки по току. В этом случае энумерация нормально завершится, за исключением случаев, когда определено, что превышение тока было. Подсистеме PnP не будет сообщено об устройстве.

Источник: http://microsin.net/adminstuff/windows/how-usb-stack-enumerate-device.html