USOO8898349B1

(12) United States Patent (10) Patent No.: US 8,898,349 B1 Mondal et al. (45) Date of Patent: Nov. 25, 2014

(54) IPMI OVER USB DATA TRANSFER (56) References Cited BETWEEN HOST COMPUTER AND BASEBOARD MANAGEMENT CONTROLLER U.S. PATENT DOCUMENTS (BMC) 8,069,257 B1 * 1 1/2011 Bhatia et al...... TO9/230 (71) Applicant: American Megatrends, Inc., Norcross, * cited by examiner GA (US) Primary Examiner — Idriss N. Alrobaye (72) Inventors: Umasankar Mondal, Snellville, GA Assistant Examiner — David Martinez (US); Jay Pancholi, Duluth, GA (US) (74) Attorney, Agent, or Firm — Morris Manning & Martin, (73) Assignee: American Megatrends, Inc., Norcross, LLP, Tim Tingkang Xiak, Esq. GA (US) (57) ABSTRACT (*) Notice: Subject to any disclaimer, the term of this Certain aspects direct to data transfer between a baseboard patent is extended or adjusted under 35 management controller (BMC) and a host computer. When U.S.C. 154(b) by 0 days. the BMC is connected to the host computer via a universal serial bus (USB) interface, the BMC sends USB descriptors (21) Appl. No.: 14/050,424 to the host computer Such that the host computer recognizes the BMC as a specific human interface device (HID) device (22) Filed: Oct. 10, 2013 based on the USB descriptors. To transfer data to the host computer, the BMC converts the data to an Intelligent Plat (51) Int. C. form Management Interface (IPMI) message, and generates a G06F 3/00 (2006.01) USB HID report containing the IPMI message as the report G06F I3/36 (2006.01) data. The BMC then sends the USB HID report to the host G06F II/30 (2006.01) computer through the USB interface. When the BMC (52) U.S. C. receives a USB HID report from the host computer, the BMC CPC ...... G06F II/3068 (2013.01) retrieves the report data, which is an IPMI message, from the USPC ...... 710/16; 710/15; 710/315 USB HID report, and process the IPMI message to obtain the (58) Field of Classification Search data. None See application file for complete search history. 25 Claims, 6 Drawing Sheets

Host Computer Storage Device SEFEs.

USB Device Diver A d U.S. Patent Nov. 25, 2014 Sheet 1 of 6 US 8,898,349 B1

host Computer

14.

12)

- - JSB Descriptors- - - - 26 124.

SE - O Device river wafe B es B e. S is 9 es e is Non-volatile Memory U.S. Patent US 8,898,349 B1

U.S. Patent Nov. 25, 2014 Sheet 3 of 6 US 8,898,349 B1

·

) U.S. Patent US 8,898,349 B1

U.S. Patent Nov. 25, 2014 Sheet 5 of 6 US 8,898,349 B1

