在 Linux 下更新华为 Matebook 的 BIOS

在 Matebook 14 下测试通过。

⚠️ 注意

BIOS 更新操作不当可能造成数据丢失或设备损坏,操作前请注意风险。

当前华为笔记本没有通过 LVFS(Linux Vendor Firmware Service)推送固件更新🙁,因此只能寻求其他途径。好消息是,先前的老款设备已经有人探索并成功实践过,可以按照这些经验进行尝试。

安装必要工具

1
sudo apt install fwupd gcab

获取需要更新的 BIOS 文件

  1. 查看华为售后支持站点,查询是否有自己的 BIOS 更新下载。

  2. 或者在 Windows 下通过华为电脑管家(HUAWEI PC Manager)检查驱动更新,选择 BIOS 并更新,在重启之前到以下路径复制 BIOS 文件:

1
C:\PROGRAMDATA\COMMS\BASICSERVICE\DRIVERUPGRADE\UPDATE\DOWNLOADED\BIOS_1.[XX]\[MODEL]_BIOS_[VER].EXE

以下以 BIOS 文件名为 BIOS_UPDATE.exe 为例。

查询设备 GUID 和当前版本

执行 fwupdmgr get-devices

1
2
3
[MODEL_NAME] System Firmware
Guid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Current version: 65569

准备更新文件

找到刷新的文件

解压 BIOS_UPDATE.exe 文件,可以得到 UEFI_FW.bin,这是 BIOS 更新需要用到的文件,可以用压缩工具检查一下其内容,大致有这样的结构:

1
2
3
4
5
6
7
8
Name
------------------------
.text
UEFI_FW
.xdata
.reloc
CERTIFICATE
------------------------

创建 .cab 文件用于更新

1
2
3
4
5
6
7
8
9
10
/usr/share/fwupd/firmware_packager.py \
--firmware-name HuaweiBIOS \
--device-guid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--developer-name Huawei \
--exe BIOS_UPDATE.exe \
--bin UEFI_FW.bin \
--out firmware_bios_update.cab \
--release-version 65570 \
--version-format org.uefi.capsule \
--update-protocol number
  • 关于 --release-version 参数:在 fwupdmgr get-devices 中查询当前版本(以上文 65569 为例),+1 以使得可以正常开始更新操作。

为了使更新正常进行,还需要修改 /etc/fwupd/daemon.conf 如下:

1
2
# Only support installing firmware signed with a trusted key
OnlyTrusted=false

开始更新

1
sudo fwupdmgr install ./firmware_bios_update.cab

如果正常的话,会提示需要进行重启:

1
2
3
4
5
6
Decompressing…           [***************************************]
Authenticating… [***************************************]
Installing on [MODEL_NAME] System Firmware…
Scheduling… [***************************************]

An update requires a reboot to complete. Restart now? [Y|n]:

重启设备,会自动进入 BIOS 刷新的流程,完成后自动重启设备。如果没有进入刷新,可以尝试在启动时选择启动菜单,进入 updater。

更新成功后

进入 BIOS 设置检查版本是否正确。

fwupdmgr get-devices 中检查 System Firmware 的更新状态,可能会提示 失败:NVME 启动条目丢失,可重启设备,更新状态正常显示 成功