I've recently spent quite a bit of time figuring out how to update firmware on my Linux desktop based on ASUS Pro WS W680-ACE motherboard, so I thought I'd post a description of this process here so other Linux users don't have to waste their time. I suspect that the process for some of the other ASUS motherboards may be very similar, so hopefully this can be useful to more than a few people.
The first thing I tried was contacting ASUS support. Of course the level 1 support guy couldn't possibly have any idea, so he created a ticket for level 2 support and told me that I had to wait a week. I imagine he could have written something like this: "Some weirdo on the Internet wants to use our mobo with Linux. This geek also expects us to have a way to update firmware on his machine, lol. I don't imagine we have that, but could you check just in case?" Then after about a week, to nobody's surprise, a level 2 guy politely told me to go f*** myself: "Please be advised that there are no firmware program in Linux OS. At your own risk, you may consider and research trying a Windows Emulator in Linux in order to run setup."
So, I had no choice but to figure this out myself. And here's the result:
The process described here requires:
A Windows computer. I'm not sure if there's a way to do this entirely without Windows. The process described here still uses Windows but doesn't require you to install it on the computer that you're updating.
An empty USB flash drive.
This guide also assumes that you are not a complete beginner and can perform basic tasks on your computer like copying files and creating directories.
1a: Install Windows ADK with WinPE add-on on your Windows machine
This is pretty straightforward. Just use your favorite search engine to find instructions on the Internet.
1b: Get the Intel ME driver for Windows from the motherboard's drivers page
Note that for this step you need the driver, not the firmware. It should be in a .zip archive. Download this archive onto your Windows machine and unpack it to a temporary directory. Inside one of its subdirectories should be a file called heci.inf. If there are multiple versions of this file, pick the one that corresponds to a version of Windows closest to what you're using. Create directory C:\_tmp\mei and copy the contents of the directory that contains heci.inf into this new directory.
1c: Create a customized image of WinPE
In the start menu find the item "Windows Kits -> Deployment And Imaging Tools Environment". Right-click it and run it as administrator. You'll get a command prompt, where you'll need to enter the following:
copype amd64 c:\_tmp\WinPE
dism /Mount-Image /ImageFile:"C:\_tmp\WinPE\media\sources\boot.wim" /index:1 /MountDir:"C:\_tmp\WinPE\mount"
dism /Add-Driver /Image:"C:\_tmp\WinPE\mount" /Driver:"C:\_tmp\mei\heci.inf"
dism /Unmount-Image /MountDir:"C:\_tmp\WinPE\mount" /commit
makewinpemedia /iso c:\_tmp\WinPE c:\_tmp\winpe.iso
1d: Create a bootable flash drive from the image you created
This will obviously destroy the content of the flash drive, so make sure it does not contain any files that you still need. Use the .iso file you created in the previous step - c:\_tmp\winpe.iso. Rufus is perhaps the most well-known tool to create bootable flash drives from .iso files, but if there's another tool that you like, feel free to use that.
If you're tempted to create the bootable flash drive directly with makewinpemedia, I recommend you resist that temptation. I tried this multiple times in slightly different ways, and every time I could not boot from the flash drive that ADK created.
2a: Get the firmware
Go to the "BIOS and Firmware" section on the motherboard support page and download both the BIOS and the Intel ME firmware archives.
2b: Create a directory for the firmware on the flash drive
You should be able to open the bootable flash drive you created in Windows Explorer, just like any other flash drive. You should see a bunch of WinPE directories on it. Create another directory for the firmware. You can name it anything you like, but in this guide we will call it fw.
2c: Copy the BIOS
Unpack the BIOS archive. It should only contain two files - the BIOS itself, which has the .CAP extension and an executable called BIOSRenamer.exe. You only need the .CAP file. Copy it to the fw directory on the flash drive.
2d: Copy the Intel ME firmware
Unpack the Intel ME firmware archive. Find files FwUpdLcl64.exe and ME.bin - they should be in the same directory. Copy these files to the fw directory on the flash drive.
ASUS recommends to do this first, before updating the BIOS.
While there might be some native Linux tool that could update this firmware, it is unclear whether the updater distributed by ASUS is somehow customized for ASUS motherboards. For this reason I decided that I wouldn't even try to update this firmware from Linux directly, and would instead use Windows PE.Β
For this step you need to boot the computer that you're updating from the WinPE flash drive you prepared in the previous steps. After WinPE boots, you'll see a terminal window. Enter the following commands in that window:
C:
cd \fw
FwUpdLcl64.exe -F ME.bin
If everything goes well, the last command should take care of updating your Intel ME firmware. Enter exit in the WinPE terminal to reboot your computer.
You don't actually need WinPE for this. Leave your flash drive inserted, reboot your computer and enter BIOS setup. Go to the "Tool" page and start the EzFlash tool. You will see a list of detected filesystems on the left and the contents of the currently selected filesystem on the right. Your flash drive should be listed as one of the filesystems on the left. Try opening each of the filesystems until you see the WinPE directories on the right. Next look for the fw directory that you created. Enter this directory, select the .CAP file with the new BIOS and press Enter. Follow the prompts from EzFlash to apply the update.