Lenovo Yoga UEFI Update

I realize that this isn’t Fedora-specific, but I’m hoping folks here won’t mind answering anyhow.

I have a Lenovo Yoga laptop. There is a new UEFI update for the laptop. However, Lenovo doesn’t appear to publish on LVFS for this model. I was digging around and came across this article about updating UEFI by extracting the .cap file from Windows installer and then using fwupdmgr to install it:

My question for the folks here - how do you update your device’s firmware when it’s not on LVFS? Is following the article the best/correct way to handle this (short of using Windows)? Has anyone used this technique? My key concern is - this is touching the UEFI. The last thing I want to do is mess around and brick the system. So, I am hoping that someone has some advice for my situation.

My Lenovo Thinkpad has an option in the BIOS to place the new bios file onto a USB stick and it’ll get flashed by the existing BIOS. It’s appears as boot option if I’m not mistaken and it’s named “Linux-Firmware-Updater”

As for updating the firmware for devices themselves, fwupdmgr refresh --force && fwupdmgr update.

This doesn’t have any available UEFI updates, despite there having been some for this laptop.

Devices with no available firmware updates: 
 • SKHynix HFS001TEM4X182N
 • System Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • UEFI Device Firmware
 • Integrated Camera
 • KEK CA
 • SBAT
 • Windows UEFI CA
Devices with the latest available firmware version:
 • UEFI CA
 • UEFI dbx

This is why I was exploring other options, including the article I found and linked to that has you forcing an update in a semi-hackish way.

I’ll check to see if there’s something in UEFI/boot menu.

I copy it to a FAT32 USB and force a BIOS recovery (Ctrl + Fn and plug-in AC); I can do it from regular boot menu selection too (Dell Latitude 5591).

Dell has BIOS images in .exe usable as-is Windows and BIOS boot menu, and can be renamed as-is to something like BIOS.RCV for the recovery method.


I’d look for DOS flashing instructions and make a FreeDOS USB.

I just checked - to get to it, I interrupt the start up sequence when the Lenovo logo appears, and then select “Boot Options” from the presented menu, as thought I wanted to boot from LAN:

I checked and my boot options doesn’t have that as an option. Just the OSes.
I also checked within BIOS and there weren’t any options in there to update from a USB drive (like on a desktop).

Does this help?

Boot From the USB Drive

  1. Plug the USB into the Yoga.
  2. Power it off completely.
  3. Turn it on and immediately press:
  • F12 (for Boot Menu) or Novo Button (small pinhole next to power button → choose “Boot Menu”)
  1. Select the USB drive to boot.

The system should automatically launch the Lenovo BIOS Flash Utility.

Doing this, the USB Drive appears in the boot menu, as expected. However, selecting it didn’t do anything. It must have not seen anything bootable on the drive and skipped to the next item in the boot menu (GRUB).

The USB drive must be formatted as FAT32 and the file from Lenovo must be in there with the correct name, file extension and so on.

Obviously, the .cap, .fl1, whatever you have must also be the correct BIOS for your machine.

The code which is reading this data and spaffing it all over your existing BIOS entry is pretty simple, but it does have some checks baked into it to stop you from blowing your own foot off by trying to flash the wrong contents into your flash memory on your machine.

So, I found the solution. It was mostly following the link in my original post. However, there were a couple minor differences.

To extract the .cap file, the article mentioned using a innoextract. However, that tool didn’t work as it wasn’t a supported file type. What I did find, though, was that the .exe was just a self-extracting zip file. So, I was able to unzip to get the files out.

I then followed the instructions from the article by:
Running fwupdmgr get-devices to get a list of devices and, specifically, get the GUID for the system.
Running sudo fwupdmgr install-blob {path to .cap} {GUID}.
Then reboot, chew fingernails, and hope. It rebooted into the BIOS Flash and did its thing. Confirmed running the new version.

Thank you all for trying to help. I was nervous, as one gets, with doing the BIOS flash for the first time from Linux. I didn’t want to blindly follow a tutorial for something so … scary. Ended up where I had to do it and hope for the best, and luckily it turned out okay.

3 Likes