blob: 2785697da59d717b831ac24e2860f5e202cf577f [file] [log] [blame]
Oren Weil463ac7f2011-12-06 23:25:18 +02001Intel(R) Management Engine Interface (Intel(R) MEI)
Oren Weil6624fc22011-05-15 13:43:39 +03002=======================
3
4Introduction
5=======================
6
Justin P. Mattock5f9092f32012-03-12 07:18:09 -07007The Intel Management Engine (Intel ME) is an isolated and protected computing
Oren Weil463ac7f2011-12-06 23:25:18 +02008resource (Co-processor) residing inside certain Intel chipsets. The Intel ME
9provides support for computer/IT management features. The feature set
10depends on the Intel chipset SKU.
Oren Weil6624fc22011-05-15 13:43:39 +030011
Oren Weil463ac7f2011-12-06 23:25:18 +020012The Intel Management Engine Interface (Intel MEI, previously known as HECI)
13is the interface between the Host and Intel ME. This interface is exposed
14to the host as a PCI device. The Intel MEI Driver is in charge of the
15communication channel between a host application and the Intel ME feature.
Oren Weil6624fc22011-05-15 13:43:39 +030016
Oren Weil463ac7f2011-12-06 23:25:18 +020017Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and
18each client has its own protocol. The protocol is message-based with a
19header and payload up to 512 bytes.
Oren Weil6624fc22011-05-15 13:43:39 +030020
Oren Weil463ac7f2011-12-06 23:25:18 +020021Prominent usage of the Intel ME Interface is to communicate with Intel(R)
22Active Management Technology (Intel AMT)implemented in firmware running on
23the Intel ME.
Oren Weil6624fc22011-05-15 13:43:39 +030024
25Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
Oren Weil463ac7f2011-12-06 23:25:18 +020026even when the operating system running on the host processor has crashed or
27is in a sleep state.
Oren Weil6624fc22011-05-15 13:43:39 +030028
29Some examples of Intel AMT usage are:
30 - Monitoring hardware state and platform components
Oren Weil463ac7f2011-12-06 23:25:18 +020031 - Remote power off/on (useful for green computing or overnight IT
32 maintenance)
Oren Weil6624fc22011-05-15 13:43:39 +030033 - OS updates
34 - Storage of useful platform information such as software assets
Oren Weil463ac7f2011-12-06 23:25:18 +020035 - Built-in hardware KVM
36 - Selective network isolation of Ethernet and IP protocol flows based
37 on policies set by a remote management console
Oren Weil6624fc22011-05-15 13:43:39 +030038 - IDE device redirection from remote management console
39
40Intel AMT (OOB) communication is based on SOAP (deprecated
Oren Weil463ac7f2011-12-06 23:25:18 +020041starting with Release 6.0) over HTTP/S or WS-Management protocol over
42HTTP/S that are received from a remote management console application.
Oren Weil6624fc22011-05-15 13:43:39 +030043
44For more information about Intel AMT:
Oren Weil463ac7f2011-12-06 23:25:18 +020045http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
Oren Weil6624fc22011-05-15 13:43:39 +030046
Oren Weil463ac7f2011-12-06 23:25:18 +020047Intel MEI Driver
Oren Weil6624fc22011-05-15 13:43:39 +030048=======================
49
Oren Weil463ac7f2011-12-06 23:25:18 +020050The driver exposes a misc device called /dev/mei.
Oren Weil6624fc22011-05-15 13:43:39 +030051
Oren Weil463ac7f2011-12-06 23:25:18 +020052An application maintains communication with an Intel ME feature while
53/dev/mei is open. The binding to a specific features is performed by calling
54MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
55The number of instances of an Intel ME feature that can be opened
56at the same time depends on the Intel ME feature, but most of the
Oren Weil6624fc22011-05-15 13:43:39 +030057features allow only a single instance.
58
Oren Weil463ac7f2011-12-06 23:25:18 +020059The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
60simultaneous user applications. Therefore, the Intel MEI driver handles
Oren Weil6624fc22011-05-15 13:43:39 +030061this internally by maintaining request queues for the applications.
62
Oren Weil463ac7f2011-12-06 23:25:18 +020063The driver is oblivious to data that is passed between firmware feature
64and host application.
Oren Weil6624fc22011-05-15 13:43:39 +030065
Oren Weil463ac7f2011-12-06 23:25:18 +020066Because some of the Intel ME features can change the system
67configuration, the driver by default allows only a privileged
Oren Weil6624fc22011-05-15 13:43:39 +030068user to access it.
69
Oren Weil463ac7f2011-12-06 23:25:18 +020070A code snippet for an application communicating with
71Intel AMTHI client:
Oren Weil6624fc22011-05-15 13:43:39 +030072 struct mei_connect_client_data data;
73 fd = open(MEI_DEVICE);
74
75 data.d.in_client_uuid = AMTHI_UUID;
76
77 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);
78
Oren Weil463ac7f2011-12-06 23:25:18 +020079 printf("Ver=%d, MaxLen=%ld\n",
Oren Weil6624fc22011-05-15 13:43:39 +030080 data.d.in_client_uuid.protocol_version,
81 data.d.in_client_uuid.max_msg_length);
82
83 [...]
84
85 write(fd, amthi_req_data, amthi_req_data_len);
86
87 [...]
88
89 read(fd, &amthi_res_data, amthi_res_data_len);
90
91 [...]
92 close(fd);
93
Oren Weil463ac7f2011-12-06 23:25:18 +020094IOCTL:
95======
96The Intel MEI Driver supports the following IOCTL command:
97 IOCTL_MEI_CONNECT_CLIENT Connect to firmware Feature (client).
98
99 usage:
100 struct mei_connect_client_data clientData;
101 ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData);
102
103 inputs:
104 mei_connect_client_data struct contain the following
105 input field:
106
107 in_client_uuid - UUID of the FW Feature that needs
108 to connect to.
109 outputs:
110 out_client_properties - Client Properties: MTU and Protocol Version.
111
112 error returns:
113 EINVAL Wrong IOCTL Number
114 ENODEV Device or Connection is not initialized or ready.
115 (e.g. Wrong UUID)
116 ENOMEM Unable to allocate memory to client internal data.
117 EFAULT Fatal Error (e.g. Unable to access user input data)
118 EBUSY Connection Already Open
119
120 Notes:
121 max_msg_length (MTU) in client properties describes the maximum
122 data that can be sent or received. (e.g. if MTU=2K, can send
123 requests up to bytes 2k and received responses upto 2k bytes).
124
125Intel ME Applications:
Oren Weil6624fc22011-05-15 13:43:39 +0300126==============
127
1281) Intel Local Management Service (Intel LMS)
Oren Weil6624fc22011-05-15 13:43:39 +0300129
Oren Weil463ac7f2011-12-06 23:25:18 +0200130 Applications running locally on the platform communicate with Intel AMT Release
131 2.0 and later releases in the same way that network applications do via SOAP
132 over HTTP (deprecated starting with Release 6.0) or with WS-Management over
133 SOAP over HTTP. This means that some Intel AMT features can be accessed from a
134 local application using the same network interface as a remote application
135 communicating with Intel AMT over the network.
136
137 When a local application sends a message addressed to the local Intel AMT host
138 name, the Intel LMS, which listens for traffic directed to the host name,
139 intercepts the message and routes it to the Intel MEI.
Oren Weil6624fc22011-05-15 13:43:39 +0300140 For more information:
Oren Weil463ac7f2011-12-06 23:25:18 +0200141 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
142 Under "About Intel AMT" => "Local Access"
Oren Weil6624fc22011-05-15 13:43:39 +0300143
Oren Weil463ac7f2011-12-06 23:25:18 +0200144 For downloading Intel LMS:
145 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
Oren Weil6624fc22011-05-15 13:43:39 +0300146
Oren Weil463ac7f2011-12-06 23:25:18 +0200147 The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
148 firmware feature using a defined UUID and then communicates with the feature
149 using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol).
150 The protocol is used to maintain multiple sessions with Intel AMT from a
151 single application.
152
153 See the protocol specification in the Intel AMT Software Development Kit(SDK)
154 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
155 Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)"
156 => "Information for Intel(R) vPro(TM) Gateway Developers"
157 => "Description of the Intel AMT Port Forwarding (APF)Protocol"
158
159 2) Intel AMT Remote configuration using a Local Agent
Oren Weil6624fc22011-05-15 13:43:39 +0300160 A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
Oren Weil463ac7f2011-12-06 23:25:18 +0200161 without requiring installing additional data to enable setup. The remote
162 configuration process may involve an ISV-developed remote configuration
163 agent that runs on the host.
Oren Weil6624fc22011-05-15 13:43:39 +0300164 For more information:
Oren Weil463ac7f2011-12-06 23:25:18 +0200165 http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
166 Under "Setup and Configuration of Intel AMT" =>
167 "SDK Tools Supporting Setup and Configuration" =>
168 "Using the Local Agent Sample"
Oren Weil6624fc22011-05-15 13:43:39 +0300169
Oren Weil463ac7f2011-12-06 23:25:18 +0200170 An open source Intel AMT configuration utility, implementing a local agent
171 that accesses the Intel MEI driver, can be found here:
172 http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
173
Oren Weil6624fc22011-05-15 13:43:39 +0300174
175Intel AMT OS Health Watchdog:
176=============================
177The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
178Whenever the OS hangs or crashes, Intel AMT will send an event
Justin P. Mattock5f9092f32012-03-12 07:18:09 -0700179to any subscriber to this event. This mechanism means that
180IT knows when a platform crashes even when there is a hard failure on the host.
Oren Weil463ac7f2011-12-06 23:25:18 +0200181
182The Intel AMT Watchdog is composed of two parts:
183 1) Firmware feature - receives the heartbeats
Oren Weil6624fc22011-05-15 13:43:39 +0300184 and sends an event when the heartbeats stop.
Oren Weil463ac7f2011-12-06 23:25:18 +0200185 2) Intel MEI driver - connects to the watchdog feature, configures the
186 watchdog and sends the heartbeats.
Oren Weil6624fc22011-05-15 13:43:39 +0300187
Oren Weil463ac7f2011-12-06 23:25:18 +0200188The Intel MEI driver uses the kernel watchdog to configure the Intel AMT
189Watchdog and to send heartbeats to it. The default timeout of the
190watchdog is 120 seconds.
Oren Weil6624fc22011-05-15 13:43:39 +0300191
Oren Weil463ac7f2011-12-06 23:25:18 +0200192If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
193the Intel MEI driver will disable the sending of heartbeats.
Oren Weil6624fc22011-05-15 13:43:39 +0300194
195Supported Chipsets:
196==================
1977 Series Chipset Family
1986 Series Chipset Family
1995 Series Chipset Family
2004 Series Chipset Family
201Mobile 4 Series Chipset Family
202ICH9
20382946GZ/GL
20482G35 Express
20582Q963/Q965
20682P965/G965
207Mobile PM965/GM965
208Mobile GME965/GLE960
20982Q35 Express
21082G33/G31/P35/P31 Express
21182Q33 Express
21282X38/X48 Express
213
214---
215linux-mei@linux.intel.com