USB en Windows: preguntas más frecuentes

En este tema se presentan las preguntas más frecuentes para los desarrolladores de controladores que no están familiarizados con el desarrollo e integración de dispositivos USB y controladores con sistemas operativos Windows.

Oigo numerosos términos USB producidos casi indistintamente. ¿Qué significan todos?

Digas que ves algo parecido: "Gracias a USB 3.0, puedo conectar una unidad usb SuperSpeed USB a mi controlador de host xHCI de mi PC y copiar archivos más rápido".

Vamos a comprender los términos USB en esa frase. USB 3.0, USB 2.0 y USB 1.0 hacen referencia al número de revisión de especificación USB del foro de implementadores USB. Las especificaciones USB definen cómo se comunican entre sí el equipo host y el dispositivo USB.

El número de versión también indica la velocidad máxima de transmisión. La revisión de especificación más reciente es USB 3.0, que especifica una velocidad de transmisión máxima de hasta 5 Gbps. USB 1.0 define dos velocidades de datos diferentes, USB de baja velocidad (hasta 1,5 Mbps) y USB de velocidad completa (hasta 12 Mbps). USB 2.0 define una nueva velocidad de datos, USB de alta velocidad (480 Mbps), a la vez que mantiene la compatibilidad con dispositivos de baja y velocidad completa. USB 3.0 sigue funcionando con todas las velocidades de datos definidas anteriormente. Si observa el empaquetado del producto, SuperSpeed USB hace referencia a los dispositivos USB 3.0 más recientes. Usb de alta velocidad se usa para describir dispositivos USB 2.0 de alta velocidad. USB, sin descriptor, hace referencia a dispositivos de baja velocidad y velocidad completa.

Además del protocolo USB, hay una segunda especificación para el controlador de host USB, la pieza de hardware en el equipo al que está conectado un dispositivo. La especificación interfaz del controlador de host define cómo interactúa el hardware y el software del controlador de host. La interfaz del controlador de host de eXtensible (xHCI) define un controlador de host USB 3.0. La interfaz de controlador de host mejorada (EHCI) define un controlador de host USB 2.0. El controlador de host universal (UHCI) y el controlador de host abierto (OHCI) son dos implementaciones alternativas de un controlador de host USB 1.0.

¿Mi PC tiene puertos USB 3.0?

Los puertos USB 3.0 se marcan con el logotipo USB de SuperSpeed o el puerto suele ser azul.

puerto con logotipo usb

puerto blue usb 3.0

Los equipos más recientes tienen puertos USB 3.0 y USB 2.0. Si desea que su dispositivo SuperSpeed USB funcione a la máxima velocidad, busque un puerto USB 3.0 y conecte el dispositivo a ese puerto. Un dispositivo SuperSpeed que está conectado a un puerto USB 2.0, funciona a alta velocidad.

También puede comprobar que un puerto determinado es un puerto USB 3.0 en Administrador de dispositivos. En Windows Vista o una versión posterior de Windows, abra Administrador de dispositivos y seleccione el puerto de la lista.

controladores de host usb en el administrador de dispositivos

Si tiene un controlador de host de eXtensible, es compatible con USB 3.0.

¿Necesito instalar controladores para mi controlador de host de eXtensible?

Windows 8 y Windows Server 2012 incluyen compatibilidad con USB 3.0.

Si el equipo tiene puertos USB 3.0 y ejecuta una versión de Windows anterior a Windows 8, el fabricante del equipo proporciona los controladores del controlador de host. Si necesita reinstalar esos controladores, debe obtenerlos del fabricante.

Si agregaste una tarjeta de controlador USB 3.0 a tu PC que ejecuta una versión de Windows anterior a Windows 8, debes instalar los controladores proporcionados por el fabricante de la tarjeta controladora.

En Windows 8, el conjunto proporcionado por Microsoft de controladores USB 3.0 (pila de controladores USB) funciona con la mayoría de los controladores host. La pila de controladores de Microsoft USB 3.0 no funciona con el controlador Fresco Logic FL1000. Para determinar si tiene un controlador FL1000, abra Administrador de dispositivos y expanda Controladores universales de bus serie. Para ver las propiedades del controlador, seleccione y mantenga presionado (o haga clic con el botón derecho) en el nodo del controlador. En la pestaña Detalles , seleccione la propiedad Ids de hardware en la lista. Si el identificador de hardware comienza con PCI\VEN_1B73&DEV_1000, es el FL1000. Para ese controlador, descargue e instale controladores del fabricante de su PC o tarjeta de controlador.

¿Por qué veo varios controladores de host en mi sistema?

Además de los dispositivos USB que se conectan a su PC, hay una serie de dispositivos integrados dentro del equipo que pueden estar conectados a través de USB, como una cámara web, lector de huellas digitales, lector de tarjetas SD. Para conectar todos esos dispositivos y seguir proporcionando puertos USB externos, el equipo admite varios controladores de host USB.

