mei.txt 7.9 KB
Newer Older
1
Intel(R) Management Engine Interface (Intel(R) MEI)
2
===================================================
3 4

Introduction
5
============
6

7
The Intel Management Engine (Intel ME) is an isolated and protected computing
8 9 10
resource (Co-processor) residing inside certain Intel chipsets. The Intel ME
provides support for computer/IT management features. The feature set
depends on the Intel chipset SKU.
11

12 13 14 15
The Intel Management Engine Interface (Intel MEI, previously known as HECI)
is the interface between the Host and Intel ME. This interface is exposed
to the host as a PCI device. The Intel MEI Driver is in charge of the
communication channel between a host application and the Intel ME feature.
16

17 18 19
Each Intel ME feature (Intel ME Client) is addressed by a GUID/UUID and
each client has its own protocol. The protocol is message-based with a
header and payload up to 512 bytes.
20

21 22 23
Prominent usage of the Intel ME Interface is to communicate with Intel(R)
Active Management Technology (Intel AMT)implemented in firmware running on
the Intel ME.
24 25

Intel AMT provides the ability to manage a host remotely out-of-band (OOB)
26 27
even when the operating system running on the host processor has crashed or
is in a sleep state.
28 29 30

Some examples of Intel AMT usage are:
   - Monitoring hardware state and platform components
31 32
   - Remote power off/on (useful for green computing or overnight IT
     maintenance)
33 34
   - OS updates
   - Storage of useful platform information such as software assets
35 36 37
   - Built-in hardware KVM
   - Selective network isolation of Ethernet and IP protocol flows based
     on policies set by a remote management console
38 39 40
   - IDE device redirection from remote management console

Intel AMT (OOB) communication is based on SOAP (deprecated
41 42
starting with Release 6.0) over HTTP/S or WS-Management protocol over
HTTP/S that are received from a remote management console application.
43 44

For more information about Intel AMT:
45
http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
46

47

48
Intel MEI Driver
49
================
50

51
The driver exposes a misc device called /dev/mei.
52

53
An application maintains communication with an Intel ME feature while
54
/dev/mei is open. The binding to a specific feature is performed by calling
55 56 57
MEI_CONNECT_CLIENT_IOCTL, which passes the desired UUID.
The number of instances of an Intel ME feature that can be opened
at the same time depends on the Intel ME feature, but most of the
58 59
features allow only a single instance.

60
The Intel AMT Host Interface (Intel AMTHI) feature supports multiple
61 62
simultaneous user connected applications. The Intel MEI driver
handles this internally by maintaining request queues for the applications.
63

64
The driver is transparent to data that are passed between firmware feature
65
and host application.
66

67 68
Because some of the Intel ME features can change the system
configuration, the driver by default allows only a privileged
69 70
user to access it.

71 72
A code snippet for an application communicating with Intel AMTHI client:

73 74 75 76 77 78 79
	struct mei_connect_client_data data;
	fd = open(MEI_DEVICE);

	data.d.in_client_uuid = AMTHI_UUID;

	ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &data);

80
	printf("Ver=%d, MaxLen=%ld\n",
81 82 83 84 85 86 87 88 89 90 91 92 93 94
			data.d.in_client_uuid.protocol_version,
			data.d.in_client_uuid.max_msg_length);

	[...]

	write(fd, amthi_req_data, amthi_req_data_len);

	[...]

	read(fd, &amthi_res_data, amthi_res_data_len);

	[...]
	close(fd);

95 96 97 98

IOCTL
=====

99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
The Intel MEI Driver supports the following IOCTL command:
	IOCTL_MEI_CONNECT_CLIENT	Connect to firmware Feature (client).

	usage:
		struct mei_connect_client_data clientData;
		ioctl(fd, IOCTL_MEI_CONNECT_CLIENT, &clientData);

	inputs:
		mei_connect_client_data struct contain the following
		input field:

		in_client_uuid -	UUID of the FW Feature that needs
					to connect to.
	outputs:
		out_client_properties - Client Properties: MTU and Protocol Version.

	error returns:
		EINVAL	Wrong IOCTL Number
		ENODEV	Device or Connection is not initialized or ready.
			(e.g. Wrong UUID)
		ENOMEM	Unable to allocate memory to client internal data.
		EFAULT	Fatal Error (e.g. Unable to access user input data)
		EBUSY	Connection Already Open

	Notes:
        max_msg_length (MTU) in client properties describes the maximum
        data that can be sent or received. (e.g. if MTU=2K, can send
126
        requests up to bytes 2k and received responses up to 2k bytes).
