X2100 ME, BIOS, EC and Coreboot

Giving some TLC to the X2100.

Intel Management Engine Problem

Solution

Solder a 1K resistor to the right side of R48, near the RAM slot. This pull-down resistor fixes the ME issue.

If you don’t feel like touching the main motherboard, read on to the next sections.

Background

The X2100 was discovered to have a Management Engine issue after BIOS updates, where the primary symptom is that the ME cannot be seen by the system and is undetected in the BIOS. It would also take 10s to 15s to cold boot, most probably due to RAM retraining.

Our first suspicion was that it was due to the EC patches and updates released by jwise and other contributors. As such, update methods were devised to just update the EC region in the BIOS update. However, a few people still encountered the issue even after EC updates only.

HDA_SDO Pin

Intel documentations on HDA_SDO

The ultimate culprit was found to be the HDA_SDO (SPI descriptor override) pin from the PCH by jwise, which is a well documented method to unlock the flash region. The side effect includes disabling the ME, which was what happened here. For some strange reason, this pin is supposed to be internally pulled down by the PCH, but jumps to 4.3v. It could really just be a faulty CPU provided by Intel, but the more likely reason could be a design issue of the board causing this to happen.

Huge thanks to jwise, exander77 and mjg59. They all made lots of contributions to this motherboard improving the usability and fixing issues and problems along the way.

Easier Hardware Fix

There are several ways to fix this without touching the main motherboard, which involves soldering a resistor onto the audio board.

On the X2100 motherboard, it is at R48. It can also be found at the connection between the motherboard and the USB/audio daughterboard. This pin is called ACZ_SDOUT_IOSUB, located at pin 16.

On the daughterboard, it is also called ACZ_SDOUT_IOSUB. It can be found at pin 5 of the CX20561 daughterboard and also pin 7 of the CX20585 daughterboard. Soldering a 1K pull-down resistor to a ground point will resolve this ME issue.

Neutralising ME

If anyone out there wants to intentionally disable the management engine, you can solder a 1K resistor at R48, effectively pulling up the pin and setting it to manufacturing mode (overriding the SPI descriptor). It’s not recommended since the ME provides TPM2.0, but some people may want to do that to prevent the ME from doing snooping on you.

Coreboot

mjg59 has graciously provided ported coreboot for the X2100. Unfortunately I’ve not been able to compile it recently. If anyone wants to take a jab at it, feel free to try it out. I’ll be taking more time to recompile it for the X2100 and push out a fully working image once it’s working.

Embedded Controller and BIOS

More modders (exander77) have joined in the effort to make the EC a more friendly and usable version. Some changes includes reducing the charger requirements from 90W to 65W, as well as a smoother fan curve. I’ve included some versions in the BIOS support page. I’ve also removed the ME issue and included a full Linux script to flash the BIOS directly. Separate flashing of BIOS and EC is still available on this website and GitHub repository.

3 thoughts on “X2100 ME, BIOS, EC and Coreboot”

  1. This is the best techblog I follow, with things I never have money to buy (Brazil here), but so nice to see the improvements to retro that worked, those that Lenovo just ignored these days. Keep the good work, eager to see more updates and curiosities.

Leave a Reply