Preparation for using Fwupd

Hello all,

I want to use fwupd to update my x1 carbon gen 7 because there are some issues such as cpu throttling which the Arch wiki mentions should/will get resolved with firmware updates, so I’ve been reading and re-reading these two pages.

There’s a warning which states that it may be necessary to recreate the NVRAM entry after the firmware update.

Regarding efibootmgr, when I run $ findmnt /efi I don’t get any output.

lsblk


NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

nvme0n1 259:0 0 476.9G 0 disk

├─nvme0n1p1 259:1 0 300M 0 part /boot/efi

├─nvme0n1p2 259:2 0 459.8G 0 part /run/timeshift/backup

└─nvme0n1p3 259:3 0 16.9G 0 part [SWAP]

Am I correct in thinking if it is necessary for me to recreate the NVRAM entry after a firmware update I would have to run this command:

sudo efibootmgr --create --disk /dev/nvme0n1p1 --loader /boot/efi --label "efi Boot Manager" --verbose

Or maybe

sudo efibootmgr --create --disk /dev/nvme0n1p1 --loader x86_64-efi --efi-directory=/boot/efi --label "GRUB Boot Manager" --verbose

Or maybe

sudo efibootmgr --create --disk /dev/nvme0n1p1 --loader efi/grub/grub_x64.efi --label "GRUB Boot Manager" --verbose

Regarding the three conditions which have to be met to use fwupd for an UEFI upgrade:

I’ve run $ efivar --list


[muj@Blackstone ~]$ efivar --list

37d3e8e0-8858-4b84-a106-244bb8cbfdc3-LenovoLogging

eb704011-1402-11d3-8e77-00a0c969723b-MTC

8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0008

0b7646a4-6b44-4332-8588-c8998117f2ef-LastBootCurrent

e20939be-32d4-41be-a150-897f85d49829-MemoryOverwriteRequestControl

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0001

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0005

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot000A

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0009

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0007

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0006

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0004

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0000

d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx

ba57e015-65b3-4c3c-b274-659192f699e3-BugCheckParameter1

ba57e015-65b3-4c3c-b274-659192f699e3-BugCheckCode

ba57e015-65b3-4c3c-b274-659192f699e3-BugCheckProgress

8be4df61-93ca-11d2-aa0d-00e098032b8c-Timeout

da48669f-63cc-4c23-bd99-78a09ff989c4-TdkFlashCommandLine

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0003

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0002

4a67b082-0a4c-41cf-b6c7-440b29bb8c4f-LoaderSystemToken

8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0022

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0021

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0020

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001F

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001E

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001D

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001C

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001B

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot001A

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0019

d69a279b-58eb-45d1-a148-771bb9eb5251-EPCSW

eaec226f-c9a3-477a-a826-ddc716cdc0e3-OfflineUniqueIDEKPubCRC

eaec226f-c9a3-477a-a826-ddc716cdc0e3-OfflineUniqueIDEKPub

eaec226f-c9a3-477a-a826-ddc716cdc0e3-UnlockIDCopy

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0001

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0000

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0008

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0007

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0006

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0005

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0004

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0003

8be4df61-93ca-11d2-aa0d-00e098032b8c-Key0002

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0028

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0027

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0026

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0025

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0024

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0023

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0018

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0017

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0016

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0015

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0014

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0013

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0012

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0011

8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0010

8be4df61-93ca-11d2-aa0d-00e098032b8c-PK

8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK

d719b2cb-3d3a-4596-a3bc-dad00e67656f-db

77fa9abd-0359-4d32-bd60-28f4e78f784b-CurrentPolicy

d9bee56e-75dc-49d9-b4d7-b534210f637a-certdb

60b5e939-0fcf-4227-ba83-6bbed45bc0e3-BootState

04b37fe8-f6ae-480b-bdd5-37d98c5e89aa-VarErrorFlag

8be4df61-93ca-11d2-aa0d-00e098032b8c-ConIn

8be4df61-93ca-11d2-aa0d-00e098032b8c-PlatformLang

