En informática , la clase de dispositivo de interfaz humana USB ( clase USB HID ) es parte de la especificación USB para periféricos de computadora : especifica una clase de dispositivo (un tipo de hardware de computadora ) para dispositivos de interfaz humana como teclados , ratones , controladores de juegos y dispositivos de visualización alfanuméricos .
La clase USB HID se define en una serie de documentos proporcionados por el Grupo de Trabajo de Dispositivos del Foro de Implementadores de USB . El documento principal utilizado para describir la clase USB HID es la Definición de clase de dispositivo para HID 1.11. [1]
Dispositivos
La clase USB HID describe los dispositivos que se utilizan con casi todas las computadoras modernas. Existen muchas funciones predefinidas en la clase USB HID. Estas funciones permiten a los fabricantes de hardware diseñar un producto según las especificaciones de clase USB HID y esperar que funcione con cualquier software que también cumpla con estas especificaciones.
El mismo protocolo HID se utiliza sin modificaciones en los dispositivos de interfaz humana Bluetooth . [2] La especificación del perfil de Bluetooth solo dirige a los lectores a la documentación de USB HID. En este sentido, esos dispositivos también pertenecen a la clase USB HID.
Teclados
Los teclados son un tipo común de dispositivo de clase USB HID. El teclado de clase USB HID normalmente está diseñado con un extremo IN que comunica las pulsaciones de teclas a la computadora y un extremo OUT que comunica el estado de los LED del teclado desde la computadora al teclado. El estándar PC 97 requiere que el BIOS de una computadora detecte y funcione con teclados de clase USB HID que están diseñados para usarse durante el proceso de arranque.
Algunos teclados implementan el perfil de teclado de arranque USB especificado en la definición de clase de dispositivo USB para dispositivos de interfaz humana (HID) v1.11 y están configurados explícitamente para utilizar el protocolo de arranque. Estos están limitados a la sustitución de 6 teclas (6KRO) e interrumpirán la CPU cada vez que se interrogue al teclado (incluso si no hay cambio de estado) a menos que el controlador USB anule este comportamiento. Este perfil está diseñado para permitir que el BIOS maneje un teclado USB en ausencia de un sistema operativo compatible con USB. El perfil recomendado para teclados que no están en modo de arranque en esta especificación limita los teclados a 6KRO y hace que respondan a una interrupción con un informe de estado al menos cada medio segundo (nuevamente, incluso si no hay cambio de estado) para implementar typematic (repitiendo el código de escaneo cuando la tecla se presiona el tiempo suficiente) a menos que el controlador USB esté programado para decirle al teclado que no haga esto. Sin embargo, los teclados en modo sin arranque son libres de implementar un perfil HID alternativo. [1]
El comportamiento mencionado anteriormente contrasta con la interfaz PS / 2 (que no debe confundirse con PlayStation 2), que admite la sustitución de teclas n (NKRO) para teclados capaces de admitirlo. La interfaz PS / 2 no interrumpe la CPU en absoluto cuando no hay cambios de estado, excepto cuando se mantiene presionada una tecla el tiempo suficiente para activar la tipografía. No tener que responder a un sondeo repetido ahorra energía, por lo que la interfaz PS / 2 se usa a menudo en los teclados internos de las computadoras portátiles.
Ratones
Los ratones de computadora son otro dispositivo de clase USB HID común. Los ratones USB HID pueden variar desde dispositivos simples de un solo botón hasta dispositivos compuestos de varios botones. La mayoría de los sistemas operativos modernos se envían con controladores para diseños de mouse HID estándar (el diseño de mouse moderno más común tiene dos botones dedicados y una rueda de mouse que funciona como el tercer botón); los ratones con funcionalidad ampliada requieren controladores personalizados del fabricante.
Los ratones USB tienen latencias más bajas que los ratones PS / 2 porque los ratones USB estándar a menudo se sondean a una frecuencia predeterminada de 125 Hz, mientras que los ratones PS / 2 estándar envían interrupciones a una frecuencia predeterminada de 100 Hz cuando tienen datos para enviar a la computadora. [3] [4] Además, los ratones USB no hacen que el controlador USB interrumpa el sistema cuando no tienen ningún cambio de estado para informar de acuerdo con el perfil predeterminado de la especificación USB HID para dispositivos de ratón. [1] Tanto PS / 2 como USB permiten anular la frecuencia de muestreo, con PS / 2 admitiendo una frecuencia de muestreo de hasta 200 Hz [5] y USB admitiendo una frecuencia de sondeo de hasta 1 kHz [3] siempre que el El mouse USB funciona a máxima velocidad o velocidades USB superiores.
Como resultado de la naturaleza impulsada por interrupciones de la interfaz del mouse PS / 2 que no requiere sondeo periódico, la interfaz PS / 2 ahorra energía, lo que la convierte en una opción popular para dispositivos señaladores integrados en computadoras portátiles.
Controladores de juegos
Los controladores de juegos modernos y los joysticks suelen ser dispositivos de clase USB HID. A diferencia de los dispositivos de puerto de juegos heredados , los dispositivos de juegos de clase USB HID normalmente no requieren controladores propietarios para funcionar. Casi todos los dispositivos de juego funcionarán con controladores integrados siempre que el dispositivo esté diseñado según los controladores y las especificaciones de clase USB HID.
Otros dispositivos
Las especificaciones de la clase USB HID permiten una gran cantidad de otros dispositivos bajo la clase USB HID. Algunos ejemplos son los controladores de simulación de automóviles, las máquinas de ejercicio, los dispositivos de telefonía , los termómetros, los controles de audio y la instrumentación médica. Incluso las fuentes de alimentación ininterrumpidas y los dongles de protección de software [6] se declaran en esta clase, a pesar de que a menudo no tienen ninguna interfaz humana. Cualquier dispositivo puede ser un dispositivo de clase USB HID siempre que un diseñador cumpla con las especificaciones lógicas de clase USB HID. Esto no quiere decir que no sea necesario enviar controladores para estos dispositivos, ni que un sistema operativo reconocerá inmediatamente el dispositivo. Esto solo significa que el dispositivo puede declararse a sí mismo en la clase de dispositivo de interfaz humana.
Vulnerabilidades de seguridad
La interfaz USB es vulnerable a vulnerabilidades de seguridad como BadUSB que abusan de la combinación de la capacidad del USB para conectar muchos tipos diferentes de dispositivos, su incapacidad para verificar que los dispositivos son realmente lo que dicen ser, la posibilidad de que los dispositivos USB cambien de tipo o anunciar subdispositivos adicionales mientras está enchufado, y su comportamiento predeterminado de aceptar cualquier dispositivo que se conecte a él. Como contramedida parcial, los periféricos PS / 2 se pueden utilizar en su lugar junto con la desactivación de todos los puertos USB. [7]
Conductores
Uno de los beneficios de una especificación bien definida como la clase USB HID es la abundancia de controladores de dispositivos disponibles en la mayoría de los sistemas operativos modernos. Los dispositivos de clase USB HID y sus funciones básicas se definen en la documentación USB-IF sin ningún software específico en mente. Debido a estas descripciones genéricas, es fácil para los diseñadores de sistemas operativos incluir controladores funcionales para dispositivos como teclados, ratones y otros dispositivos genéricos de interfaz humana. La inclusión de estos controladores genéricos permite una implementación más rápida de dispositivos y una instalación más sencilla por parte de los usuarios finales.
Especificaciones lógicas
Caracteristicas funcionales
La clase de dispositivo de interfaz humana USB se puede utilizar para describir tanto las clases de dispositivo como de interfaz. La clase de interfaz se utiliza cuando un dispositivo USB puede contener más de una función. Por lo tanto, es posible tener dispositivos USB con dos interfaces diferentes al mismo tiempo (por ejemplo, un teléfono USB puede usar un teclado cubierto por la clase HID y un altavoz cubierto por la clase de dispositivo de comunicaciones USB ).
Los dispositivos de interfaz también se definen con descriptores de subclase. El descriptor de subclase se utiliza para declarar un dispositivo de arranque. Un dispositivo de arranque cumple con un mínimo de adherencia a un protocolo básico y será reconocido por el BIOS de una computadora .
Cada interfaz USB HID se comunica con el host mediante una tubería de control o una tubería de interrupción . Las tuberías isócronas y a granel no se utilizan en dispositivos de clase HID. Se requieren transferencias de control IN y OUT para la enumeración; sólo se requiere una transferencia de interrupción IN para los informes HID. Las transferencias de interrupción OUT son opcionales en los dispositivos de clase HID.
Informes
La clase USB HID requiere que cada dispositivo describa cómo se comunicará con el dispositivo host para predecir y definir con precisión todos los dispositivos de interfaz humana actuales y futuros. Durante la enumeración, el dispositivo describe cómo se estructurarán sus informes para que el dispositivo anfitrión pueda prepararse adecuadamente para recibir esta información.
El host sondea periódicamente el punto final IN de interrupción del dispositivo durante la operación. Cuando el dispositivo tiene datos para enviar, forma un informe y lo envía como respuesta al token de encuesta. Los dispositivos comunes, como teclados y ratones, envían informes que cumplen con los estándares establecidos por el Foro de Implementadores de USB (USB-IF). [8] Cuando un proveedor fabrica un dispositivo de clase USB HID personalizado, los informes formados por el dispositivo deben coincidir con la descripción del informe proporcionada durante la enumeración y el controlador instalado en el sistema host. De esta manera, es posible que la clase USB HID sea extremadamente flexible.
API USB HID
Hay dos niveles de API relacionados con USB HID: el nivel USB y el nivel del sistema operativo . A nivel USB, existe un protocolo para que los dispositivos anuncien sus capacidades y el sistema operativo para analizar los datos que obtiene. Luego, el sistema operativo ofrece una vista de nivel superior a las aplicaciones, que no necesitan incluir soporte para dispositivos individuales sino para clases de dispositivos. Esta capa de abstracción permite que un juego funcione con cualquier controlador USB, por ejemplo, incluso los creados después del juego.
Ver también
- USB sobre la marcha (OTG)
Referencias
- ^ a b c "Definición de clase de dispositivo para HID 1.11" (PDF) .
- ^ "HID Spec v1_0.zip" . Consultado el 22 de enero de 2013 .
- ^ a b "Guía de optimización del mouse: corrección de aceleración y tasa de sondeo" . eu.cybergamer.com. 2007-04-09 . Consultado el 9 de julio de 2014 .
- ^ "LCOM 2012/2013: Lab5" . web.fe.up.pt . Consultado el 9 de julio de 2014 .
- ^ Adam Chapweske. "Interfaz de ratón PS / 2" . computer-engineering.org . Consultado el 9 de julio de 2014 .
- ^ "USB Dongle es un dispositivo HID sin controlador., SecuTech Solution Inc" . News.thomasnet.com . Consultado el 18 de enero de 2014 .
- ^ "Fallo de seguridad masivo e indetectable encontrado en USB: es hora de sacar su teclado PS / 2 del armario" . ExtremeTech . Consultado el 26 de octubre de 2015 .
- ^ "Documentación de HID relacionada con Microsoft" . USB.org . Consultado el 22 de enero de 2013 .
enlaces externos
- USB.org : la página de inicio de USB Implementers Forum, Inc.
- USB en pocas palabras
- Herramientas USB-IF HID : la página de USB-IF dedicada a los dispositivos de interfaz humana, incluye toda la documentación aprobada
- Página de Lakeview Research HID : una colección de artículos y código de ejemplo para dispositivos USB HID.
- Guías del sistema de PC : especificaciones del sistema de PC de Microsoft (por ejemplo, PC '97, PC '98)