El controlador de host USB 3.0 xHCI es totalmente compatible con todas las velocidades del dispositivo USB, SuperSpeed, alta velocidad, velocidad completa y baja velocidad. Puede conectar cualquier dispositivo directamente a un controlador xHCI y esperar que ese dispositivo funcione. Para el controlador EHCI, no es el caso. Aunque la especificación USB 2.0 admite todas las velocidades de los dispositivos, el controlador EHCI solo admite dispositivos USB de alta velocidad. Para que los dispositivos USB de velocidad completa y baja velocidad funcionen, deben estar conectados al controlador EHCI a través de un concentrador USB 2.0, o deben estar conectados a un controlador UHCI o OHCI.

En el caso de los equipos más recientes, la mayoría de los puertos USB 2.0 expuestos por los equipos son descendentes de un concentrador USB 2.0. Este concentrador está conectado a un controlador EHCI. Esto permite que el puerto USB 2.0 del EQUIPO funcione con todas las velocidades de los dispositivos. Los dispositivos SuperSpeed se comportan como dispositivos de alta velocidad cuando se conectan a un puerto de 2.0.

Después de lanzar la especificación USB 2.0, los equipos usaron una combinación de controladores host para admitir todas las velocidades de los dispositivos. Un único puerto USB 2.0 se conectaría a dos controladores host, un controlador de host EHCI y un controlador de host UHCI o OHCI. Al conectar un dispositivo, el hardware enruta dinámicamente la conexión a uno de los dos hosts. La rutina depende de la velocidad del dispositivo.

¿Por qué veo dos concentradores en Administrador de dispositivos cuando he conectado solo un concentrador USB 3.0?

Mientras que los controladores host xHCI funcionan con cualquier velocidad del dispositivo, un centro de SuperSpeed solo funciona con dispositivos SuperSpeed. Para asegurarse de que los concentradores USB 3.0 pueden funcionar con todas las velocidades, tienen dos partes: un concentrador SuperSpeed y un concentrador USB 2.0. Un concentrador USB 3.0 es capaz de admitir todas las velocidades mediante el enrutamiento dinámico de dispositivos, al concentrador SuperSpeed o al concentrador 2.0, en función de la velocidad del dispositivo.

Abra Administrador de dispositivos, vea Dispositivos por conexión y busque el controlador de host de eXtensible. Al conectar un único concentrador USB 3.0 al puerto USB 3.0, hay dos concentradores de bajada del concentrador raíz de los controladores.

Concentrador usb 3.0 en el administrador de dispositivos

En el ejemplo siguiente, un dispositivo de almacenamiento SuperSpeed USB y un dispositivo de audio USB están conectados a un concentrador USB 3.0. Puede ver que el dispositivo de almacenamiento está en la bajada del centro de SuperSpeed y el dispositivo de audio está en bajada del concentrador USB 2.0.

Concentrador usb 3.0 con dispositivos conectados en el administrador de dispositivos

¿Qué conjunto de controladores se carga para los dispositivos conectados a 2.0 puertos?

Se carga un conjunto diferente de archivos binarios para cada tipo de controlador de host. Es importante comprender que la pila del controlador USB que Windows carga se correlaciona con el tipo de controlador host, no con la velocidad del dispositivo conectado.

En esta imagen, puede ver qué controladores se cargan para cada uno de los distintos tipos de controladores de host USB.

Pila de controladores usb en Windows 8

Si el puerto USB 3.0 se enruta correctamente a un controlador xHCI, Windows carga la pila de controladores xHCI (también denominada pila de controladores USB 3.0).

Si el puerto USB 2.0 está conectado a un controlador EHCI a través de un concentrador USB 2.0, el tráfico se mueve a través del controlador EHCI y se carga la pila de controladores USB 2.0.

Para obtener más información sobre los controladores de la pila de controladores USB, consulte Controladores del lado host USB en Windows.

Si los puertos USB 2.0 del equipo usan un controlador complementario, el controlador host al que se enruta el puerto depende de la velocidad del dispositivo. Por ejemplo, un dispositivo de baja velocidad se conecta a través de un controlador UHCI o OHCI, y usa el controlador USBUHCI o USBOHCI. El equipo enruta un dispositivo de alta velocidad a un controlador EHCI, por lo tanto, Windows usa el controlador USBEHCI.

Las diferentes velocidades del dispositivo no determinan el controlador que se carga para el controlador. Sin embargo, diferentes velocidades de dispositivo pueden determinar qué controlador se usa. El controlador siempre usa el mismo controlador.

Cómo determinar si mi dispositivo USB 3.0 funciona como SuperSpeed?

En Windows 8, en primer lugar, asegúrese de que tiene un puerto USB 3.0 y un controlador host xHCI. Si el dispositivo SuperSpeed USB está conectado al controlador host xHCI, Windows 8 muestra un mensaje "Conectado a USB 3.0" en partes específicas de la interfaz de usuario de Windows 8. Si el dispositivo está conectado a un controlador EHCI en lugar del controlador XHCI, los mensajes en su lugar leerán " El dispositivo puede funcionar más rápido cuando se conecta a USB 3.0".

