Skip to content

Upgrade BIOS from 3.02 to 3.09 on Fedora

Jun Aruga edited this page Jul 12, 2022 · 10 revisions

Upgrade BIOS from 3.02 to 3.09 on Fedora

This note is to upgrade Framework Laptop BIOS from version 3.02 to 3.09 by LVFS.

Guide on the community forum: BIOS 3.09 Beta release

My environment

  • Fedora 36
    $ cat /etc/fedora-release 
    Fedora release 36 (Thirty Six)
    
  • Kernel: 5.18.10-200.fc36.x86_64
    $ uname -r
    5.18.10-200.fc36.x86_64
    
  • Window manager: Sway
  • fwupd version: 1.8.1
    $ rpm -qf /bin/fwupdmgr
    fwupd-1.8.1-1.fc36.x86_64
    
  • LUKS encryption - Yes. Maybe. Possibly the setting below shows I am using LUKS encryption. Masking the actual name as luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. https://docs.fedoraproject.org/en-US/quick-docs/encrypting-drives-using-LUKS/
    $ cat /etc/default/grub | grep luks
    GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX rhgb quiet mem_sleep_default=deep vconsole.font=LatGrkCyr-12x22 nvme.noacpi=1"
    
    $ sudo cryptsetup -v status luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
    /dev/mapper/luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX is active and is in use.
      type:    LUKS2
      cipher:  aes-xts-plain64
      keysize: 512 bits
      key location: keyring
      device:  /dev/nvme0n1p3
      sector size:  512
      offset:  32768 sectors
      size:    3903668224 sectors
      mode:    read/write
      flags:   discards 
    Command successful.
    

Upgrade all the RPM packages to the latest ones

Upgraded all the RPM packages to the latest ones before upgrading BIOS. Just in case.

$ sudo dnf upgrade --refresh
$ sudo reboot

Update BIOS by LVFS

Set DisableCapsuleUpdateOnDisk=true in /etc/fwupd/uefi_capsule.conf before applying this update, otherwise the update will fail.

$ cd /etc/fwupd
$ sudo cp -p uefi_capsule.conf uefi_capsule.conf.org
$ sudo vi uefi_capsule.conf

$ diff uefi_capsule.conf.org uefi_capsule.conf
22c22
< #DisableCapsuleUpdateOnDisk=true
---
> DisableCapsuleUpdateOnDisk=true
$ sudo fwupdmgr enable-remote lvfs-testing
╔══════════════════════════════════════════════════════════════════════════════╗
║ Enable new remote?                                                           ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ The LVFS is a free service that operates as an independent legal entity and  ║
║ has no connection with Fedora Linux. Your distributor may not have verified  ║
║ any of the firmware updates for compatibility with your system or connected  ║
║ devices. All firmware is provided only by the original equipment             ║
║ manufacturer.                                                                ║
║                                                                              ║
║ This remote contains firmware which is not embargoed, but is still being     ║
║ tested by the hardware vendor. You should ensure you have a way to manually  ║
║ downgrade the firmware if the firmware update fails.                         ║
║                                                                              ║
║ Enabling this functionality is done at your own risk, which means you have   ║
║ to contact your original equipment manufacturer regarding any problems       ║
║ caused by these updates. Only problems with the update process itself        ║
║ should be filed at https://bugzilla.redhat.com/.                             ║
╚══════════════════════════════════════════════════════════════════════════════╝

Agree and enable the remote? [Y|n]: Y
Authenticating…          [ -                                     ]
Do you want to refresh this remote now? (Requires internet connection) [Y|n]: Y
Authenticating…          [  -                                    ]
Downloading…             [***************************************]
Downloading…             [***************************************]
Downloading…             [***************************************]

Successfully enabled and refreshed remote

$ echo $?
0

According to the guide above,

LVFS may not update if the battery is 100% charged. LVFS uses the battery status to determine if it is safe to apply updates. However if our battery is at 100% and the charger is off, we set the battery charging status to false. In this case you can discharge your battery a few percent, then plug in AC again and run fwupdmgr update.

So, I did plug off the AC power cable and reduced the battery to 96%.

$ upower -i $(upower -e | grep BAT) | grep -E '(percentage|capacity)'
    percentage:          95%
    capacity:            98.4043%
$ sudo dmidecode -s bios-version
03.02

Run the command below to upgrade BIOS, and the output complained with the "Device requires AC power to be connected".

$ sudo time fwupdmgr update
Devices with no available firmware updates: 
 • UEFI Device Firmware
 • UEFI Device Firmware
 • WD BLACK SN750 2TB
System Firmware is not currently updatable: Device requires AC power to be connected
Command exited with non-zero status 2
0.05user 0.01system 0:00.09elapsed 72%CPU (0avgtext+0avgdata 23476maxresident)k
0inputs+8outputs (0major+2093minor)pagefaults 0swaps

$ echo $?
2

So, I connected AC power again.

$ upower -i $(upower -e | grep BAT) | grep -E '(percentage|capacity)'
    percentage:          94%
    capacity:            98.4043%

Then the fwupdmgr update again with the time. Note the time was meaningless as OS restarted directly in the sub-interactive console after this command.

