[coreboot] Using USB keyboard in payloads
Peter Stuge
peter at stuge.se
Mon Nov 19 19:24:35 CET 2012
Hi Dave!
Dave Frodin wrote:
> Is this what you were wanting?
Exactly! Thanks! I'll explain the important parts:
> Bus 003 Device 002: ID 045e:009d Microsoft Corp. Wireless Optical Desktop 3.0
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 0 (Defined at Interface level)
bDeviceClass=0 says that the device as a whole does not follow any
single USB device class specification, and that class is instead
specified per-interface. USB devices can have multiple interfaces,
which all work in paralell.
> Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength 59
> bNumInterfaces 2
There are two interfaces in this device.
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 3 Human Interface Device
> bInterfaceSubClass 1 Boot Interface Subclass
> bInterfaceProtocol 1 Keyboard
The interface with bInterfaceNumber=0 is a HID class interface which
implements the HID-specific "Boot Interface Subclass" and speaks
using the HID Boot Subclass-specific "Keyboard" protocol. libpayload
must use this interface for reading keystrokes.
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 1
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 3 Human Interface Device
> bInterfaceSubClass 0 No Subclass
> bInterfaceProtocol 0 None
Tricky! The second interface, with bInterfaceNumber=1 is also a HID
class interface, but no further information is provided as to how
this interface actually works. The host software must explicitly know
this device (as identified by vid:pid) in order to make any use of
this second interface. libpayload can't use this for anything without
explicit support for this keyboard.
//Peter
More information about the coreboot
mailing list