Puede ver estos mensajes de interfaz de usuario en Configuración del equipo.

  1. Abra la barra de accesos (arrastre el cursor a la esquina superior o inferior derecha de la pantalla, escriba Tecla de Windows + C o deslice el dedo desde la derecha con el dedo).
  2. Seleccione Configuración y, a continuación, Cambie la configuración del equipo.
  3. Seleccione los dispositivos en Configuración del equipo.

Esta imagen muestra el mensaje de la interfaz de usuario cuando el dispositivo USB 3.0 está funcionando en SuperSpeed.

Captura de pantalla que muestra

Esta imagen muestra el mensaje de la interfaz de usuario cuando el dispositivo USB está funcionando a una velocidad de autobús inferior a SuperSpeed.

Captura de pantalla que muestra

Puede ver mensajes similares en Dispositivos e impresoras, como se muestra en estas imágenes.

Captura de pantalla que muestra el mensaje

dispositivo superspeed que funciona a alta velocidad

Si el dispositivo USB 3.0 es un dispositivo de almacenamiento, el Explorador de Windows muestra mensajes similares cuando se selecciona la etiqueta de volumen, como se muestra a continuación. Tenga en cuenta que el panel Ver -> Detalles debe estar seleccionado para que el mensaje sea visible.

Captura de pantalla que muestra un dispositivo superspeed U S B seleccionado en

dispositivo usb superspeed que funciona a alta velocidad

Si está escribiendo un controlador de dispositivo, la herramienta USBView , incluida en el Kit de controladores de Windows (WDK), es muy útil. Para el Windows 8 WDK, Microsoft actualizó USBView para mostrar información de SuperSpeed USB. Puedes usar esta herramienta para determinar si el dispositivo funciona o no en SuperSpeed. Esta imagen muestra un dispositivo USB 3.0 que funciona en SuperSpeed en USBView.

dispositivo usb superspeed que funciona a superspeed

Si es desarrollador de controladores de dispositivos, la pila de controladores USB expone un nuevo IOCTL denominado IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, que puede usar para consultar la información de velocidad de los dispositivos USB 3.0.

¿Por qué mi dispositivo USB SuperSpeed no es más rápido que un dispositivo USB de alta velocidad equivalente?

Por lo general, si un dispositivo USB 3.0 USB no es más rápido que un dispositivo USB de alta velocidad, no funciona en SuperSpeed. Si el dispositivo USB SuperSpeed está conectado a un puerto USB 3.0, puede que no funcione en SuperSpeed por los siguientes motivos:

  • Está usando un concentrador USB 2.0.

    Si usa un concentrador, compruebe que es un concentrador USB 3.0. Si usa un concentrador USB 2.0, cualquier dispositivo USB SuperSpeed conectado funcionará a alta velocidad. Reemplace el concentrador por un concentrador USB 3.0 o conecte el dispositivo directamente al puerto USB 3.0.

  • El firmware del concentrador USB 3.0 no está actualizado.

    Algunos concentradores USB 3.0 anteriores no funcionaban bien. Como resultado, Windows solo usa la parte 2.0 de esos centros. Si Administrador de dispositivos indica un concentrador "No funcional", como se muestra en esta imagen, Windows 8 no usa la parte 3.0 del centro.

    concentrador usb no funcional superspeed

    Puede conectar el dispositivo SuperSpeed directamente al puerto USB 3.0 o actualizar el firmware en el concentrador. Windows 8 reconoce los concentradores que tienen firmware más reciente.

  • El dispositivo está conectado con un cable USB 2.0.

    Asegúrese de que el cable que se usa para conectar el dispositivo es un cable USB 3.0. También es posible que el cable USB 3.0 tenga problemas de integridad de señal. En ese caso, el dispositivo podría cambiar a alta velocidad. Si esto sucede, debe usar un cable USB 3.0 diferente.

  • El firmware del dispositivo no está actualizado.

    Actualice el firmware del dispositivo USB SuperSpeed mediante la obtención de la versión más reciente del sitio web del fabricante. Algunos fabricantes de dispositivos USB SuperSpeed liberan correcciones, para errores encontrados en el dispositivo, como actualizaciones de firmware.

  • El firmware del controlador host no está actualizado.

    Actualice el firmware del controlador USB 3.0 obteniendo la versión más reciente del sitio del fabricante del equipo o del sitio del fabricante de la tarjeta del complemento. Algunos fabricantes de controladores USB 3.0 liberan correcciones, para errores encontrados en el controlador, como actualizaciones de firmware.

  • El BIOS del sistema no está actualizado.

    Actualice el BIOS del sistema obteniendo la versión más reciente de su fabricante de PC. En algunas placas base, el BIOS puede enrutar incorrectamente un dispositivo conectado a un controlador host xHCI a un controlador EHCI. Ese enrutamiento incorrecto obliga a un dispositivo USB SuperSpeed a funcionar a alta velocidad. Una actualización del BIOS puede corregir este problema.

¿Es posible tener un compuesto y un dispositivo compuesto en una pieza de hardware?

