Coder Social home page Coder Social logo

zamaudio / intelmetool Goto Github PK

View Code? Open in Web Editor NEW
157.0 21.0 25.0 80 KB

My tool for working with Intel Management Engine - RETIRED REPO (see coreboot for new upstream)

Home Page: https://review.coreboot.org/plugins/gitiles/coreboot/+/refs/heads/master/util/intelmetool

License: Other

Makefile 0.56% C 99.44%
management-engine intel-me

intelmetool's Introduction

intelmetool

Compiling:

You need libpci-dev

Running:

You need to sudo rmmod mei_me and sudo rmmod mei before using this tool. Also pass iomem=relaxed to kernel commandline if you are on kernel 4.4+

Interesting to compare output with and without partially removing ME with me_cleaner. (NB: Always back up your BIOS when fiddling with ME firmware)

make
sudo ./intelmetool

intelmetool's People

Contributors

eloydegen avatar zamaudio avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intelmetool's Issues

Bad news, device 944e... ME hardware

Hello,

on my Asus A411U, after I applied me_cleaner, intelmetool says:
intelmetool output:

Bad news, you have a Device 9d4e so you have ME hardware on board and you can't control or disable it, continuing...

Can't find ME PCI device

Then I run the following commands:

$ ls /dev | grep mei
[nothing]

$ lspci | grep -i communi
[nothing]

$ cat /proc/bus/pci/devices | grep 9d4e 00f8 80869d4e... and a bunch of zeros

Could someone clarify to me if intel me has been disabled please?

segfault

hi. i get:
Bad news, you have a QM77 Express Chipset LPC Controller so you have ME hardware on board and it is very difficult to remove, continuing... Error mapping physical memory 0x00000000fed1c000[0x4000] ERRNO=1 RCBA at 0xfed1c000 [1] 27537 segmentation fault (core dumped) ./intelmetool

on lenovo W530 (Linux 4.7.0-1-ARCH #1 SMP PREEMPT x86_64 GNU/Linux)

Sunrise Point-LP: Hardware unsupported

I have used me_cleaner with the -S option on my Thinkpad T470 with a Kaby Lake CPU (i7-7600U) and a Sunrise Point-LP chipset. I am trying to verify that ME has been disabled, but intelmetool reports that the hardware is unsupported. I am on Fedora 27 4.14.5-300.fc27.x86_64 with no mei kernel modules loaded and iomem=relaxed in /proc/cmdline. (The version of intelmetool in the coreboot repository simply says "Could not get RCBA address, Error reading RCBA".

➜  ~ lspci -nn 
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 620 [8086:5916] (rev 02)
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller [8086:9d2f] (rev 21)
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Thermal subsystem [8086:9d31] (rev 21)
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] [8086:9d03] (rev 21)
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 [8086:9d10] (rev f1)
00:1c.6 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #7 [8086:9d16] (rev f1)
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 [8086:9d18] (rev f1)
00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:9d4e] (rev 21)
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-LP PMC [8086:9d21] (rev 21)
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-LP HD Audio [8086:9d71] (rev 21)
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (4) I219-LM [8086:15d7] (rev 21)
04:00.0 Network controller [0280]: Intel Corporation Wireless 8265 / 8275 [8086:24fd] (rev 78)

Interestingly, bus 00:00.0 shows up as Host bridge [0600]: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers [8086:5904] (rev 02) even though this laptop has a consumer level i7 CPU.

Can support for my chipset be added so I can verify if ME has truly been disabled?

Thanks.

timeout error on mei_recv_msg + possible cause / solution

Hello,
I was trying to use the tool under ARCH-Linux 4.17.4-1 and got the following error message:

ME: timeout waiting for data: expected 8, available 6

The tool aborted afterwards.

To gather additional information i removed the return in return in me.c, line 289

This lead to the tool continueing, printing additional output, as well as an additional error message:

ME: response is missing data
ME: not enough room in response buffer 4 != 6
ME: Firmware Version 7.1.1161.40 (code) 7.1.1161.40 (recovery) 0.0.0.0 (fitc)

I found it interesting that the difference for the first and second error message was both 2, and that the fitc version looks kinda off. Upon inspection i found that the total fitc data needs 4 * sizeof(uint16_t) = 4 * 2 = 8 bytes, and the size is divided by 4 / shifted right by 2 in the comparison, and 8/4 = 2, exactly the error.