{}{}{

U.S. Patent US 8,898,349 B1

US 8,898,349 B1 1. 2 IPM OVER USB DATA TRANSFER descriptors to the host computer through the USB interface BETWEEN HOST COMPUTER AND such that the host computer recognizes the BMC as a specific BASEBOARD MANAGEMENT CONTROLLER HID device based on the plurality of USB descriptors: (BMC) instruct the USB HID device driver to generate a first USB HID report in a predefined format based on the USB descrip FIELD tors, wherein the predefined format comprises a USB header, report data, and a USB footer; generate a first Intelligent The present disclosure relates generally to data transfer Platform Management Interface (IPMI) message as the report between a host computer and a baseboard management con data of the first USB HID report; send the first USB HID troller (BMC), and particularly to data transfer between a host 10 report generated by the USB HID device driver to the host computer and a BMC using the universal serial bus (USB) computer through the USB interface; receive a second USB interface under the Intelligent Platform Management Inter HID report in the predefined format from the host computer face (IPMI) architecture of the BMC. through the USB interface; instruct the USB HID device BACKGROUND 15 driver to retrieve the report data from the second USB HID report, wherein the retrieved report data is a second IPMI The background description provided herein is for the pur message; and process the second IPMI message. pose of generally presenting the context of the disclosure. In certain embodiments, the USB header includes a syn Work of the presently named inventors, to the extent it is chronization field and a packet identifier field, and the USB described in this background section, as well as aspects of the footer includes a cyclic redundancy checking (CRC) field and description that may not otherwise qualify as prior art at the an end of packet (EOP) field. time offiling, are neither expressly nor impliedly admitted as In certain embodiments, each of the first USB HID report prior art against the present disclosure. and the second USB HID report includes at least one USB IPMI is an industry standard for system monitoring and data packet. event recovery. Currently, BMC chips fully support the IPMI 25 In certain embodiments, the firmware is configured to send Specification version 2.0 (hereinafter the IPMI v2.0), which the plurality of USB descriptors to the host computer through is publicly available from INTEL CORPORATION, and is the USB interface by: receiving a request for one of the USB incorporated herein by reference. The IPMI v2.0 provides a descriptors from the host computer through the USB inter common message-based interface for accessing all of the face; and sending, in response to the request, the requested manageable features in a compatible computer. 30 USB descriptor to the host computer through the USB inter Under the IPMI architecture, the Intelligent Platform Man face. agement Bus (IPMB) communications protocol defines a In certain embodiments, the firmware is configured to byte-level transport for transferring IPMI messages. Further, receive the second USB HID report from the host computer IPMI defines three types of standardized system interface that through the USB interface by: receiving at least one USB data the system software uses for transferring IPMI messages to 35 packet of the second USB HID report from the host computer the BMC. The three IPMI system interfaces include the key through the USB interface; and instructing the USB HID board controller style (KCS) interface, the system manage device driver to combine the at least one USB data packet to ment interface chip (SMIC) interface, and the block transfer generate the second USB HID report. (BT) interface. In certain embodiments, the firmware is configured to send In addition to the system interfaces and IPMB, IPMI mes 40 the first USB HID report to the host computer through the saging can be carried over other interfaces such as a local area USB interface by instructing the USB HID device driver to: network (LAN), serial/modem interface, Intelligent Chassis generate at least one USB data packet from the first USB HID Management Bus (ICMB), and peripheral component inter report; and send the at least one USB data packet of the first connect (PCI) management bus. IPMI includes a communi USB HID report to the host computer through the USB inter cation infrastructure that Supports transferring messages 45 face. between these interfaces as well as to the BMC. In certain embodiments, the host computer includes: a host Currently, BMC vendors use BMC hardware which sup processor, and a storage device. The storage device is config ports at least one of the system interfaces as described above. ured to store an IPMI application, an operating system (OS), With tremendous growth of cloud infrastructure and low cost and a USB HID host driver. The IPMI application, when server market evolution, BMC vendors are seeking solutions 50 executed at the host processor, is configured to: generate the to provide the BMC with a low cost alternative to the system second IPMI message as the report data of the second USB interfaces and a method of transferring IPMI messages from HID report; send the second IPMI message to the OS; and the host to the BMC in a faster way. receive and process the first IPMI message from the OS. The Therefore, an unaddressed need exists in the art to address OS, when executed at the host processor, is configured to: the aforementioned deficiencies and inadequacies. 55 when the BMC is connected to the host computer via the USB interface, receive the plurality of USB descriptors from the SUMMARY BMC through the USB interface, and recognize the BMC as the specific HID device to receive the second USB HID report Certain aspects of the present disclosure direct to a system. based on the plurality of USB descriptors; receive the second In certain embodiments, the system includes a baseboard 60 IPMI message from the IPMI application; instruct the USB management controller (BMC). The BMC includes a proces HID host driver to generate the second USB HID report from sor, a non-volatile memory and a universal serial bus (USB) the second IPMI message in the predefined format based on interface. The non-volatile stores firmware, a plurality of the plurality of USB descriptors; send the second USB HID USB descriptors, and a USB human interface device (HID) report generated by the USB HID host driver to the BMC device driver. The firmware, when executed at the processor, 65 through the USB interface; receive the first USB HID report is configured to: when the BMC is connected to a host com from the BMC through the USB interface; and instruct the puter via the USB interface, send the plurality of USB USB HID host driver to retrieve the first IPMI message from US 8,898,349 B1 3 4 the first USB HID report and send the retrieved first IPMI face; and sending, in response to the request, the requested message to the IPMI application. USB descriptor to the host computer through the USB inter In certain embodiments, the OS is configured to receive the face. In certain embodiments, the BMC is configured to plurality of USB descriptors to the host computer through the receive the second USB HID report from the host computer USB interface by: sending a request for one of the USB through the USB interface by: receiving at least one USB data descriptors to the BMC through the USB interface; and packet of the second USB HID report from the host computer receiving the requested USB descriptor from the BMC through the USB interface; and instructing the USB HID through the USB interface. device driver to combine the at least one USB data packet to In certain embodiments, the USB descriptors include a generate the second USB HID report. In certain embodi device descriptor, at least one configuration descriptor, at 10 ments, the BMC is configured to send the first USB HID least one interface descriptor, at least one endpoint descriptor, report to the host computer through the USB interface by at least one HID descriptor, and at least one report descriptor. instructing the USB HID device driver to: generate at least In certain embodiments, the at least one interface descrip one USB data packet from the first USB HID report; and send tor includes a USB HID class code identifying the BMC as the the at least one USB data packet of the first USB HID report specific HID device, and wherein the at least one report 15 to the host computer through the USB interface. descriptor includes format codes identifying the predefined In certain embodiments, the host computer includes: a host format. processor, and a storage device. The storage device is config In certain embodiments, the OS is configured to recognize ured to store an IPMI application, an operating system (OS), the BMC as the specific HID device by: identifying the BMC and a USB HID host driver. The IPMI application, when as the specific HID device based on the USB HID class code executed at the host processor, is configured to: generate the of the at least one interface descriptor, and identifying the second IPMI message as the report data of the second USB predefined format based on the format codes of the at least HID report; send the second IPMI message to the OS; and one report descriptor. receive and process the first IPMI message from the OS. The In certain embodiments, the OS is configured to receive the OS, when executed at the host processor, is configured to: first USB HID report from the BMC through the USB inter 25 when the BMC is connected to the host computer via the USB face by: receiving at least one USB data packet of the first interface, receive the plurality of USB descriptors from the USB HID report from the BMC through the USB interface: BMC through the USB interface, and recognize the BMC as and instructing the USB HID host driver to combine the at the specific HID device to receive the second USB HID report least one USB data packet to generate the first USB HID based on the plurality of USB descriptors; receive the second report. 30 IPMI message from the IPMI application; instruct the USB In certain embodiments, the OS is configured to send the HID host driver to generate the second USB HID report from second USB HID report to the BMC through the USB inter the second IPMI message in the predefined format based on face by instructing the USB HID host driver to: generate at the plurality of USB descriptors; send the second USB HID least one USB data packet from the second USB HID report; report generated by the USB HID host driver to the BMC and send the at least one USB data packet of the second USB 35 through the USB interface; receive the first USB HID report HID report to the host computer through the USB interface. from the BMC through the USB interface; and instruct the Certain aspects of the present disclosure direct to a method USB HID host driver to retrieve the first IPMI message from of transferring data between a baseboard management con the first USB HID report and send the retrieved first IPMI troller (BMC) and a host computer. In certain embodiments, message to the IPMI application. the method includes: sending, from the BMC, a plurality of 40 In certain embodiments, the USB descriptors include a universal serial bus (USB) descriptors to the host computer device descriptor, at least one configuration descriptor, at through a USB interface such that the host computer recog least one interface descriptor, at least one endpoint descriptor, nizes the BMC as a specific human interface device (HID) at least one HID descriptor, and at least one report descriptor. device based on the plurality of USB descriptors, wherein the In certain embodiments, the at least one interface descriptor BMC is connected to the host computer via the USB inter 45 includes a USB HID class code identifying the BMC as the face; instructing, at the BMC, a USB HID device driver to specific HID device, and wherein the at least one report generate a first USB HID report in a predefined format based descriptor includes format codes identifying the predefined on the USB descriptors, wherein the predefined format com format. prises a USB header, report data, and a USB footer; generat In certain embodiments, the OS is configured to receive the ing, at the BMC, a first Intelligent Platform Management 50 plurality of USB descriptors to the host computer through the Interface (IPMI) message as the report data of the first USB USB interface by: sending a request for one of the USB HID report; sending, from the BMC, the first USB HID report descriptors to the BMC through the USB interface; and generated by the USB HID device driver to the host computer receiving the requested USB descriptor from the BMC through the USB interface; receiving, at the BMC, a second through the USB interface. In certain embodiments, the OS is USB HID report in the predefined format from the host com 55 configured to recognize the BMC as the specific HID device puter through the USB interface; instructing, at the BMC, the by: identifying the BMC as the specific HID device based on USB HID device driver to retrieve the report data from the the USB HID class code of the at least one interface descrip second USB HID report, wherein the retrieved report data is tor; and identifying the predefined format based on the format a second IPMI message; and processing, at the BMC, the codes of the at least one report descriptor. In certain embodi second IPMI message. 60 ments, the OS is configured to receive the first USB HID In certain embodiments, each of the first USB HID report report from the BMC through the USB interface by: receiving and the second USB HID report includes at least one USB at least one USB data packet of the first USB HID report from data packet. the BMC through the USB interface; and instructing the USB In certain embodiments, the BMC is configured to send the HID host driver to combine the at least one USB data packet plurality of USB descriptors to the host computer through the 65 to generate the first USB HID report. In certain embodiments, USB interface by: receiving a request for one of the USB the OS is configured to send the second USB HID report to the descriptors from the host computer through the USB inter BMC through the USB interface by instructing the USB HID US 8,898,349 B1 5 6 host driver to: generate at least one USB data packet from the the second IPMI message in the predefined format based on second USB HID report; and send the at least one USB data the plurality of USB descriptors; send the second USB HID packet of the second USB HID report to the host computer report generated by the USB HID host driver to the BMC through the USB interface. through the USB interface; receive the first USB HID report Certain aspects of the present disclosure direct to a non from the BMC through the USB interface; and instruct the transitory computer readable medium storing computer USB HID host driver to retrieve the first IPMI message from executable codes. The codes, when executed at a processor, the first USB HID report and send the retrieved first IPMI are configured to: send, from a baseboard management con message to the IPMI application. troller (BMC), a plurality of universal serial bus (USB) In certain embodiments, the USB descriptors include a descriptors to a host computer through a USB interface such 10 that the host computer recognizes the BMC as a specific device descriptor, at least one configuration descriptor, at human interface device (HID) device based on the plurality of least one interface descriptor, at least one endpoint descriptor, USB descriptors, wherein the BMC is connected to the host at least one HID descriptor, and at least one report descriptor. computer via the USB interface; instruct, at the BMC, a USB In certain embodiments, the at least one interface descriptor HID device driver to generate a first USB HID report in a 15 includes a USB HID class code identifying the BMC as the predefined format based on the USB descriptors, wherein the specific HID device, and wherein the at least one report predefined format comprises a USB header, report data, and a descriptor includes format codes identifying the predefined USB footer; generate, at the BMC, a first Intelligent Platform format. Management Interface (IPMI) message as the report data of In certain embodiments, the OS is configured to receive the the first USB HID report; send, from the BMC, the first USB plurality of USB descriptors to the host computer through the HID report generated by the USB HID device driver to the USB interface by: sending a request for one of the USB host computer through the USB interface; receive, at the descriptors to the BMC through the USB interface; and BMC, a second USB HID report in the predefined format receiving the requested USB descriptor from the BMC from the host computer through the USB interface; instruct, at through the USB interface. In certain embodiments, the OS is the BMC, the USB HID device driver to retrieve the report 25 configured to recognize the BMC as the specific HID device data from the second USB HID report, wherein the retrieved by: identifying the BMC as the specific HID device based on report data is a second IPMI message; and process, at the the USB HID class code of the at least one interface descrip BMC, the second IPMI message. tor; and identifying the predefined format based on the format In certain embodiments, each of the first USB HID report codes of the at least one report descriptor. In certain embodi and the second USB HID report includes at least one USB 30 data packet. ments, the OS is configured to receive the first USB HID In certain embodiments, the codes are configured to send, report from the BMC through the USB interface by: receiving from the BMC, the plurality of USB descriptors to the host at least one USB data packet of the first USB HID report from computer through the USB interface by: receiving a request the BMC through the USB interface; and instructing the USB for one of the USB descriptors from the host computer 35 HID host driver to combine the at least one USB data packet through the USB interface; and sending, in response to the to generate the first USB HID report. In certain embodiments, request, the requested USB descriptor to the host computer the OS is configured to send the second USB HID report to the through the USB interface. In certain embodiments, the codes BMC through the USB interface by instructing the USB HID are configured to receive, at the BMC, the second USB HID host driver to: generate at least one USB data packet from the report from the host computer through the USB interface by: 40 second USB HID report; and send the at least one USB data receiving at least one USB data packet of the second USB packet of the second USB HID report to the host computer HID report from the host computer through the USB inter through the USB interface. face; and instructing the USB HID device driver to combine These and other aspects of the present disclosure will the at least one USB data packet to generate the second USB become apparent from the following description of the pre HID report. In certain embodiments, the codes are configured 45 ferred embodiment taken in conjunction with the following to send, from the BMC, the first USB HID report to the host drawings and their captions, although variations and modifi computer through the USB interface by instructing the USB cations therein may be affected without departing from the HID device driver to: generate at least one USB data packet spirit and scope of the novel concepts of the disclosure. from the first USB HID report; and send the at least one USB data packet of the first USB HID report to the host computer 50 BRIEF DESCRIPTION OF THE DRAWINGS through the USB interface. In certain embodiments, the host computer includes: a host The present disclosure will become more fully understood processor, and a storage device. The storage device is config from the detailed description and the accompanying draw ured to store an IPMI application, an operating system (OS), ings, wherein: and a USB HID host driver. The IPMI application, when 55 FIG. 1 schematically depicts a computer system according executed at the host processor, is configured to: generate the to certain embodiments of the present disclosure; second IPMI message as the report data of the second USB FIG. 2 schematically depicts a descriptor hierarchy of the HID report; send the second IPMI message to the OS; and BMC as a specific HID device according to certain embodi receive and process the first IPMI message from the OS. The ments of the present disclosure; OS, when executed at the host processor, is configured to: 60 FIG.3A schematically depicts an IPMI message according when the BMC is connected to the host computer via the USB to certain embodiments of the present disclosure; interface, receive the plurality of USB descriptors from the FIG. 3B schematically depicts a USB HID data packet in BMC through the USB interface, and recognize the BMC as which an IPMI message is embedded according to certain the specific HID device to receive the second USB HID report embodiments of the present disclosure; based on the plurality of USB descriptors; receive the second 65 FIG. 4 schematically depicts configuration setup of the IPMI message from the IPMI application; instruct the USB BMC as a specific HID device at a host computer according to HID host driver to generate the second USB HID report from certain embodiments of the present disclosure; US 8,898,349 B1 7 8 FIG. 5 schematically depicts data transfer from the host exclusive logical OR. It should be understood that one or computer to the BMC according to certain embodiments of more steps within a method may be executed in different the present disclosure; and order (or concurrently) without altering the principles of the FIG. 6 schematically depicts data transfer from the BMC to present disclosure. the host computer according to certain embodiments of the As used herein, the term “module' may refer to, be part of, present disclosure. or include an Application Specific Integrated Circuit (ASIC); an electronic circuit; a combinational logic circuit; a field DETAILED DESCRIPTION programmable gate array (FPGA); a processor (shared, dedi cated, or group) that executes code; other Suitable hardware The present disclosure is more particularly described in the 10 components that provide the described functionality; or a following examples that are intended as illustrative only since combination of some or all of the above, such as in a system numerous modifications and variations therein will be appar on-chip. The term module may include memory (shared, ent to those skilled in the art. Various embodiments of the dedicated, or group) that stores code executed by the proces disclosure are now described in detail. Referring to the draw SO. ings, like numbers, if any, indicate like components through 15 The term “code', as used herein, may include software, out the views. As used in the description herein and through firmware, and/or microcode, and may refer to programs, rou out the claims that follow, the meaning of “a”, “an', and “the tines, functions, classes, and/or objects. The term shared, as includes plural reference unless the context clearly dictates used above, means that some or all code from multiple mod otherwise. Also, as used in the description herein and ules may be executed using a single (shared) processor. In throughout the claims that follow, the meaning of “in” addition, Some or all code from multiple modules may be includes “in” and “on” unless the context clearly dictates stored by a single (shared) memory. The term group, as used otherwise. Moreover, titles or subtitles may be used in the above, means that some or all code from a single module may specification for the convenience of a reader, which shall have be executed using a group of processors. In addition, Some or no influence on the scope of the present disclosure. Addition all code from a single module may be stored using a group of ally, some terms used in this specification are more specifi 25 memories. cally defined below. As used herein, the term “headless system” or “headless The terms used in this specification generally have their machine' generally refers to the computer system or machine ordinary meanings in the art, within the context of the disclo that has been configured to operate without a monitor (the Sure, and in the specific context where each term is used. missing "head'), keyboard, and mouse. Certain terms that are used to describe the disclosure are 30 The term “interface', as used herein, generally refers to a discussed below, or elsewhere in the specification, to provide communication tool or means at a point of interaction additional guidance to the practitioner regarding the descrip between components for performing data communication tion of the disclosure. For convenience, certain terms may be between the components. Generally, an interface may be highlighted, for example usingitalics and/or quotation marks. applicable at the level of both hardware and software, and The use of highlighting has no influence on the scope and 35 may be uni-directional or bi-directional interface. Examples meaning of a term; the scope and meaning of a term is the of physical hardware interface may include electrical connec same, in the same context, whether or not it is highlighted. It tors, buses, ports, cables, terminals, and other I/O devices or will be appreciated that same thing can be said in more than components. The components in communication with the one way. Consequently, alternative language and synonyms interface may be, for example, multiple components or may be used for any one or more of the terms discussed 40 peripheral devices of a computer system. herein, nor is any special significance to be placed upon The terms “chip” or “computer chip', as used herein, gen whether or not a term is elaborated or discussed herein. Syn erally refer to a hardware electronic component, and may onyms for certain terms are provided. A recital of one or more refer to or include a small electronic circuit unit, also known synonyms does not exclude the use of other synonyms. The as an integrated circuit (IC), or a combination of electronic use of examples anywhere in this specification including 45 circuits or ICs. examples of any terms discussed herein is illustrative only, The present disclosure relates to computer systems. As and in no way limits the scope and meaning of the disclosure depicted in the drawings, computer components may include or of any exemplified term. Likewise, the disclosure is not physical hardware components, which are shown as Solid line limited to various embodiments given in this specification. blocks, and virtual Software components, which are shown as Unless otherwise defined, all technical and scientific terms 50 dashed line blocks. One of ordinary skill in the art would used herein have the same meaning as commonly understood appreciate that, unless otherwise indicated, these computer by one of ordinary skill in the art to which this disclosure components may be implemented in, but not limited to, the pertains. In the case of conflict, the present document, includ forms of Software, firmware or hardware components, or a ing definitions will control. combination thereof. As used herein, “around”, “about' or “approximately 55 The apparatuses and methods described herein may be shall generally mean within 20 percent, preferably within 10 implemented by one or more computer programs executed by percent, and more preferably within 5 percent of a given value one or more processors. The computer programs include pro or range. Numerical quantities given herein are approximate, cessor-executable instructions that are stored on a non-tran meaning that the term “around”, “about' or “approximately sitory tangible computer readable medium. The computer can be inferred if not expressly stated. 60 programs may also include stored data. Non-limiting As used herein, “plurality” means two or more. examples of the non-transitory tangible computer readable As used herein, the terms "comprising.” “including. "car medium are nonvolatile memory, magnetic storage, and opti rying,” “having.” “containing.” “involving,” and the like are to cal storage. be understood to be open-ended, i.e., to mean including but FIG. 1 schematically depicts a computer system according not limited to. 65 to certain embodiments of the present disclosure. As shown in As used herein, the phrase at least one of A, B, and C should FIG. 1, the computer system 100 includes a host computer be construed to mean a logical (A or B or C), using a non 110 and a baseboard management controller (BMC) 120. The US 8,898,349 B1 9 10 BMC 120 is connected to the host computer 110 via a uni grammable read-only memory (EEPROM) chip or a comple versal serial bus (USB) interface 130. mentary metal oxide semiconductor (CMOS) memory. In certain embodiments, the BMC 120 may be connected to The BIOS chip 116 stores BIOS codes (not shown, here the host computer 110 via more than one interface in addition inafter the BIOS). The BIOS is configured to perform the to the USB interface 130. For example, the BMC 120 may be startup functions, or the functions, for the host com connected to the host computer 110 via one or more of the puter 110. Examples of the booting functions include, but are three typical standardized IPMI system interfaces, such as the not limited to, the initiation and power-on self-test, identify KCS interface, the SMIC interface, or the BT interface. How ing the system devices, locating the boot loader Software on ever, in some low cost BMC's, there may be no hardware/ the boot device, loading and executing the bootloader Soft 10 ware and giving it control of the OS 140. software support to the standardized IPMI system interfaces. The storage device 118 is a non-volatile data storage media For the purpose of the present disclosure, data transfer for storing the OS 140, the USB HID host driver 150, the between the host computer 110 and the BMC 120 goes IPMI application 160, and other applications of the host com through the USB interface 130. puter 110. Examples of the storage device 118 may include The host computer 110 may be a computing device, such as 15 flash memory, memory cards, USB drives, hard drives, floppy a general purpose computer or a headless computer. Gener disks, optical drives, or any other types of data storage ally, the host computer 110 includes a baseboard or the devices. “motherboard (not shown). The baseboard is a printed cir The OS 140 can be collective management software man cuitboard to which a multitude of components or devices may aging the operation of the host computer 110. For example, be connected by way of a system bus or other electrical the OS 140 can include a set of functional programs that communication paths. Although not explicitly shown in FIG. control and manage operations of the devices connected to the 1, the components on the baseboard are interconnected, and host computer 110. The set of application programs provide the layout of the components on the baseboard and the man certain utility Software for the user to manage the host com ner of the interconnection between the components on the puter 110. In certain embodiments, the OS 140 is operable to baseboard is herein referred to as the configuration of the 25 multitask, i.e., execute computing tasks in multiple threads, baseboard. One of ordinary skill in the art would appreciate and thus may be any of the following: MICROSOFT COR that the configuration of the baseboard may be adjusted or PORATION’s “WINDOWS 95. “WINDOWS CE. “WIN changed according to the necessary design or manufacturing DOWS 98.” “WINDOWS 2000 or “WINDOWS NT, requirements. “WINDOWS Vista”, “WINDOWS 7 and “WINDOWS 8. The components on the baseboard of the host computer 30 operating systems, IBM's OS/2 WARP APPLE's MACIN 110 include, but not limited to, a central processing unit TOSHOSX operating system, , , etc. In certain (CPU) 112, a memory 114, a BIOS chip 116, and other embodiments, the OS 140 is compatible to the IPMI archi required memory and Input/Output (I/O) modules (not tecture for generating IPMI messages in order to communi shown). In certain embodiments, the BMC 120 may also be a cate with the BMC 120. component on the baseboard. In certain embodiments, the 35 In certain embodiments, when the BMC 120 is connected CPU 112, the memory 114, and the BIOS chip 116 may be to the host computer 110 via the USB interface 130, the OS embedded on the baseboard, or may be connected to the 140 is in charge to recognize the BMC 120 as a specific HID baseboard through at least one interface. In certain embodi device. Specifically, the OS 140 requests and receives the ments, the interface may be physical hardware interface Such USB descriptors 170 from the BMC 120 through the USB as electrical connectors, buses, ports, cables, terminals, or 40 interface 130. Based on information of the USB descriptors other I/O devices. 170, the OS may recognize the BMC 120 as the specific HID Further, the host computer 110 includes a storage device device, and recognize a predefined format of a USB HID 118, which stores a plurality of software applications, includ report for transferring data to the specific HID device (i.e. the ing an operating system (OS) 140, a USB human interface BMC 120). Details of the USB descriptors 170 and the pre device (HID) host driver 150, and an IPMI application 160. In 45 defined format will be explained later. certain embodiments, the host computer 110 may include at In certain embodiments, the OS 140 is configured togen least one I/O device (not shown) for generating and control erate data to be transferred to the BMC 120, and sends the data ling input and output signals of the host computer 110. to the IPMI application 160. After the IPMI application gen Examples of the I/O device include keyboards, touch pads, erates IPMI messages from the data, the OS 140 receives the mouse, microphones, display screens, touchscreens, or other 50 IPMI messages generated by the IPMI application 160. Then, I/O devices applicable for the host computer 110. Some I/O the OS 140 sends the IPMI messages to the USB HID host devices. Such as touch screens, are provided for the dual driver 150, and instructs the USB HID host driver 150 to input/output purposes. generate a USB HID report from each of IPMI messages. The The CPU 112 is a host processor which is configured to USB HID report is in the predefined format based on the control operation of the host computer 110. The CPU 112 can 55 information of the USB descriptors 170. After the USB HID execute the OS 140 or other applications of the host computer host driver 150 generates the USB HID report, the OS 140 110. In certain embodiments, the host computer 110 may run controls the USB HID host driver 150 to send the USB HID on or more than one CPU as the host processor, such as two report to the BMC 120 through the USB interface 130. Details CPUs, four CPUs, eight CPUs, or any suitable number of of the USB HID report will be described later. CPUS. 60 In certain embodiments, when the host computer 110 The memory 114 can be a volatile memory, such as the receives a USB HID report from the BMC 120 through the random-access memory (RAM), for storing the data and USB interface 130, the OS 140 instructs the USB HID host information during the operation of the host computer 110. driver 150 to retrieve the IPMI message embedded in the first The BIOS chip 116 is one of the most crucial components USB HID report. Then the OS 140 sends the retrieved IPMI in the host computer 110 or any computer system. In certain 65 message to the IPMI application 160 for processing. After the embodiments, the BIOS chip 116 is a non-volatile memory, IPMI application 160 processes the IPMI messages to gener Such as a flash memory chip, an electrically erasable pro ate data recognizable by the OS 140, the IPMI application 160 US 8,898,349 B1 11 12 sends the data back to the OS 140 such that the OS 140 may ing functionalities without recognizing that the data to be process with the data from the BMC 120. processed to generate the reports includes IPMI messages. The USB HID host driver 150 is a computer program that Currently, almost all operating systems available in the operates or controls the USB HID data transfer to and from market are compatible to the USB standard, and provide a HID devices attached to the host computer 110 via the USB variety of USB HID host drivers. In certain embodiments, the interface 130. The USB HID host driver 150 is instructed by host computer 110 may use one of the USB HID host drivers the OS 140 to communicate with any USB HID devices provided by the OS 140 as the USB HID host driver 150. In through the USB interface 130. certain embodiments, the host computer 110 may use a cus For USB HID devices, data transfer is implemented by tomized USB HID host driver 150, which is separated from USB HID reports (hereinafter the reports). A report is a data 10 the OS 140. structure defined by the USB HID Specification. In actual The IPMI application 160 is a computer program that gen data transfer, a report is converted to one or more USB data erates and processes IPMI messages. In certain embodiments, packets. Generally, when the OS 140 sends data to the USB when the OS 140 generates data to be transferred under the HID host driver 150 for transferring the data to a particular IPMI architecture, the OS 140 may send the data to the IPMI HID device, the OS 140 will instruct the USB HID host driver 15 application 160, and the IPMI application converts the data to 150 to generate a report in a format recognizable by the IPMI messages. When the OS 140 receives IPMI messages particular HID device. After generating the report, the USB from the BMC 120 or any other peripheral devices, the OS HID host driver 150 converts the report to the USB data 140 sends the received IPMI messages to the IPMI applica packets such that the OS 140 may send the USB data packets tion 160. The IPMI application 160 processes the IPMI mes to the particular HID device through USB connection. For sages to generate data recognizable by the OS 140, and then example, as discussed above, based on the information of the sends the data back to the OS 140 for further process. USB descriptors 170, the OS 140 may recognize the BMC In certain embodiments, the IPMI application 160 is sepa 120 as the specific HID device, and recognize a predefined rated from the OS 140 as an independent program. In certain format of the report for transferring data to the BMC 120 as embodiments, the IPMI application 160 can be a part of the the specific HID device. Thus, when the OS 140 intends to 25 OS 140, which is compatible to the IPMI architecture for send the IPMI messages to the BMC 120, the OS 140 sends generating IPMI messages. the IPMI messages to the USB HID host driver 150, and As discussed above, the IPMI application 160 performs instructs the USB HID host driver 150 to generate a report in conversion between IPMI messages and data recognizable by the predefined format recognizable by the BMC 120. After the OS 140. In certain embodiments, the IPMI application generating the report, the USB HID host driver 150 converts 30 160 is independent from the USB features of the host com the report to the USB data packets such that the OS 140 may puter 110. Thus, the IPMI application 160 does not need to send the USB data packets to the BMC 120 through the USB change the codes or software modules to be compatible to the interface 130. USB standard. In other words, the IPMI application 160 may On the other hand, when the host computer 110 receives maintain its original IPMI processing functionalities without USB data packets from a particular HID device, the OS 140 35 adding features compatible to the USB standard. instructs the USB HID host driver 150 to combine USB data The USB interface 130 is a standardized interface under the packets to generate the report. Then, the OS 140 instructs the USB industry standard that defines the cables, connectors and USB HID host driver 150 to retrieve data from the report communications protocols used in a bus for connection, com based on a format defined by the particular HID device. For munication, and power Supply between computers and elec example, when the host computer 110 receives USB data 40 tronic devices. USB was designed to standardize the connec packets from the BMC 120, which serves as the specific HID tion of computer peripherals (including keyboards, pointing device, the OS 140 instructs the USB HID host driver 150 to devices, digital cameras, printers, portable media players, combine the USB data packets to generate the report. Since disk drives and network adapters) to personal computers, the report is in the predefined format recognizable by the both to communicate and to supply electric power. The USB BMC 120, the OS 140 instructs the USB HID host driver 150 45 interface 130 has become commonplace on other devices, to retrieve the IPMI message from the report based on the Such as Smartphones, PDAs and video game consoles. USB predefined format. has effectively replaced a variety of earlier interfaces, such as In certain embodiments, data transfer under the HID class serial and parallel ports, as well as separate power chargers has a maximum packet size rate for full speed transfer at 64 for portable devices. Currently, USB allows bi-directional bytes/ms. A typical IPMI message may be shorter than 64 50 communications between the host computer 110 and the USB bytes. In this case, a report generated from the IPMI message devices, as USB 3.0 allows for device-initiated communica by the USB HID host driver 150 can be essentially a USB data tions towards the host. packet, and there is no need for further converting the report The functionality of USB devices is defined by class codes, to USB data packets. Specifically, the USB HID host driver communicated to the USB host to affect the loading of suit 150 may embed the IPMI message directly with a packet 55 able software driver modules for each connected device. This header and a packet footer to form the single packet report. In provides for adaptability and device independence of the host other words, the report or the packet is formed by attaching to support new devices from different manufacturers. For the packet header at the front of the IPMI message, and example, class code 0x03h defines the USB HID device class attaching the packet footer at the end of the IPMI message. (hereinafter the HID class). The HID class specifies a device As discussed above, the USB HID host driver 150 operates 60 class, or a type of computer hardware, for HIDS Such as a under the instruction issued by the OS 140. In certain embodi keyboard, amouse, a joystick or a game controller, and alpha ments, the USB HID host driver 150 may process the IPMI numeric display devices. messages or any data to generate reports according to the Comparing to the IPMI data transfer, data transfer under predefined format. Thus, there is no need for the USB HID the HID class has a maximum packet size rate for full speed host driver 150 to change the codes or software modules to be 65 transfer at 64 bytes/ms, which completely satisfies the IPMI compatible to the IPMI architecture. In other words, the USB message and IPMB or Private Bus Transaction size require HID host driver 150 may maintain its original USB process ments specified by IPMI V2.0. Further, the maximum packet US 8,898,349 B1 13 14 size rate under the HID class is faster than the byte-level data bytes) of the descriptor. The second byte of the descriptor is a transfer via the typical standardized IPMI system interfaces, bDescriptorType field, which indicates the descriptor type. such as the KCS interface, the SMIC interface, or the BT For example, 0x01 refers to a device descriptor, 0x02 refers to interface. a configuration descriptor, 0x04 refers to an interface descrip The USB HID class specifications allow for myriad other tor, 0x05 refers to an endpoint descriptor, and 0x21 refers to devices under the HID class. Some examples are automobile a HID descriptor. If the length of a descriptor is smaller than simulation controllers, exercise machines, telephony devices, what the specification defines, then the host shall ignore it. thermometers, audio controls and medical instrumentation. However, if the size of a descriptor is greater than expected, In certain embodiments, a device without human interface the host will ignore the extra bytes and start looking for the may also declare itself under the HID class. For example, 10 next descriptor at the end ofactual length returned. Examples uninterruptible power Supplies may declare themselves under of the descriptors will be described later. this class, despite the fact they often have no human interface The BMC 120 is a specialized microcontroller that man at all. In other words, any device can be a HID class device as ages the interface between system management software and long as a designer meets the HID class logical specifications platform hardware. In certain embodiments, the BMC 120 and declare itself under the HID class. 15 may be a service processor (SP). Different types of sensors USB device communication is based on pipes (logical can be built into the host computer 110, and the BMC 120 channels). A pipe is a connection from the host controller at reads these sensors to obtain parameters such as temperature, the host computer 110 to a logical entity found on a USB cooling fan speeds, power status, OS status, etc. device. The logical entity is generally named an “endpoint.” The BMC 120 monitors the sensors and can send out-of Because pipes correspond 1-to-1 to endpoints, the terms are band (00E3) alerts to a system administrator of the host com sometimes used interchangeably. A USB device has a default puter 110 if any of the parameters do not stay within preset endpoint Zero, and could have up to 32 endpoints. Of the 32 limits, indicating a potential failure of the host computer 110. endpoints, 16 are IN (meaning data transaction is from the In certain embodiments, the administrator can also remotely USB device to the host) and 16 are OUT (data transaction communicate with the BMC 120 from a remote management from the host to the USB device). An endpoint is defined and 25 computer via a network to take remote action to the host numbered by the device during initialization (the period after computer. For example, the administrator may reset the host physical connection called “enumeration') and so is rela computer 110 from the remote management computer tively permanent, whereas a pipe may be opened and closed. through the BMC 120, and may obtain system information of There are two types of pipes: stream and message pipes. A the host computer 110 OOB without interrupting the opera message pipe is bi-directional and is used for control trans 30 tion of the host computer 110. fers. Message pipes are typically used for short, simple com As shown in FIG. 1, the BMC 120 includes a processor mands to the device, and a status response, used, for example, 121, a memory 122 and a non-volatile memory 124. In certain by the bus control pipe number Zero, which corresponds to the embodiments, the BMC 120 may include other components, endpoint Zero. A stream pipe is a uni-directional pipe con such as at least one I/O device (not shown). nected to a uni-directional endpoint that transfers data using 35 The processor 121 is a BMC processor configured to con an isochronous, interrupt, or bulk transfer. Generally, a USB trol operation of the BMC 120.The processor 121 can execute HID device requires one control endpoint (which can be the firmware 126 or other codes Stored in the BMC 120. In endpoint Zero) and one IN interrupt endpoint. certain embodiments, the BMC 120 may run on or more than An endpoint of a pipe is addressable with a tuple (device one processor. address, endpoint number) as specified in a TOKEN packet 40 The memory 122 can be a volatile memory, such as the that the host sends when it wants to start a data transfer RAM, for storing the data and information during the opera session. If the direction of the data transfer is from the host to tion of the BMC 120. the endpoint, an OUT packet (a specialization of a TOKEN The non-volatile memory 124 stores the firmware 126 of packet) having the desired device address and endpoint num the BMC 120. As shown in FIG. 1, the firmware 126 of the ber is sent by the host. If the direction of the data transfer is 45 BMC 120 includes, among other things, USB descriptors from the device to the host, the host sends an IN packet 170, a USB HID device driver 180, and an IPMI module 190. instead. If the destination endpoint is a uni-directional end In certain embodiments, the firmware 126 may include a web point whose manufacturer's designated direction does not connection module (not shown) for communication with the match the TOKEN packet (e.g., the manufacturer's desig network Such that an administrator of the computer system nated direction is IN while the TOKEN packet is an OUT 50 may connect to the BMC 120 remotely from the remote packet), the TOKEN packet is ignored. Otherwise, it is management computer via the network. accepted and the data transaction can start. A bi-directional The USB descriptors 170 refer to a collection of descrip endpoint, on the other hand, accepts both IN and OUT pack tors to define the BMC 120 as a USB HID device. As dis etS. cussed above, common USB and HID related descriptors Information about a USB device is stored in segments of 55 include device descriptors, configuration descriptors, inter the non-volatile memory. Such as a read-only memory face descriptors, endpoint descriptors, HID descriptors and (ROM), of the USB device. These segments are called report descriptors. All descriptors are made up of a common descriptors. All USB devices have a hierarchy of descriptors format. which describe to the host information such as what the FIG. 2 schematically depicts a descriptor hierarchy of the device is, who makes it, what version of USB it supports, how 60 BMC as a specific HID device according to certain embodi many ways it can be configured, the number of endpoints and ments of the present disclosure. As shown in FIG. 2, for each their types, and other information of the USB devices. Com USB HID device, such as the BMC 120, the descriptor hier mon USB and HID related descriptors include device descrip archy includes one device descriptor 210, followed by one or tors, configuration descriptors, interface descriptors, end more configuration descriptors 220. Each configuration point descriptors, HID descriptors and report descriptors. All 65 descriptor 220 may be followed by one or more interface descriptors are made up of a common format. The first byte of descriptors 230. Each interface descriptor 230 may be fol the descriptor is a blength field, which specifies the length (in lowed by one or more endpoint descriptors 240 and one or US 8,898,349 B1 15 16 more HID descriptors 250. Each HID descriptor 250 is fol descriptor 220 is a bNumInterfaces field, which indicates the lowed by a report descriptor 260. number of interfaces supported by the configuration. Defini The device descriptor 210 of a USB device represents the tions and sample values of other fields of the configuration entire device. Thus, a USB device, such as the BMC 120, can descriptor 220 can be found in the USB Specification, and are only have one device descriptor 210. The device descriptor nothereinafter described in detail. 210 specifies the basic yet important information about the The interface descriptor 230 indicates the functions of an USB device such as the supported USB version, maximum interface, which is formed by one or more endpoints as a packet size, Vendor and product IDs and the number of pos group. In other words, the interface descriptor 230 is essen sible configurations the device can have. tially a header or grouping of the endpoints into a functional In certain embodiments, for the BMC 120, the device 10 group performing a single feature of the USB device. The descriptor 210 can be a 12 to 18 bytes descriptor. The first byte interface descriptor 230 is also the descriptor for identifying (offset 0) of the device descriptor 210 is a blength field, a USB device as belonging to one of a finite number of which specifies the length of the descriptor (for example, classes, such as the HID class. A USB/HID class device uses 0x12 indicates that the length of the device descriptor 210 is a corresponding HID class device driver to retrieve and route 12 bytes). The second byte (offset 1) of the device descriptor 15 all data. In certain embodiments, the BMC 120, which serves 210 is ablescriptorType field, which indicates the descriptor as a USB HID device, may have one or more interface type (0x01). The fifth byte of the device descriptor 210 is a descriptors 230. bDeviceClass field, and the sixth byte of the device descriptor In certain embodiments, for the BMC 120, the interface 210 is ab)eviceSubClass field. The bDeviceClass and b)e- descriptor 230 can be a 9-byte descriptor. The first byte (offset viceSubClass fields respectively indicate the device class O) of the interface descriptor 230 is a blength field, which code and subclass code assigned by the USB. It should be specifies the length of the descriptor (for example, 0x09 indi noted that for a USB HID device, the HID class is not defined cates that the length of the interface descriptor 230 is 9 bytes). in the bDeviceClass field of device descriptor 210, and the The second byte (offset 1) of the interface descriptor 230 is a bDeviceClass field is generally assigned the value of 0x00. bDescriptorType field, which indicates the descriptor type The eighth byte of the device descriptor 210 is a bMaxPack 25 (0x04). The fifth byte (offset 4) of the interface descriptor 230 etSize() field, which indicates the maximum packet size for is a bNumEndpoints field, which indicates the number of endpoint Zero. Only 8, 16, 32 and 64 are valid values for the endpoints used by the interface. The sixth byte (offset 5) of bMaxPacketSize() field. For example, Ox64 indicates the the interface descriptor 230 is a binterfaceClass field, which maximum packet size of endpoint Zero of the USB device is indicates the class code assigned by the USB. For example, 64 bytes. Definitions and sample values of other fields of the 30 0x03 indicates that the interface is in the HID class. Defini device descriptor 210 can be found in the USB Specification, tions and sample values of other fields of the interface and are nothereinafter described in detail. descriptor 230 can be found in the USB Specification, and are As discussed above, the bMaxPacketSize() field of the nothereinafter described in detail. device descriptor 210 indicates the maximum packet size for As discussed above, the binterfaceClass field of the inter endpoint Zero. In certain embodiments, the bMaxPacketSize() 35 face descriptor 230 is used to indicate the class code of the field of the device descriptor 210 may include the value 0x64 BMC 120. Thus, the binterfaceClass field 232 of the interface to indicate the maximum packet size for endpoint Zero as 64 descriptor 230 includes the value 0x03 of the USB HID class bytes. When the OS 140 of the host computer 110 receives the code to identify the BMC 120 as the specific HID device. device descriptor 210, the OS 140 may interpret the value When the OS 140 of the host computer 110 receives the Ox64 Stored in the bMaxPacketSize0 field of the device 40 interface descriptor 230, the OS 140 may interpret the value descriptor 210, and recognize the maximum packet size for 0x03 of the USB HID class code Stored in the binterfaceClass endpoint zero of the BMC 120 to be 64 bytes. field 232 of the interface descriptor 230, and recognize the The configuration descriptor 220 specifies the configura BMC 120 as the specific HID device. tion of the USB device, such as how the USB device is The endpoint descriptor 240 is used to describe an endpoint powered, what the maximum power consumption is, and the 45 other than endpoint Zero. The endpoint Zero is always number of interfaces it has. Typically, each USB device has assumed to be a control endpoint and is configured before any one configuration descriptor 220. In certain embodiments, a descriptors are even requested. The host will use the informa USB device can have several different configuration descrip tion returned from these descriptors to determine the band tors 220 to indicate different configurations of the USB width requirements of the bus. In certain embodiments, the device. In certain embodiments, the BMC 120, which serves 50 BMC 120, which serves as a USB HID device, may have one as a USB HID device, may have one or more configuration or more endpoint descriptors 240 to define one or more end descriptors 220. points other than endpoint Zero. In certain embodiments, for the BMC 120, the configura In certain embodiments, the endpoint descriptor 240 can be tion descriptor 220 can be a 9-byte descriptor. The first byte a 7-byte descriptor. The first byte (offset 0) of the endpoint (offset 0) of the configuration descriptor 220 is a blength 55 descriptor 240 is a blength field, which specifies the length of field, which specifies the length of the descriptor (for the descriptor (for example, 0x07 indicates that the length of example, Ox09 indicates that the length of the configuration the endpoint descriptor 240 is 7 bytes). The second byte descriptor 220 is 9 bytes). The second byte (offset 1) of the (offset 1) of the endpoint descriptor 240 is a blescriptorType configuration descriptor 220 is a blescriptorType field, field, which indicates the descriptor type (0x05). The third which indicates the descriptor type (0x02). The third and 60 byte (offset 2) of the endpoint descriptor 240 is a bEnd fourth bytes (offset 2) of the configuration descriptor 220 pointAddress field, which describes the address of the end constitute a 2-byte wTotallength field, which indicates the point on the USB device. The bits 0-3 of the bEndpointAd total combined length of all returned descriptors (including dress field indicates the endpoint number, and the bit 7 of the the configuration descriptor 220 itself, the one or more inter bEndpointAddress field indicates the direction of the end face descriptors 230, the one or more endpoint descriptors 65 point (O for an OUT endpoint, and 1 for an IN endpoint), 240 and the one or more HID descriptors 250) under the which is ignored for a bi-directional control endpoint. For configuration. The fifth byte (offset 4) of the configuration example, 10000001B indicates that the endpoint number 1 is US 8,898,349 B1 17 18 an IN endpoint. The fourth byte (offset 3) of the endpoint BMC 120 as the specific HID device. In certain embodiments, descriptor 240 is a bn Attributes field, which indicates the the report descriptor 260 of the BMC 120 can include certain attributes of the endpoint. The bits 0-1 of the bmAttributes format codes 262. The format codes 262 include information field show the transfer type of the endpoint, where 00 indi to indicate a predefined format of the report used by the BMC cates control transfer, 01 indicates isochronous transfer, 10 120. For example, the format codes 262 may define the report indicates bulk transfer, and 11 indicates interrupt transfer. between the BMC 120 and the host computer to include an number of endpoints used by the interface. The sixth byte IPMI message directly embedded with a packet header at the (offset 5) of the interface descriptor 230 is a binterfaceClass front and a packet footer at the end to form the single packet field, which indicates the class code assigned by the USB. For report. When the OS 140 of the host computer 110 receives example, 0x03 indicates that the interface is in the HID class. 10 the report descriptor 260, the OS 140 may interpret the format Definitions and sample values of other fields of the endpoint codes 262 of the report descriptor 260, and recognize data to descriptor 240 can be found in the USB Specification, and are be transferred to or received from the BMC 120 in the pre nothereinafter described in detail. defined format based on the information provided by the The HID descriptor 250 identifies the basic information of format codes 262. Thus, the OS 140 may instruct the USB the HID device and the related descriptors, such as the report 15 HID host driver 150 to generate reports in the predefined descriptor 260, for describing the HID device. In other words, format. the HID descriptor 250 is essentially a header of the report The USB HID device driver 180 is a program that controls descriptor 260 of the HID device. The HID Class Specifica USB HID data transfer of the BMC 120 to and from the host tion allows implementation of self-describing input devices, computer 110, or any other USB devices connected to the which means the HID descriptor 250 and its corresponding BMC 120, via the USB interface 130. The USB HID device report descriptor 260 may contain information to understand driver 180 is instructed by the firmware 126 to communicate the report protocol the HID device uses to send information. with the host computer 110 or any other USB devices through In certain embodiments, the BMC 120, which serves as a the USB interface 130. USB HID device, may have one or more HID descriptor 250 As discussed, for USB HID devices, data transfer is imple to define the basic information of the BMC 120 as the HID 25 mented by reports, and in actual data transfer, a report is device. converted to one or more USB data packets. When the firm In certain embodiments, the HID descriptor 250 can be a ware 126 sends data to the USB HID device driver 180 for 9-byte descriptor. The first byte (offset 0) of the HID descrip transferring the data to the particular HID device, the firm tor 250 is a blength field, which specifies the length of the ware 126 instructs the USB HID device driver 180 to generate descriptor (for example, 0x09 indicates that the length of the 30 a reportina format recognizable by the particular HID device. HID descriptor 250 is 7 bytes). The second byte (offset 1) of After generating the report, the USB HID device driver 180 the HID descriptor 250 is a blescriptorType field, which converts the report to the USB data packets such that the indicates the descriptor type (OX21). The sixth byte (offset 5) firmware 126 may send the USB data packets to the particular of the HID descriptor 250 is abNumDescriptors field, which HID device through USB connection. For example, after the indicates the number of HID class descriptors (such as the 35 BMC 120 is connected to the host computer 110 via the USB report descriptor 260) to follow. Each HID descriptor 250 interface 130, the BMC 120 presents itself as the specific HID must be followed by at least one report descriptor 260, so the device for the host computer 110. Thus, when the firmware value of the bNumDescriptors field must be at least one. For 126 intends to send IPMI messages to the host computer 110. example, if the HID descriptor 250 is followed by a report the firmware 126 sends the IPMI messages to the USB HID descriptor 260 and no other HID class descriptors, the value 40 device driver 180, and instructs the USB HID device driver of the bNumDescriptors field is 0x01. The seventh byte (off 180 to generate a report in the predefined format. After gen set 6) of the HID descriptor 250 is abdescriptorType field, erating the report, the USB HID device driver 180 converts which indicates the type of the report descriptor 260. The the report to the USB data packets such that the firmware 126 eighth and ninth bytes (offset 7) of the HID descriptor 250 may send the USB data packets to the host computer 110 constitute a wl temLength field, which indicates the total 45 through the USB interface 130. length of the report descriptor 260. Definitions and sample On the other hand, when the BMC 120 receives USB data values of other fields of the HID descriptor 250 can be found packets from a particular HID device, the firmware 126 in the HID Class Specification, and are not hereinafter instructs the USB HID device driver 180 to combine USB described in detail. data packets to generate the report. Then, the firmware 126 The report descriptor 260 is the header of a report of the 50 instructs the USB HID device driver 180 to retrieve data from HID device, identifying the format of data transferred by the the report based on a format defined by the particular HID HID device. Since data is transferred in packets, the report device. For example, when the BMC 120 receives USB data descriptor 260 defines the data packets, such as the size of the packets from the host computer 110, the firmware 126 packet, and the purpose of each data bit in the packet. instructs the USB HID device driver 180 to combine the USB When the BMC 120 device is connected to the host com 55 data packets to generate the report. Since the report is in the puter 110, the OS 140 of the host computer 110 reads the predefined format, the firmware 126 instructs the USB HID report descriptor 260 from the USB descriptors 170 for the device driver 180 to retrieve the IPMI message from the report report protocol defined therein. All data transfer between the based on the predefined format. host computer 110 and the HID device will follow the report In certain embodiments, data transfer under the HID class protocol. Definitions and sample values of the report descrip 60 has a maximum packet size rate for full speed transfer at 64 tor 260 can be found in the HID Class Specification, and are bytes/ms. A typical IPMI message may be shorter than 64 nothereinafter described in detail. bytes. In this case, a report generated from the IPMI message In certain embodiments, the BMC 120 can present itself to by the USB HID device driver 180 can be essentially a USB the host computer 110 as a specific HID device (e.g. a specific data packet, and there is no need for further converting the mouse or a specific keyboard). In this case, the BMC 120 may 65 report to USB data packets. Specifically, the USB HID device have one or more report descriptors 260 to define the format driver 180 may embed the IPMI message directly with a of data transferred between the host computer 110 and the packet header and a packet footer to form the single packet US 8,898,349 B1 19 20 report. In other words, the report or the packet is formed by The LUN field is a two-digit logical unit number for sub attaching the packet header at the front of the IPMI message, addressing purposes. For low-end integrity servers and com and attaching the packet footer at the end of the IPMI mes puters, the LUN field is always zero. Sage. The Seqi field defines a sequence number in the response As discussed above, the USB HID device driver 180 oper message to identify the response message in response to a ates under the instruction issued by the firmware 126. In certain request message. In certain embodiments, the value certain embodiments, the USB HID device driver 180 may stored in the Seqi field is the same number as the sequence process the IPMI messages or any data to generate reports number appeared in the CMD field of the request message to according to the predefined format. Thus, there is no need for which the response message is in response. As discussed the USB HID device driver 180 to change the codes or soft 10 above, the Seqi field must be provided when the NetFn field ware modules to be compatible to the IPMI architecture. In is an even number to indicate the IPMI message as a response other words, the USB HID device driver 180 may maintain its message. original USB processing functionalities without recognizing The CMD field includes the commands of the IPMI mes that the data to be processed to generate the reports includes 15 sage. When the IPMI message is a request message, the CMD IPMI messages. field includes a sequence number Such that a response mes Currently, almost all firmware of BMC's available in the sage to the request message may include the same sequence market supports the USB standard, and provide a variety of number in the Seqi field. USB HID device drivers. In certain embodiments, the BMC The data field includes all data transferred by the IPMI 120 may use one of the USB HID device drivers provided by message. In certain embodiments, the data field of an IPMI the firmware 126 as the USB HID device driver 180. In certain message can be 0 bytes. In other words, an IPMI message may embodiments, the BMC 120 may use a customized USB HID contain no data field. device driver 180. FIG.3A schematically depicts an IPMI message according The IPMI module 190 is a program of the BMC 120 to to certain embodiments of the present disclosure. As shown in generate and process IPMI messages. In certain embodi 25 FIG. 3A, the IPMI message 310 includes a plurality of fields, ments, when the firmware 126 of the BMC 120 generates data such as thers slave address (rsSA) field 311, the NetFn field to be transferred under the IPMI architecture, the firmware 312, the rq slave address (rqSA) field 314, the rq Seqi 126 sends the data to the IPMI module 190, and the IPMI (rqSeq)/rqLUN field 315, the command field 316, and the module 190 converts the data to IPMI messages. When the data field 317. Further, a plurality of checksum fields 313 and firmware 126 receives IPMI messages from the host com 30 puter 110 or any other IPMI compatible devices, the firmware 318 are included for checksum verification purposes. As dis 126 sends the received IPMI messages to the IPMI module cussed above, the data field 317 may contain 0 bytes of data 190. The IPMI module 190 processes the IPMI messages to (i.e. no data field) or more than one byte of data. generate data recognizable by the firmware 126, and then FIG. 3B schematically depicts a USB HID data packet in sends the data back to the firmware 126 for further process. In 35 which an IPMI message is embedded according to certain certain embodiments, the IPMI module 190 can be a similar embodiments of the present disclosure. As shown in FIG.3B, program to the IPMI application 160 at the host computer the IPMI message 310 is embedded in a report, which is in the 110. form of a USB data packet. In other words, the USB data Currently, almost all firmware of BMC's available in the packet does not require further conversion from the report to market supports the IPMI architecture, and provide a variety 40 the packets. The format of the report is the predefined format of IPMI modules 190. In certain embodiments, the IPMI based on the information stored in the report descriptor 260 of module 190 can be a part of the firmware 126, which is the BMC 120. As shown in FIG. 3B, the USB data packet compatible to the IPMI architecture for generating IPMI mes includes a USB header 320 attached at the front of the IPMI sages. In certain embodiments, the IPMI module 190 is sepa message 310, the IPMI message 310, and a USB footer 330 rated from the firmware 126 as an independent program. 45 attached at the end of the IPMI message 310. As discussed above, the IPMI module 190 performs con In certain embodiments, the USB header 320 includes a version between IPMI messages and data recognizable by the synchronization (Sync) field 322 and a packet identifier (PID) firmware 126. In certain embodiments, the IPMI module 190 field 324. The Sync field 322 is an 8-bit (slow or full speed is independent from the USB features of the BMC 120. Thus, USB) or 32-bit (high speed USB) field used for synchronize the IPMI module 190 does not need to change the codes or 50 the transmitter and the receiver such that the data can be software modules to be compatible to the USB standard. In transferred accurately. The PID field 324 is an 8-bit identifier other words, the IPMI module 190 may maintain its original directly following the Sync Field 322, which includes 4 bits of IPMI processing functionalities without adding features com identifiers and 4 bits of compliments of the identifier. patible to the USB standard. In certain embodiments, the USB footer 330 includes a The IPMI messages can be transmitted, translated, bussed, 55 cyclic redundancy checking (CRC) field 332 and an end of and wrapped in a variety of fashions. Generally, an IPMI packet (EOP) field 334. The CRC field 332 can be a 16-bit message can be a request message (generally labeled as “rq) CRC16 error detection field used for CRC purposes. The EOP or a response message (generally labeled as “rs'), and has a field 334 is a 3-bit packet ending field, including a single plurality of fields, including the network function (NetFn) ended Zero (SEO) for two bits followed by a J for 1 bit. field, the logical unit number (LUN) field, the sequence num 60 As discussed above, data transfer under the HID class ber (Seqi) field, the command (CMD) field, and the data field. completely satisfies the requirements specified by IPMI v2.0, The NetFn field is a six-bit field that describes the network and the maximum packet size rate under the HID class is function of the IPMI message. The IPMI Specification faster than the byte-level data transfer via the typical stan defines certain predefined categories for the NetFn field, and dardized IPMI system interfaces. Thus, by converting IPMI there are reserved codes for OEM expansion. For a request 65 message to the report, IPMI messages can be transferred message, the NetFn field is an odd number, and for a response between the host computer 110 and the BMC 120 through the message, the NetFn field is an even number. USB interface 130. US 8,898,349 B1 21 22 FIG. 4 schematically depicts configuration setup of the BMC 120. In other words, the host computer 110, which BMC as a specific HID device at a host computer according to initiates the data transfer process, is a source device, and the certain embodiments of the present disclosure. BMC 120, which receives the data being transferred, is the When the BMC 120 is connected to the host computer 110 target device. via the USB interface 130, the OS 140 detects that a device is At procedure 510, the OS 140 generates certain data to be connected to the host computer 110 via the USB interface sent to the BMC 120. In certain embodiments, the data can 130, but does not know at this time whether the device is a include any information to be used by the BMC 120, such as HID device or any other USB devices. To determine the type a command, an instruction, a response to a request from the of the BMC 120, at procedure 510, the OS 140 instructs the BMC 120, or any other data. It should be noted that the data USB HID host driver 150 to access the descriptors of the 10 is not in the format of an IPMI message. To generate the IPMI device. In certain embodiments, the OS 140 accesses one message, at procedure 520, the OS 140 sends the data to the descriptor at a time. At procedure 520, the USB HID host IPMI application 160. At procedure 525, the IPMI application driver 150 sends a Get Descriptor request to the BMC 120 160 converts the data to generate the IPMI message. An through the USB interface 130 to get a device descriptor 210. example of the IPMI message 310 is shown in FIG. 3A. At At the BMC 120, when the USB HID device driver 180 15 procedure 530, the IPMI application 160 sends the IPMI receives the Get Descriptor request for the device descriptor message back to the OS 140. 210, at procedure 430, the USB HID device driver 180 senda As discussed above, during the configuration of the BMC request to the USB descriptors 170 for the device descriptor 120 as a USB HID device, the OS 140 of the host computer 210. In response, at procedure 440, the USB descriptors 170 110 determines, based on the format codes 262 of the report return the device descriptor 210 back to the USB HID device descriptor 260, that data transfer between the BMC 120 and driver 180. At procedure 450, the USB HID device driver 180 the host computer 110 should be a report in the predefined converts the device descriptor 210 to USB data packets, and at format. To send the IPMI message to the BMC 120, at pro procedure 460, the USB HID device driver 180 sends the cedure 540, the OS 140 sends the IPMI messages to the USB USB data packets to the host computer 110 through the USB HID host driver 150, and instructs the USB HID host driver interface 130. 25 150 to generate a report in the predefined format. At the host computer 110, when the USB HID host driver At procedure 545, the USB HID host driver 150 embeds the 150 receives the USB data packets, at procedure 470, the USB IPMI message in the report based on the predefined format, HID host driver 150 converts the USB data packets back to the and generates USB data packets of the report. In certain device descriptor 210. At procedure 480, the USB HID host embodiments, the report includes one USB data packet. In driver 150 sends the device descriptor 210 to the OS 140. At 30 certain embodiments, the USB data packet includes the procedure 490, the OS 140 reads the device descriptor 210, packet header 320, the IPMI message 310, and the packet and recognizes that the device descriptor 210 has one corre footer 330 as shown in FIG. 3B. At procedure 550, the USB sponding configuration descriptor 220. HID host driver 150 sends the USB data packets back to the At procedure 495, the OS 140 goes back to procedure 410 OS 140. to request for the configuration descriptor 220. The same 35 At procedure 555, the OS 140 sends the USB data packets requesting and interpreting procedures from 310 to 390 to the BMC 120 through the USB interface 130. In certain repeats until the OS 140 of the host computer 110 reads all of embodiments, the maximum packet size of endpoint Zero of the descriptors (including the device descriptor 210, the con the BMC 120, which is defined in the bMaxPacketSize() field figuration descriptor 220, the interface descriptor 230, the of the device descriptor 210, can be 64 bytes. endpoint descriptor 240, the HID descriptor 250, and the 40 At the BMC 120, when the firmware 126 receives the USB report descriptor 260) from the USB descriptors 170 of the data packets from the host computer 110, at procedure 560, BMC 120. Once the OS 140 reads all of the descriptors, the the firmware 126 sends the USB data packets to the USB HID USB connection between the host computer 110 and the device driver 180 for converting the USB data packets back to BMC 120 is fully established. the report and retrieving the IPMI message embedded in the In certain embodiments, when the OS 140 reads the inter 45 report. At procedure 565, the USB HID device driver 180 face descriptor 230, the OS 140 can determine from the value combines the USB data packets to generate the report, and (0x03) of the binterfaceClass field 232 in the interface retrieves the data embedded in the report according to the descriptor 230 that the BMC 120 is a HID device. When the predefined format. Since the data embedded in the report is OS 140 reads the report descriptor 260, the OS 140 deter the IPMI message, the retrieved data will be the IPMI mes mines from the format codes 262 of the report descriptor 260 50 sage generated at the host computer 110. At procedure 570, that the report being transferred between the host computer the USB HID device driver 180 sends the retrieved IPMI 110 and the BMC 120 may include a packet header, an IPMI message to the firmware 126. message, and a packet footer. During the USB connection, the At procedure 575, the firmware 126 sends the IPMI mes host computer 110 may send a standard request to the BMC sage to the IPMI module 190. At procedure 580, the IPMI 120 to get or change the information of the USB descriptors 55 module 190 converts the IPMI message to data recognizable 170 from the BMC 120. For example, the host computer 110 by the firmware 126. At procedure 585, the IPMI module 190 may senda Get Descriptor request to the BMC 120 to get any sends the data back to the firmware 126. At procedure 590, the of the descriptors from the USB descriptors 170 of the BMC firmware 126 may process with the data. 120. In certain embodiments, the host computer 110 may As discussed above, the conversion between original data issue a Set Descriptor request to the BMC 120 to change the 60 and the IPMI message is performed by the IPMI application information in any of the descriptors of the USB descriptors 160 at the host computer 110 and the IPMI module 190 at the 170 of the BMC 120. BMC 120. The conversion between the IPMI messages and FIG. 5 schematically depicts data transfer from the host the report is performed by the USB HID host driver 150 at the computer to the BMC according to certain embodiments of host computer 110 and the USB HID device driver 180 at the the present disclosure. In certain embodiments, reports, 65 BMC 120. Thus, at the host computer 110, the IPMI applica which are in the predefined format according to the format tion 160 may maintain its original IPMI processing function codes 262, are transferred from the host computer 110 to the alities without changing the codes or software modules to be US 8,898,349 B1 23 24 compatible to the USB standard, and the USB HID host driver At procedure 675, the OS 140 sends the IPMI message to 150 may maintain its original USB processing functionalities the IPMI application 160. At procedure 680, the IPMI appli without changing the codes or Software modules to be com cation 160 converts the IPMI message to data recognizable by patible to the IPMI architecture. At the BMC 120, the IPMI the OS 140. At procedure 685, the IPMI application 160 sends module 190 may maintain its original IPMI processing func the data back to the OS 140. At procedure 690, the OS 140 tionalities without changing the codes or firmware modules to may process with the data. be compatible to the USB standard, and the USB HID device As discussed above, the conversion between original data driver 180 may maintain its original USB processing func and the IPMI message is performed by the IPMI application tionalities without changing the codes or Software modules to 160 at the host computer 110 and the IPMI module 190 at the be compatible to the IPMI architecture. 10 BMC 120. The conversion between the IPMI messages and FIG. 6 schematically depicts data transfer from the BMC to the report is performed by the USB HID host driver 150 at the the host computer according to certain embodiments of the host computer 110 and the USB HID device driver 180 at the present disclosure. In certain embodiments, reports, which BMC 120. Thus, at the host computer 110, the IPMI applica are in the predefined format according to the format codes tion 160 may maintain its original IPMI processing function 262, are transferred from the BMC 120 to the host computer 15 alities without changing the codes or software modules to be 110. In other words, the BMC 120, which initiates the data compatible to the USB standard, and the USB HID host driver transfer process, is the source device, and the host computer 150 may maintain its original USB processing functionalities 110, which receives the data being transferred, is the target without changing the codes or software modules to be com device. As discussed above, USB 3.0 allows for device-initi patible to the IPMI architecture. At the BMC 120, the IPMI ated communications towards the host. Thus, the data transfer module 190 may maintain its original IPMI processing func process from the BMC 120 to the host computer 110 can be tionalities without changing the codes or firmware modules to initiated by the BMC 120, which is similar to the data transfer be compatible to the USB standard, and the USB HID device process from the host computer 110 to the BMC 120 as shown driver 180 may maintain its original USB processing func in FIG. 5. tionalities without changing the codes or Software modules to At procedure 610, the firmware 126 generates certain data 25 be compatible to the IPMI architecture. to be sent to the host computer 110. In certain embodiments, The system and methods as described in the embodiments the data can include any information to be used by the host of the present disclosure relate to data transfer between the computer 110. Such as a command, an instruction, a response host computer 110 and the BMC 120 through the USB inter to a request from the host computer 110, or any other data. It face 130. The data being transferred includes IPMI messages should be noted that the data is not in the format of an IPMI 30 embedded in the USB HID reports. This allows data transfer message. To generate the IPMI message, at procedure 620, to be performed through the USB interface 130. Thus, a low the firmware 126 sends the data to the IPMI module 190. At costBMC 120 without hardware/software support to the stan procedure 625, the IPMI module 190 converts the data to dardized IPMI system interfaces may utilize the methods as generate the IPMI message. An example of the IPMI message described in the embodiments to perform IPMI over USB 310 is shown in FIG. 3A. At procedure 630, the IPMI module 35 data transfer through the USB interface 130. In other words, 190 sends the IPMI message back to the firmware 126. the system and methods as described in the embodiments may As discussed above, data transfer between the BMC 120 be implemented in any BMC or SP connected to the host and the host computer 110 is a report in the predefined format. computer 110 with a USB interface 130 even if there is no To send the IPMI message to the host computer 110, at pro standardized IPMI system interface available. cedure 640, the firmware 126 sends the IPMI messages to the 40 The foregoing description of the exemplary embodiments USB HID device driver 180, and instructs the USB HID of the disclosure has been presented only for the purposes of device driver 180 to generate a report in the predefined for illustration and description and is not intended to be exhaus mat. tive or to limit the disclosure to the precise forms disclosed. At procedure 645, the USB HID device driver 180 embeds Many modifications and variations are possible in light of the the IPMI message in the report based on the predefined for 45 above teaching. mat, and generates USB data packets of the report. In certain The embodiments were chosen and described in order to embodiments, the report includes one USB data packet. In explain the principles of the disclosure and their practical certain embodiments, the USB data packet includes the application so as to enable others skilled in the art to utilize packet header 320, the IPMI message 310, and the packet the disclosure and various embodiments and with various footer 330 as shown in FIG. 3B. At procedure 650, the USB 50 modifications as are Suited to the particular use contemplated. HID device driver 180 sends the USB data packets back to the Alternative embodiments will become apparent to those firmware 126. At procedure 655, the firmware 126 sends the skilled in the art to which the present disclosure pertains USB data packets to the host computer 110 through the USB without departing from its spirit and scope. Accordingly, the interface 130. scope of the present disclosure is defined by the appended At the host computer 110, when the OS 140 receives the 55 claims rather than the foregoing description and the exem USB data packets from the BMC 120, at procedure 660, the plary embodiments described therein. firmware 126 sends the USB data packets to the USB HID What is claimed is: host driver 150 for converting the USB data packets back to 1. A system, comprising: the report and retrieving the IPMI message embedded in the a baseboard management controller (BMC), comprising a report. At procedure 665, the USB HID host driver 150 com 60 processor, a non-volatile memory and a universal serial bines the USB data packets to generate the report, and bus (USB) interface, wherein the non-volatile stores retrieves the data embedded in the report according to the firmware, a plurality of USB descriptors, and a USB predefined format. Since the data embedded in the report is human interface device (HID) device driver, wherein the the IPMI message, the retrieved data will be the IPMI mes firmware, when executed at the processor, is configured sage generated at the BMC 120. At procedure 670, the USB 65 tO HID host driver 150 sends the retrieved IPMI message to the when the BMC is connected to a host computer via the OS 140. USB interface, send the plurality of USB descriptors US 8,898,349 B1 25 26 to the host computer through the USB interface such when the BMC is connected to the host computer via the that the host computer recognizes the BMC as a spe USB interface, receive the plurality of USB descrip cific HID device based on the plurality of USB tors from the BMC through the USB interface, and descriptors; recognize the BMC as the specific HID device to instruct the USB HID device driver to generate a first receive the second USB HID report based on the USB HID report in a predefined format based on the plurality of USB descriptors; USB descriptors, wherein the predefined format com receive the second IPMI message from the IPMI appli prises a USB header, report data, and a USB footer; cation; generate a first Intelligent Platform Management Inter instruct the USB HID host driver to generate the second face (IPMI) message as the report data of the first USB 10 USB HID report from the second IPMI message in the HID report: predefined format based on the plurality of USB send the first USB HID report generated by the USB descriptors; HID device driver to the host computer through the send the second USB HID report generated by the USB USB interface; 15 HID host driver to the BMC through the USB inter receive a second USB HID report in the predefined for face; mat from the host computer through the USB inter receive the first USB HID report from the BMC through face; the USB interface; and instruct the USB HID device driver to retrieve the report instruct the USB HID host driver to retrieve the first data from the second USB HID report, wherein the IPMI message from the first USB HID report and send retrieved report data is a second IPMI message; and the retrieved first IPMI message to the IPMI applica process the second IPMI message. tion. 2. The system as claimed in claim 1, wherein the USB 8. The system as claimed in claim 7, wherein the OS is header comprises a synchronization field and a packet iden configured to receive the plurality of USB descriptors to the tifier field, and the USB footer comprises a cyclic redundancy 25 host computer through the USB interface by checking (CRC) field and an end of packet (EOP) field. sending a request for one of the USB descriptors to the 3. The system as claimed in claim 1, wherein each of the BMC through the USB interface; and first USB HID report and the second USB HID report com receiving the requested USB descriptor from the BMC prises at least one USB data packet. through the USB interface. 4. The system as claimed in claim 1, wherein the firmware 30 9. The system as claimed in claim 7, wherein the USB is configured to send the plurality of USB descriptors to the descriptors comprise a device descriptor, at least one configu host computer through the USB interface by ration descriptor, at least one interface descriptor, at least one receiving a request for one of the USB descriptors from the endpoint descriptor, at least one HID descriptor, and at least host computer through the USB interface; and one report descriptor. sending, in response to the request, the requested USB 35 10. The system as claimed in claim 9, wherein the at least descriptor to the host computer through the USB inter one interface descriptor comprises a USB HID class code face. identifying the BMC as the specific HID device, and wherein 5. The system as claimed in claim 1, wherein the firmware the at least one report descriptor comprises format codes is configured to receive the second USB HID report from the identifying the predefined format. host computer through the USB interface by 40 11. The system as claimed in claim 10, wherein the OS is receiving at least one USB data packet of the second USB configured to recognize the BMC as the specific HID device HID report from the host computer through the USB by interface; and identifying the BMC as the specific HID device based on instructing the USB HID device driver to combine the at the USB HID class code of the at least one interface least one USB data packet to generate the second USB 45 descriptor, and HID report. identifying the predefined format based on the format 6. The system as claimed in claim 1, wherein the firmware codes of the at least one report descriptor. is configured to send the first USB HID report to the host 12. The system as claimed in claim 7, wherein the OS is computer through the USB interface by instructing the USB configured to receive the first USB HID report from the BMC HID device driver to 50 through the USB interface by generate at least one USB data packet from the first USB receiving at least one USB data packet of the first USB HID HID report; and report from the BMC through the USB interface; and send the at least one USB data packet of the first USB HID instructing the USB HID host driver to combine the at least report to the host computer through the USB interface. one USB data packet to generate the first USB HID 7. The system as claimed in claim 1, wherein the host 55 report. computer comprises: 13. The system as claimed in claim 7, wherein the OS is a host processor; and configured to send the second USB HID report to the BMC a storage device, configured to store an IPMI application, through the USB interface by instructing the USB HID host an operating system (OS), and a USB HID host driver, driver to wherein the IPMI application, when executed at the host 60 generate at least one USB data packet from the second USB processor, is configured to HID report; and generate the second IPMI message as the report data of send the at least one USB data packet of the second USB the second USB HID report: HID report to the host computer through the USB inter send the second IPMI message to the OS; and face. receive and process the first IPMI message from the OS; 65 14. A method of transferring data between a baseboard wherein the OS, when executed at the host processor, management controller (BMC) and a host computer, com is configured to prising: US 8,898,349 B1 27 28 sending, from the BMC, a plurality of universal serial bus when the BMC is connected to the host computer via the (USB) descriptors to the host computer through a USB USB interface, receive the plurality of USB descrip interface Such that the host computer recognizes the tors from the BMC through the USB interface, and BMC as a specific human interface device (HID) device recognize the BMC as the specific HID device to based on the plurality of USB descriptors, wherein the receive the second USB HID report based on the BMC is connected to the host computer via the USB plurality of USB descriptors; interface; receive the second IPMI message from the IPMI appli instructing, at the BMC, a USB HID device driver to gen cation; erate a first USB HID reportin a predefined format based instruct the USB HID host driver to generate the second on the USB descriptors, wherein the predefined format 10 USB HID report from the second IPMI message in the comprises a USB header, report data, and a USB footer; predefined format based on the plurality of USB generating, at the BMC, a first Intelligent Platform Man descriptors; agement Interface (IPMI) message as the report data of send the second USB HID report generated by the USB the first USB HID report: HID host driver to the BMC through the USB inter sending, from the BMC, the first USB HID report gener 15 face; ated by the USB HID device driver to the host computer receive the first USB HID report from the BMC through through the USB interface; the USB interface; and receiving, at the BMC, a second USB HID report in the instruct the USB HID host driver to retrieve the first predefined format from the host computer through the IPMI message from the first USB HID report and send USB interface; the retrieved first IPMI message to the IPMI applica instructing, at the BMC, the USB HID device driver to tion. retrieve the report data from the second USB HID report, 18. The method as claimed in claim 17, wherein the USB wherein the retrieved report data is a second IPMI mes descriptors comprise a device descriptor, at least one configu Sage; and ration descriptor, at least one interface descriptor, at least one processing, at the BMC, the second IPMI message. 25 endpoint descriptor, at least one HID descriptor, and at least 15. The method as claimed in claim 14, wherein each of the one report descriptor, first USB HID report and the second USB HID report com wherein the at least one interface descriptor comprises a prises at least one USB data packet. USB HID class code identifying the BMC as the specific 16. The method as claimed in claim 14, HID device, and wherein the at least one report descrip wherein the BMC is configured to send the plurality of 30 tor comprises format codes identifying the predefined USB descriptors to the host computer through the USB format. interface by 19. The method as claimed in claim 18, receiving a request for one of the USB descriptors from wherein the OS is configured to receive the plurality of the host computer through the USB interface; and USB descriptors to the host computer through the USB sending, in response to the request, the requested USB 35 interface by descriptor to the host computer through the USB sending a request for one of the USB descriptors to the interface; BMC through the USB interface; and wherein the BMC is configured to receive the second USB receiving the requested USB descriptor from the BMC HID report from the host computer through the USB through the USB interface; interface by 40 wherein the OS is configured to recognize the BMC as the receiving at least one USB data packet of the second specific HID device by USB HID report from the host computer through the identifying the BMC as the specific HID device based on USB interface; and the USB HID class code of the at least one interface instructing the USB HID device driver to combine the at descriptor, and least one USB data packet to generate the second USB 45 identifying the predefined format based on the format HID report; and codes of the at least one report descriptor, wherein the BMC is configured to send the first USB HID wherein the OS is configured to receive the first USB HID report to the host computer through the USB interface by report from the BMC through the USB interface by instructing the USB HID device driver to receiving at least one USB data packet of the first USB generate at least one USB data packet from the first USB 50 HID report from the BMC through the USB interface; HID report; and and send the at least one USB data packet of the first USB instructing the USB HID host driver to combine the at HID report to the host computer through the USB least one USB data packet to generate the first USB interface. HID report; and 17. The method as claimed in claim 14, wherein the host 55 wherein the OS is configured to send the second USB HID computer comprises: report to the BMC through the USB interface by a host processor; and instructing the USB HID host driver to a storage device, configured to store an IPMI application, generate at least one USB data packet from the second an operating system (OS), and a USB HID host driver, USB HID report; and wherein the IPMI application, when executed at the host 60 send the at least one USB data packet of the second USB processor, is configured to HID report to the host computer through the USB generate the second IPMI message as the report data of interface. the second USB HID report: 20. A non-transitory computer readable medium storing send the second IPMI message to the OS; and computer executable codes, wherein the codes, when receive and process the first IPMI message from the OS; 65 executed at a processor, are configured to wherein the OS, when executed at the host processor, send, from a baseboard management controller (BMC), a is configured to plurality of universal serial bus (USB) descriptors to a US 8,898,349 B1 29 30 host computer through a USB interface such that the host receive and process the first IPMI message from the OS; computer recognizes the BMC as a specific human inter wherein the OS, when executed at the host processor, face device (HID) device based on the plurality of USB is configured to descriptors, wherein the BMC is connected to the host when the BMC is connected to the host computer via the USB interface, receive the plurality of USB descrip computer via the USB interface; 5 tors from the BMC through the USB interface, and instruct, at the BMC, a USB HID device driver to generate recognize the BMC as the specific HID device to a first USB HID report in a predefined format based on receive the second USB HID report based on the the USB descriptors, wherein the predefined format plurality of USB descriptors; comprises a USB header, report data, and a USB footer; 10 receive the second IPMI message from the IPMI appli generate, at the BMC, a first Intelligent Platform Manage cation; ment Interface (IPMI) message as the report data of the instruct the USB HID host driver to generate the second first USB HID report: USB HID report from the second IPMI message in the send, from the BMC, the first USB HID report generated by predefined format based on the plurality of USB the USB HID device driver to the host computer through 15 descriptors; the USB interface; send the second USB HID report generated by the USB receive, at the BMC, a second USB HID report in the HID host driver to the BMC through the USB inter predefined format from the host computer through the face; USB interface; receive the first USB HID report from the BMC through instruct, at the BMC, the USB HID device driver to retrieve 20 the USB interface; and the report data from the second USB HID report, instruct the USB HID host driver to retrieve the first IPMI message from the first USB HID report and send wherein the retrieved report data is a second IPMI mes the retrieved first IPMI message to the IPMI applica Sage; and tion. process, at the BMC, the second IPMI message. 24. The non-transitory computer readable medium as 21. The non-transitory computer readable medium as 25 claimed in claim 23, wherein the USB descriptors comprise a claimed in claim 20, wherein each of the first USB HID report device descriptor, at least one configuration descriptor, at and the second USB HID report comprises at least one USB least one interface descriptor, at least one endpoint descriptor, data packet. at least one HID descriptor, and at least one report descriptor, 22. The non-transitory computer readable medium as wherein the at least one interface descriptor comprises a claimed in claim 20, 30 USB HID class code identifying the BMC as the specific wherein the codes are configured to send, from the BMC, HID device, and wherein the at least one report descrip the plurality of USB descriptors to the host computer tor comprises format codes identifying the predefined through the USB interface by format. receiving a request for one of the USB descriptors from 25. The non-transitory computer readable medium as the host computer through the USB interface; and claimed in claim 24, sending, in response to the request, the requested USB wherein the OS is configured to receive the plurality of descriptor to the host computer through the USB USB descriptors to the host computer through the USB interface; interface by wherein the codes are configured to receive, at the BMC, 40 sending a request for one of the USB descriptors to the the second USB HID report from the host computer BMC through the USB interface; and through the USB interface by receiving the requested USB descriptor from the BMC receiving at least one USB data packet of the second through the USB interface; USB HID report from the host computer through the wherein the OS is configured to recognize the BMC as the USB interface; and 45 specific HID device by instructing the USB HID device driver to combine the at identifying the BMC as the specific HID device based on least one USB data packet to generate the second USB the USB HID class code of the at least one interface HID report; and descriptor, and wherein the codes are configured to send, from the BMC, identifying the predefined format based on the format the first USB HID report to the host computer through 50 codes of the at least one report descriptor, the USB interface by instructing the USB HID device wherein the OS is configured to receive the first USB HID driver to report from the BMC through the USB interface by generate at least one USB data packet from the first USB receiving at least one USB data packet of the first USB HID report; and HID report from the BMC through the USB interface; send the at least one USB data packet of the first USB 55 and HID report to the host computer through the USB instructing the USB HID host driver to combine the at interface. least one USB data packet to generate the first USB 23. The non-transitory computer readable medium as HID report; and claimed in claim 20, wherein the host computer comprises: wherein the OS is configured to send the second USB HID a host processor; and 60 report to the BMC through the USB interface by a storage device, configured to store an IPMI application, instructing the USB HID host driver to an operating system (OS), and a USB HID host driver, generate at least one USB data packet from the second wherein the IPMI application, when executed at the host USB HID report; and processor, is configured to send the at least one USB data packet of the second USB generate the second IPMI message as the report data of 65 HID report to the host computer through the USB the second USB HID report: interface. send the second IPMI message to the OS; and