Unable to update Firmware from 3.04 to latest on website

SOLUTION

OK, I found the issues. Here’s what I did in hopes it will help others.

This information is based on a 13" 12th gen with BIOS 3.04 attempting to upgrade to 3.17. I’m running Bazzite Linux but the OS won’t really matter for this because this is using the EFI boot method. If you haven’t read this page, pause here and go read it.

  1. Create a FAT32 USB
  2. Unzip the EFI zip file onto the top/root directory of the USB
  3. The USB drive does NOT need to be bootable
  4. Turn off SecureBoot. This may not really be needed but I’ve read a bunch of reports that this is needed. I did it anyway to be safe.
  5. If you run into errors, read the items below
  6. Power on the system and spam F12 until you see the boot menu and select the USB drive.
  7. Flash as per the instructions above or the workaround below
  8. Re-enable SecureBoot

Changes were needed to startup.nsh

  1. If you get an error saying that flashing the same version is not allowed, and you clearly are flashing a newer version, add “-allowsv” to proceed to the next step.
  • FwUpdlcl.efi -F FWupdate.bin -Y -allowsv
  1. If your next error is ~ “capsuleApp cannot find a valid file system on boot devices” then the solution was discovered in this Reddit thread. The issue is with the “-0D” flag in capsuleapp.

If you interrogate CapsuleApp.efi for the description of its arguments and options, it tells you that the -OD flag is for loading the capsule from a mass storage device. In our case, the capsule is a regular file. Removing the -OD flag results in a successful update.

  • Search for “winux.bin” and you’ll find two lines that look like this: CapsuleApp.efi winux.bin Framework_Laptop_13_12th_Gen_Intel_Core_capsule_signed_allsku_3.17.cap -0D
  • For both lines, remove the “-0D”
  1. After making the above changes, perform the flash ONCE. The computer will reboot into the flasher, reboot a few times, and then you will panic because the screen is black. Don’t panic, just let it sit for at least 2 minutes (the official guide says up to 5 minutes) while it updates in the background. It will come back and boot into your OS.

  2. SHUTDOWN and remove the flash drive.

  3. Edit startup.nsh again and REMOVE “-allowsv” from step 1.

  4. Perform the flash again. This will update the retimers. The process will look like it did in step 3 above.

  5. Linux: Once the system reboots into the OS, you can run topgrade, ujust upgrade, fwupdmgr, etc, and it will show that life is peachy. You should be able to upgrade using LVFS (i.e., fwupdmgr) from here on out. You’ll also see that the firmware security report app is a whole lot of green now.

8 Likes