[OBSOLETE] BIOS Upgrade for Linux Users

Reason number 666 why Macrosloth will not get another dime from me, ever. The arrogance of “it doesn’t have a Windows bootloader on it, we have to fix that” is ridiculous.

Great tutorial / write-up, I’ll be trying it on an old laptop soon!


For what it’s worth… I find myself in the Windows installer at least once every two weeks (comes with the career) and have never seen it replace a boot loader without me asking it to, either by installing Windows or by running BCDBOOT from the diagnostic command prompt. UEFI generally makes the bootloader “fighting” mess a non-issue.

@User1209 I’m somewhat curious, though . . . you used the Windows 10 installer to install a firmware update with the M.2 drive removed, right? It seems much more likely that the firmware noted that the original boot device was totally missing and removed any registered bootloaders that happened to live on it. It would be wasteful for it to keep them around(^1).

(1): There’s a few variables in the firmware’s NVRAM store that explain how to boot the machine. One of them is BootOrder, and it contains numbers (0000, 0001, 0002, …). The entries it specifies are tried, in-order, until one succeeds. The others are Boot0000, Boot0001, (…) and they contain physical device and file paths. When it’s booted with the device missing, what should it do? Under one school of thought, those entries are stale and will never be valid again. Booting a machine without some of its fixed hardware suggests that that hardware is unlikely to return. Replacing it with a new SSD would cause the same issue, sometimes, because those boot entries occasionally contain device IDs rather than “locations”.


Lucky you. The Winblows 8 install on my Miix 700 runs an uncommanded chkdsk and self-repair every instance of the once or twice a year I have to go to it. Maybe it’s a Lenovo customization, but I doubt it. This chkdsk / self initiated boot partition restore (overwrites MBR?) kills grub2 almost every time. rEFInd seems to be more resistant to this (or possibly because my rEFInd boot partition is no longer the first on the disk).

Winblows also changes the system clock to local, and borks up USB power regulation, just to be an extra jerk too. All of this and the fact that I can’t reboot the machine without waiting large portions of an hour for updates I don’t / want need to install… Yeah, I avoid MS like the plague now.

1 Like

That’s what happened to me running Windows To Go on my desktop system recently. It rendered my Linux Mint install unbootable.

This was for a firmware update to the WD SN850 SSD which I have to do in my Framework and which I’ll have to do again in both eventually. This is why SSD manufacuters (Sabrent, WD) making firmware updates Windows-only and not publishing the firmware .bin or using LVFS is such a problem.

Simply not buying drives that have Windows-only updaters isn’t an option. They all do this now.


Creative solution. I like it!

Have the Framework team posted anywhere about whether this functionality will be available through fwupd/LVFS in the future? That would make life so much easier on the Linux side.

Edit: For the BIOS updates I mean. I understand Framework have no power over what OEMs like WD do with their SSD firmware etc.

1 Like



Perfect! Thanks — this is just what I was looking for.

User1209, sorry that you ran into issues with the boot loader.

I did not have any such issues. I left my SSD connected, ran this process, and booted into Linux without issues after the BIOS updated.

I hope others have such good luck!

The two times I booted the W10 installer mentioned in the other thread I linked, I did it without having the drive physically installed in the computer. For the firmware update I just did, I left the drive installed, so it happened in both scenarios (with/without drive installed).

This does not happen at all when I boot up arch install usb stick I’ve been using (it doesn’t mess with any settings at all unless I explicitly tell it to).


Superb! This is exactly what I did last but didn’t have time to write it up. This should be pinned along with the BIOS threads.

1 Like

I finally got around to doing this. It worked perfectly.

Updating the BIOS was fairly quick. I was not expecting the updating EC/updating PD1/updating PD2 procedures and these took long enough to make me uncomfortable, but they completed and everything’s fine.

And Windows did not mess up my bootloader!

Now I wonder if my SSD updater .EXE will work this way?


Worked perfectly for 3.06 bios update.

Used this method to install firmware from windows iso boot. Running manjaro w/ full disk encryption, i7-1185G7, phase 2 release.

The power button is not longer like looking into the sun! (Set power LED display brightness in BIOS).

1 Like

It worked for me as well. Upgrading to 3.06 on an October batch laptop. I had to perform three extra steps to be able to boot from the ventoy USB disk:

  1. disable secure boot in existing bios
  2. install ventoy using MBR partitions. It would not work for me if ventoy was installed with guid partitions
  3. use a USB mouse. The builtin trackpad would not work for me with the windows installer
1 Like

I had a similar experience with @User1209. BIOS and other images were installed correctly. However, a new directory was created by this process named /boot/EFI/Insyde, which wasn’t there before, and the grub got nuked. I followed his recommendation and re-installed grub from a live arch linux installation medium with the following command found at wonderful arch wiki:
# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Please make sure you run this command after chrooting in your system and not from the installation medium. I had a LUKS encrypted drive, there were a few more steps that took me an hour or so to figure out in total.
Hope this helps to the next individual who may experience this issue.

1 Like

Thank you for sharing this!
really looking forward to the official LVFS implementation.
<3 loving my Framework laptop with Pop!_os 21.04


I have a question on this.
So framework does use insyde bios, right? I happen to have a Lenovo Yoga notebook and I am also looking for a solution to update my bios without having to install Windows.
So my question is: is the update program from framework a GUI application or is this just a “dos-like” application? Can you even start graphical programs from Windows Installer command line? Because Lenovo is shipping the updates with a GUI that looks like a program from 1995.

It’s a “DOS-like” command line application.

But you can’t run a Windows GUI application from the Windows installer command line. I’ve tried (WD Dashboard, to flash firmware in WD SSDs).

1 Like

Thanks, that is what I thought. So I have to find a way to get a Windows GUI running off a USB drive somehow which is a PITA it seems. The other option is to boot from Thunderbolt-NVMe enclosure but the external cases are ridiculously expensive, sadly.

You can install Windows (not Windows To Go) on a large enough USB drive and still use the USB drive for other things using Ventoy:

Just watch out for the shenanigans it will pull on your Linux install, but it won’t destroy it and it only needs to be fixed once.

I installed it from a valid Windows 10 Educational VM and it seems to be fully activated. It’s full-fledged Windows and can run any GUI normal windows can.

/me watching intently at this. About to buy W10 pro retail, but don’t want a stain in my framework peeing on it forever. Since w10 will time out and likely get lousier till its EOL, my “free w10” installs in a couple boxes could be used beyond 2025 with a wtg type thing.