127

128 129 130

Intel ME Applications
=====================
131 132

1) Intel Local Management Service (Intel LMS)
133 134 135 136 137 138 139 140 141 142 143

	Applications running locally on the platform communicate with Intel AMT Release
	2.0 and later releases in the same way that network applications do via SOAP
	over HTTP (deprecated starting with Release 6.0) or with WS-Management over
	SOAP over HTTP. This means that some Intel AMT features can be accessed from a
	local application using the same network interface as a remote application
	communicating with Intel AMT over the network.

	When a local application sends a message addressed to the local Intel AMT host
	name, the Intel LMS, which listens for traffic directed to the host name,
	intercepts the message and routes it to the Intel MEI.
144
	For more information:
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
	http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
	Under "About Intel AMT" => "Local Access"

	For downloading Intel LMS:
	http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/

	The Intel LMS opens a connection using the Intel MEI driver to the Intel LMS
	firmware feature using a defined UUID and then communicates with the feature
	using a protocol called Intel AMT Port Forwarding Protocol(Intel APF protocol).
	The protocol is used to maintain multiple sessions with Intel AMT from a
	single application.

	See the protocol specification in the Intel AMT Software Development Kit(SDK)
	http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
	Under "SDK Resources" => "Intel(R) vPro(TM) Gateway(MPS)"
	=> "Information for Intel(R) vPro(TM) Gateway Developers"
	=> "Description of the Intel AMT Port Forwarding (APF)Protocol"

  2) Intel AMT Remote configuration using a Local Agent
164
	A Local Agent enables IT personnel to configure Intel AMT out-of-the-box
165 166 167
	without requiring installing additional data to enable setup. The remote
	configuration process may involve an ISV-developed remote configuration
	agent that runs on the host.
168
	For more information:
169 170 171 172 173 174 175 176
	http://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide
	Under "Setup and Configuration of Intel AMT" =>
	"SDK Tools Supporting Setup and Configuration" =>
	"Using the Local Agent Sample"

	An open source Intel AMT configuration utility,	implementing a local agent
	that accesses the Intel MEI driver, can be found here:
	http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers/
177 178


179 180 181
Intel AMT OS Health Watchdog
============================

182 183
The Intel AMT Watchdog is an OS Health (Hang/Crash) watchdog.
Whenever the OS hangs or crashes, Intel AMT will send an event
184 185
to any subscriber to this event. This mechanism means that
IT knows when a platform crashes even when there is a hard failure on the host.
186

187 188 189 190 191
The Intel AMT Watchdog is composed of two parts:
	1) Firmware feature - receives the heartbeats
	   and sends an event when the heartbeats stop.
	2) Intel MEI driver - connects to the watchdog feature, configures the
	   watchdog and sends the heartbeats.
192

193
The Intel MEI driver uses the kernel watchdog API to configure the Intel AMT
194 195
Watchdog and to send heartbeats to it. The default timeout of the
watchdog is 120 seconds.
196

197 198
If the Intel AMT Watchdog feature does not exist (i.e. the connection failed),
the Intel MEI driver will disable the sending of heartbeats.
199

200 201

Supported Chipsets
202
==================
203

204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
7 Series Chipset Family
6 Series Chipset Family
5 Series Chipset Family
4 Series Chipset Family
Mobile 4 Series Chipset Family
ICH9
82946GZ/GL
82G35 Express
82Q963/Q965
82P965/G965
Mobile PM965/GM965
Mobile GME965/GLE960
82Q35 Express
82G33/G31/P35/P31 Express
82Q33 Express
82X38/X48 Express

---
linux-mei@linux.intel.com