bb983ccf-151d-40e1-a07b-4a17be168292-MemoryOverwriteRequestControlLock

aaf32c78-947b-439a-a180-2e144ec37792-AuthVarKeyDatabase

8be4df61-93ca-11d2-aa0d-00e098032b8c-BootCurrent

8be4df61-93ca-11d2-aa0d-00e098032b8c-OsIndicationsSupported

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0028

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0027

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0026

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0025

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0024

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0023

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0022

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0021

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0020

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001F

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001E

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001D

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001C

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001B

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot001A

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0019

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0018

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0017

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0016

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0015

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0014

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0013

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0012

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0011

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0010

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot000A

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0009

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0008

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0007

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0006

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0005

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0004

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0003

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0002

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0001

146b234d-4052-4e07-b326-11220f8e1fe8-lBoot0000

8be4df61-93ca-11d2-aa0d-00e098032b8c-ConInDev

8be4df61-93ca-11d2-aa0d-00e098032b8c-ErrOutDev

8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOutDev

a0b1889e-00eb-445b-8ca9-e91ce43c907d-AbtStatus

57a34c69-4d62-0b7e-86e4-939c5c9b7c93-EventLog

8be4df61-93ca-11d2-aa0d-00e098032b8c-PlatformLangCodes

8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOptionSupport

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-TbtSetupVolatileData

b08f97ff-e6e8-4193-a997-5e9e9b0adb32-CpuSetupVolatileData

9cb2e73f-7325-40f4-a484-659bb344c3cd-SOFTWAREGUARDSTATUS

8be4df61-93ca-11d2-aa0d-00e098032b8c-VendorKeys

d9bee56e-75dc-49d9-b4d7-b534210f637a-certdbv

8be4df61-93ca-11d2-aa0d-00e098032b8c-SecureBoot

8be4df61-93ca-11d2-aa0d-00e098032b8c-SignatureSupport

8be4df61-93ca-11d2-aa0d-00e098032b8c-SetupMode

a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380-DIAGSPLSHSCRN

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-SetupCpuFeatures

0b7646a4-6b44-4332-8588-c8998117f2ef-LastBootOrder

0b7646a4-6b44-4332-8588-c8998117f2ef-BootOrderDefault

db246b7d-a882-4e0e-984f-23ac1b0270db-ESRTPLATFORMENTRY

67c3208e-4fcb-498f-9729-0760bb4109a7-LenovoScratchData

5432122d-d034-49d2-a6de-65a829eb4c74-MeSetup

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LenovoConfig

f72e048b-65bd-4e71-9071-1ac7045223e5-ESRTPLATFORMENTRY

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-SdevXhciSetup

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-Setup

a2c1808f-0d4f-4cc9-a619-d1e641d39d49-LenovoSecurityConfig

0b7646a4-6b44-4332-8588-c8998117f2ef-ProtectedBootOptions

580020c3-6c9c-4f93-8008-7fadc1fcfedd-LenovoFunctionConfig

c3eeae98-23bf-412b-ab60-efcbb48e1534-SMBIOSELOG000

e947fcf9-dd01-4965-b808-32a7b6815657-System

aaf8e719-48f8-4099-a6f7-645fbd694c3d-SiSetup

5432122d-d034-49d2-a6de-65a829eb4c74-MeSetupStorage

72c5e28c-7783-43a1-8767-fad73fccafa4-SaSetup

4570b7f1-ade8-4943-8dc3-406472842384-PchSetup

b08f97ff-e6e8-4193-a997-5e9e9b0adb32-CpuSetup

711c703f-c285-4b10-a3b0-36ecbd3c8be2-CapsuleLongModeBuffer

67c3208e-4fcb-498f-9729-0760bb4109a7-MailBoxQ

1827cfc7-4e61-4273-b796-d35f4b0c88fc-LenovoHiddenSetting

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LBC

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LBL

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LenovoRuntimeConfig

c60aa7f6-e8d6-4956-8ba1-fe26298f5e87-EPCBIOS

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LWO

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LenovoSystemConfig

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-WRDS