For testing i made the following change here
if (mei_sendrecv(&mei, &mkhi, &data, &version, sizeof(version) ) < 0) {
to
if (mei_sendrecv(&mei, &mkhi, &data, &version, sizeof(version-2) ) < 0) {
with the intent to purposely ignore the fitc data.

==> The Result of that change was a now error free output.

Of course, just subtracting 2 is not a general valid fix, i assume that on other laptops this data is available and should or must be read from the buffer.
I'd suggest a dynamic detection of wether or not this information is available, or a define that changes the struct me_fw_version to [not] include the fitc part and modify the the according printf to [not] include the fitc if unavailable.
But i currently do not know what criteria would indicate the presence / absence of the fitc version data to make that change in code.

My questions are now:

  1. should this error message be updated to something like "response buffer size mismatch", because the condition is not a "smaller" (implied by the current error message) but an "unequal"?
  2. Since i do not know a lot about Intel ME and its inner workings, i do not know whether my findings are correct and how a correct "fix" should be implemented?

segmentation fault

% cat /proc/cmdline        
BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 ... iomem=relaxed

% lsmod | grep mei         
# catchsegv ./intelmetool 
Bad news, you have a `C204 Chipset LPC Controller` so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI found: [8086:1c3a] 6 Series/C200 Series Chipset Family MEI Controller #1

ME Status   : 0xf0345
ME Status 2 : 0x40000301

ME: FW Partition Table      : OK
ME: Bringup Loader Failure  : NO
ME: Firmware Init Complete  : YES
ME: Manufacturing Mode      : NO
ME: Boot Options Present    : NO
ME: Update In Progress      : NO
ME: Current Working State   : Normal
ME: Current Operation State : M0 without UMA
ME: Current Operation Mode  : (null)
ME: Error Code              : No Error
ME: Progress Phase          : Module Loading
ME: Power Management Event  : Clean Moff->Mx wake
ME: Progress Phase State    : Unknown 0x00

PCI READ [bc] : 0x000000bc
ME: Extend Register not valid

ME seems okay on this board
Error mapping physical memory 0x000000002ff03000[0x2000] ERRNO=1
Segmentation fault
*** Segmentation fault
Register dump:

 RAX: 0000000000000004   RBX: 0000000000000000   RCX: 0000000000000004
 RDX: 0000000000000000   RSI: 0000000000000004   RDI: 00007ffd86015204
 RBP: 00007ffd860151c0   R8 : 00007ffd860151c4   R9 : 0000000000000cfc
 R10: 0000000000000004   R11: 00007fa4495025f0   R12: 00005599eef333c0
 R13: 00007ffd86015750   R14: 0000000000000000   R15: 0000000000000000
 RSP: 00007ffd860151a0

 RIP: 00005599eef34e9a   EFLAGS: 00013202

 CS: 0033   FS: 0000   GS: 0000

 Trap: 0000000e   Error: 00000004   OldMask: 00000000   CR2: 00000004

 FPUCW: 0000037f   FPUSW: 00000000   TAG: 00000000
 RIP: 00000000   RDP: 00000000

 ST(0) 0000 0000000000000000   ST(1) 0000 0000000000000000
 ST(2) 0000 0000000000000000   ST(3) 0000 0000000000000000
 ST(4) 0000 0000000000000000   ST(5) 0000 0000000000000000
 ST(6) 0000 0000000000000000   ST(7) 0000 0000000000000000
 mxcsr: 1f80
 XMM0:  000000000000000000000000ffffff00 XMM1:  000000000000000000000000ffffff00
 XMM2:  000000000000000000000000ffffff00 XMM3:  000000000000000000000000ffffff00
 XMM4:  000000000000000000000000ffffff00 XMM5:  000000000000000000000000ffffff00
 XMM6:  000000000000000000000000ffffff00 XMM7:  000000000000000000000000ffffff00
 XMM8:  000000000000000000000000ffffff00 XMM9:  000000000000000000000000ffffff00
 XMM10: 000000000000000000000000ffffff00 XMM11: 000000000000000000000000ffffff00
 XMM12: 000000000000000000000000ffffff00 XMM13: 000000000000000000000000ffffff00
 XMM14: 000000000000000000000000ffffff00 XMM15: 000000000000000000000000ffffff00

Backtrace:
./intelmetool(+0x2e9a)[0x5599eef34e9a]
./intelmetool(+0x2f80)[0x5599eef34f80]
./intelmetool(+0x3ace)[0x5599eef35ace]
./intelmetool(+0x2896)[0x5599eef34896]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf1)[0x7fa4491802e1]
./intelmetool(+0x13ea)[0x5599eef333ea]

Memory map:

5599eef32000-5599eef38000 r-xp 00000000 00:19 25585 /tmp/intelmetool/intelmetool
5599ef137000-5599ef138000 r--p 00005000 00:19 25585 /tmp/intelmetool/intelmetool
5599ef138000-5599ef139000 rw-p 00006000 00:19 25585 /tmp/intelmetool/intelmetool
5599f0a2f000-5599f0da7000 rw-p 00000000 00:00 0 [heap]
7fa4486f3000-7fa448709000 r-xp 00000000 08:02 1310975 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa448709000-7fa448908000 ---p 00016000 08:02 1310975 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa448908000-7fa448909000 r--p 00015000 08:02 1310975 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa448909000-7fa44890a000 rw-p 00016000 08:02 1310975 /lib/x86_64-linux-gnu/libgcc_s.so.1
7fa44890a000-7fa448922000 r-xp 00000000 08:02 1310997 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fa448922000-7fa448b21000 ---p 00018000 08:02 1310997 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fa448b21000-7fa448b22000 r--p 00017000 08:02 1310997 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fa448b22000-7fa448b23000 rw-p 00018000 08:02 1310997 /lib/x86_64-linux-gnu/libpthread-2.24.so
7fa448b23000-7fa448b27000 rw-p 00000000 00:00 0
7fa448b27000-7fa448b2e000 r-xp 00000000 08:02 1310999 /lib/x86_64-linux-gnu/librt-2.24.so
7fa448b2e000-7fa448d2d000 ---p 00007000 08:02 1310999 /lib/x86_64-linux-gnu/librt-2.24.so
7fa448d2d000-7fa448d2e000 r--p 00006000 08:02 1310999 /lib/x86_64-linux-gnu/librt-2.24.so
7fa448d2e000-7fa448d2f000 rw-p 00007000 08:02 1310999 /lib/x86_64-linux-gnu/librt-2.24.so
7fa448d2f000-7fa448d43000 r-xp 00000000 08:02 1310998 /lib/x86_64-linux-gnu/libresolv-2.24.so
7fa448d43000-7fa448f42000 ---p 00014000 08:02 1310998 /lib/x86_64-linux-gnu/libresolv-2.24.so
7fa448f42000-7fa448f43000 r--p 00013000 08:02 1310998 /lib/x86_64-linux-gnu/libresolv-2.24.so
7fa448f43000-7fa448f44000 rw-p 00014000 08:02 1310998 /lib/x86_64-linux-gnu/libresolv-2.24.so
7fa448f44000-7fa448f46000 rw-p 00000000 00:00 0
7fa448f46000-7fa448f5f000 r-xp 00000000 08:02 1310910 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fa448f5f000-7fa44915e000 ---p 00019000 08:02 1310910 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fa44915e000-7fa44915f000 r--p 00018000 08:02 1310910 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fa44915f000-7fa449160000 rw-p 00019000 08:02 1310910 /lib/x86_64-linux-gnu/libz.so.1.2.8
7fa449160000-7fa4492f5000 r-xp 00000000 08:02 1310950 /lib/x86_64-linux-gnu/libc-2.24.so
7fa4492f5000-7fa4494f5000 ---p 00195000 08:02 1310950 /lib/x86_64-linux-gnu/libc-2.24.so
7fa4494f5000-7fa4494f9000 r--p 00195000 08:02 1310950 /lib/x86_64-linux-gnu/libc-2.24.so
7fa4494f9000-7fa4494fb000 rw-p 00199000 08:02 1310950 /lib/x86_64-linux-gnu/libc-2.24.so
7fa4494fb000-7fa4494ff000 rw-p 00000000 00:00 0
7fa4494ff000-7fa44950b000 r-xp 00000000 08:02 1311290 /lib/x86_64-linux-gnu/libpci.so.3.5.2
7fa44950b000-7fa44970b000 ---p 0000c000 08:02 1311290 /lib/x86_64-linux-gnu/libpci.so.3.5.2
7fa44970b000-7fa44970c000 r--p 0000c000 08:02 1311290 /lib/x86_64-linux-gnu/libpci.so.3.5.2
7fa44970c000-7fa44970d000 rw-p 0000d000 08:02 1311290 /lib/x86_64-linux-gnu/libpci.so.3.5.2
7fa44970d000-7fa449711000 r-xp 00000000 08:02 1310938 /lib/x86_64-linux-gnu/libSegFault.so
7fa449711000-7fa449910000 ---p 00004000 08:02 1310938 /lib/x86_64-linux-gnu/libSegFault.so
7fa449910000-7fa449911000 r--p 00003000 08:02 1310938 /lib/x86_64-linux-gnu/libSegFault.so
7fa449911000-7fa449912000 rw-p 00004000 08:02 1310938 /lib/x86_64-linux-gnu/libSegFault.so
7fa449912000-7fa449935000 r-xp 00000000 08:02 1310723 /lib/x86_64-linux-gnu/ld-2.24.so
7fa449b05000-7fa449b07000 rw-p 00000000 00:00 0
7fa449b07000-7fa449b26000 r-xp 00000000 08:02 1310765 /lib/x86_64-linux-gnu/libudev.so.1.6.5
7fa449b26000-7fa449b27000 r--p 0001e000 08:02 1310765 /lib/x86_64-linux-gnu/libudev.so.1.6.5
7fa449b27000-7fa449b28000 rw-p 0001f000 08:02 1310765 /lib/x86_64-linux-gnu/libudev.so.1.6.5
7fa449b28000-7fa449b2a000 rw-p 00000000 00:00 0
7fa449b2e000-7fa449b32000 rw-s fed1c000 00:06 1027 /dev/mem
7fa449b32000-7fa449b35000 rw-p 00000000 00:00 0
7fa449b35000-7fa449b36000 r--p 00023000 08:02 1310723 /lib/x86_64-linux-gnu/ld-2.24.so
7fa449b36000-7fa449b37000 rw-p 00024000 08:02 1310723 /lib/x86_64-linux-gnu/ld-2.24.so
7fa449b37000-7fa449b38000 rw-p 00000000 00:00 0
7ffd85ff6000-7ffd86017000 rw-p 00000000 00:00 0 [stack]
7ffd86105000-7ffd86107000 r--p 00000000 00:00 0 [vvar]
7ffd86107000-7ffd86109000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
zsh: exit 139   catchsegv ./intelmetool

Output explanation

Hey!
I've originally wanted to install Coreboot + Tianocore, with me_cleaner on my Thinkpad X220. However, I couldn't get Coreboot + Tianocore to work, so I just ran me_cleaner on the original Lenovo Firmware. It seems to work fine. I've ran your tool and got as output the attached below. I'd really appreciate it if you could explain to me if the ME is now deactivated or not because I couldn't find any info on what 'Operation Mode: Debug' and so on, mean. Thanks, Johannes.

Bad news, you have a `QM67 Express Chipset LPC Controller` so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI was hidden on PCI, now unlocked
MEI found: [8086:1c3a] 6 Series/C200 Series Chipset Family MEI Controller #1

ME Status   : 0x20191
ME Status 2 : 0x100a0000

ME: FW Partition Table      : OK
ME: Bringup Loader Failure  : NO
ME: Firmware Init Complete  : NO
ME: Manufacturing Mode      : YES
ME: Boot Options Present    : NO
ME: Update In Progress      : NO
ME: Current Working State   : Initializing
ME: Current Operation State : Bring up
ME: Current Operation Mode  : Debug
ME: Error Code              : No Error
ME: Progress Phase          : BUP Phase
ME: Power Management Event  : Clean Moff->Mx wake
ME: Progress Phase State    : Check to see if straps say ME DISABLED

PCI READ [bc] : 0x000000bc
ME: Extend SHA-256: e347d83be600b53579f7c32bad7beace6cca3d13e004ab944dcd8749859da1ae

ME seems okay on this board
ME: failed to become ready
WRITE    [00] : CB: 0x80040007
WRITE    [00] : CB: 0x000002ff
ME: failed to become ready
ME: GET FW VERSION message failed
ME: failed to become ready
WRITE    [00] : CB: 0x80080007
WRITE    [00] : CB: 0x00000203
WRITE    [00] : CB: 0x00000000
ME: failed to become ready
ME: GET FWCAPS message failed
Re-hiding MEI device...done, exiting

Potentially misleading output on ASUS P6T SE

I recently ran intelmetool on an ASUS P6T SE to find this output:

$ ./intelmetool -dm
Bad news, you have a `82801JIR (ICH10R) LPC Interface Controller` so you have ME hardware on board and you can't control or disable it, continuing...

MEI not hidden on PCI, checking if visible
MEI device not found

However, running various ME-related tools on a dump of the BIOS chip's contents failed to yield any meaningful information as documented on (corna/me_cleaner#105).

I am far from an expert with regards to analyzing the contents of BIOS chips, but the comments in that issue seem to suggest that this platform does not actually contain Intel ME despite using Nehalem.

Are these assessments accurate? If so, the output of intelmetool on this platform should be modified to reflect the lack of ME on this particular platform. Otherwise, this situation may call for further research into how ME is integrated into this particular platform.

Make warnings: variable 'csr' set but not used, pointer from integer without cast

gcc -Wall -O0 -g -I. -c me.c  -o me.o
me.c: In function 'mei_dump':
me.c:63:18: warning: variable 'csr' set but not used [-Wunused-but-set-variable]
  struct mei_csr *csr;
                  ^~~
gcc -Wall -O0 -g -I. -c mmap.c  -o mmap.o
mmap.c: In function 'map_physical_exact':
mmap.c:11:26: warning: passing argument 1 of 'mmap' makes pointer from integer without a cast [-Wint-conversion]
         virt_addr = mmap(mapto, len, PROT_WRITE | PROT_READ, MAP_SHARED|MAP_FIXED,
                          ^~~~~

gcc 7.2.0

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/7.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
Thread model: posix
gcc version 7.2.0 (GCC)

Unclear output #2 - Dell E6410

Hello, I have a Dell Latitude E6410 laptop with Intel i5-520M CPU.
uname -a:
Linux devuan 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux
ME chipset:
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)

When modules mei and mei_me are loaded, the output of intelmetool -s is a following:

Bad news, you have a Mobile 5 Series Chipset LPC Interface Controller so you have ME hardware on board and you can't control or disable it, continuing...

MEI not hidden on PCI, checking if visible
MEI found: [8086:3b64] 5 Series/3400 Series Chipset HECI Controller

ME Status : 0x245
ME Status 2 : 0x69000000

ME: FW Partition Table : OK
ME: Bringup Loader Failure : NO
ME: Firmware Init Complete : YES
ME: Manufacturing Mode : NO
ME: Boot Options Present : NO
ME: Update In Progress : NO
ME: Current Working State : Normal
ME: Current Operation State : M0 with UMA
ME: Current Operation Mode : Normal
ME: Error Code : No Error
ME: Progress Phase : Host Communication
ME: Power Management Event : Non-power cycle reset
ME: Progress Phase State : Host communication established

ME: Extend SHA-256: a73091cb6a59b170f398b6cbcad8668e1acd38614ad956caf55762c4530b2b00

ME: timeout waiting for data: expected 8, available 0
ME: GET FW VERSION message failed
ME: response is missing data
ME: invalid response, group 3 ?= 196, command 2 ?= 3, is_response 0
ME: not enough room in response buffer: 8 != 3
ME Capability: Full Network manageability : ON
ME Capability: Regular Network manageability : ON
ME Capability: Manageability : ON
ME Capability: Small business technology : ON
ME Capability: Level III manageability : ON
ME Capability: IntelR Anti-Theft (AT) : ON
ME Capability: IntelR Capability Licensing Service (CLS) : ON
ME Capability: IntelR Power Sharing Technology (MPC) : ON
ME Capability: ICC Over Clocking : ON
ME Capability: Protected Audio Video Path (PAVP) : ON
ME Capability: IPV6 : ON
ME Capability: KVM Remote Control (KVM) : ON
ME Capability: Outbreak Containment Heuristic (OCH) : ON
ME Capability: Virtual LAN (VLAN) : ON
ME Capability: TLS : ON
ME Capability: Wireless LAN (WLAN) : ON
Segmentation fault

That I suppose must be some bug, because this processor doesn't support even a half of these capabilities.

After running that, I tried unloading mei and mei_me using modprobe -r, which gave me a log in dmesg:

[ 3440.611114] mei_me 0000:00:16.0: FW not ready: resetting.
[ 3440.611138] mei_me 0000:00:16.0: unexpected reset: dev_state = ENABLED 00000245 69000000
[ 3440.611144] mei_me 0000:00:16.0: H_RST is set = 0x80000011
[ 3442.610432] mei_me 0000:00:16.0: wait hw ready failed. status = -62
[ 3442.610440] mei_me 0000:00:16.0: hw_start failed ret = -62
[ 3442.610457] mei_me 0000:00:16.0: unexpected reset: dev_state = RESETTING 00000245 69000000
[ 3442.614641] ------------[ cut here ]------------
[ 3442.614706] kernel BUG at /build/linux-ch53fA/linux-3.16.43/drivers/misc/mei/hbm.c:873!
[ 3442.614809] invalid opcode: 0000 [#1] SMP 
[ 3442.614874] Modules linked in: ctr ccm pci_stub vboxpci(O) vboxnetadp(O) vboxnetflt(O) vboxdrv(O) tun fuse lp dell_wmi sparse_keymap iTCO_wdt iTCO_vendor_support ppdev arc4 snd_hda_codec_hdmi dell_laptop dcdbas iwldvm mac80211 intel_powerclamp snd_hda_codec_idt coretemp snd_hda_codec_generic kvm_intel kvm evdev iwlwifi joydev serio_raw i915 pcspkr cfg80211 intel_ips lpc_ich mfd_core snd_hda_intel rfkill parport_pc snd_hda_controller wmi tpm_tis drm_kms_helper parport snd_hda_codec tpm battery snd_hwdep drm snd_pcm dell_smo8800 snd_timer shpchp i2c_algo_bit snd acpi_cpufreq video soundcore mei_me mei ac processor button thermal_sys ext4 crc16 mbcache jbd2 algif_skcipher af_alg usb_storage hid_generic usbhid hid dm_crypt dm_mod sg sd_mod crc_t10dif crct10dif_generic crct10dif_pclmul crct10dif_common
[ 3442.615712]  crc32_pclmul crc32c_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd ahci libahci firewire_ohci sdhci_pci sdhci psmouse libata ehci_pci ehci_hcd i2c_i801 scsi_mod i2c_core mmc_core firewire_core crc_itu_t e1000e usbcore ptp pps_core usb_common
[ 3442.616002] CPU: 0 PID: 458 Comm: irq/42-mei_me Tainted: G           O  3.16.0-4-amd64 #1 Debian 3.16.43-2+deb8u2
[ 3442.616078] Hardware name: Dell Inc. Latitude E6410/0667CC, BIOS A16 12/05/2013
[ 3442.616135] task: ffff880191d4e110 ti: ffff8800d6b2c000 task.ti: ffff8800d6b2c000
[ 3442.616192] RIP: 0010:[<ffffffffa0348730>]  [<ffffffffa0348730>] mei_hbm_dispatch+0x530/0xee0 [mei]
[ 3442.616273] RSP: 0018:ffff8800d6b2fd30  EFLAGS: 00010a83
[ 3442.616316] RAX: 000000000000002f RBX: ffff880035947000 RCX: 0000000000000004
[ 3442.616371] RDX: ffffc90000c96004 RSI: ffffc90000c96004 RDI: 00000000800c0c0d
[ 3442.616426] RBP: ffff8800359475e0 R08: ffff8800d6b2c000 R09: 0000000000000018
[ 3442.616481] R10: 0000000000000000 R11: 0000000000000006 R12: ffff8800d6b2fdcc
[ 3442.616535] R13: ffff8800d6b2fdd0 R14: ffff880035947200 R15: ffff880191d4e110
[ 3442.616590] FS:  0000000000000000(0000) GS:ffff88019bc00000(0000) knlGS:0000000000000000
[ 3442.616652] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 3442.616697] CR2: 00007f4fd24a7bf0 CR3: 0000000001813000 CR4: 00000000000007f0
[ 3442.616751] Stack:
[ 3442.616771]  ffff8800d6b2fdf4 ffff880194b9b400 ffff880035947000 ffff8800359475e0
[ 3442.616841]  ffff8800d6b2fdcc ffff8800d6b2fdd0 ffff880035947200 ffff880191d4e110
[ 3442.616910]  ffffffffa03494a0 0000000000000000 0000000000000020 0000000000000002
[ 3442.616980] Call Trace:
[ 3442.617011]  [<ffffffffa03494a0>] ? mei_irq_read_handler+0x2f0/0x740 [mei]
[ 3442.617070]  [<ffffffffa035c79d>] ? mei_me_irq_thread_handler+0x11d/0x310 [mei_me]
[ 3442.617136]  [<ffffffff81516811>] ? __schedule+0x2b1/0x6f0
[ 3442.617185]  [<ffffffff810bdb00>] ? irq_finalize_oneshot.part.30+0xd0/0xd0
[ 3442.617241]  [<ffffffff810bdb1b>] ? irq_thread_fn+0x1b/0x40
[ 3442.617286]  [<ffffffff810bde2b>] ? irq_thread+0x11b/0x140
[ 3442.617332]  [<ffffffff810bdba0>] ? irq_forced_thread_fn+0x60/0x60
[ 3442.617382]  [<ffffffff810bdd10>] ? irq_thread_check_affinity+0xc0/0xc0
[ 3442.617438]  [<ffffffff8108954d>] ? kthread+0xbd/0xe0
[ 3442.617481]  [<ffffffff81089490>] ? kthread_create_on_node+0x180/0x180
[ 3442.617535]  [<ffffffff8151a3d8>] ? ret_from_fork+0x58/0x90
[ 3442.617581]  [<ffffffff81089490>] ? kthread_create_on_node+0x180/0x180
[ 3442.617632] Code: 03 00 00 48 c7 c6 e0 3e 35 a0 31 c0 48 81 c7 98 00 00 00 e8 93 c1 05 e1 b8 b9 ff ff ff e9 2e fb ff ff 66 0f 1f 84 00 00 00 00 00 <0f> 0b 48 8b 33 48 c7 c2 18 39 35 a0 48 c7 c7 08 67 35 a0 31 c0 
[ 3442.618052] RIP  [<ffffffffa0348730>] mei_hbm_dispatch+0x530/0xee0 [mei]
[ 3442.618111]  RSP <ffff8800d6b2fd30>
[ 3442.627681] ---[ end trace e1a2844578f690be ]---
[ 3442.627729] BUG: unable to handle kernel paging request at ffffffffffffffd8
[ 3442.627816] IP: [<ffffffff81089b1c>] kthread_data+0xc/0x20
[ 3442.627890] PGD 1816067 PUD 1818067 PMD 0 
[ 3442.627946] Oops: 0000 [#2] SMP 
[ 3442.627992] Modules linked in: ctr ccm pci_stub vboxpci(O) vboxnetadp(O) vboxnetflt(O) vboxdrv(O) tun fuse lp dell_wmi sparse_keymap iTCO_wdt iTCO_vendor_support ppdev arc4 snd_hda_codec_hdmi dell_laptop dcdbas iwldvm mac80211 intel_powerclamp snd_hda_codec_idt coretemp snd_hda_codec_generic kvm_intel kvm evdev iwlwifi joydev serio_raw i915 pcspkr cfg80211 intel_ips lpc_ich mfd_core snd_hda_intel rfkill parport_pc snd_hda_controller wmi tpm_tis drm_kms_helper parport snd_hda_codec tpm battery snd_hwdep drm snd_pcm dell_smo8800 snd_timer shpchp i2c_algo_bit snd acpi_cpufreq video soundcore mei_me mei ac processor button thermal_sys ext4 crc16 mbcache jbd2 algif_skcipher af_alg usb_storage hid_generic usbhid hid dm_crypt dm_mod sg sd_mod crc_t10dif crct10dif_generic crct10dif_pclmul crct10dif_common
[ 3442.640596]  crc32_pclmul crc32c_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd ahci libahci firewire_ohci sdhci_pci sdhci psmouse libata ehci_pci ehci_hcd i2c_i801 scsi_mod i2c_core mmc_core firewire_core crc_itu_t e1000e usbcore ptp pps_core usb_common
[ 3442.646833] CPU: 2 PID: 458 Comm: irq/42-mei_me Tainted: G      D    O  3.16.0-4-amd64 #1 Debian 3.16.43-2+deb8u2
[ 3442.649851] Hardware name: Dell Inc. Latitude E6410/0667CC, BIOS A16 12/05/2013
[ 3442.652825] task: ffff880191d4e110 ti: ffff8800d6b2c000 task.ti: ffff8800d6b2c000
[ 3442.655752] RIP: 0010:[<ffffffff81089b1c>]  [<ffffffff81089b1c>] kthread_data+0xc/0x20
[ 3442.658654] RSP: 0018:ffff8800d6b2fb00  EFLAGS: 00010202
[ 3442.661512] RAX: 0000000000000000 RBX: ffff880191d4e110 RCX: 0000000000000062
[ 3442.664357] RDX: ffff8800d6b2fe98 RSI: 0000000000000000 RDI: ffff880191d4e110
[ 3442.667190] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000001
[ 3442.670000] R10: 0000000000000001 R11: 0000000000000005 R12: ffffffff81a6a760
[ 3442.672769] R13: ffff880191d4e110 R14: 0000000000000000 R15: ffff880191d4e110
[ 3442.675536] FS:  0000000000000000(0000) GS:ffff88019bc80000(0000) knlGS:0000000000000000
[ 3442.678328] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 3442.681123] CR2: ffffffffffffffd8 CR3: 0000000001813000 CR4: 00000000000007e0
[ 3442.683935] Stack:
[ 3442.686722]  ffffffff810bdbbe ffff880191d4e760 0000000000000000 ffffffff8108679c
[ 3442.689564]  000000000000000b 0000000000000000 0000000000000246 ffffffff81705ff1
[ 3442.692381]  ffffffff8106acd1 ffff880191d4e110 000000018151177e 0000000000000010
[ 3442.695200] Call Trace:
[ 3442.697968]  [<ffffffff810bdbbe>] ? irq_thread_dtor+0x1e/0xb0
[ 3442.700749]  [<ffffffff8108679c>] ? task_work_run+0x8c/0xb0
[ 3442.703559]  [<ffffffff8106acd1>] ? do_exit+0x2b1/0xa70
[ 3442.706322]  [<ffffffff810172a7>] ? oops_end+0x97/0xe0
[ 3442.709065]  [<ffffffff81014850>] ? do_error_trap+0x70/0xe0
[ 3442.711797]  [<ffffffffa0348730>] ? mei_hbm_dispatch+0x530/0xee0 [mei]
[ 3442.714520]  [<ffffffff8151bebe>] ? invalid_op+0x1e/0x30
[ 3442.717261]  [<ffffffffa0348730>] ? mei_hbm_dispatch+0x530/0xee0 [mei]
[ 3442.719985]  [<ffffffffa03494a0>] ? mei_irq_read_handler+0x2f0/0x740 [mei]
[ 3442.722723]  [<ffffffffa035c79d>] ? mei_me_irq_thread_handler+0x11d/0x310 [mei_me]
[ 3442.725484]  [<ffffffff81516811>] ? __schedule+0x2b1/0x6f0
[ 3442.728239]  [<ffffffff810bdb00>] ? irq_finalize_oneshot.part.30+0xd0/0xd0
[ 3442.730990]  [<ffffffff810bdb1b>] ? irq_thread_fn+0x1b/0x40
[ 3442.733725]  [<ffffffff810bde2b>] ? irq_thread+0x11b/0x140
[ 3442.736409]  [<ffffffff810bdba0>] ? irq_forced_thread_fn+0x60/0x60
[ 3442.739166]  [<ffffffff810bdd10>] ? irq_thread_check_affinity+0xc0/0xc0
[ 3442.741915]  [<ffffffff8108954d>] ? kthread+0xbd/0xe0
[ 3442.744539]  [<ffffffff81089490>] ? kthread_create_on_node+0x180/0x180
[ 3442.747041]  [<ffffffff8151a3d8>] ? ret_from_fork+0x58/0x90
[ 3442.749527]  [<ffffffff81089490>] ? kthread_create_on_node+0x180/0x180
[ 3442.752004] Code: 08 04 00 00 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 48 8b 87 08 04 00 00 <48> 8b 40 d8 c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 66 
[ 3442.757574] RIP  [<ffffffff81089b1c>] kthread_data+0xc/0x20
[ 3442.760269]  RSP <ffff8800d6b2fb00>
[ 3442.762947] CR2: ffffffffffffffd8
[ 3442.765550] ---[ end trace e1a2844578f690bf ]---
[ 3442.765553] Fixing recursive fault but reboot is needed!

So I did reset the hardware and made a run of intelmetool -s with unloaded modules mei and mei_me which give the following output:

Bad news, you have a Mobile 5 Series Chipset LPC Interface Controller so you have ME hardware on board and you can't control or disable it, continuing...

MEI not hidden on PCI, checking if visible
MEI found: [8086:3b64] 5 Series/3400 Series Chipset HECI Controller

ME Status : 0x245
ME Status 2 : 0x69000000

ME: FW Partition Table : OK
ME: Bringup Loader Failure : NO
ME: Firmware Init Complete : YES
ME: Manufacturing Mode : NO
ME: Boot Options Present : NO
ME: Update In Progress : NO
ME: Current Working State : Normal
ME: Current Operation State : M0 with UMA
ME: Current Operation Mode : Normal
ME: Error Code : No Error
ME: Progress Phase : Host Communication
ME: Power Management Event : Non-power cycle reset
ME: Progress Phase State : Host communication established

ME: Extend SHA-256: a73091cb6a59b170f398b6cbcad8668e1acd38614ad956caf55762c4530b2b00

ME: timeout waiting for data: expected 8, available 0
ME: GET FW VERSION message failed
ME: timeout waiting for data: expected 5, available 0
ME: GET FWCAPS message failed

Can you help me to understand which output should I follow, a first one or a second one?

Receiving "iopl: Operation not permitted"/"You need to be root" error

Attempting to run intelmetool on my Ubuntu 17.10 notebook:

root@mysystem:/home/myuser/intelmetool# rmmod mei_me
root@mysystem:/home/myuser/intelmetool# rmmod mei
root@mysystem:/home/myuser/intelmetool# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.13.0-21-generic.efi.signed root=UUID=UUIDHERE ro iomem=relaxed quiet splash vt.handoff=7
root@mysystem:/home/myuser/intelmetool# ./intelmetool
iopl: Operation not permitted
You need to be root

Tried executing it via sudo as well and received the same error. Didn't have any issues compiling (only received a me.c: In function 'mei_dump': me.c64:18: warning variable 'csr' set but not used [-Wunused-but-set-variable]/ struct mei_csr *csr; warning).

Appreciate all the work you've put into this and would love to help troubleshoot if I can!

MEI device not found, huh?

intelmetool worked fine on my ThinkPad T460s with Sunrise Point-LP (See #19). After applying me_cleaner -s (set HAP bit only) though, I get:

Bad news, you have a `Sunrise Point-LP LPC Controller` so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0x00000000
MEI not hidden on PCI, checking if visible
MEI device not found, huh?
exiting

(I did remove mei modules and include iomem=relaxed)

Any idea what's up here? I'd like to compare to pre-me_cleaner output.

Intel C602 chipset: Hardware unsupported

Using git main bc96989. Arch Linux. linux 4.18.12.arch1-1. Dual Intel Xeon CPU E5-2690 v1 (2.9GHz) CPUs. ASRock EP2C602 motherboard, with Intel C602 chipset.

Hoping support could be added.

# intelmetool
Hardware unsupported by intelmetool, exiting
lspci -nn | grep -E "00:00.0|LPC"
00:00.0 Host bridge [0600]: Intel Corporation Xeon E5/Core i7 DMI2 [8086:3c00] (rev 07)
00:1f.0 ISA bridge [0601]: Intel Corporation C600/X79 series chipset LPC Controller [8086:1d41] (rev 06)
lsmod|grep me|grep -v snd
mei_me                 45056  0
mei                   106496  1 mei_me

Unclear output

I'm not really sure what this output means:

$ sudo ./intelmetool
[sudo] password for julius: 
Good news, you have a `ICH9M LPC Interface Controller` so ME is present but can be disabled, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI device not found, huh?
exiting

Would it be possible to explain or maybe improve the output?

Crash on Lenovo Thinkpad X220

intelmetool$ sudo gdb ./intelmetool
GNU gdb (Ubuntu 7.11-0ubuntu1) 7.11
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Really redefine built-in command "frame"? (y or n) [answered Y; input not from terminal]
Really redefine built-in command "thread"? (y or n) [answered Y; input not from terminal]
Really redefine built-in command "start"? (y or n) [answered Y; input not from terminal]
Reading symbols from ./intelmetool...done.
gdb> r
Starting program: /home/koppi/Desktop/ime/intelmetool/intelmetool 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Bad news, you have a `QM67 Express Chipset Family LPC Controller` so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI found: [8086:1c3a] 6 Series/C200 Series Chipset Family MEI Controller #1

ME Status   : 0x1e000245
ME Status 2 : 0x300a0006

ME: FW Partition Table      : OK
ME: Bringup Loader Failure  : NO
ME: Firmware Init Complete  : YES
ME: Manufacturing Mode      : NO
ME: Boot Options Present    : NO
ME: Update In Progress      : NO
ME: Current Working State   : Normal
ME: Current Operation State : M0 with UMA
ME: Current Operation Mode  : Normal
ME: Error Code              : No Error
ME: Progress Phase          : Policy Module
ME: Power Management Event  : Clean Moff->Mx wake
ME: Progress Phase State    : Received AC<>DC switch

PCI READ [bc] : 0x000000bc
ME: Extend SHA-256: c20401a7f4baa166f69c313455db4ed508fd484bf2b89b42eba9a2395cb0f205

ME seems okay on this board
WRITE    [00] : CB: 0x80040007
WRITE    [00] : CB: 0x000002ff
READ     [08] : CB: 0x80240000
ME: response is missing data
READ     [08] : CB: 0x000002a4
ME: invalid response, group 255 ?= 164, command 2 ?= 2, is_response 0
ME: not enough room in response buffer: 8 != 6
READ     [08] : CB: 0x000002a4
READ     [08] : CB: 0x000007ff
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x00000000
ME: Firmware Version 0.676.2047.0 (code) 0.0.0.0 (recovery) 0.0.0.0 (fitc)
*** stack smashing detected ***: /home/koppi/Desktop/ime/intelmetool/intelmetool terminated

Program received signal SIGABRT, Aborted.
_______________________________________________________________________________
     eax:00000000 ebx:0000005C  ecx:F7836418  edx:00000006     eflags:00003206
     esi:00007606 edi:00007606  esp:FFFFDBF8  ebp:FFFFDF10     eip:Error while running hook_stop:
Value can't be converted to integer.
0x00007ffff7836418 in __GI_raise (sig=sig@entry=0x6) at ../sysdeps/unix/sysv/linux/raise.c:54
54  ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
gdb> bt
#0  0x00007ffff7836418 in __GI_raise (sig=sig@entry=0x6) at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff783801a in __GI_abort () at abort.c:89
#2  0x00007ffff787872a in __libc_message (do_abort=do_abort@entry=0x1, fmt=fmt@entry=0x7ffff798fc7f "*** %s ***: %s terminated\n") at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff791989c in __GI___fortify_fail (msg=<optimized out>, msg@entry=0x7ffff798fc61 "stack smashing detected") at fortify_fail.c:37
#4  0x00007ffff7919840 in __stack_chk_fail () at stack_chk_fail.c:28
#5  0x0000000000402c43 in mkhi_get_fw_version () at me.c:419
#6  0x0000000000401e0e in main () at intelmetool.c:268
gdb>

Can't find ME PCI device after me_cleaner -s

Hi!
I have a ASRock B560M Pro4 mobo. I recently internally flashed 2.30 UEFI update cleaned with XutaxKamay's me_cleaner fork ( option -s) applied via ASRock instant flash. However, I can't confirm if ME is disabled - intelmetool shows an error even though MEI is available (lspci shows it)
obraz

intelmetool.c:20:10: fatal error: pci/pci.h: No such file or directory

When I try to build the tool using make I get the following error:

[user@localhost intelmetool-main]$ make gcc -Wall -O0 -g -I. -c intelmetool.c -o intelmetool.o intelmetool.c:20:10: fatal error: pci/pci.h: No such file or directory #include <pci/pci.h> ^~~~~~~~~~~ compilation terminated. make: *** [Makefile:25: intelmetool.o] Error 1

Running Fedora 26

Support HM87 Express LPC Controller

Hi,

Platform: Clevo W320SD
Processor: Intel i7-4710MQ

>>> lspci -nn | grep 8086
00:00.0 Host bridge [0600]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller [8086:0c04] (rev 06)
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller [8086:0416] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 05)
00:16.0 Communication controller [0780]: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 05)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d5)
00:1c.2 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 [8086:8c14] (rev d5)
00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [8086:8c16] (rev d5)
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 [8086:8c26] (rev 05)
00:1f.0 ISA bridge [0601]: Intel Corporation HM87 Express LPC Controller [8086:8c4b] (rev 05)
00:1f.2 SATA controller [0106]: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] [8086:8c03] (rev 05)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller [8086:8c22] (rev 05)
03:00.0 Network controller [0280]: Intel Corporation Wireless 7260 [8086:08b1] (rev bb)