$ sudo time fwupdmgr update
Devices with no available firmware updates: 
 • UEFI Device Firmware
 • UEFI Device Firmware
 • WD BLACK SN750 2TB
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade System Firmware from 0.0.3.2 to 0.0.3.9?                             ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ Due to an incompatibility between our BIOS and recent versions of fwupdmgr   ║
║ please set DisableCapsuleUpdateOnDisk=true in /etc/fwupd/uefi_capsule.conf   ║
║ before applying this update.                                                 ║
║                                                                              ║
║ Warning! Update may cause your system to lose boot entries.                  ║
║                                                                              ║
║ • Updating the BIOS firmware will erase NVRAM boot variables. Press F3       ║
║ during boot to manually select a desired boot entry after the update has     ║
║ completed it you run into this issue.                                        ║
║                                                                              ║
║ Fixes in this release                                                        ║
║                                                                              ║
║ • This update fixes a number of important CVEs impacting the BIOS. with      ║
║ the highest base score of 9.8.                                               ║
║ • Fix battery cycle count is not valid.                                      ║
║ • Fix audio output polarity is inverted from the headphone jack on Tempo     ║
║ audio codec mainboards.                                                      ║
║ • Fix abnormal shutdown.                                                     ║
║ • Fix charging led behavior.                                                 ║
║ • Reduce main battery drain in off state.                                    ║
║ • Fix keyboard function keycodes being incorrect or missing.                 ║
║ • Disable support for 14V-16V charging.                                      ║
║ • Improve recognition of HDMI/DP dongles or adapters when going though       ║
║ power cycles.                                                                ║
║ • Improve compatibility with some USB-A devices.                             ║
║                                                                              ║
║ New Features and changes                                                     ║
║                                                                              ║
║ • Added boot from file menu by pressing F3 on boot to access the boot        ║
║ from file menu.                                                              ║
║ • Added option to control the 8254 clock gate in bios advanced setting       ║
║ page to support memtest86++.                                                 ║
║                                                                              ║
║ Known Issues                                                                 ║
║                                                                              ║
║ • Thunderbolt devices may not be recognized on S4 resume in some cases,      ║
║ but can be recognized after replugging the device.                           ║
║ • Touchpad PS2 fallback mode may not work if the user is in an OS that       ║
║ supports the SerialIO driver, and then restarts to an OS that does not       ║
║ support the SerialIO driver.                                                 ║
║                                                                              ║
║ Laptop must remain plugged into a power source for the duration of the       ║
║ update to avoid damage.                                                      ║
╚══════════════════════════════════════════════════════════════════════════════╝

Perform operation? [Y|n]: Y
Downloading…             [***************************************]
Downloading…             [**                                     ] Less than oneDownloading…             [***                                    ] Less than oneDownloading…             [***                                    ] Less than oneDownloading…             [****                                   ] Less than oneDownloading…             [****                                   ] Less than oneDownloading…             [*****                                  ] Less than oneDownloading…             [*****                                  ] Less than oneDownloading…             [*****                                  ] Less than oneDownloading…             [******                                 ] Less than oneDownloading…             [*******                                ] Less than oneDownloading…             [*******                                ] Less than oneDownloading…             [*******                                ] Less than oneDownloading…             [********                               ] Less than oneDownloading…             [********                               ] Less than oneDownloading…             [********                               ] Less than oneDownloading…             [*********                              ] Less than oneDownloading…             [*********                              ] Less than oneDownloading…             [**********                             ] Less than oneDownloading…             [**********                             ] Less than oneDownloading…             [**********                             ] Less than oneDownloading…             [***********                            ] Less than oneDownloading…             [***********                            ] Less than oneDownloading…             [************                           ] Less than oneDownloading…             [************                           ] Less than oneDownloading…             [************                           ] Less than oneDownloading…             [*************                          ] Less than oneDownloading…             [*************                          ] Less than oneDownloading…             [**************                         ] Less than oneDownloading…             [**************                         ] Less than oneDownloading…             [**************                         ] Less than oneDownloading…             [***************                        ] Less than oneDownloading…             [***************                        ] Less than oneDownloading…             [***************                        ] Less than oneDownloading…             [****************                       ] Less than oneDownloading…             [****************                       ] Less than oneDownloading…             [*****************                      ] Less than oneDownloading…             [*****************                      ] Less than oneDownloading…             [*****************                      ] Less than oneDownloading…             [******************                     ] Less than oneDownloading…             [******************                     ] Less than oneDownloading…             [*******************                    ] Less than oneDownloading…             [*******************                    ] Less than oneDownloading…             [*******************                    ] Less than oneDownloading…             [********************                   ] Less than oneDownloading…             [********************                   ] Less than oneDownloading…             [*********************                  ] Less than oneDownloading…             [*********************                  ] Less than oneDownloading…             [*********************                  ] Less than oneDownloading…             [**********************                 ] Less than oneDownloading…             [**********************                 ] Less than oneDownloading…             [***********************                ] Less than oneDownloading…             [***********************                ] Less than oneDownloading…             [***************************************]
Decompressing…           [***************************************]
Authenticating…          [***************************************]
Waiting…                 [***************************************]
Successfully installed firmware
╔══════════════════════════════════════════════════════════════════════════════╗
║ Upgrade UEFI dbx from 33 to 77?                                              ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ This updates the dbx to the latest release from Microsoft.                   ║
║                                                                              ║
║ UEFI dbx and all connected devices may not be usable while updating.         ║
╚══════════════════════════════════════════════════════════════════════════════╝

Perform operation? [Y|n]: Y
Downloading…             [***************************************]
Decompressing…           [***************************************]
Authenticating…          [***************************************]
Waiting…                 [***************************************]
Successfully installed firmware

An update requires a reboot to complete. Restart now? [y|N]: y

The OS is shut down and rebooted. Then the process took around 5 minutes until the login prompt was printed.

Upgrading BIOS from 3.02 to 3.09 - 1

Upgrading BIOS from 3.02 to 3.09 - 2

Logged in from the login prompt. Checked the BIOS version.

$ sudo dmidecode -s bios-version
03.09

Test

It seems the BIOS setting is reset.

My Left-Ctrl, Fn key swap was reset.

Downgrade BIOS by LVFS

If you want to downgrade the BIOS version. I haven't tried this command.

$ sudo fwupdmgr downgrade