Sí. Microsoft Natural Keyboard Pro, que tiene un concentrador con tecnología de bus de tres puertos, es un ejemplo de un dispositivo USB compuesto compuesto. El dispositivo tiene un dispositivo compuesto conectado al puerto 1. Se exponen dos puertos adicionales al usuario final.

El dispositivo que está conectado al puerto 1 es un dispositivo compuesto de baja velocidad. El dispositivo tiene dos interfaces, ambas que cumplen con la definición de clase de dispositivo estándar USB para dispositivos de interfaz humana (HID). El dispositivo compuesto proporciona dos interfaces HID en lugar de multiplexar todas las colecciones en una única interfaz HID mediante colecciones de nivel superior. Este diseño se eligió para la compatibilidad con bios más antiguos.

¿Por qué algunos de mis dispositivos USB se vuelven a instalar cuando se mueven a un puerto nuevo?

En los sistemas operativos Windows 2000 y versiones posteriores, se crea un nuevo objeto de dispositivo físico (PDO) cuando un dispositivo USB se mueve de un puerto a otro. Si el hardware informa de un número de serie USB único, no se crea un nuevo PDO.

Para reutilizar el mismo PDO y asegurarse de que la experiencia del dispositivo no cambia si el dispositivo se reinstala en el mismo puerto o en un puerto nuevo, los proveedores de hardware deben almacenar un número de serie en su dispositivo. Según los requisitos del Programa de certificación de hardware de Windows, el número de serie debe ser único para todos los dispositivos que comparten el identificador de instalación del dispositivo.

¿Hay una lista de recomendaciones de diseño para el empaquetado de productos USB?

USB-IF ha trabajado con Microsoft y otras empresas miembro de USB-IF para desarrollar una lista de recomendaciones para que los proveedores de hardware independientes incluyan en su empaquetado.

Hay más información disponible en el sitio web USB.

Para USB Hi-Speed y SuperSpeed, consulte: https://www.usb.org/.

¿Tengo que volver a escribir el controlador cliente para admitir dispositivos USB 3.0?

Todos los controladores de cliente existentes deben seguir funcionando, tal como está, cuando un dispositivo de baja, completa o de alta velocidad está conectado a un puerto USB 3.0. En Windows 8, hemos asegurado la compatibilidad con los controladores de cliente existentes.

La pila del controlador USB 3.0 mantiene los niveles IRQL, el contexto del autor de la llamada y el estado de error; vuelva a intentar la frecuencia y el tiempo al interactuar con los dispositivos y mucho más para asegurarse de que los controladores existentes siguen funcionando. Todavía es muy importante probar.

Se producen errores comunes porque:

  • El análisis del descriptor de punto de conexión del controlador se interrumpe debido a la presencia de descriptores complementarios del punto de conexión SuperSpeed.
  • Debido a una mayor velocidad, es posible que se produzcan problemas de tiempo en el nivel de protocolo de aplicación.
  • El tamaño máximo de paquete admitido por el punto de conexión puede ser diferente.
  • Debido a la administración de energía de la función, el tiempo de la operación de suspensión selectiva podría ser diferente.

En Windows 7 y versiones anteriores de los sistemas operativos, la pila de controladores USB 3.0 la proporciona terceros. Por lo tanto, le recomendamos encarecidamente que pruebe el controlador para trabajar con pilas de controladores USB de terceros.

Los nuevos controladores de cliente en Windows 8 para dispositivos USB de alta velocidad y SuperSpeed deben optar por nuevas funcionalidades.

¿Qué controlador se carga para mi dispositivo de almacenamiento SuperSpeed, Uaspstor.sys o Usbstor.sys?

El protocolo SCSI conectado USB (UAS) es un nuevo protocolo de almacenamiento masivo diseñado para mejorar el rendimiento a través del protocolo de almacenamiento masivo USB establecido, transporte de solo masa (BOT). Para ello, reduce la sobrecarga del protocolo, admite la puesta en cola de comandos nativos SATA (NCQ) y procesa varios comandos en paralelo. Para ello, UAS usa una nueva característica USB 3.0 para transferencias masivas denominadas secuencias.

El controlador de almacenamiento masivo existente, Usbstor.sys, usa el protocolo BOT. Funciona con todas las velocidades de los dispositivos, incluidos los dispositivos USB SuperSpeed.

Para Windows 8, Microsoft incluye un nuevo controlador de clase de almacenamiento masivo, Uaspstor.sys que usa el protocolo UAS. Dado que las secuencias son nuevas en USB 3.0, por lo que Uaspstor.sys solo puede usar secuencias cuando el hardware admite secuencias (un dispositivo USB SuperSpeed está conectado a un controlador de host xHCI). El controlador también incluye compatibilidad con flujos de software, por lo que también puede cargarse para dispositivos que funcionan a alta velocidad, independientemente del tipo de host.

Si conecta un dispositivo de almacenamiento masivo a Windows 8 y ese dispositivo admite UAS, Windows carga Uaspstor.sys. En algunos casos, puede haber problemas conocidos con flujos de hardware en un controlador de host xHCI específico o problemas conocidos con la implementación del protocolo UAS de un dispositivo. En esos casos, Windows recurre al protocolo BOT y carga el controlador Usbstor.sys en su lugar.

