Linux上でfwupdを使いThinkPadのファームウェアを更新

最近メイン端末にThinkPad L13(Gen1)を使っています．しかしサスペンドからのレジューム時にXが固まってしまうことがよくあり困っています．
今はWayladだとどうだろうとGnome+Waylandにしてみています．が，今度はサスペンド時に固まり電源LEDが点滅．ログも残っていません．

そういえばファームウェアを更新していなかったなと思いつきfwupdを使ってLinux上からファームウェアアップデートをしてみました．

fwupdを使うと対応機器のファームウェアの確認や更新がLinux上から行えます．

LVFS: Home

fwupd/fwupd: A system daemon to allow session software to update firmware

fwupd対応デバイスは以下のページで検索できます．でもUEFIだけでなくSSDなどのファームウェアもあるのでfwupdを入れて調べたほうがお手軽そうです．

LVFS: Device List

fwupdの導入

今回Debianパッケージから導入しました．

$ sudo apt install fwupd

主な操作

fwupdは主にfwupdmgrコマンドで操作します．

fwupd対応デバイスの表示

$ fwupdmgr get-devices

LVFSから最新のメタデータを入手

$ fwupdmgr refresh

アップデート情報の表示

$ fwupdmgr get-updates

ファームウェアを全て更新する

$ fwupdmgr update

Note

即時適用できるものはすぐに反映される．UEFIなどは次回起動時に反映される．

ファームウェアファイルから更新(未検証)

$ fwupdmgr install ./firmware.cab

Note

ファームウェアファイルはLVFS: Device Listから入手できる．

ThinkPad L13(Gen1)での更新例

$ sudo fwupdmgr update
Devices with no available firmware updates:
• TPM
• UEFI Device Firmware
• UEFI Device Firmware
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade Intel Management Engine from 224.33.1125 to 225.74.2355? ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ Lenovo ThinkPad L13 Consumer ME Firmware ║
║ ║
║ Update version to 14.1.74.2355 ║
║ ║
║ Several Intel known issues were fixed in this release. Refer to Intel ║
║ ║
║ Closed Issues at the bottom portion of this build lette ║
║ ║
║ 20R4S2F900 must remain plugged into a power source for the duration of the ║
║ update to avoid damage. ║
╚══════════════════════════════════════════════════════════════════════════════╝
Perform operation? [Y|n]: Y
Waiting… [***************************************] Less than one minute remaining…
Successfully installed firmware
Do not turn off your computer or remove the AC adapter while the update is in progress.
Devices with the latest available firmware version:
• KXG6AZNV512G TOSHIBA
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade System Firmware from 0.1.25 to 0.1.30? ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ Lenovo ThinkPad L13 System Firmware ║
║ ║
║ 20R4S2F900 must remain plugged into a power source for the duration of the ║
║ update to avoid damage. ║
╚══════════════════════════════════════════════════════════════════════════════╝
Perform operation? [Y|n]: Y
Updating System Firmware…[ - ] Less than one minute remaining…
Waiting… [***************************************]
Successfully installed firmware
Do not turn off your computer or remove the AC adapter while the update is in progress.
Do not turn off your computer or remove the AC adapter while the update is in progress.
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade UEFI dbx from 220 to 371? ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ Insecure versions of the Microsoft Windows boot manager affected by Black ║
║ Lotus were added to the list of forbidden signatures due to a discovered ║
║ security problem.This updates the dbx to the latest release from Microsoft. ║
║ ║
║ Before installing the update, fwupd will check for any affected executables ║
║ in the ESP and will refuse to update if it finds any boot binaries signed ║
║ with any of the forbidden signatures.Applying this update may also cause ║
║ some Windows install media to not start correctly. ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Perform operation? [Y|n]: Y
Waiting… [***************************************]
Successfully installed firmware
Do not turn off your computer or remove the AC adapter while the update is in progress.
Do not turn off your computer or remove the AC adapter while the update is in progress.
An update requires a reboot to complete. Restart now? [y|N]:N

この後シャットダウン後電源を入れるとアップデートが始まりました．しかし今回のアップデートではプログレスが出ずアップデートが進んでいるのか不安でした．
例えば以下の画面で数分そのままとか，その後ブランク画面でまたしばらく待つなどして4,5回再起動が行われました．

Note

別の端末ではプログレスが表示されたのでファームウェアによるようです．

アップデートが終わるとOSの起動に遷移します．get-updatesで確認すると更新がなくなりました．

$ fwupdmgr get-updates
Devices with no available firmware updates:
• TPM
• UEFI Device Firmware
• UEFI Device Firmware
Devices with the latest available firmware version:
• Intel Management Engine
• KXG6AZNV512G TOSHIBA
• System Firmware
• UEFI dbx
No updates available

Note

別のマシンではUEFIのアップデートに複数のバージョンを経由する必要がありました．(例 1.0 → 1.1 → 1.2)

以前はマシンの現在のファームウェアのバージョンを確認し，siteで新しいファームウェアが出ているか確認，もし新しいファームウェアがあったら.isoファイルなどで入手してUSBメモリに書き込み，起動してアップデートという感じでとても面倒でした．fwupdを使うととてもお手軽になります．
GnomeやKDEだとGUIでのパッケージ更新にも組み込まれているようなので意識せず使っている人も居るかもしれません．

環境

$ dpkg-query -W fwupd
fwupd 1.9.26-2
$ lsb_release -dr
Description: Debian GNU/Linux trixie/sid
Release: n/a
$ arch
x86_64
$ sudo lshw -sanitize | head
computer
description: Notebook
product: 20R4S2F900 (LENOVO_MT_20R4_BU_Think_FM_ThinkPad L13)
vendor: LENOVO
version: ThinkPad L13
serial: [REMOVED]
width: 64 bits
capabilities: smbios-3.2.0 dmi-3.2.0 smp vsyscall32
configuration: administrator_password=disabled chassis=notebook family=ThinkPad L13 power-on_password=disabled sku=LENOVO_MT_20R4_BU_Think_FM_ThinkPad L13 uuid=[REMOVED]
*-core