Knowledge

USB human interface device class

Source 📝

231:(6KRO) and will interrupt the CPU every time the keyboard is polled (even if there is no state change) unless the USB controller is programmed to tell the keyboard to respond with negative acknowledgments, which the USB controller discards in hardware without interrupting the CPU, when there are no state changes to report. This profile is intended to allow the BIOS to handle a USB keyboard in the absence of a USB-aware operating system. The recommended profile for keyboards that are not in boot mode in this specification limits keyboards to 6KRO and causes them to respond to an interrupt with a status report at least every half second (again, even if there is no state change) in order to implement typematic (repeating the 36: 264:
the system when they have no status change to report according to the USB HID specification's default profile for mouse devices. Both PS/2 and USB allow the sample rate to be overridden, with PS/2 supporting a sampling rate of up to 200 Hz and USB supporting a polling rate up to 1 kHz as long as the USB mouse runs at full-speed or higher USB speeds.
345:
The USB human interface device class can be used to describe both device and interface classes. The interface class is used when a USB device can contain more than one function. It is possible, therefore, to have USB devices with two different interfaces at the same time (for example, a USB telephone
327:
available in most modern operating systems. The USB HID class devices and their basic functions are defined in USB-IF documentation without any specific software in mind. Because of these generic descriptions, it is easy for operating system designers to include functioning drivers for devices such
263:
USB mice have lower latencies than PS/2 mice because standard USB mice are often polled at a default rate of 125 Hz while standard PS/2 mice send interrupts at a default rate of 100 Hz when they have data to send to the computer. Also, USB mice do not cause the USB controller to interrupt
414:
level. At the USB level, there is a protocol for devices to announce their capabilities and the operating system to parse the data it gets. The operating system then offers a higher-level view to applications, which do not need to include support for individual devices but for classes of devices.
301:
declare themselves under this class, despite the fact they often have no human interface at all. Any device can be a USB HID class device as long as a designer meets the USB HID class logical specifications. This is not to say that there is no need to ship drivers for these devices, nor that an
393:
The USB HID class requires that every device describes how it will communicate with the host device in order to accurately predict and define all current and future human interface devices. During enumeration the device describes how its reports are to be structured so that the host device can
314:
that abuse the combination of USB's ability to connect many different kinds of devices, its inability to verify that devices are actually what they claim to be, the possibility for USB devices to change their type or announce additional subdevices while plugged in, and its default behavior of
255:
Computer mouse is another common USB HID class device. USB HID mice can range from single-button simple devices to multi-button compound devices. Most modern operating systems ship with drivers for standard HID mouse designs (the most common modern mouse design has two dedicated buttons and a
195:
The USB HID class describes devices used with nearly every modern computer. Many predefined functions exist in the USB HID class. These functions allow hardware manufacturers to design a product to USB HID class specifications and expect it to work with any software that also meets these
211:
Keyboards are a common kind of USB HID class device. The USB HID class keyboard is normally designed with an IN endpoint that communicates keystrokes to the computer and an OUT endpoint that communicates the status of the keyboard's LEDs from the computer to the keyboard. The
402:(USB-IF). When a vendor makes a custom USB HID class device, the reports formed by the device need to match the report description given during enumeration and the driver installed on the host system. In this way it is possible for the USB HID class to be extremely flexible. 397:
The host periodically polls the device's interrupt IN endpoint during operation. When the device has data to send it forms a report and sends it as a reply to the poll token. Common devices such as keyboards and mice send reports that are compliant with standards set by the
235:
when the key is pressed long enough) unless the USB controller is programmed to tell the keyboard to reply with negative acknowledgments whenever there are no state changes to report. However, keyboards in non-boot mode are free to implement an alternative HID profile.
280:
devices, USB HID class game devices do not normally require proprietary drivers to function. Nearly all game devices will function using onboard drivers as long as the device is designed around the drivers and the USB HID class specifications.
384:
pipes are not used in HID class devices. Both IN and OUT control transfers are required for enumeration; only an IN interrupt transfer is required for HID reports. OUT interrupt transfers are optional in HID-class devices.
579: 328:
as keyboards, mice, and other generic human interface devices. The inclusion of these generic drivers allows for faster deployment of devices and easier installation by end-users.
203:
human interface devices. The Bluetooth profile specification only points readers to the USB HID documentation. In this sense those devices also belong to the USB HID class.
227:
profile specified in the USB Device Class Definition for Human Interface Devices (HID) v1.11 and are explicitly configured to use the boot protocol. These are limited to
53: 289:
The USB HID class specifications allow for myriad other devices under the USB HID class. Some examples are automobile simulation controllers, exercise machines,
315:
accepting any device that connects to it. As a partial countermeasure, PS/2 peripherals may be used instead together with disabling all USB ports.
302:
operating system will immediately recognize the device. This only means that the device can declare itself under the human interface device class.
100: 493: 72: 79: 119: 353:
The interface devices are also defined with subclass descriptors. The subclass descriptor is used to declare a device bootable. A
86: 833: 347: 187:'s Device Working Group. The primary document used to describe the USB HID class is the Device Class Definition for HID 1.11. 294: 68: 57: 794: 678: 298: 260:
that doubles as the third button); mice with extended functionality require custom drivers from the manufacturer.
557: 650: 859: 93: 46: 580:"Massive, undetectable security flaw found in USB: It's time to get your PS/2 keyboard out of the cupboard" 828: 699: 399: 184: 157: 470: 900: 220:
must detect and work with USB HID class keyboards that are designed to be used during the boot process.
358: 161: 149: 453: 17: 323:
One of the benefits of a well-defined specification like the USB HID class is the abundance of
885: 880: 816: 811: 671: 514: 419:
allows a game to work with any USB controller, for example, even ones created after the game.
416: 165: 153: 411: 641:: the USB-IF's page devoted to human interface devices, includes all approved documentation 799: 173: 890: 228: 177: 925: 849: 804: 776: 633: 428: 324: 931: 727: 720: 713: 706: 664: 257: 604: 536: 354: 169: 35: 905: 864: 329: 290: 277: 240: 200: 133: 273: 232: 293:
devices, thermometers, audio controls and medical instrumentation. Even
895: 761: 756: 751: 746: 647:: a collection of articles about, and example code for USB HID devices. 410:
There are two levels of APIs related to USB HID: the USB level and the
346:
may use a keypad covered by the HID class and a speaker covered by the
183:
The USB HID class is defined in a number of documents provided by the
910: 854: 311: 644: 766: 213: 368:
Each USB HID interface communicates with the host using either a
771: 362: 217: 660: 786: 687: 558:"USB Dongle is driverless, HID device., SecuTech Solution Inc" 145: 29: 494:"Mouse Optimization Guide: Acceleration Fix and Polling Rate" 310:
The USB interface is vulnerable to security exploits such as
247:-key rollover (NKRO) for keyboards capable of supporting it. 653:: Microsoft's PC System specifications (e.g. PC '97, PC '98) 638: 332:
was the first version of Windows that supported USB HID.
656: 627: 873: 842: 785: 739: 239:The above-mentioned behavior is in contrast to the 60:. Unsourced material may be challenged and removed. 630:: the homepage of the USB Implementers Forum, Inc. 276:are often USB HID class devices. Unlike legacy 394:properly prepare to receive this information. 672: 8: 488: 486: 199:The same HID protocol is used unmodified in 679: 665: 657: 448: 446: 444: 152:: it specifies a device class (a type of 120:Learn how and when to remove this message 440: 361:and will be recognized by a computer's 454:"Device Class Definition for HID 1.11" 605:"Microsoft Related HID Documentation" 357:meets a minimum adherence to a basic 7: 216:standard requires that a computer's 58:adding citations to reliable sources 578:Anthony, Sebastian (31 July 2014). 69:"USB human interface device class" 25: 138:USB human interface device class 34: 18:USB Human Interface Device class 496:. eu.cybergamer.com. 2007-04-09 348:USB communications device class 45:needs additional citations for 295:uninterruptible power supplies 1: 223:Some keyboards implement the 272:Modern game controllers and 299:software protection dongles 948: 645:Lakeview Research HID Page 539:. computer-engineering.org 341:Functional characteristics 243:interface, which supports 694: 27:Type of USB specification 860:USB flash drive security 537:"PS/2 Mouse Interfacing" 306:Security vulnerabilities 158:human interface devices 700:USB Implementers Forum 515:"LCOM 2012/2013: Lab5" 400:USB Implementers Forum 336:Logical specifications 185:USB Implementers Forum 560:. News.thomasnet.com 150:computer peripherals 54:improve this article 471:"HID Spec v1_0.zip" 144:) is a part of the 148:specification for 919: 918: 886:Ethernet over USB 881:Enhanced mini-USB 634:USB in a Nutshell 417:abstraction layer 225:USB Boot Keyboard 176:and alphanumeric 154:computer hardware 130: 129: 122: 104: 16:(Redirected from 939: 730: 723: 716: 709: 702: 681: 674: 667: 658: 651:PC System Guides 639:USB-IF HID Tools 616: 615: 613: 612: 601: 595: 594: 592: 590: 575: 569: 568: 566: 565: 554: 548: 547: 545: 544: 535:Adam Chapweske. 532: 526: 525: 523: 522: 511: 505: 504: 502: 501: 490: 481: 480: 478: 477: 467: 461: 460: 458: 450: 412:operating system 268:Game controllers 196:specifications. 174:game controllers 125: 118: 114: 111: 105: 103: 62: 38: 30: 21: 947: 946: 942: 941: 940: 938: 937: 936: 922: 921: 920: 915: 869: 838: 824:Human interface 781: 735: 726: 719: 712: 705: 698: 690: 685: 624: 619: 610: 608: 603: 602: 598: 588: 586: 577: 576: 572: 563: 561: 556: 555: 551: 542: 540: 534: 533: 529: 520: 518: 513: 512: 508: 499: 497: 492: 491: 484: 475: 473: 469: 468: 464: 456: 452: 451: 442: 438: 425: 408: 391: 343: 338: 321: 308: 287: 270: 253: 209: 193: 178:display devices 126: 115: 109: 106: 63: 61: 51: 39: 28: 23: 22: 15: 12: 11: 5: 945: 943: 935: 934: 924: 923: 917: 916: 914: 913: 908: 903: 901:Serial adapter 898: 893: 888: 883: 877: 875: 871: 870: 868: 867: 862: 857: 852: 846: 844: 840: 839: 837: 836: 834:Communications 831: 826: 821: 820: 819: 809: 808: 807: 802: 791: 789: 787:Device classes 783: 782: 780: 779: 774: 769: 764: 759: 754: 749: 743: 741: 737: 736: 734: 733: 732: 731: 724: 717: 703: 695: 692: 691: 686: 684: 683: 676: 669: 661: 655: 654: 648: 642: 636: 631: 623: 622:External links 620: 618: 617: 596: 570: 549: 527: 517:. web.fe.up.pt 506: 482: 462: 439: 437: 434: 433: 432: 424: 421: 407: 404: 390: 387: 342: 339: 337: 334: 325:device drivers 320: 317: 307: 304: 286: 283: 269: 266: 252: 249: 229:6-key rollover 208: 205: 192: 189: 128: 127: 42: 40: 33: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 944: 933: 930: 929: 927: 912: 909: 907: 904: 902: 899: 897: 894: 892: 889: 887: 884: 882: 879: 878: 876: 872: 866: 863: 861: 858: 856: 853: 851: 850:Juice jacking 848: 847: 845: 841: 835: 832: 830: 827: 825: 822: 818: 815: 814: 813: 810: 806: 803: 801: 798: 797: 796: 793: 792: 790: 788: 784: 778: 777:USB On-The-Go 775: 773: 770: 768: 765: 763: 760: 758: 755: 753: 750: 748: 745: 744: 742: 738: 729: 725: 722: 718: 715: 711: 710: 708: 704: 701: 697: 696: 693: 689: 682: 677: 675: 670: 668: 663: 662: 659: 652: 649: 646: 643: 640: 637: 635: 632: 629: 626: 625: 621: 606: 600: 597: 585: 581: 574: 571: 559: 553: 550: 538: 531: 528: 516: 510: 507: 495: 489: 487: 483: 472: 466: 463: 455: 449: 447: 445: 441: 435: 430: 429:USB On-The-Go 427: 426: 422: 420: 418: 413: 405: 403: 401: 395: 388: 386: 383: 379: 375: 371: 366: 364: 360: 356: 351: 349: 340: 335: 333: 331: 326: 318: 316: 313: 305: 303: 300: 296: 292: 285:Other devices 284: 282: 279: 275: 267: 265: 261: 259: 250: 248: 246: 242: 237: 234: 230: 226: 221: 219: 215: 206: 204: 202: 197: 190: 188: 186: 181: 179: 175: 171: 167: 163: 159: 155: 151: 147: 143: 142:USB HID class 139: 135: 124: 121: 113: 110:November 2009 102: 99: 95: 92: 88: 85: 81: 78: 74: 71: –  70: 66: 65:Find sources: 59: 55: 49: 48: 43:This article 41: 37: 32: 31: 19: 823: 795:Mass storage 609:. Retrieved 599: 587:. Retrieved 583: 573: 562:. Retrieved 552: 541:. Retrieved 530: 519:. Retrieved 509: 498:. Retrieved 474:. Retrieved 465: 409: 396: 392: 381: 377: 373: 369: 367: 352: 344: 322: 309: 288: 271: 262: 254: 244: 238: 224: 222: 210: 198: 194: 182: 141: 137: 131: 116: 107: 97: 90: 83: 76: 64: 52:Please help 47:verification 44: 800:Flash drive 584:ExtremeTech 406:USB HID API 378:Isochronous 372:pipe or an 355:boot device 258:mouse wheel 170:touchscreen 906:PoweredUSB 891:Decoration 865:USB killer 714:connectors 611:2013-01-22 589:26 October 564:2014-01-18 543:2014-07-09 521:2014-07-09 500:2014-07-09 476:2013-01-22 436:References 330:Windows 98 80:newspapers 805:FlashCard 607:. USB.org 374:interrupt 291:telephony 278:game port 274:joysticks 207:Keyboards 201:Bluetooth 162:keyboards 134:computing 926:Category 843:Security 740:Versions 707:Hardware 423:See also 359:protocol 233:scancode 160:such as 721:cabling 628:USB.org 389:Reports 370:control 319:Drivers 191:Devices 94:scholar 911:WebUSB 855:BadUSB 376:pipe. 312:BadUSB 156:) for 136:, the 96:  89:  82:  75:  67:  874:Other 829:Video 767:USB-C 728:power 457:(PDF) 431:(OTG) 415:This 251:Mouse 214:PC 97 101:JSTOR 87:books 812:UASP 772:USB4 591:2015 382:bulk 380:and 363:BIOS 297:and 241:PS/2 218:BIOS 166:mice 73:news 932:USB 896:Hub 817:SSD 762:3.0 757:2.0 752:1.1 747:1.0 688:USB 350:). 146:USB 132:In 56:by 928:: 582:. 485:^ 443:^ 365:. 180:. 172:, 168:, 164:, 680:e 673:t 666:v 614:. 593:. 567:. 546:. 524:. 503:. 479:. 459:. 245:n 140:( 123:) 117:( 112:) 108:( 98:· 91:· 84:· 77:· 50:. 20:)

Index

USB Human Interface Device class

verification
improve this article
adding citations to reliable sources
"USB human interface device class"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computing
USB
computer peripherals
computer hardware
human interface devices
keyboards
mice
touchscreen
game controllers
display devices
USB Implementers Forum
Bluetooth
PC 97
BIOS
6-key rollover
scancode
PS/2
mouse wheel

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.