Uaspstor.sys es nuevo en Windows 8. No está presente en versiones anteriores de Windows.

¿Qué clases DWG USB admite Microsoft?

Windows admite varias clases USB que el grupo de trabajo de dispositivos USB (DWG) ha definido. Para obtener la lista actual de especificaciones de clase USB y códigos de clase, visite el sitio web DWG USB en https://www.usb.org/documents.

En esta tabla se resaltan las clases DWG USB que se admiten en Windows y también se identifican las versiones de Windows que admiten cada clase.

Especificación de clase bDeviceClass Code Nombre del controlador Compatibilidad con Windows
Clase Bluetooth 0xE0 Bthusb.sys Windows XP y versiones posteriores
Dispositivos de interfaz de tarjeta inteligente o chip (CCID) 0x0B Usbccid.sys

Windows Server 2008 y versiones posteriores

Windows Vista y versiones posteriores

Windows Server 2003

Windows XP

Windows 2000

Clase Hub 0x09 Usbhub.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Dispositivo de interfaz de usuario (HID) 0x03 Hidusb.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Clase de almacenamiento masivo (MSC) 0x08 Usbstor.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

SCSI conectado a USB (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

Clase de impresión 0x07 Usbprint.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Examen/creación de imágenes (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Transferencia de medios (MTP) 0x06 WpdUsb.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Clase de audio USB 0x01 Usbaudio.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Clase Modem (CDC) 0x02 Usbser.sys

Windows Server 2003 y versiones posteriores

Windows XP y versiones posteriores

Windows 2000 y versiones posteriores

Clase de vídeo (UVC) 0x0E Usbvideo.sys

Windows Vista y versiones posteriores

Windows XP

*Las instrucciones especiales son necesarias para cargar este controlador porque este controlador podría haberse liberado más adelante que el sistema operativo. Es posible que los controladores de clase de Windows no admitan todas las características que se describen en una especificación de clase DWG. En este caso, el controlador no se carga en función de la coincidencia de clase. Para obtener más información sobre las características implementadas dentro de una especificación de clase, consulte la documentación de WDK.

¿Qué clase de configuración de dispositivo debo usar para un dispositivo USB personalizado?

Microsoft proporciona clases de instalación definidas por el sistema para la mayoría de los tipos de dispositivos. Los GUID de clase de instalación definidos por el sistema se definen en Devguid.h. Para obtener más información, consulte WDK. Para obtener una lista de GUID de clase de Windows, consulte estos temas:

Los proveedores de hardware independientes deben usar la clase de instalación asociada al tipo de dispositivo USB, no al tipo de bus. Si está desarrollando un tipo de dispositivo para el que Microsoft no ha proporcionado un GUID de clase existente, puede definir una nueva clase de configuración de dispositivo.

En Windows 8, se ha definido una nueva clase de instalación, denominada USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}). Si está desarrollando un tipo de dispositivo, asocie el dispositivo a USBDevice en lugar de la clase de instalación, USB. La clase USBDevice funciona en Windows Vista y versiones posteriores del sistema operativo.

La clase de instalación USB (ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}) solo está reservada para controladores de host USB y concentradores USB, y no debe usarse para otras categorías de dispositivos. El uso incorrecto de esta clase de instalación puede hacer que el controlador de dispositivo produzca un error en las pruebas del logotipo de Windows.

¿Por qué mi CPU no entra en C3 cuando adjunto algunos dispositivos USB?

Cuando se conecta un dispositivo USB, el controlador de host USB sondea el programador de fotogramas, que es una operación maestra de bus de acceso directo a memoria (DMA). Los "eventos de interrupción", como el tráfico maestro de bus, las interrupciones o otras actividades del sistema, mueven una CPU fuera de C3 porque, por definición, la memoria caché de la CPU no se puede posponer mientras está en C3.

Hay dos formas de evitar este problema:

  • Eliminación de hardware.

    En ocasiones, el hardware se puede desconectar electrónicamente del bus serie universal. Por ejemplo, cuando se quita el medio de almacenamiento del lector USB, el lector USB puede emular una desconexión electrónica y volver a conectarse cuando se reinstala el medio. En este caso, las transiciones de C3 pueden producirse porque no hay dispositivos USB en el controlador host.

  • Suspensión selectiva.

    La única alternativa disponible en Windows XP y sistemas operativos posteriores es admitir la suspensión selectiva USB. Esta característica permite a un controlador suspender un dispositivo USB que controla cuando el dispositivo se vuelve inactivo, aunque el propio sistema permanece en un estado de energía totalmente operativo (S0). La suspensión selectiva es especialmente eficaz si todos los controladores de función USB lo admiten. Si incluso un controlador no lo admite, la CPU no puede entrar en C3. Para obtener más información sobre la suspensión selectiva, vea WDK.

¿Qué controladores de clase USB admiten la suspensión selectiva?

