Focus of this repo will be on the X2100. The X210 and other repos are linked in this repo. A copy of this article is on my website as well, along with older versions of the BIOS. This repo aims to cover all the relevant BIOS/EC information on the X210 and the X2100.
Download the latest release and read the README to flash the updates. The instructions are also found here.
- x2100 (Main content of this repo, includes the BIOS and EC)
- X210 EC: Original X210 EC patches
- X210 BIOS/EC: Compiled X210 BIOS/EC patches in a single repo
- X2100 EC: X2100 EC patches based on the X210
- X2100 EC updated: exander77's patches based on jwise's repo, not included in this repo
- Flashrom for Linux
- Coreboot for X2100
The git repos listed above are listed as git submodules, once you cloned this repo you can fetch them by git submodule init
and git submodule update
.
-
*_17012022_*.bin
- Update over the 15 December binaries are the changed Intel HDA GPIO voltage from 1.8v to 3.3v which should prevent new boards from bricked ME.
- For detailed information, refer to the notes below.
-
bios_15122021.bin
- BIOS is properly configured with sensible power levels (15W fallback).
- CPU C states are enabled with options of promotion and demotion. Enables better power savings.
- UEFI video is disabled under CSM. Disable if OS does not display.
- RAM is set to 2666MHz all the time to reduce screen tearing.
- IGP is set to 1GB for higher intel GVT-G resolutions.
- CPU microcode is updated.
- Intel ME is updated to 14.1.
- GOP updated.
- EC is updated using patches
-
bios_15122021_me_disable.bin
(may not work from some preliminary testings)- Exactly the same image as
bios_15122021.bin
except the following: ME disabled, useful for those with the ME issue. This disables the ME in the menu section in BIOS and does not set HAP bit = 1.
- Exactly the same image as
-
dual_pcie_15122021_me_disable.bin
(may not work from some preliminary testings) anddual_pcie_15122021.bin
- Exactly the same image as
bios_15122021.bin
except the following: The stock mSATA/4G module (top slot) has been changed to PCIe. Unfortunately it does not work with Intel WiFi cards, but NVMe drives and other WiFi drives do work. This would unlock faster NVMe SSDs by using an NVMe 2242 female to mPCIe male adapter. This also enables dual WiFi cards, allowing those who wants dual WiFi cards for development and testing.
- Exactly the same image as
-
v25_original.bin
- The latest factory BIOS (V25)
-
*_fast_charge.bin
- Patched EC using exander's patches. Includes all the patches except the fn/ctrl patch. Power charging is set at 80W peak. Only chargers >65W will work, excluding most 65W chargers. Fan speed is set to silent 1 profile.
-
*_slow_charge.bin
- Patched EC using exander's patches. Includes all the patches detailed above. Power charging is set at minimum 45W. 65W chargers will work, useful for those who wants to bring a small USB-C charger.
-
*_fn_ctrl_swapped.bin
- Patched EC using exander's patches. Includes all the patches detailed above including swapped fn/ctrl patch.
- May have weird behaviour when using an external mouse. Try it out and revert to non swapped variant.
-
layout
- BIOS layout files for the X2100 BIOS image
-
x2100_helper.sh
- BIOS and EC update and management script for Unix users. Requires flashrom to be in the same directory.
-
flashrom
- Compiled flashrom from master that will work on 10th gen Comet Lake. Compiled for Linux x64 systems. SHA256: dbfadc52b1e1aa12bfb3e26c8e72d183037962b0ba0e65fb1987df5b2d888e56
Note: After updating the BIOS to some of the recent unofficial ones, the version and build date shown in the BIOS setup won't change.
The ISO image provided uses Intel FIT tool in UEFI mode to flash the firmware binary. It was intended for development use but most small OEMs without bootguard use this method to update the image for convenience. It is exactly the same as the other methods highlighted here.
- Download the ISO image in the release page.
- Use Rufus or dd to transfer the image onto an external thumb drive/storage device.
- Boot the thumb drive in UEFI mode and it will automatically flash the image.
- IMPORTANT: Shutdown, unplug and wait 1 minute before plugging power back in.
This patches both the BIOS and EC. You'll need to build the BIOS with your preferred BIOS image and EC if you want a customised image.
- Download the BIOS update programme from my website or from the release tab on this page.
- Be sure to install the drivers in the downloaded folder.
- Copy the preferred full BIOS image to the folder.
- Rename as
bios.bin
. - Run
update.bat
as admin. - Shutdown and unplug power, including battery power.
- IMPORTANT: Wait 1 minute before plugging power back in.
For Linux users, flashrom has to be compiled from source in order to flash the firmware as the support for 10th generation Intel chipsets is not included in the stable release yet. A compiled binary is provided in this repo, or you can compile it yourself:
- Run
git clone https://github.com/flashrom/flashrom.git
to clone flashrom cd flashrom
and build flashrom by runningmake
. More instructions are located in the flashrom README.
- Set the
iomem=relaxed
kernel parameter in your bootloader config (see a guide for GRUB here). - Download the files needed from my website or from the release page or generate your own using the helper script.
- Make sure you have the full BIOS image, flashrom and
x2100_helper.sh
in the same directory - Run helper script:
sudo bash x2100_helper.sh -f -i bios.bin
- Alternative, look here to update the BIOS only
- Or here for the EC only
- Set the
iomem=relaxed
kernel parameter in your booloader config (see a guide for GRUB here). - Download the BIOS and EC you want to use. There are 4 options for BIOS (HAP bit 0 vs. 1, top slot mSATA vs. mPCIe) and 4 options for EC (with or without Fn/Ctrl swap and fast charge) so you have a total of 16 options:
ME disabled in menu Top slot Fn/Ctrl swap Fast charge BIOS file EC file No mSATA No No Download Download No mSATA No Yes Download Download No mSATA Yes No Download Download No mSATA Yes Yes Download Download No mPCIe No No Download Download No mPCIe No Yes Download Download No mPCIe Yes No Download Download No mPCIe Yes Yes Download Download Yes mSATA No No Download Download Yes mSATA No Yes Download Download Yes mSATA Yes No Download Download Yes mSATA Yes Yes Download Download Yes mPCIe No No Download Download Yes mPCIe No Yes Download Download Yes mPCIe Yes No Download Download Yes mPCIe Yes Yes Download Download - Rename the BIOS as
bios.bin
and EC asec.bin
- Download flashrom and the helper script (both are also available in the releases). Alternatively, you can compile flashrom yourself.
- Place
bios.bin
,ec.bin
, flashrom binary andx2100_helper.sh
in the same folder. - To build a full flashable BIOS image, run:
sudo bash x2100_helper.sh -c -b bios.bin -e ec.bin -o output.bin
- Update the whole BIOS image or only the BIOS or only the EC
- Run the helper script to update the BIOS:
sudo bash x2100_helper.sh -f -b bios.bin
- IMPORTANT: Shutdown and unplug the power for 1 minute.
- Reboot and verify that all the settings are intact.
- Run the helper script to update the EC:
sudo bash x2100_helper.sh -f -e ec.bin
- IMPORTANT: Shutdown and unplug the power for 1 minute.
- Reboot and verify that all the settings are intact.
- Go into BIOS
- Advanced
- PCH-FW Config
- PTT
- Change dTPM to PTT
- Turn off CSM settings in the advanced menu.
- Disable SA GV for RAM.
- Located under advanced > chipset.
- Undervolt the machine
- Advanced > Overclocking Performance Menu.
- Enable overclocking features
- Processor > core/ring
- Change the offset of the voltage in mV.
- Change prefix to negative to indicate undervolt.
- Take caution with this and do plenty of test to ensure stability.
- There are also software options to do this.
- PL1/PL2 adjustments
- Article I wrote on this
- Advanced > Power & Performance > CPU - Power management Control > Config TDP
- A few presets here. Default is nominal and you can change the nominal preset.
- Adjust PL1, PL2 and tau setting for nominal profile.
- Enable C states
- Advanced > Power & Performance
- Enable C1 & C3 states.
- Enable promotion and demotion of C-states.
- Change package C-state to auto.
- From my limited testings, HAP = 1 does not work as intended after running the me_cleaner script. The behaviour of the laptop is the same as HAP = 0 and intelmetool reports everything to be working even though the dumped ME image after running the script reports HAP bit to be set. The only way to set HAP = 1 seems to be via hardware as detailed on my blogpost.
- Grab a CH341a to save yourself from the pain of figuring out how to use the RPI in flashing. The CH341a is natively supported by flashrom and probably works for 99% of flash chips out there.
- Part number of the X2100 flash chip is MX25L12835F.
- EEPROM chip is underneath the keyboard, next to the IO daughterboard.
- mjg59 has kindly ported coreboot to the X2100. Feel free to compile from his repo. It is included as a submodule for in this repo as well.
- Changing factory presets:
- Use AMIBIOS (google around for the binary) to adjust settings. Several versions don't really work. Just try out different versions on the internet and see which one works.
- Updating internal ME, change PCIe/SATA lanes etc:
- Intel CSME v14 R1 (Intel FIT) to adjust these internal settings.
- By using Intel FIT, you can technically provision Bootguard yourself as the machine comes unprovisioned with a clean unfused PCH.
- Google around to find out more. All warranty is voided if you attempt to do this.
- Doing this would probably make this the most secure laptop in the world as literally only you own the firmware keys.
Thanks to everyone who made it possible.
- EC patches: mjg59, jwise, l29ah, exander77
- X210 coreboot: mjg59
- X210 compilation: harrykipper
- X2100 BIOS updates: chose to remain anonymous
- Flashrom: flashrom team
- Motherboard: 51nb, Hope, 17m19
- Everyone else who has contributed to this project, the maintainerr and you: the user who has tested and debugged this laptop.
The BIOS binaries contains copyrighted material from AMI but this repo is for documentation so please do not sue me. Everything else belongs to their respective copyright owners. Everything by me is GPLv3 including the helper script. Feel free to fork and play around.