2a4dc6b7-41f5-45dd-b46f-2dd334c1cf65-LenovoMfgProductID

27d37beb-537d-486f-916c-7ba02cff60f4-LenovoAbtStatus

54447606-288e-4136-9804-bd4f170d8695-LenovoFprData

0f6499b1-e9ad-493d-b9c2-2f90815c6cbc-PhysicalPresenceFlags

aeb9c5c1-94f1-4d02-bfd9-4602db2d3c54-Tcg2PhysicalPresenceFlags

c3eeae98-23bf-412b-ab60-efcbb48e1534-SMBIOSMEMSIZE

943d1460-da6e-499a-af6d-4593b12bc4d7-LenovoThermalShutdown

0af4027f-9b58-41c0-b62f-cd3a1cef54ee-LenovoWolInfo

aeb9c5c1-94f1-4d02-bfd9-4602db2d3c54-Tcg2PhysicalPresence

0f6499b1-e9ad-493d-b9c2-2f90815c6cbc-PhysicalPresence

7b07d184-02d0-4bfd-ad6e-554c39353a13-LnvSysCfgReq

a7d8d9a6-6ab0-4aeb-ad9d-163e59a7a380-SetupHotKey

c3eeae98-23bf-412b-ab60-efcbb48e1534-SMBIOSELOGNUMBER

4da4f952-2516-4d06-8975-65036403a8c7-RstOptaneConfig

c7e07e07-fd36-4da6-8ec0-8954521f04db-HDDPWD

0ec1a7f5-4904-40a0-8eab-4bcc4666da45-PbaStatusVar

e59376d7-2dd9-42a3-9ec8-1d71d5e3c1ec-OsProfile

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-InitSetupVariable

42780dd5-9a7d-404c-80e4-7f7094360394-GPC

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-GPC

42780dd5-9a7d-404c-80e4-7f7094360394-SADS

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-SADS

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-WGDS

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-EWRD

42780dd5-9a7d-404c-80e4-7f7094360394-BRDS

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-WRDD

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-WAND

92daaf2f-c02b-455b-b2ec-f5a3594f4aea-SPLC

14a22a97-8424-489e-9ead-dc09255658b5-UCR

ec87d643-eba4-4bb5-a1e5-3f3e36b20da9-PciBusSetup

49ad5446-9d32-4455-af9b-d774bda2cf8b-LenovoBDG

zgrep CONFIG_EFI /proc/config.gz


[muj@Blackstone ~]$ zgrep CONFIG_EFI /proc/config.gz

CONFIG_EFI=y

CONFIG_EFI_STUB=y

CONFIG_EFI_MIXED=y

# CONFIG_EFI_VARS is not set

CONFIG_EFI_ESRT=y

CONFIG_EFI_RUNTIME_MAP=y

# CONFIG_EFI_FAKE_MEMMAP is not set

CONFIG_EFI_RUNTIME_WRAPPERS=y

CONFIG_EFI_CAPSULE_LOADER=m

# CONFIG_EFI_TEST is not set

CONFIG_EFI_RCI2_TABLE=y

CONFIG_EFI_DEV_PATH_PARSER=y

CONFIG_EFI_EARLYCON=y

CONFIG_EFI_PARTITION=y

CONFIG_EFIVAR_FS=y

# CONFIG_EFI_PGT_DUMP is not set

noefi is not one of my kernel parameters.

`[muj@Blackstone ~]$ cat /sys/firmware/efi/efivars

cat: /sys/firmware/efi/efivars: Is a directory`

I’m pretty sure my system fulfils the three conditions, so I’m thinking I only need clarification or help on the warning about recreating the NVRAM entry.

Many many thanks in advance.

Regards,

Muj

After installing fwupd I’ve noticed this error:

systemd-modules-load[250]: Failed to find module 'platform-integrity'

this is the first hit on google but it doesn’t mention a fix

I’m still looking into it but I thought I’d mention it as it might be related.

systemctl --failed


