Mal som veľké problémy s pochopením toho, ako vykonávať aktualizácie
firmvéru na svojom novom ThinkPad T14 Gen3 AMD, ktorý mi teraz slúži ako
náhrada za môj spoľahlivý T470. Používanie fwupdmgr je
potvrdené,
dokonca aj pre UEFI BIOS. Ale sprevádzkovanie toho bol iný príbeh. Narazil
som na tri bolestivé miesta. fwupdmgr --version, ktoré som používal:
compile org.freedesktop.fwupd 1.9.3
compile com.hughsie.libxmlb 0.3.11
compile com.hughsie.libjcat 0.1.14
runtime org.freedesktop.fwupd-efi 1.4
compile org.freedesktop.gusb 0.4.6
runtime com.hughsie.libjcat 0.1.14
runtime com.dell.libsmbios 2.4
runtime org.freedesktop.gusb 0.4.6
runtime org.freedesktop.fwupd 1.9.3
runtime org.kernel 6.4.4-arch1-1
Predpoklady #
Ak z nejakého záhadného dôvodu prevádzkujete ThinkPad T14 Gen3 v režime
Legacy BIOS (ak je to vôbec možné), stretnete sa s chybou
WARNING: Firmware can not be updated in legacy BIOS mode a aktualizácia
UEFI BIOS cez fwupdmgr
nie je podporovaná.
Tiež niektorí používatelia uvádzajú, že je vyžadované rozloženie GPT, ale nenašiel som presvedčivý dôkaz a netestoval som to. V každom prípade, ak používate rozloženie MBR a aktualizácia funguje, dajte mi vedieť.
Poznámka k rozloženiu GPT #
Používateľ Reinhold mi neskôr napísal, že pre nich bolo GPT rozloženie
“absolútne nevyhnutné”. Tiež uviedol, že použitie gdisk, ako je opísané v
odpovedi na túto
otázku,
fungovalo – uvádzam teda túto informáciu pre prípad, že by sa niekto iný
ocitol v rovnakej situácii a hľadal cestu vpred.
Nastavenia BIOS #
Aby fwupdmgr vôbec videl možnosť UEFI BIOS, niekoľko nastavení BIOS,
ktoré zasahujú do procesu, musí byť
správne nastavených:
sudo fwupdmgr get-bios-setting BIOSUpdateByEndUsers WindowsUEFIFirmwareUpdate BootOrderLock
WindowsUEFIFirmwareUpdate:
Setting type: Enumeration
Current Value: Enable
Description: BIOS updates delivered via LVFS or Windows Update
Read Only: False
Possible Values:
0: Disable
1: Enable
BootOrderLock:
Setting type: Enumeration
Current Value: Disable
Description: BootOrderLock
Read Only: False
Possible Values:
0: Disable
1: Enable
BIOSUpdateByEndUsers:
Setting type: Enumeration
Current Value: Enable
Description: BIOSUpdateByEndUsers
Read Only: False
Possible Values:
0: Disable
1: Enable
Uistite sa, že tieto tri majú správne hodnoty, a
aktualizujte ich manuálne
alebo cez fwupdmgr set-bios-setting. V opačnom prípade sa problém prejaví
rôzne v závislosti od kombinácie týchto troch nastavení. Jeden z výstupov
môže viesť k chybe No supported devices found alebo
No updatable devices, na ktorú trochu svetla vrhá
tento komentár.
Kapsuly sa nenašli #
Dobre, ďalší krok. UEFI BIOS sa konečne zobrazuje pod vetvou
System Firmware:
sudo fwupdmgr get-devices --show-all-devices
Pokus o jeho aktualizáciu vyzerá, že funguje v konzole:
Perform operation? [Y|n]:
Updating System Firmware…[ - ]
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]: y
Po reštarte som však dostal túto chybu (keď by malo prebiehať skutočné flashovanie firmvéru):
fwupd-efi version 1.4
WARNING: QueryCapsuleCapabilities failed, assuming EfiResetWarm: Unsupported
WARNING: Could not apply capsule update: Not Found
WARNING: Could not apply capsules: Not Found
Reset System
Skúšal som aktualizovať niekoľkokrát, vždy s rovnakým výsledkom. Žiadna aktualizácia, reštart. Našťastie, tento problém je obzvlášť dobre zdokumentovaný.
Príznak ESP partície #
Po dôkladnejšom venovaní pozornosti výstupu príkazov fwupdmgr som si
všimol nenápadné správy ako
WARNING: UEFI ESP partition not detected or configured alebo
WARNING: UEFI ESP partition may not be set up correctly, za ktorými
nasledovalo
See https://github.com/fwupd/fwupd/wiki/PluginFlag:esp-not-valid for more information.
Vyššie uvedený odkaz však neobsahuje nič okrem nadpisu. Povzdych.
Riešenia súvisiace s týmto problémom sa dajú vystopovať v
wiki.
Jednoducho som použil GParted na nastavenie príznaku esp na zavádzacej
partícii, ale pre úplnosť záznamu
zopakujem
aj príkaz z vyššie uvedeného odkazu:
parted /dev/nvme0nXXX set 1 esp on
To pomohlo. Teraz aktualizácia UEFI BIOS cez fwupdmgr skutočne funguje.
Žiadne šarapatenie s Windows kvôli aktualizácii ovládačov. Užite si!
Odkazy #
- https://github.com/fwupd/firmware-lenovo/issues/20#issuecomment-538004411
- https://github.com/fwupd/fwupd/discussions/2637
- https://github.com/fwupd/fwupd/issues/1220
- https://github.com/fwupd/fwupd/issues/2198
- https://github.com/fwupd/fwupd/issues/3238
- https://github.com/fwupd/fwupd/issues/4631
- https://github.com/fwupd/fwupd/issues/6012
- https://github.com/fwupd/fwupd/wiki/PluginFlag:capsules-unsupported
- https://github.com/fwupd/fwupd/wiki/PluginFlag:esp-not-valid