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 #