I forced your source code to accept this chipset as ME_PRESENT_CANNOT_DISABLE and those are the results. Contact me if you want further tests before adding this platform to your code.

Bad news, you have a `8 Series/C220 Series Chipset Family SMBus Controller` so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI found: [8086:8c3a] 8 Series/C220 Series Chipset Family MEI Controller #1

ME Status   : 0x1e000245
ME Status 2 : 0x66002306

ME: FW Partition Table      : OK
ME: Bringup Loader Failure  : NO
ME: Firmware Init Complete  : YES
ME: Manufacturing Mode      : NO
ME: Boot Options Present    : NO
ME: Update In Progress      : NO
ME: Current Working State   : Normal
ME: Current Operation State : M0 with UMA
ME: Current Operation Mode  : Normal
ME: Error Code              : No Error
ME: Progress Phase          : Host Communication
ME: Power Management Event  : Pseudo-global reset
ME: Progress Phase State    : Host communication established

PCI READ [bc] : 0x000000bc
ME: Extend SHA-256: 3ee46e3e971950c4232ee21612c71a021a51ad05a24f6d78a6a57d78b5668919

ME seems okay on this board
WRITE    [00] : CB: 0x80040007
WRITE    [00] : CB: 0x000002ff
READ     [08] : CB: 0x801c0007
READ     [08] : CB: 0x000082ff
READ     [08] : CB: 0x00090001
READ     [08] : CB: 0x000103e8
READ     [08] : CB: 0x00090001
READ     [08] : CB: 0x000103e8
READ     [08] : CB: 0x00000460
READ     [08] : CB: 0x00000000
ME: Firmware Version 9.1.1000.1 (code) 9.1.1000.1 (recovery) 0.1120.0.0 (fitc)
WRITE    [00] : CB: 0x80080007
WRITE    [00] : CB: 0x00000203
WRITE    [00] : CB: 0x00000000
READ     [08] : CB: 0x800d0007
READ     [08] : CB: 0x00008203
READ     [08] : CB: 0x00000000
READ     [08] : CB: 0x10194004
READ     [08] : CB: 0x00000041
ME Capability: Full Network manageability                 : OFF
ME Capability: Regular Network manageability              : OFF
ME Capability: Manageability                              : OFF
ME Capability: Small business technology                  : OFF
ME Capability: Level III manageability                    : OFF
ME Capability: IntelR Anti-Theft (AT)                     : OFF
ME Capability: IntelR Capability Licensing Service (CLS)  : ON
ME Capability: IntelR Power Sharing Technology (MPC)      : OFF
ME Capability: ICC Over Clocking                          : ON
ME Capability: Protected Audio Video Path (PAVP)          : ON
ME Capability: IPV6                                       : OFF
ME Capability: KVM Remote Control (KVM)                   : OFF
ME Capability: Outbreak Containment Heuristic (OCH)       : OFF
ME Capability: Virtual LAN (VLAN)                         : ON
ME Capability: TLS                                        : OFF
ME Capability: Wireless LAN (WLAN)                        : OFF