[muj@Blackstone ~]$ systemctl --failed
  UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.

This post could still do with answers about recreating NVRAM entry

Hello @muj
I have never used fwupd but i can tell you my experience after updating UEFI which i have done a lot. My motherboard has it built into the firmware in UEFI to do these updates. So i am running rEFInd and when i do an update to UEFI on my board the nvram entry is gone and i am forced to reinstall rEFInd and set it up again the way i have it which is triple boot. So i am assuming the warning is because this does happen. I don’t do it this way so i can’t really tell you other then i guess you’ll see when you boot up after doing the update. It’s not a big deal for me because the package rEFInd is installed on the system i just have to rerun the command to actually run the installer. Then i just have to set the icons for the boot menu for rEFInd.

1 Like

Hi @ricklinux, thank you for your reply.

Would that mean for me that I would have to run:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

You can disregard the message systemd-modules-load[250]: Failed to find module 'platform-integrity'

1 Like

Thats good news! I think I’ve seen that error before but I can’t remember, it’s not in my notes about troubleshooting. Maybe I had it in the past and found out that it wasn’t anything to worry about.

Honestly i don’t know that you would have to do this. I’m thinking it should automatically add the entry when you reboot? But like i say i have not used this way before. I know there are others that have on the forum I’m pretty sure.

That’s fine, I’ll wait in hope for a reply from someone who has used it. I just want to clarify this issue before I do anything because my system has been great and I don’t want to mess it up. Also I don’t think I understood the efibootmgr create command very well

Thanks again @ricklinux :wink:

Does your UEFI on the carbon x1 not have the ability to update from the UEFI screen? I just download the update and put it on a jump drive and boot into UEFI and update from there by browse to the file on the jump drive.

Edit: It has this built in for updating UEFI.

So sorry but I don’t understand lol don’t have a clue. I don’t know what the UEFI screen is.

Maybe if I run this it’ll take me to the UEFI screen?

systemctl reboot --firmware-setup

You know what I love about linux? Every day there’s tons to learn. :rofl: I’ve also read many many times about UEFI GPT GRUB but my understanding is not good. Continuous uphill struggle, can’t wait to be sliding down.

I think this command just reboots you into the UEFI set up screen but this functionality is not available on all hardware. You just use the appropriate key to enter UEFI on boot. I think the x12 Carbon has the ability to update from the UEFI screen but is only if you are using an older method of windows files for the update on a jump drive.

Newer UEFI has it built in that you can do it from the network or download the file and update from a jump drive. I don’t trust doing it from the network although i have done it before. :grimacing:

I think the best way for lenovo laptops is probably with fwupd which is mentioned on the x1 Carbon page on the Arch wiki. (lol I think that but obviously my opinion doesn’t count for much as I don’t know much.)

I just need to make sure that my computer meets the conditions which I think it does and that I know the correct command to run if I need to recreate the NVRAM entry, (lol whatever that is)

I’m just going to boot into the bios, see whats there.

Just my opinion, but I still like doing it with the “update cd” download. geteltorito that thing, dd it to a USB drive, reboot from the USB and start hitting enter and y to confirm what you want to do, and it just does it. Super simple, easy, and it’s worked for untold many years without ever having an issue for me (since the t420 been doing it that way).

2 Likes

@tlmiller76 thank you for your reply. That sounds like a good way to update the firmware. I haven’t done firmware updates really especially on linux. Could you give me more explanation how to actually do what you do?

I know the dd command. Do I go to the lenovo website and try to download firmware updates for my particular laptop? how do I check what version my firmware is now and how do I make sure I’m getting the correct firmware? I take it I would download it to my downloads folder then from within the /Downloads directory run:

sudo dd bs=4M if=firmwareupdate of=/dev/sda status=progress oflag=sync

Then boot from it like you said.

I ran sudo pacman -S dmidecode and sudo dmidecode -s bios-version and got N2HET57W (1.40 )

I found out the model n.o for my laptop with inxi -F which is LENOVO model: 20QD00KWUK