A continuación se muestra una lista de controladores de clase USB en Windows 8 que admiten suspensión selectiva:

  • Bluetooth

    Este controlador puede suspender de forma selectiva dispositivos en equipos que ejecutan Windows XP Service Pack 2 y versiones posteriores de Windows. El controlador requiere la radio Bluetooth para establecer los bits de reactivación automática y remota en el descriptor de configuración. El controlador suspende selectivamente (D2) la radio Bluetooth cuando no existen conexiones Bluetooth activas.

  • USB HID

    Este controlador puede suspender selectivamente un dispositivo HID. Es su responsabilidad desencadenar la señal de reactivación remota en todos los cambios de estado del dispositivo. Para habilitar la suspensión selectiva en la pila HID, el valor del Registro SelectiveSuspendEnabled debe estar habilitado para el VID+PID específico del dispositivo. Para obtener ejemplos, consulte Input.inf.

    En los sistemas que admiten el modo de espera conectado de Windows 8, este controlador entra en suspensión selectiva (D2) cuando el sistema está en espera conectada. Este controlador puede reactivar el sistema y activar la pantalla.

  • Concentrador USB

    Este controlador puede suspender selectivamente un centro raíz o externo cuando no hay ningún dispositivo conectado a él o cuando todos los dispositivos conectados a ese centro se pueden suspender de forma selectiva.

  • Módem USB

    Este controlador puede suspender selectivamente el dispositivo cuando no existen conexiones de módem activas.

  • Almacenamiento USB (BOT)

    Este controlador puede suspender de forma selectiva (D3) los dispositivos de almacenamiento en sistemas que admiten Windows 8 modo de espera conectado, cuando esos sistemas entran en modo de espera conectado. Al igual que HID, hay una invalidación del registro para habilitar la suspensión selectiva en todos los sistemas Windows 8.

  • Almacenamiento USB (UAS)

    Este controlador puede suspender selectivamente (D3) un dispositivo de almacenamiento cuando está inactivo durante un período de tiempo de espera de disco.

  • Vídeo USB

    Este controlador puede suspender selectivamente (D3) una cámara web en Windows Vista y el sistema operativo posterior.

  • USB Audio

    Este controlador puede suspender selectivamente (D3) un dispositivo de audio USB en Windows 7 y sistemas operativos posteriores cuando el equipo está encendido con batería.

  • USB compuesto

    Este controlador puede suspender de forma selectiva (D3) dispositivos compuestos cuando todos los elementos secundarios están en suspensión. En los sistemas que admiten D3-Cold, todos los elementos secundarios deben participar en D3-Cold.

  • Tarjeta inteligente USB

    Este controlador puede suspender de forma selectiva (D2) dispositivos de interfaz de tarjeta inteligente de forma predeterminada en los sistemas operativos Windows 7 y versiones posteriores.

  • Periféricos USB genéricos (WinUSB)

    Este controlador puede suspender de forma selectiva (D3) dispositivos de forma predeterminada en Windows Vista y sistemas operativos posteriores.

  • WWAN: 3G o WiMax Dongles

    Este controlador puede suspender de forma selectiva los dispositivos. Cuando hay una suscripción activa, el dispositivo escribe D2, sin una suscripción activa, el dispositivo escribe D3.

¿Por qué no puede un dispositivo USB despertar Windows desde S3?

Un dispositivo USB no puede despertar Windows de S3 por varios motivos, incluidos los siguientes:

  1. BIOS incorrecto.

    Compruebe que el BIOS más reciente está instalado en el equipo. Para obtener la revisión más reciente del BIOS para el equipo, visite el sitio web del OEM o EL ODM.

  2. BIOS que no está habilitado para reactivarse.

    Algunos BIOS permiten deshabilitar la reactivación de S3 y S4. Compruebe que el BIOS está habilitado para reactivarse desde S3.

  3. No se establece la clave del Registro USBBIOSx.

    Una instalación limpia de Windows XP no tiene la clave del Registro USBBIOSx. Si el OEM o el ODM validan que el BIOS puede reactivarse desde S3, establezca esta clave del Registro en 0x00 y reinicie el equipo.

  4. El controlador de host no tiene energía en S3 o S4.

    Muchas veces el PC corta la energía en una tarjeta de complemento cuando el EQUIPO está en un estado de potencia inferior. Si la tarjeta del complemento no tiene energía, no podrá detectar un evento de reactivación y no podrá reactivar el equipo.

Para obtener más información, consulta el solucionador de problemas usb en el Centro de ayuda y soporte técnico en Windows XP y versiones posteriores de Windows.

¿Necesito instalar controladores para mi controlador de host mejorado (USB 2.0)?

Las siguientes versiones de Windows admiten el controlador de host mejorado USB 2.0:

  • Windows Vista y versiones posteriores
  • Windows Server 2003 y versiones posteriores
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

