Overview

I was successfully able to apply me_cleaner on my Asus Maximus VIII Hero Alpha motherboard with an i7-6700k, though with some difficulty. I will walk you through the steps I followed to successfully remove the ME from my motherboard.

Disclaimer

Do this at your own risk. You will void your warranty, you may brick or otherwise break your PC. Your computer is your responsibility, not mine.

Read the wiki before attempting.

You may wish to check issue #3, 'me_cleaner status' and search for your motherboard/laptop details to see if anyone else has reported success/failure with the same hardware as you.

Summary

Operating modes

  • me_cleaner with no options will delete the ME
  • me_cleaner -s will set the HAP bit only
  • me_cleaner -S will delete the ME and set the HAP bit

BIOS image

  • The BIOS can be extracted directly from the chip with flashrom
  • A 'clean' version of the BIOS can be sourced from Asus' website

Applying me_cleaner

My problem

  • me_cleaner -S resulted in my PC failing to POST regardless of the BIOS source
  • me_cleaner (no options) worked on Asus' image, but not my extracted image
  • me_cleaner -s worked on my extracted image, but not on Asus' image

Eventual solution

  • Apply me_cleaner (no options) on the official image
  • Apply me_cleaner -s on my extracted image
  • Use UEFITool to merge the two

Section 1: setting everything up

Connect BIOS chip

Remove the chip from the motherboad; be careful, it's easy to accidentally bend the pins! Chip location on motherboard

I believe that all BIOS chips have the same pin layout, but it might be a good idea to find the datasheet for your specific chip (check the name written on it) to be sure. I found the datasheet for my Winbond 25Q128FV1Q, which showed the following layout.

Pin layout

Plug the chip into a breadboard and connect to the following GPIO pins on your Raspberry Pi. You may find pinout.xyz useful to check which pin is which.

Chip numChip nameGPIO namePin num
1CSGPIO 8 (SPIO CE0)24
2DO (Data Out)GPIO 9 (SPIO MISO)21
3WP3v3 Power17
4GroundGround25
5DI (Data In)GPIO 10 (SPIO MOSI)19
6CLKGPIO 11 (SPIO SCLK)23
7HOLD3v3 Power17
8VCC3v3 Power17

Use 3.3V for VCC! 5V will damage the chip.

You will notice that 3 pins need to be connected to VCC; WP and HOLD are 'pulled up'. You will need to use the connections on your breadboard to achieve this.

MISO and MOSI correspond to Master In Slave Out and vice versa, if you were wondering.

Enable SPIO in your Raspberry Pi

SPIO interfacing seems to be turned off by default! Make sure you turn it on. You can follow this useful guide to find out how.

Interface with the chips

Make sure you have flashrom installed. Use the following command to test if your chip is detected. flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000

We invoke flashrom and use -p to specify the programmer we want to use is linux_spi. We then specify the SPI device we want to interface with, and the speed we want to use.

I had no idea what speed to use and couldn't find concrete guidance online. I found that 8000 worked consistently, so I stuck with that.

You can add on -V for verbose output if you like.

Troubleshooting: No EEPROM/flash device found

If you get No EEPROM/flash device found it means that flashrom has been unable to find your chip, which means something is not connected somewhere. You may need to spend a while testing different things to find out what's wrong.

Check that:

  • You have all the pins connected
  • You are using 3.3V not 5V
  • You have the chip the right way around
  • You have WP and HOLD pulled up
  • You have SPI enabled

Try:

  • Switching CS (chip #1) from SPIO CE0 (Pi 24) to SPIO CE1 (Pi 26)
  • Different values in spispeed
  • Using a different Raspberry Pi (I was close to giving up before I tried a different Pi, and it worked straight away; maybe something was damaged somewhere)

Section 2: removing the ME

These steps are a recount of what worked for me. Different motherboards may vary in how they behave or respond, so your mileage may vary. Make sure you understand at least the basics of what you are doing so that you can adapt it to your needs. You may find you need only do one or the other.

In order to get the 'full' application of me_cleaner I needed to merge two BIOS files, as using the -S option resulted in a BIOS that wouldn't POST for me.

Extract the BIOS from the chip

Assuming that you've been able to successfully interface with your chip using flashrom, you can continue.

Use flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000 -r extracted.bin to extract the BIOS from the chip into a file named extracted.bin.

Back this file up. This is your recovery file if your modified image doesn't work or bricks your motherboard.

Get Asus' BIOS image

Download the BIOS file from Asus' website. Unzipping it will yield a .CAP file, which is some proprietary format that's not useful. You'll need to use UEFITool to extract the image.

Open the .CAP file in UEFITool, right click on 'AMI Aptio capsule' and choose 'Extract body...'. Save this somewhere, I called my file source.bin.

Extract body with UEFITool

Apply me_cleaner

Make sure you've read How to apply me_cleaner on the me_cleaner wiki, so that you know what you're doing.

You should probably try various combinations of approaches to see what works for you. Here's what worked for me.

Set the HAP bit on the extracted image: python me_cleaner.py -s -O hap.extracted.bin extracted.bin

Delete the ME in the source image: python me_cleaner.py -O removed.source.bin source.bin

Open removed.source.bin in UEFITool, expand to find 'ME region', use Extract as is... and save somewhere, e.g. removed_me.rgn.

UEFITool Extract ME region

Open hap.extracted.bin in UEFITool, expand to find 'ME region' again, and use Replace as is.... Select your removed_me.rgn file.

Use File > Save image file... to save the image out as merged.extracted.bin. This is the file that I flashed back to my chip

Verify that the ME is removed from the image by following the relevant steps in the wiki guide Get the status of Intel ME.

Flash your final image back to the chip

Up until this point you haven't modified anything on your motherboard, so no damage done. This is the part where you can brick your motherboard! Make sure you understand the risk and accept what you're doing.

Make sure you have your original extracted.bin. If things go wrong, you can just flash it back with the same command.

Flash the modified image with the command
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000 -w merged.extracted.bin

This may take a little while, do not unplug the chip. Just let it do it's thing. Some people online report that it may take up to quarter of an hour. It took about 2-3 minutes for me.

Plug it back into your motherboard and test

Plug the chip back into your motherboard, power on your PC, and follow check the status of the ME from within your OS. The wiki is your friend again: Get the status of Intel ME.

I found that the first time I booted with the modified BIOS, the machine just hung and did nothing. Holding the power button to force it off solved it for the second boot, and everything has been fine since.

If all has gone well, your PC should work normally, and the management engine should be gone! If not, you can flash back your original extracted.bin which should return your BIOS back to how it was. There are a lot of useful issues in the me_cleaner repository which may be able to help you out, if you take the time to read them.

If something went really really wrong you can purchase a replacement chip (assuming you're using a motherboard with a removable chip like in this guide).