11th Gen Intel Core BIOS 3.19 release

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:

  1. Windows 11 ISO
  2. Framework Windows BIOS 3.19 update exe
  3. Framework Windows 11 drivers exe
  4. EFI Shell BIOS 3.17 update zip
  5. 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:

  1. cd /
  2. cd FRAMEWORK_LAPTOP
  3. cd win10
  4. drvload heci.inf
  5. cd ..
  6. cd bios319
  7. drvload H2OFFT.inf
  8. 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:

  1. Format your USB drive and follow Framework’s instructions for creating the USB for BIOS 3.17 EFI shell update.
  2. Copy your isFlash.bin file from earlier onto the USB
  3. Make a copy of H2OFFT-Sx64.efi and name it FwUpdLcl.efi (this is a hack which I explain later if you’re curious)
  4. Modify startup.nsh to look like:
    H2OFFT-Sx64.efi isFlash.bin
  5. 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.

6 Likes