Nota Dado que Windows 2000 y Windows XP se lanzaron antes de que el hardware USB 2.0 estuviera disponible, los controladores se lanzaron para esos sistemas operativos en los Service Packs. Para instalar controladores:

  1. Siga el procedimiento descrito en la respuesta a la primera pregunta para comprobar que el equipo tiene puertos USB 2.0 y que necesita instalar un controlador para el controlador host mejorado.

  2. En la ventana Administrador de dispositivos, expanda la sección Otros dispositivos como se explica en la primera pregunta y, a continuación, haga doble clic en Controlador de bus serie universal (USB).

  3. En la pestaña General del cuadro de diálogo Propiedades, seleccione Reinstalar controlador.

    reinstalar el controlador

  4. En el Asistente para agregar nuevo hardware, seleccione Instalar el software automáticamente (recomendado) y, a continuación, seleccione Siguiente. Continúe con el asistente, aceptando todas las opciones predeterminadas, hasta que llegue a la última página del asistente y, a continuación, seleccione Finalizar. Es posible que tenga que reiniciar el equipo para finalizar la instalación.

Nota Para asegurarse de que tiene instaladas las actualizaciones más recientes en el equipo, visite Windows Update periódicamente.

¿Puedo deshabilitar el aviso "Dispositivo USB HI-SPEED conectado a un puerto USB que no sea HI-SPEED"?

Windows XP y versiones posteriores de Windows crean un aviso emergente cuando un dispositivo USB de alta velocidad está conectado a un puerto USB que no admite alta velocidad. Para obtener el rendimiento más rápido del dispositivo, los usuarios deben seleccionar el aviso y seguir las instrucciones de la pantalla.

Para deshabilitar el aviso, siga estos pasos:

  1. Inicie Administrador de dispositivos, tal y como se describe en la primera pregunta de esta P+F.
  2. En la ventana Administrador de dispositivos, expanda el nodo Controladores de bus serie universal. Busque un controlador de host con la palabra "Universal" o "Abrir" en el título. Si encuentra uno, haga doble clic en él.
  3. En la pestaña Opciones avanzadas del cuadro de diálogo Propiedades , seleccione No informarme sobre errores USB.

Nota El procedimiento anterior deshabilita todos los avisos USB, no solo "Dispositivo USB HI-SPEED conectado al puerto no HI-SPEED".

¿Mi concentrador USB 2.0 es de tipo single-TT o multi-TT?

Un concentrador USB 2.0 puede tener un traductor de transacciones (TT) para todos los puertos de bajada en el concentrador (un solo TT) o puede tener un TT para cada puerto orientado hacia abajo en el concentrador (varios TT).

El valor del campo bDeviceProtocol del descriptor del dispositivo USB y el campo bInterfaceProtocol del descriptor de interfaz USB indican si un concentrador es de un solo TT o multi-TT:

  • Single-TT. bDeviceProtocol == 0x01
  • Multi-TT. bDeviceProtocol == 0x02

Usbhub.sys usa esta configuración para habilitar el modo multi-TT o el modo de un solo TT. En Windows XP y versiones posteriores, Usbhub.sys siempre habilita el modo multi-TT en un concentrador multi-TT. Para obtener más información sobre el diseño TT, consulte las secciones 11.14.1.3 y 11.23.1 de la especificación USB 2.0.

¿Qué caracteres o bytes son válidos en un número de serie USB?

El campo iSerialNumber del descriptor del dispositivo USB indica si el dispositivo tiene un número de serie y dónde se almacena el número, como se indica a continuación:

  • iSerialNumber == 0x00 : el dispositivo USB no tiene ningún número de serie.
  • iSerialNumber != 0x00 : el dispositivo USB tiene un número de serie. El valor asignado a iSerialNumber es el índice de cadena del número de serie.

Si el dispositivo tiene un número de serie, el número de serie debe identificar de forma única cada instancia del mismo dispositivo.

Por ejemplo, si dos descriptores de dispositivo tienen valores idénticos para los campos idVendor, idProduct y bcdDevice , el campo iSerialNumber debe ser diferente para distinguir un dispositivo del otro.

Plug and Play requiere que cada byte de un número de serie USB sea válido. Si un solo byte no es válido, Windows descarta el número de serie y trata el dispositivo como si no tuviera ningún número de serie. Los siguientes valores de bytes no son válidos para los números de serie USB:

  • 0x2C.
  • Valores menores que 0x20.
  • Valores mayores que 0x7F.

Para obtener más información sobre el valor de iSerialNumber , consulte la sección 9.6.1 de la especificación USB 2.0.

¿Qué LANGID se usa en una solicitud de cadena en compilaciones localizadas de Windows?

Un dispositivo USB indica la presencia de un número de serie estableciendo el campo iSerialNumber del descriptor del dispositivo USB en el índice de cadena del número de serie. Para recuperar el número de serie, Windows emite una solicitud de cadena con el identificador de idioma (LANGID) establecido en 0x0409 (inglés de EE. UU.). Windows siempre usa este LANGID para recuperar números de serie USB, incluso para versiones de Windows localizadas para otros lenguajes.

¿Qué LANGID se usa para extraer el número de serie de un dispositivo?

