This is a guide on how to update to BIOS 3.19 from Linux using only
files provided by Framework and Microsoft, without needing a Windows-To-Go drive or Windows installation. This worked for me and I cannot guarantee it will work for you. Attempt at your own risk.
You will need:
- Windows 11 ISO
- Framework Windows BIOS 3.19 update exe
- Framework Windows 11 drivers exe
- EFI Shell BIOS 3.17 update zip
- USB Drive
Install wimlib, cabextract, and cdrkit (cdrtools) if you do not already have them installed.
Using an archive manager of your choice, extract the 3.19 BIOS update exe to a new directory (e.g. bios319/
)
Then from the driver bundle, extract:
/IntelCSME_TGL-U_15.0.35.1951_V6.2_Corporate/SetupME.exe
Then from SetupME.exe
extract ME_MEI_Drivers_x64.msi
Now run cabextract ME_MEI_Drivers_x64.msi
and take note of the directory HECI_REL/win10
Create a directory (e.g. csme_patch
) with the following structure:
csme_patch
└── FRAMEWORK_LAPTOP
├── bios319
│ ├── Ding.wav
│ ├── FlsHook.exe
│ ├── FWUpdate.bin
│ ├── FWUpdLcl.exe
│ ├── H2OFFT64.sys
│ ├── H2OFFT.cat
│ ├── H2OFFT.inf
│ ├── H2OFFT-W.exe
│ ├── isflash.bin
│ ├── mfc90u.dll
│ ├── Microsoft.VC90.CRT.manifest
│ ├── Microsoft.VC90.MFC.manifest
│ ├── msvcp90.dll
│ ├── msvcr90.dll
│ └── platform.ini
└── win10
├── heci.cat
├── heci.inf
├── x64
│ └── TEEDriverW10x64.sys
└── x86
└── TEEDriverW10.sys
Now mount your Windows 11 iso and run:
mkwinpeimg --iso --windows-dir=/path/to/win11/mount --overlay=csme_patch winpe.iso
Create a new GPT partition table on a USB drive and create exactly 1 FAT32 partition with the esp
flag set.
Mount your USB drive and mount your winepe.iso
Now run cp -vr /path/to/winpe/mount/* /path/to/USB/mount/ && sync
And then run cp -vr /path/to/win11/mount/efi /path/to/USB/mount && sync
You can now unmount everything you just mounted
Boot from your USB drive into the Windows PE environment you have created. Your touchpad will not work. The backslash key was not working for me either. It should drop you right into a command prompt, but if not use the tab/enter keys to navigate to the “repair my computer” menu and run a command prompt from there.
Run the following in the command prompt:
cd /
cd FRAMEWORK_LAPTOP
cd win10
drvload heci.inf
cd ..
cd bios319
drvload H2OFFT.inf
H2OFFT-W.exe
The BIOS update utility should start. Use tab/enter to confirm you want to flash. Your ME will update, but it is likely your BIOS will fail to update. If it worked for you, you are done. If not, to finish the BIOS update do the following after rebooting back into Linux:
- Format your USB drive and follow Framework’s instructions for creating the USB for BIOS 3.17 EFI shell update.
- Copy your
isFlash.bin
file from earlier onto the USB
- Make a copy of
H2OFFT-Sx64.efi
and name it FwUpdLcl.efi
(this is a hack which I explain later if you’re curious)
- Modify
startup.nsh
to look like:
H2OFFT-Sx64.efi isFlash.bin
- Boot from this USB and your bios should update to 3.19
The reason for the copying of H2OFFT-Sx64.efi
is because the update utility is looking for FwUpdLcl.efi
to update the ME. There is currently no way to get this file from a credible source (and is why this whole guide exists in the first place), and the update will fail if it is not found. Using H2OFFT-Sx64.efi
as a stand-in essentially no-ops the ME update portion of the BIOS update, as all that happens when the stand-in FwUpdLcl.efi
file is executed is an error that the main utility cannot detect. This in turn allows the rest of the update to continue.