Skip to content

Debugging UEFI Capsule updates

Tomáš Hnyk edited this page Jan 12, 2021 · 3 revisions

Latest version

If you're running into problems with fwupdate not doing UEFI capsule updates, please first try master in case it's already been fixed.

  • If you are running with secure boot enabled, please disable secure boot while trying master (you won't have signed binaries).

Not enabled in BIOS

Check that capsule updates are enabled in the BIOS settings. On Dell systemts, they are called "UEFI capsule firmware updates" and on Lenovo "Windows UEFI firmware update". Other vendors might use different names.

Not booting into fwup.efi

First check and make sure that the boot entry is getting created.
You can check this from efibootmgr -v output. The expected behavior is:

  • There is one entry for Linux-Firmware-Updater \fwupx64.efi If multiple entries exist, delete duplicates.
  • BootNext has been set to point to the entry that corresponds to Linux-Firmware-Updater \fwupx64.efi
  • BootOrder contains the entry that corresponds to Linux-Firmware-Updater \fwupx64.efi at the end of the list.

If the boot order looks correct, make sure that all the files referenced exist at the paths indicated (both shimx64.efi and fwupx64.efi)

Booting into fwupx64.efi but nothing happens

Are you applying multiple capsules simultaneously? This could mean doing a TPM update and BIOS update at the same time, or an FMP update and BIOS update at the same time.

I am doing multiple updates and it fails

  1. Re-run the cleanup systemd unit.
  • You'll need to remove a state file (in /var/lib/fwupdate/done or somewhere similar - distro dependent)
  • This removes the payloads from EFI system partition, Boot entries and all NVRAM variables.
  1. Re-run just one update at a time. If this fixes your problem, please report an issue with the relevant details.

Only doing one update and it fails

  1. Enable the fwup.efi debugging facility.

Running fwupdate >= 11 (or from git)

Run this command as root:

fwupdate -d

Running fwupdate <= 10

Run this command as root:

printf "\x07\x00\x00\x00\x01" > /sys/firmware/efi/efivars/FWUPDATE_VERBOSE-0abba7dc-e516-4167-bbf5-4d9d1c739416
  1. Re-run the update from Linux.
  2. Before rebooting, get a camera ready to record a video.
  3. Reboot the system and once the POST screen comes up, start recording.
  4. Share the video on a bug