Ambigious Result

So far I've run intelmetool with iomem=relaxed and this is the result I get

Bad news, you have a QM67 Express Chipset LPC Controller so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI found: [8086:1c3a] 6 Series/C200 Series Chipset Family MEI Controller #1

ME Status : 0x1e000245
ME Status 2 : 0x69000006

ME: FW Partition Table : OK
ME: Bringup Loader Failure : NO
ME: Firmware Init Complete : YES
ME: Manufacturing Mode : NO
ME: Boot Options Present : NO
ME: Update In Progress : NO
ME: Current Working State : Normal
ME: Current Operation State : M0 with UMA
ME: Current Operation Mode : Normal
ME: Error Code : No Error
ME: Progress Phase : Host Communication
ME: Power Management Event : Non-power cycle reset
ME: Progress Phase State : Host communication established

PCI READ [bc] : 0x000000bc
ME: Extend SHA-256: a2458929c3a034af3564d2fcf1e9d3beea92d5d6dffd8a3a0297c9cb0b9f3f8a

ME seems okay on this board
WRITE [00] : CB: 0x80040007
WRITE [00] : CB: 0x000002ff
ME: timeout waiting for data: expected 8, available 0
ME: GET FW VERSION message failed
WRITE [00] : CB: 0x80080007
WRITE [00] : CB: 0x00000203
WRITE [00] : CB: 0x00000000
READ [08] : CB: 0x800d0007
READ [08] : CB: 0x00008203
READ [08] : CB: 0x00000000
READ [08] : CB: 0xf65c6504
READ [08] : CB: 0x0007000d
ME Capability: Full Network manageability : ON
ME Capability: Regular Network manageability : OFF
ME Capability: Manageability : ON
ME Capability: Small business technology : OFF
ME Capability: Level III manageability : OFF
ME Capability: IntelR Anti-Theft (AT) : ON
ME Capability: IntelR Capability Licensing Service (CLS) : ON
ME Capability: IntelR Power Sharing Technology (MPC) : ON
ME Capability: ICC Over Clocking : ON
ME Capability: Protected Audio Video Path (PAVP) : ON
ME Capability: IPV6 : ON
ME Capability: KVM Remote Control (KVM) : ON
ME Capability: Outbreak Containment Heuristic (OCH) : OFF
ME Capability: Virtual LAN (VLAN) : ON
ME Capability: TLS : ON
ME Capability: Wireless LAN (WLAN) : ON

