In the past BIOS updates often required Windows or booting from a stick. Thankfully with the Lenovo ThinkPad P1 and the almost identical ThinkPad X1 Extreme, you can update the BIOS directly from Linux.
With Lenovo supporting the Linux Vendor Firmware Service, updating ThinkPads has become much easier. More and more devices, not only ThinkPads start supporting LVFS, check out the homepage for a list of supported devices.
The two mayor Linux window managers, Gnome and KDE also support graphical firmware updates. Though in this tutorial we go the manual command line way.
For updating I use Gentoo Linux, but any recent Linux distribution should work. In Ubuntu the fwupdmgr is already included, for other distributions like Debian or RHEL / CentOS 7 you need to install it manually or use fwupdate.
After install fwupd, you first should check if your device is recognized properly:
# fwupdmgr get-devices 20MD000DGE System Firmware .... Version: 0.1.18 ....
fwupdmgr get-devices lists the devices which can be updated, if nothing shows up try calling
fwupdmgr refresh first, which refreshs the meta data from the LVFS server.
As you can see above, the ThinkPad P1's BIOS version is 0.1.18. At the time of this post 0.1.19 was out, so let's go ahead and update the BIOS.
Download the Linux BIOS Update from the Lenovo support website and extract the
# fwupdmgr install n2eet37w.cab
This takes just a couple of seconds, it extracts the ThinkPad Bios update to your EFI system partition and creates an EFI boot manager entry. Now reboot the system.
During the notebook boot the BIOS should be updated, which is going to take some minutes and the ThinkPad P1 is going to beep meanwhile. Verify the BIOS has been updated, by either entering the setup or by calling
fwupdmgr get-devices again.