Un dispositivo USB indica la presencia de un número de serie estableciendo el campo iSerialNumber del descriptor del dispositivo USB en el índice de cadena del número de serie. Para recuperar el número de serie, Windows emite una solicitud de cadena con el identificador de idioma (LANGID) establecido en 0x0409 (inglés de EE. UU.). Windows siempre usa este LANGID para recuperar números de serie USB, incluso para versiones de Windows localizadas para otros lenguajes.

¿Cómo se deben asignar números a varias interfaces en un dispositivo compuesto?

Windows trata los dispositivos USB que tienen más de una interfaz en la primera configuración como dispositivos compuestos.

Para Windows XP Service Pack 1 y versiones anteriores de Windows:

  • Los números de interfaz deben basarse en cero.
  • Los números de interfaz deben ser consecutivos y aumentar.

Para Windows XP Service Pack 2 y versiones posteriores de Windows, los números de interfaz solo son necesarios para aumentar, no consecutivos.

Se debe asignar una configuración alternativa para una interfaz como se indica a continuación para todas las versiones de Windows:

  • El valor predeterminado de una interfaz siempre es el valor alternativo cero.
  • Los números de configuración alternativos adicionales deben ser consecutivos y aumentar.

Para obtener más información sobre la configuración alternativa, consulte la sección 9.6.5 de la especificación USB 2.0.

¿Cuáles son las principales restricciones impuestas por Usbccgp.sys?

Usbccgp.sys admite dispositivos compuestos para:

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Aunque es posible cargar Usbhub.sys como controlador primario para el dispositivo compuesto en estas y versiones posteriores de Windows, Microsoft no lo recomienda porque podría provocar errores de compatibilidad de hardware. En su lugar, debe usar Usbccgp.sys .

Para asegurarse de cargar el controlador correcto para el dispositivo compuesto, use las directivas Include and Needs de los archivos INF, como se indica a continuación:

Include = USB.INF
Needs = Composite.Dev

Las principales restricciones impuestas en los dispositivos y controladores de hardware por Usbccgp.sys son las siguientes:

  • Usbccgp solo admite la configuración predeterminada, configuración 0.

  • Usbccgp no admite la suspensión selectiva en Windows XP y Windows Server 2003. Esta característica solo se admite en Windows Vista y versiones posteriores de Windows. Nota Usbccgp admite la suspensión selectiva en Windows XP SP1 y versiones posteriores de Windows XP, pero con características limitadas. Para estas versiones de Windows, el dispositivo compuesto se coloca en Suspensión selectiva solo si cada función secundaria del dispositivo tiene un IRP inactivo pendiente. Usbccgp no admite la suspensión selectiva en Windows XP RTM

  • Usbccgp admite el descriptor de asociación de interfaz (IAD) solo en Windows XP SP2, Windows Server 2003 SP1 y versiones posteriores de Windows.

  • Usbccgp solo admite números de interfaz no consecutivos en Windows XP SP2, Windows Server 2003 SP1 y versiones posteriores de Windows.

Cómo habilitar el seguimiento de depuración para archivos binarios de núcleos USB?

Consulte la entrada de blog sobre cómo incluir y ver mensajes de seguimiento de WPP en los archivos PDB públicos de un controlador.

Para obtener información sobre los dispositivos USB y los eventos ETW, consulte Depuración de problemas de dispositivos USB mediante eventos ETW.

¿Windows admite descriptores de asociación de interfaz?

Sí. La notificación de cambio de ingeniería (ECN) del Descriptor de asociación de interfaz (IAD) USB 2.0 introdujo un nuevo método estándar para describir una agrupación de interfaces y su configuración alternativa dentro de una función. IAD se puede usar para identificar dos o más interfaces consecutivas y una configuración alternativa dentro de una función.

Microsoft está trabajando actualmente con IHD para desarrollar dispositivos que admitan IAD. Los siguientes sistemas operativos tienen compatibilidad con IAD:

  • Windows XP Service Pack 2 y versiones posteriores
  • Windows Server 2003 Service Pack 1 y versiones posteriores
  • Windows Vista

¿Controla la pila USB los MDL encadenados en una dirección URL?

Esta funcionalidad es compatible con la pila de controladores USB 3.0 que se incluye con Windows.

¿Un controlador puede tener más de un URB en un IRP?

No. Esta funcionalidad no es compatible con la pila USB que se incluye con Windows.

¿Windows admite concentradores compuestos USB?

Un dispositivo USB compuesto , también denominado dispositivo USB multifunción, expone varias funciones, cada una de las cuales se puede tratar como un dispositivo independiente. El sistema carga el controlador primario genérico USB, Usbccgp.sys, para actuar como controlador primario para eaech de las funciones del dispositivo. El controlador primario genérico USB enumera las funciones del dispositivo compuesto como si fueran dispositivos USB independientes y, a continuación, crea un PDO y construye una pila de dispositivos para cada función.

Un dispositivo USB compuesto no puede exponer una función que actúa como concentrador. Windows no enumera estos centros correctamente e intentar instalar el dispositivo podría provocar un bloqueo del sistema.