Hardware is the Thinkpad T420.

Unclear output #3 Dell Studio XPS 435mt

Bad news, you have a 82801JIR (ICH10R) LPC Interface Controller so you have ME hardware on board and it is very difficult to remove, continuing...
RCBA at 0xfed1c000
MEI not hidden on PCI, checking if visible
MEI device not found, huh?
exiting

I know you said you may not have the code for all models and processors, so if theres anything i can do or run on my pc for testing etc im glad to do it.
system;
uname -r ;
4.8.11
Intel® Core™ i7-920 Processor
lspci is crazy long i apologize;
00:00.0 Host bridge: Intel Corporation 5520/5500/X58 I/O Hub to ESI Port (rev 12)
00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 12)
00:03.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 3 (rev 12)
00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 12)
00:14.0 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub System Management Registers (rev 12)
00:14.1 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers (rev 12)
00:14.2 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub Control Status and RAS Registers (rev 12)
00:14.3 PIC: Intel Corporation 7500/5520/5500/X58 I/O Hub Throttle Registers (rev 12)
00:19.0 Ethernet controller: Intel Corporation 82567LF-2 Gigabit Network Connection
00:1a.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1a.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
00:1c.0 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 1
00:1c.1 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Port 2
00:1c.2 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 3
00:1c.3 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 4
00:1c.4 PCI bridge: Intel Corporation 82801JI (ICH10 Family) PCI Express Root Port 5
00:1d.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90)
00:1f.0 ISA bridge: Intel Corporation 82801JIR (ICH10R) LPC Interface Controller
00:1f.2 IDE interface: Intel Corporation 82801JI (ICH10 Family) 4 port SATA IDE Controller #1
00:1f.3 SMBus: Intel Corporation 82801JI (ICH10 Family) SMBus Controller
00:1f.5 IDE interface: Intel Corporation 82801JI (ICH10 Family) 2 port SATA IDE Controller #2
02:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)
03:00.0 Multimedia video controller: Conexant Systems, Inc. CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb (rev 0f)
04:00.0 Mass storage controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)
05:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller
07:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] RV770 [Radeon HD 4850]
07:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] RV770 HDMI Audio [Radeon HD 4850/4870]
ff:00.0 Host bridge: Intel Corporation Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers (rev 04)
ff:00.1 Host bridge: Intel Corporation Xeon 5500/Core i7 QuickPath Architecture System Address Decoder (rev 04)
ff:02.0 Host bridge: Intel Corporation Xeon 5500/Core i7 QPI Link 0 (rev 04)
ff:02.1 Host bridge: Intel Corporation Xeon 5500/Core i7 QPI Physical 0 (rev 04)
ff:03.0 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller (rev 04)
ff:03.1 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder (rev 04)
ff:03.4 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Test Registers (rev 04)
ff:04.0 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers (rev 04)
ff:04.1 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers (rev 04)
ff:04.2 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers (rev 04)
ff:04.3 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers (rev 04)
ff:05.0 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers (rev 04)
ff:05.1 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers (rev 04)
ff:05.2 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers (rev 04)
ff:05.3 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers (rev 04)
ff:06.0 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers (rev 04)
ff:06.1 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers (rev 04)
ff:06.2 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers (rev 04)
ff:06.3 Host bridge: Intel Corporation Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers (rev 04)

Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.