Linux Firmware Updates via. fwupd

Natively install firmware updates on my Dell SFF workstation

I use a Dell OptiPlex Small Form Factor (SFF) Plus 7010 to run a headless instance of OMV; it serves as a media server and a file server. While updating drivers and software is really easy with the usual sudo apt update && sudo apt upgrade, I’ve never updated the firmware since building it.

I finally decided that I should get around to installing a BIOS update, but felt really disgruntled that I’d have to hook up a monitor and keyboard to the SFF so that I can flash the BIOS via. F12. I hoped that Dell made a copy of their Dell Command Update software for Linux, but that’s not the case. Instead, it turns out that there’s a Linux package fwupd which integrates with the LVFS (Linux Vendor Firmware Service) to pull firmware.

Installing it and updating my SFF is incredibly straightforward (yay Linux!):

Install the packages:
sudo apt update && sudo apt install fwupd

Get the latest firmware metadata:
fwupdmgr refresh

Check for updated firmware against my SFF:

root@omv:~# fwupdmgr get-updates
Failed to open polkit agent: missing pkttyagent
WARNING: UEFI ESP partition not detected or configured See https://github.com/fwupd/fwupd/wiki/PluginFlag:esp-not-found for more information.
Devices with no available firmware updates:
• UEFI Device Firmware
• UEFI Device Firmware
• UEFI Device Firmware
• Bios DB Key
• Bios FW Aux Authority
• Key Exchange Key
• TPM
• WD40EFRX-68WT0N0
• Windows Production PCA
Devices with the latest available firmware version:
• PC SN730 NVMe WDC 512GB Dell Inc. OptiPlex SFF Plus 7010

There are a number of “UEFI Device Firmware” entries, but that’s pretty normal. In modern UEFI implementations, the motherboard advertises specific, distinct sub-components to the operating system via the UEFI System Resource Table (ESRT), like:

  • Intel Management Engine (ME) or Corporate AMT firmware
  • Type-C / Thunderbolt Power Delivery (PD) controllers
  • Onboard Ethernet/NIC controllers (like Intel vPro network chips)
  • Embedded Controller (EC) managing system fans, thermals, and power sequencing
  • TPM 2.0 (Trusted Platform Module) cryptographic modules

When Dell creates a BIOS update package, they bundle these sub-firmwares into a unified release payload. When updating the system BIOS, the motherboard automatically unpacks and flashes these individual sub-components during the subsequent reboot sequence.

Let’s address the error: fwupd cannot find the EFI System Partition (ESP).
You could previously manually point to the ESP via. a fwupd UEFI configuration file, but this method is no longer supported. The udisks2 package (which handles automatic partition discovery) is required. Let’s install it and move on with life:
apt update && apt install udisks2 -y

Update the SFF firmware:

root@omv:~# fwupdmgr update -y
Failed to open polkit agent: missing pkttyagent
Waiting... [***************************************] Less than one minute remaining...
failed to wait for prepare replug: /usr/libexec/fwupd/efi/fwupdx64.efi and /usr/libexec/fwupd/efi/fwupdx64.efi.signed cannot be found
root@omv:~#

…sigh… It’s always something. OMV also clearly omits the necessary UEFI bootloader applications (fwupd-efi) required to stage firmware changes during a reboot.

Install fwupd-efi packages, and update the SFF firmware:
apt update && apt install -y fwupd-unsigned fwupd-signed

Restart the fwupd daemon:
systemctl restart fwupd

Update my SFF firmware, auto-accepting all install prompts:
fwupdmgr update -y

Built with Hugo
Theme Stack designed by Jimmy