Recently I ran into some issues with one of my ThinkPads, and updating both its BIOS and EC firmware to latest version could help a bit to troubleshoot the issue. However, I ran into a mysterious issue:
No matter how I launch its update utility, either invoking its GUI or by calling `WinFlash` from command line, it always ended up with failure. This always sounds scary, as "Flash Error" sometimes implies the flash is corrupted and one has to RMA the device. Think of the hassle of having to call support...
After some fumbling, it appears winuptp.exe leaves some logs in Winuptp.log, inside the same directory! Would its content be helpful?
2025-01-11 23:43:38.575 <NOTICE> BIOS Flashing ...
2025-01-11 23:44:12.535 <ERROR> Failed to update BIOS (102).
2025-01-11 23:44:12.535 <NOTICE> Retry BIOS update ... (1).
2025-01-11 23:44:46.319 <ERROR> Failed to update BIOS (102).
2025-01-11 23:44:46.319 <NOTICE> Retry BIOS update ... (2).
2025-01-11 23:45:20.648 <ERROR> Failed to update BIOS (102).
2025-01-11 23:45:20.648 <NOTICE> Retry BIOS update ... (3).
2025-01-11 23:45:54.902 <ERROR> Failed to update BIOS (102).
2025-01-11 23:45:54.904 [Flash Error] <ERROR> Write error during flashing.
2025-01-11 23:45:58.118 <NOTICE> LenovoBiosUpdateTool shutting down
No, it's not useful at all. It doesn't even makes sense when it tried to retry three times on failure! But I am left without all options at this point. I even tried to use the .iso provided by Lenovo, which is a self-booting image. It ended up with the same failure (image from Lenovo forums):
It appears Winflash tries to write the actual BIOS image to EFI System Partition (ESP) and then have the system update entire BIOS from ESP. Windows by default only allocates 100MiB for ESP and usually have some contents occupying the partition (bootloader, etc). No wonder why updating fails, but Lenovo did not factor this into its tooling and does not elaborate on its failure.
- Use diskmgmt.mmc to perform a 100MiB shrink on main partition. This creates a un-used space on the right-side of the main partition.
- Reboot to a Linux-based environment. Use gparted to move MSR and main partition to the right. The MSR must be in front (left) of main partition but behind the ESP.
- Re-size the ESP. Resizing the partition will success but will fail when resizing its filesystem as libparted does not support growing ESP at the moment of writing.
- Mount the ESP partition and rsync -avr everything to any arbitrary location for temporary storage.
- Delete ESP partition. Re-create and re-format new ESP partition. Copy everything back to new partition and reboot.
No comments:
Post a Comment