On the Lenovo website there are lots of updates for different hardware e.g Audio, Networking, BIOS/UEFI, Fingerprint reader etc. Is the Bios/UEFI the firmware update that I would need?

Would I need any of the other updates?

At the moment my BIOS version is the latest so I don’t think there is any updates for me which is a shame because I wanted to go through the process.

Is BIOS/UEFI the same as firmware update? Google told me it is.

For firmware updates in the future confirm my firmware version with sudo dmidecode -s bios-version which at the moment is N2HET57W (1.40 ) then confirm my laptop model with inxi -F which for my x1 carbon is LENOVO model: 20QD00KWUK then go to the lenovo website download the necessary bios update (make sure it’s BIOS update (Bootable CD)) to my /Download directory then use sudo dd bs=4M if=firmwareupdate of=/dev/sda status=progress oflag=sync to put the BIOS update onto a USB, then boot from the USB hitting Enter and y to confirm what I need to do.

I hope of understood it correctly I’ve heard Firmware updates can totally mess up a computer if they’re done incorrectly.

I’m not too sure which download I would need to download from the lenovo website, there are a few options. The first one is BIOS Update Utility (Linux) but the version says 1.38-1.21/1.25-1.14

The other option is BIOS Update (Bootable CD) and the version is the same as my BIOS version now which is 1.40 /1.29.

lol Which one would you download to update your BIOS?

Is this the method I would use if my wifi wasn’t working and I needed network card drivers? Should I check on the Lenovo website every now and then to get drivers for the other things like Audio, chipset, touchpad etc?

BTW on an Arch install in the past I used fwupd without paying attention to the warning or requirements for UEFI, that may be why my firmware is up to date. But I realised today that I had done it without checking the requirements properly or knowing about the NVRAM.

Sorry if this is very basic or obvious stuff.

So going to go out of sequence on answers so that the anwers are in the order you’d do it. Yes, starting with the website (Am I correct that this is yours: https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-x-series-laptops/thinkpad-x1-carbon-7th-gen-type-20qd-20qe/20qd/20qd00kwuk/downloads/driver-list/component?name=BIOS%2FUEFI), you’d download the BIOS/UEFI for your machine

( BIOS Update (Bootable CD))

You’d then use geteltorito on that downloaded iso, this extracts the bootable portion of it to a separate image, such as…

geteltorito n2hur33w.iso -o thinkpad.img

Once you had that image, you’d use your dd command that you have in your post to write it to your USB drive (assuming obviously the USB drive was SDA). Then reboot, and f12 (or however you prefer) to choose a different boot device, and choose to boot from the USB. It will automatically go through the BIOS/UEFI update from there, just asking you to confirm like 75 times.

I’ve never had a Thinkpad lose the EFI boot settings doing it this way, and I’ve owned a dozen or so Thinkpads in the last 5 years, and I want to say all since the T430 were all UEFI (maybe T420?)

If you’re comfortable using the fwupd route, then there’s nothing wrong with it, but I know I do see a lot of threads talking about people losing their EFI boot settings when doing it that way, and I can personally say I’ve done this way on various Thinkpads AT LEAST 40 or 50 times, and it’s not once lost the EFI boot settings. So IMO it’s probably safer. But as always, YMMV.

All that said, yes, I agree that it shows that what you have (1.40/1.29) is the latest version, so I don’t think there’s anything you CAN go to.

1 Like

Yes that’s my laptop.

ahah I didn’t realise geteltorito was a program. I just looked at it on the AUR and it hasn’t been updated since the beginning of 2019, you sure it’s fine, have you used any other alternatives to geteltorito in the past?

Thank you very much for your help! :smile:

The funny thing is, that’s not an exaggeration :joy:.

deep, yeah I thought it was an exaggeration, lol.

1 Like

Well, OK, maybe a slight exaggeration. :pinching_hand:

1 Like

cool.

So @anon3337769 have you used geteltorito or something else?

1 Like

Yes, indeed, I use geteltorito. I have 5 Thinkpads and 2 Thinkservers.