Linux BIOS Updates Made Easier – Part 1

Image: Flashing in progressTriggered by a survey on Mastodon on how often people upgrade the UEFI BIOS in their PC or notebook I thought it would be a good time to have a go at it again with some of my machines at home. The thing with UEFI BIOS updates of my Lenovo notebooks is that update utilities are only offered for Mac and Windows. For Linux and other operating systems, they offer bootable CD-ROM ISO images. Srsly? I have to admit that’s a bit too much hassle unless it is really urgent. But then I noticed that there are actually two methods to get around burning a CD-ROM to update the BIOS.

Before going ahead it’s a good idea to check if an update is needed. Here’s a command to get the software version of the UEFI BIOS currently installed:

sudo dmidecode --type bios

The command reports quite a bit of information including the date and software version that can be compared with the information given on the Lenovo BIOS update page.

Option 1: UEFI BIOS Update with a USB Flash Drive

When looking around a bit if I could somehow get the CD-ROM ISO image on a USB flash memory stick and boot my Lenovo X250 from there, I actually found a straight forward method that didn’t even require extra software to be installed on my Ubuntu 16.04 system. Here’s the procedure:

# Just in case it's not already on the system
# sudo apt-get install genisoimage

# Convert ISO file to block image
geteltorito -o x250-bios.img ~/Desktop/n10ur26w.iso 

# Write block image to the USB flash stick. 
# Replace XXXX with drive info. BE CAREFUL! DOUBLE CHECK!
sudo dd if=x250-bios.img of=/dev/sdXXXX

After that the USB stick contains a bootable image that performs the BIOS update. Easy! This article contains additional details.

Option 2: Use the Linux Firmware Updater Project

Another option my search revealed is to run the update straight from Ubuntu itself with ‘fwupd‘. This wasn’t an option in my case as Lenovo only supports the procedure starting at the 2016 models such as the X260, T460, etc. However, I do have another notebook where this might work. To be continued.